@carto/ps-react-ui 5.0.0 → 6.0.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/{actions-yPZwFxSZ.js → actions-KsX1xdDM.js} +388 -368
- package/dist/actions-KsX1xdDM.js.map +1 -0
- package/dist/category-CsdDqDzo.js +833 -0
- package/dist/category-CsdDqDzo.js.map +1 -0
- package/dist/chat.js +548 -526
- package/dist/chat.js.map +1 -1
- package/dist/{components-FED-ArwH.js → components-CTUpdQuj.js} +1526 -1782
- package/dist/components-CTUpdQuj.js.map +1 -0
- package/dist/components.js +4 -5
- package/dist/{download-DdaK3qgC.js → download-Vlzn2jzb.js} +12 -12
- package/dist/download-Vlzn2jzb.js.map +1 -0
- package/dist/{echart-DeBgdOtX.js → echart-DjcbtKgi.js} +34 -35
- package/dist/echart-DjcbtKgi.js.map +1 -0
- package/dist/formula-CdHWtepq.js +282 -0
- package/dist/formula-CdHWtepq.js.map +1 -0
- package/dist/legend.js +261 -256
- package/dist/legend.js.map +1 -1
- package/dist/{markdown-2dfL6Cmb.js → markdown-CY-67NRE.js} +8 -8
- package/dist/markdown-CY-67NRE.js.map +1 -0
- package/dist/{markdown-content-BWUqwx9F.js → markdown-content-kYNLOX0T.js} +2 -2
- package/dist/markdown-content-kYNLOX0T.js.map +1 -0
- package/dist/{chart-config-B_fdIcD3.js → option-builders-DQivvvbb.js} +10 -56
- package/dist/option-builders-DQivvvbb.js.map +1 -0
- package/dist/{range-BCMAl5xf.js → range-DHQSsl2_.js} +8 -8
- package/dist/range-DHQSsl2_.js.map +1 -0
- package/dist/smart-tooltip-Dc_rHhyI.js +51 -0
- package/dist/smart-tooltip-Dc_rHhyI.js.map +1 -0
- package/dist/{spread-Ccpg9fi0.js → spread-DuM5oTI1.js} +10 -10
- package/dist/spread-DuM5oTI1.js.map +1 -0
- package/dist/{stores-tiFePP0A.js → stores-B8CHbgw-.js} +11 -11
- package/dist/stores-B8CHbgw-.js.map +1 -0
- package/dist/stores-mad-9yFn.js.map +1 -1
- package/dist/styles-BCEBm7xh.js +146 -0
- package/dist/styles-BCEBm7xh.js.map +1 -0
- package/dist/{table-Bx9Uj3U0.js → table-BE4uO9pp.js} +14 -14
- package/dist/table-BE4uO9pp.js.map +1 -0
- package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +1 -1
- package/dist/types/chat/types.d.ts +5 -2
- package/dist/types/components/index.d.ts +1 -3
- package/dist/types/components/lasso-tool/geometry-toolbar.d.ts +1 -1
- package/dist/types/components/lasso-tool/toolbar/context.d.ts +1 -1
- package/dist/types/components/types.d.ts +15 -0
- package/dist/types/legend/components/legend-actions/legend-actions.d.ts +2 -2
- package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +2 -1
- package/dist/types/legend/index.d.ts +1 -1
- package/dist/types/legend/provider/legend-provider.d.ts +2 -2
- package/dist/types/migration/v4/classes.d.ts +16 -0
- package/dist/types/migration/v4/icons.d.ts +31 -0
- package/dist/types/migration/v4/index.d.ts +17 -0
- package/dist/types/migration/v4/rules.d.ts +42 -0
- package/dist/types/migration/v4/transform.d.ts +4 -0
- package/dist/types/migration/v4/transforms/helpers.d.ts +97 -0
- package/dist/types/migration/v4/transforms/meridian-5.d.ts +22 -0
- package/dist/types/migration/v4/transforms/ps-react-ui.d.ts +20 -0
- package/dist/types/migration/v4/transforms/v5-v6.d.ts +27 -0
- package/dist/types/migration/v4/transforms/v6-v7.d.ts +54 -0
- package/dist/types/migration/v4/transforms/v7-v9-dom.d.ts +63 -0
- package/dist/types/migration/v4/transforms/v7-v9-props.d.ts +64 -0
- package/dist/types/migration/v4/widgets-v1.d.ts +12 -0
- package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +51 -24
- package/dist/types/widgets/actions/brush-toggle/style.d.ts +7 -16
- package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +2 -1
- package/dist/types/widgets/actions/change-column/change-column.d.ts +26 -17
- package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +10 -5
- package/dist/types/widgets/actions/change-column/types.d.ts +9 -18
- package/dist/types/widgets/actions/download/download.d.ts +18 -13
- package/dist/types/widgets/actions/download/exports.d.ts +33 -17
- package/dist/types/{widgets-v2 → widgets}/actions/download/png-item.d.ts +1 -1
- package/dist/types/widgets/actions/download/types.d.ts +30 -16
- package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +73 -10
- package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/style.d.ts +9 -0
- package/dist/types/widgets/actions/fullscreen/types.d.ts +13 -20
- package/dist/types/widgets/actions/index.d.ts +10 -20
- package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +54 -16
- package/dist/types/widgets/actions/relative-data/relative-data.d.ts +36 -21
- package/dist/types/{widgets-v2 → widgets}/actions/relative-data/transforms.d.ts +2 -2
- package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +21 -16
- package/dist/types/widgets/actions/searcher/searcher.d.ts +9 -19
- package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +10 -17
- package/dist/types/widgets/actions/zoom-toggle/style.d.ts +7 -8
- package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +31 -22
- package/dist/types/widgets/bar/index.d.ts +3 -2
- package/dist/types/widgets/bar/skeleton.d.ts +5 -0
- package/dist/types/widgets/bar/types.d.ts +46 -9
- package/dist/types/widgets/category/category-ui.d.ts +86 -3
- package/dist/types/{widgets-v2 → widgets}/category/components/category-bar-stacked.d.ts +2 -1
- package/dist/types/widgets/category/components/category-bar.d.ts +18 -4
- package/dist/types/widgets/category/components/category-legend.d.ts +30 -4
- package/dist/types/widgets/category/components/category-row-multi.d.ts +27 -10
- package/dist/types/widgets/category/components/category-row-other.d.ts +19 -2
- package/dist/types/widgets/category/components/category-row-single.d.ts +23 -9
- package/dist/types/{widgets-v2 → widgets}/category/components/category-row-stacked.d.ts +2 -1
- package/dist/types/widgets/category/index.d.ts +10 -14
- package/dist/types/widgets/category/skeleton.d.ts +11 -1
- package/dist/types/widgets/category/style.d.ts +155 -83
- package/dist/types/widgets/category/types.d.ts +49 -29
- package/dist/types/widgets/echart/echart-ui.d.ts +44 -9
- package/dist/types/widgets/echart/echart.d.ts +80 -5
- package/dist/types/widgets/echart/index.d.ts +4 -5
- package/dist/types/widgets/echart/shared-resize-observer.d.ts +2 -9
- package/dist/types/{widgets-v2 → widgets}/echart/style.d.ts +1 -0
- package/dist/types/widgets/formula/formula-ui.d.ts +18 -3
- package/dist/types/widgets/formula/index.d.ts +11 -11
- package/dist/types/{widgets-v2 → widgets}/formula/series.d.ts +2 -1
- package/dist/types/widgets/formula/skeleton.d.ts +4 -1
- package/dist/types/widgets/formula/style.d.ts +20 -12
- package/dist/types/widgets/formula/types.d.ts +41 -39
- package/dist/types/{widgets-v2 → widgets}/formula/value.d.ts +2 -1
- package/dist/types/widgets/histogram/index.d.ts +5 -4
- package/dist/types/widgets/histogram/skeleton.d.ts +9 -1
- package/dist/types/widgets/histogram/types.d.ts +60 -12
- package/dist/types/{widgets-v2 → widgets}/index.d.ts +3 -3
- package/dist/types/widgets/markdown/index.d.ts +5 -4
- package/dist/types/widgets/markdown/markdown-ui.d.ts +10 -7
- package/dist/types/widgets/markdown/markdown.d.ts +4 -3
- package/dist/types/widgets/markdown/skeleton.d.ts +4 -1
- package/dist/types/widgets/markdown/style.d.ts +61 -2
- package/dist/types/widgets/markdown/types.d.ts +2 -16
- package/dist/types/widgets/note/style.d.ts +14 -16
- package/dist/types/widgets/pie/index.d.ts +4 -3
- package/dist/types/widgets/pie/skeleton.d.ts +13 -1
- package/dist/types/widgets/pie/types.d.ts +57 -9
- package/dist/types/widgets/range/index.d.ts +4 -6
- package/dist/types/widgets/range/range-ui.d.ts +25 -3
- package/dist/types/widgets/range/skeleton.d.ts +9 -1
- package/dist/types/widgets/range/style.d.ts +40 -2
- package/dist/types/widgets/range/types.d.ts +26 -22
- package/dist/types/widgets/scatterplot/index.d.ts +5 -3
- package/dist/types/widgets/scatterplot/skeleton.d.ts +12 -1
- package/dist/types/widgets/scatterplot/types.d.ts +54 -9
- package/dist/types/widgets/selection-summary/selection-summary.d.ts +26 -10
- package/dist/types/widgets/selection-summary/style.d.ts +32 -3
- package/dist/types/widgets/spread/index.d.ts +7 -9
- package/dist/types/widgets/spread/skeleton.d.ts +9 -1
- package/dist/types/widgets/spread/spread-ui.d.ts +16 -3
- package/dist/types/widgets/spread/types.d.ts +20 -35
- package/dist/types/widgets/stores/index.d.ts +8 -3
- package/dist/types/widgets/stores/types.d.ts +45 -172
- package/dist/types/widgets/subheader/style.d.ts +5 -14
- package/dist/types/widgets/subheader/subheader.d.ts +9 -11
- package/dist/types/widgets/table/helpers.d.ts +28 -34
- package/dist/types/widgets/table/index.d.ts +8 -17
- package/dist/types/widgets/table/skeleton.d.ts +17 -5
- package/dist/types/widgets/table/style.d.ts +21 -14
- package/dist/types/widgets/table/table-ui.d.ts +41 -29
- package/dist/types/widgets/table/types.d.ts +34 -182
- package/dist/types/widgets/timeseries/index.d.ts +4 -2
- package/dist/types/widgets/timeseries/skeleton.d.ts +7 -0
- package/dist/types/widgets/timeseries/types.d.ts +60 -9
- package/dist/types/{widgets-v2 → widgets}/types.d.ts +7 -6
- package/dist/types/widgets/utils/index.d.ts +3 -7
- package/dist/types/widgets/wrapper/index.d.ts +4 -6
- package/dist/{utils-Dr6gf3vD.js → utils-BStJWhZN.js} +5 -5
- package/dist/utils-BStJWhZN.js.map +1 -0
- package/dist/widgets/actions.js +4 -2
- package/dist/widgets/bar.js +202 -132
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +2 -450
- package/dist/widgets/echart.js +2 -3
- package/dist/widgets/formula.js +2 -3
- package/dist/widgets/histogram.js +263 -160
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/markdown.js +3 -148
- package/dist/widgets/pie.js +317 -197
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +2 -233
- package/dist/widgets/scatterplot.js +300 -196
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/spread.js +2 -158
- package/dist/widgets/stores.js +2 -3
- package/dist/widgets/table.js +2 -599
- package/dist/widgets/timeseries.js +250 -136
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/utils.js +2 -18
- package/dist/{widgets-v2.js → widgets.js} +63 -57
- package/dist/widgets.js.map +1 -0
- package/dist/{zoom-toggle-IsF8BnAp.js → zoom-toggle-D_VuA01l.js} +5 -5
- package/dist/zoom-toggle-D_VuA01l.js.map +1 -0
- package/package.json +43 -129
- package/src/chat/bubbles/chat-agent-message-markdown.tsx +1 -1
- package/src/chat/bubbles/chat-error-message.tsx +9 -3
- package/src/chat/bubbles/chat-suggestion-button.tsx +8 -3
- package/src/chat/containers/chat-footer.tsx +6 -2
- package/src/chat/containers/chat-starter.tsx +6 -4
- package/src/chat/feedback/chat-tool-full-view-dialog.tsx +3 -1
- package/src/chat/feedback/chat-tool-group.test.tsx +1 -1
- package/src/chat/feedback/chat-tool-group.tsx +40 -9
- package/src/chat/feedback/chat-tool-trace.tsx +55 -19
- package/src/chat/types.ts +5 -2
- package/src/components/basemaps/header.tsx +6 -1
- package/src/components/index.ts +2 -3
- package/src/components/lasso-tool/geometry-toolbar.tsx +1 -1
- package/src/components/lasso-tool/lasso-tool-inline.tsx +12 -4
- package/src/components/lasso-tool/lasso-tool.tsx +26 -15
- package/src/components/lasso-tool/layer-filters.tsx +36 -11
- package/src/components/lasso-tool/options-sections.test.tsx +13 -2
- package/src/components/lasso-tool/options-sections.tsx +17 -7
- package/src/components/lasso-tool/toolbar/connected.tsx +1 -1
- package/src/components/lasso-tool/toolbar/context.tsx +1 -1
- package/src/components/measurement-tools/measurement-tools.tsx +28 -13
- package/src/components/no-data-alert/no-data-alert.tsx +12 -2
- package/src/components/responsive-drawer/responsive-drawer.tsx +0 -1
- package/src/components/types.ts +17 -0
- package/src/components/zoom-controls/zoom-controls.tsx +3 -1
- package/src/legend/components/legend-actions/legend-actions.tsx +2 -2
- package/src/legend/components/legend-category/legend-category-ui.tsx +7 -3
- package/src/legend/components/legend-config-select/legend-config-select.tsx +6 -2
- package/src/legend/components/legend-group/legend-group.tsx +6 -2
- package/src/legend/components/legend-group/styles.ts +1 -1
- package/src/legend/components/legend-icon/legend-icon-ui.tsx +7 -3
- package/src/legend/components/legend-opacity/legend-opacity.tsx +9 -3
- package/src/legend/components/legend-proportion/legend-proportion-ui.tsx +19 -3
- package/src/legend/components/legend-ramp/legend-ramp-ui.tsx +31 -7
- package/src/legend/components/legend-row/legend-row.tsx +2 -2
- package/src/legend/components/legend-row/styles.ts +1 -1
- package/src/legend/components/legend-sortable/legend-sortable.tsx +7 -3
- package/src/legend/components/legend-swatch/legend-swatch.tsx +2 -1
- package/src/legend/components/legend-visible-layers/legend-visible-layers.tsx +18 -9
- package/src/legend/index.ts +1 -1
- package/src/legend/provider/legend-provider.tsx +2 -2
- package/src/legend/stores/legend-store-registry.ts +1 -1
- package/src/migration/v4/classes.ts +56 -0
- package/src/migration/v4/icons.ts +56 -0
- package/src/migration/v4/index.ts +17 -0
- package/src/migration/v4/migration.test.ts +772 -0
- package/src/migration/v4/rules.ts +444 -0
- package/src/migration/v4/transform.ts +92 -0
- package/src/migration/v4/transforms/helpers.ts +369 -0
- package/src/migration/v4/transforms/meridian-5.ts +163 -0
- package/src/migration/v4/transforms/ps-react-ui.ts +99 -0
- package/src/migration/v4/transforms/v5-v6.ts +161 -0
- package/src/migration/v4/transforms/v6-v7.ts +342 -0
- package/src/migration/v4/transforms/v7-v9-dom.ts +403 -0
- package/src/migration/v4/transforms/v7-v9-props.ts +529 -0
- package/src/migration/v4/widgets-v1.ts +199 -0
- package/src/{widgets-v2 → widgets}/PERFORMANCE.md +5 -5
- package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +144 -172
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +129 -108
- package/src/widgets/actions/brush-toggle/style.ts +5 -40
- package/src/widgets/actions/change-column/change-column-icon.tsx +14 -10
- package/src/widgets/actions/change-column/change-column.test.tsx +57 -288
- package/src/widgets/actions/change-column/change-column.tsx +116 -145
- package/src/widgets/actions/change-column/sortable-column-item.tsx +29 -17
- package/src/widgets/actions/change-column/types.ts +9 -18
- package/src/widgets/actions/download/download.test.tsx +290 -289
- package/src/widgets/actions/download/download.tsx +101 -89
- package/src/widgets/actions/download/exports.test.tsx +157 -247
- package/src/{widgets-v2 → widgets}/actions/download/exports.ts +1 -1
- package/src/{widgets-v2 → widgets}/actions/download/png-item.tsx +2 -2
- package/src/widgets/actions/download/types.ts +26 -15
- package/src/widgets/actions/fullscreen/fullscreen.test.tsx +164 -221
- package/src/widgets/actions/fullscreen/fullscreen.tsx +277 -72
- package/src/{widgets-v2 → widgets}/actions/fullscreen/style.ts +31 -4
- package/src/widgets/actions/fullscreen/types.ts +14 -31
- package/src/widgets/actions/index.ts +90 -68
- package/src/widgets/actions/lock-selection/lock-selection.test.tsx +259 -156
- package/src/widgets/actions/lock-selection/lock-selection.tsx +162 -102
- package/src/widgets/actions/relative-data/relative-data.test.tsx +65 -536
- package/src/widgets/actions/relative-data/relative-data.tsx +82 -163
- package/src/{widgets-v2 → widgets}/actions/relative-data/transforms.ts +2 -2
- package/src/widgets/actions/searcher/searcher-toggle.tsx +75 -56
- package/src/widgets/actions/searcher/searcher.tsx +85 -168
- package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +49 -402
- package/src/widgets/actions/stack-toggle/stack-toggle.tsx +39 -114
- package/src/widgets/actions/zoom-toggle/style.ts +5 -8
- package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +88 -303
- package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +87 -199
- package/src/widgets/bar/index.ts +6 -5
- package/src/{widgets-v2 → widgets}/bar/options.ts +1 -1
- package/src/widgets/bar/skeleton.tsx +61 -52
- package/src/widgets/bar/types.ts +46 -11
- package/src/widgets/category/category-ui.test.tsx +846 -317
- package/src/widgets/category/category-ui.tsx +444 -127
- package/src/{widgets-v2 → widgets}/category/components/category-bar-stacked.tsx +2 -1
- package/src/widgets/category/components/category-bar.tsx +31 -12
- package/src/{widgets-v2 → widgets}/category/components/category-legend.test.tsx +7 -3
- package/src/widgets/category/components/category-legend.tsx +68 -18
- package/src/widgets/category/components/category-row-multi.tsx +66 -36
- package/src/widgets/category/components/category-row-other.tsx +63 -5
- package/src/widgets/category/components/category-row-single.tsx +48 -25
- package/src/{widgets-v2 → widgets}/category/components/category-row-stacked.tsx +2 -1
- package/src/widgets/category/index.ts +25 -22
- package/src/widgets/category/skeleton.tsx +60 -10
- package/src/widgets/category/style.ts +267 -72
- package/src/widgets/category/types.ts +52 -32
- package/src/widgets/echart/echart-ui.test.tsx +250 -446
- package/src/widgets/echart/echart-ui.tsx +210 -52
- package/src/widgets/echart/echart.test.tsx +203 -518
- package/src/widgets/echart/echart.tsx +195 -52
- package/src/widgets/echart/index.ts +21 -15
- package/src/widgets/echart/shared-resize-observer.ts +30 -19
- package/src/widgets/echart/style.ts +17 -0
- package/src/widgets/formula/formula-ui.test.tsx +68 -376
- package/src/widgets/formula/formula-ui.tsx +58 -22
- package/src/widgets/formula/index.ts +14 -21
- package/src/{widgets-v2 → widgets}/formula/note.tsx +8 -2
- package/src/{widgets-v2 → widgets}/formula/series.tsx +8 -25
- package/src/widgets/formula/skeleton.tsx +21 -4
- package/src/widgets/formula/style.ts +20 -12
- package/src/widgets/formula/types.ts +44 -45
- package/src/{widgets-v2 → widgets}/formula/value.tsx +2 -1
- package/src/widgets/histogram/index.ts +10 -10
- package/src/{widgets-v2 → widgets}/histogram/options.ts +1 -1
- package/src/widgets/histogram/skeleton.tsx +63 -45
- package/src/widgets/histogram/types.ts +59 -18
- package/src/{widgets-v2 → widgets}/index.ts +3 -3
- package/src/widgets/markdown/index.ts +5 -13
- package/src/widgets/markdown/markdown-ui.test.tsx +53 -319
- package/src/widgets/markdown/markdown-ui.tsx +43 -47
- package/src/widgets/markdown/markdown.tsx +12 -15
- package/src/widgets/markdown/skeleton.tsx +26 -6
- package/src/widgets/markdown/style.ts +48 -23
- package/src/widgets/markdown/types.ts +2 -26
- package/src/widgets/note/style.ts +14 -17
- package/src/{widgets-v2 → widgets}/note/widget-note.tsx +15 -2
- package/src/widgets/pie/index.ts +7 -5
- package/src/{widgets-v2 → widgets}/pie/options.test.ts +8 -0
- package/src/{widgets-v2 → widgets}/pie/options.ts +4 -9
- package/src/widgets/pie/skeleton.tsx +84 -60
- package/src/widgets/pie/types.ts +57 -11
- package/src/widgets/range/index.ts +4 -16
- package/src/widgets/range/range-ui.test.tsx +115 -182
- package/src/widgets/range/range-ui.tsx +274 -8
- package/src/widgets/range/skeleton.tsx +41 -8
- package/src/widgets/range/style.ts +16 -12
- package/src/widgets/range/types.ts +26 -28
- package/src/widgets/scatterplot/index.ts +11 -5
- package/src/{widgets-v2 → widgets}/scatterplot/options.ts +1 -1
- package/src/widgets/scatterplot/skeleton.tsx +76 -51
- package/src/widgets/scatterplot/types.ts +54 -12
- package/src/widgets/selection-summary/selection-summary.tsx +64 -39
- package/src/widgets/selection-summary/style.ts +30 -2
- package/src/widgets/spread/index.ts +11 -23
- package/src/widgets/spread/skeleton.tsx +32 -4
- package/src/widgets/spread/spread-ui.test.tsx +98 -358
- package/src/widgets/spread/spread-ui.tsx +44 -24
- package/src/widgets/spread/types.ts +21 -41
- package/src/{widgets-v2 → widgets}/state/widget-state.tsx +13 -3
- package/src/widgets/stores/index.ts +46 -10
- package/src/{widgets-v2 → widgets}/stores/transforms.ts +1 -1
- package/src/widgets/stores/types.ts +42 -181
- package/src/{widgets-v2 → widgets}/stores/use-transform.ts +1 -1
- package/src/{widgets-v2 → widgets}/stores/widget-store-registry.ts +2 -2
- package/src/widgets/subheader/style.ts +5 -13
- package/src/widgets/subheader/subheader.test.tsx +22 -37
- package/src/widgets/subheader/subheader.tsx +11 -30
- package/src/widgets/table/helpers.test.ts +197 -208
- package/src/widgets/table/helpers.ts +108 -84
- package/src/widgets/table/index.ts +23 -54
- package/src/widgets/table/skeleton.tsx +38 -21
- package/src/widgets/table/style.ts +23 -14
- package/src/widgets/table/table-ui.tsx +348 -44
- package/src/widgets/table/types.ts +37 -205
- package/src/{widgets-v2 → widgets}/test-utils.ts +1 -1
- package/src/widgets/timeseries/index.ts +8 -5
- package/src/{widgets-v2 → widgets}/timeseries/options.ts +1 -1
- package/src/widgets/timeseries/skeleton.tsx +67 -46
- package/src/widgets/timeseries/types.ts +60 -12
- package/src/{widgets-v2 → widgets}/types.ts +8 -6
- package/src/widgets/utils/index.ts +3 -26
- package/src/widgets/wrapper/index.ts +14 -16
- package/src/{widgets-v2 → widgets}/wrapper/widget-wrapper.tsx +6 -2
- package/dist/actions-CGJD6q0t.js +0 -1318
- package/dist/actions-CGJD6q0t.js.map +0 -1
- package/dist/actions-yPZwFxSZ.js.map +0 -1
- package/dist/category-DGUDabsi.js +0 -829
- package/dist/category-DGUDabsi.js.map +0 -1
- package/dist/chart-config-B_fdIcD3.js.map +0 -1
- package/dist/cjs-CBrZjPCj.js +0 -75
- package/dist/cjs-CBrZjPCj.js.map +0 -1
- package/dist/components-FED-ArwH.js.map +0 -1
- package/dist/copy-button-TTlZONkX.js +0 -34
- package/dist/copy-button-TTlZONkX.js.map +0 -1
- package/dist/csv-modifiers-D6HGC24b.js +0 -26
- package/dist/csv-modifiers-D6HGC24b.js.map +0 -1
- package/dist/download-DdaK3qgC.js.map +0 -1
- package/dist/echart-BkaV3V5G.js +0 -133
- package/dist/echart-BkaV3V5G.js.map +0 -1
- package/dist/echart-DeBgdOtX.js.map +0 -1
- package/dist/formatter-wVO81tYk.js +0 -6
- package/dist/formatter-wVO81tYk.js.map +0 -1
- package/dist/formula-YfZmmuYX.js +0 -190
- package/dist/formula-YfZmmuYX.js.map +0 -1
- package/dist/formula-noJzQwKo.js +0 -285
- package/dist/formula-noJzQwKo.js.map +0 -1
- package/dist/hooks-zf5gKZYq.js +0 -22
- package/dist/hooks-zf5gKZYq.js.map +0 -1
- package/dist/markdown-2dfL6Cmb.js.map +0 -1
- package/dist/markdown-content-BWUqwx9F.js.map +0 -1
- package/dist/range-BCMAl5xf.js.map +0 -1
- package/dist/row-CvVGBuy_.js +0 -35
- package/dist/row-CvVGBuy_.js.map +0 -1
- package/dist/shared-resize-observer-BEiP2rQt.js +0 -157
- package/dist/shared-resize-observer-BEiP2rQt.js.map +0 -1
- package/dist/smart-tooltip-CwGHCqab.js +0 -34
- package/dist/smart-tooltip-CwGHCqab.js.map +0 -1
- package/dist/spread-Ccpg9fi0.js.map +0 -1
- package/dist/stores-tiFePP0A.js.map +0 -1
- package/dist/styles-Y-qGBELO.js +0 -13
- package/dist/styles-Y-qGBELO.js.map +0 -1
- package/dist/table-Bx9Uj3U0.js.map +0 -1
- package/dist/tooltip-DJUGNZxY.js +0 -23
- package/dist/tooltip-DJUGNZxY.js.map +0 -1
- package/dist/types/components/list-data/list-data-skeleton.d.ts +0 -5
- package/dist/types/components/list-data/list-data.d.ts +0 -19
- package/dist/types/components/list-data/styles.d.ts +0 -34
- package/dist/types/components/list-data/types.d.ts +0 -23
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/use-skeleton.d.ts +0 -1
- package/dist/types/hooks/use-widget-ref.d.ts +0 -21
- package/dist/types/widgets/actions/brush-toggle/brush-overlay.d.ts +0 -24
- package/dist/types/widgets/actions/brush-toggle/hit-test.d.ts +0 -19
- package/dist/types/widgets/actions/brush-toggle/types.d.ts +0 -73
- package/dist/types/widgets/actions/fullscreen/styles.d.ts +0 -16
- package/dist/types/widgets/actions/lock-selection/types.d.ts +0 -38
- package/dist/types/widgets/actions/relative-data/types.d.ts +0 -29
- package/dist/types/widgets/actions/relative-data/utils.d.ts +0 -9
- package/dist/types/widgets/actions/searcher/types.d.ts +0 -64
- package/dist/types/widgets/actions/shared/styles.d.ts +0 -11
- package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +0 -1
- package/dist/types/widgets/actions/stack-toggle/types.d.ts +0 -25
- package/dist/types/widgets/actions/zoom-toggle/types.d.ts +0 -41
- package/dist/types/widgets/bar/config.d.ts +0 -9
- package/dist/types/widgets/bar/style.d.ts +0 -37
- package/dist/types/widgets/category/config.d.ts +0 -20
- package/dist/types/widgets/echart/const.d.ts +0 -1
- package/dist/types/widgets/echart/options.d.ts +0 -9
- package/dist/types/widgets/echart/types.d.ts +0 -38
- package/dist/types/widgets/echart/utils.d.ts +0 -128
- package/dist/types/widgets/error/error.d.ts +0 -12
- package/dist/types/widgets/error/index.d.ts +0 -2
- package/dist/types/widgets/error/types.d.ts +0 -20
- package/dist/types/widgets/formula/components/item.d.ts +0 -5
- package/dist/types/widgets/formula/components/prefix.d.ts +0 -5
- package/dist/types/widgets/formula/components/row.d.ts +0 -5
- package/dist/types/widgets/formula/components/series.d.ts +0 -5
- package/dist/types/widgets/formula/components/suffix.d.ts +0 -5
- package/dist/types/widgets/formula/components/value.d.ts +0 -5
- package/dist/types/widgets/formula/config.d.ts +0 -15
- package/dist/types/widgets/formula/serializer.d.ts +0 -16
- package/dist/types/widgets/histogram/config.d.ts +0 -21
- package/dist/types/widgets/histogram/style.d.ts +0 -15
- package/dist/types/widgets/loader/index.d.ts +0 -3
- package/dist/types/widgets/loader/loader.d.ts +0 -24
- package/dist/types/widgets/loader/types.d.ts +0 -9
- package/dist/types/widgets/loader/utils.d.ts +0 -35
- package/dist/types/widgets/markdown/config.d.ts +0 -14
- package/dist/types/widgets/no-data/index.d.ts +0 -2
- package/dist/types/widgets/no-data/no-data.d.ts +0 -36
- package/dist/types/widgets/no-data/style.d.ts +0 -6
- package/dist/types/widgets/no-data/types.d.ts +0 -71
- package/dist/types/widgets/note/index.d.ts +0 -2
- package/dist/types/widgets/note/note.d.ts +0 -12
- package/dist/types/widgets/note/types.d.ts +0 -8
- package/dist/types/widgets/pie/config.d.ts +0 -9
- package/dist/types/widgets/pie/style.d.ts +0 -15
- package/dist/types/widgets/range/components/range-item.d.ts +0 -5
- package/dist/types/widgets/range/config.d.ts +0 -7
- package/dist/types/widgets/range/serializer.d.ts +0 -16
- package/dist/types/widgets/scatterplot/config.d.ts +0 -9
- package/dist/types/widgets/scatterplot/style.d.ts +0 -24
- package/dist/types/widgets/selection-summary/index.d.ts +0 -2
- package/dist/types/widgets/selection-summary/types.d.ts +0 -13
- package/dist/types/widgets/skeleton-loader/index.d.ts +0 -2
- package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +0 -12
- package/dist/types/widgets/skeleton-loader/types.d.ts +0 -7
- package/dist/types/widgets/spread/components/max-value.d.ts +0 -5
- package/dist/types/widgets/spread/components/min-value.d.ts +0 -5
- package/dist/types/widgets/spread/components/separator.d.ts +0 -5
- package/dist/types/widgets/spread/config.d.ts +0 -16
- package/dist/types/widgets/spread/style.d.ts +0 -21
- package/dist/types/widgets/stores/use-widget-selector.d.ts +0 -35
- package/dist/types/widgets/stores/widget-store.d.ts +0 -60
- package/dist/types/widgets/subheader/index.d.ts +0 -2
- package/dist/types/widgets/subheader/types.d.ts +0 -10
- package/dist/types/widgets/table/components/cell-header.d.ts +0 -5
- package/dist/types/widgets/table/components/cell.d.ts +0 -18
- package/dist/types/widgets/table/components/pagination-actions.d.ts +0 -5
- package/dist/types/widgets/table/components/pagination.d.ts +0 -5
- package/dist/types/widgets/table/components/row.d.ts +0 -5
- package/dist/types/widgets/table/config.d.ts +0 -21
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +0 -41
- package/dist/types/widgets/table/hooks/use-selection.d.ts +0 -39
- package/dist/types/widgets/table/hooks/use-sort.d.ts +0 -30
- package/dist/types/widgets/table/serializer.d.ts +0 -16
- package/dist/types/widgets/timeseries/config.d.ts +0 -9
- package/dist/types/widgets/timeseries/style.d.ts +0 -38
- package/dist/types/widgets/toolbar-actions/index.d.ts +0 -2
- package/dist/types/widgets/toolbar-actions/styles.d.ts +0 -37
- package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +0 -17
- package/dist/types/widgets/toolbar-actions/types.d.ts +0 -52
- package/dist/types/widgets/utils/chart-config/config-factory.d.ts +0 -38
- package/dist/types/widgets/utils/chart-config/csv-modifiers.d.ts +0 -19
- package/dist/types/widgets/utils/chart-config/download-config.d.ts +0 -3
- package/dist/types/widgets/utils/chart-config/index.d.ts +0 -9
- package/dist/types/widgets/utils/formatter.d.ts +0 -2
- package/dist/types/widgets/utils/skeleton/index.d.ts +0 -4
- package/dist/types/widgets/utils/skeleton/styles.d.ts +0 -19
- package/dist/types/widgets/wrapper/components/actions.d.ts +0 -5
- package/dist/types/widgets/wrapper/components/options.d.ts +0 -5
- package/dist/types/widgets/wrapper/components/title.d.ts +0 -9
- package/dist/types/widgets/wrapper/styles.d.ts +0 -89
- package/dist/types/widgets/wrapper/types.d.ts +0 -37
- package/dist/types/widgets/wrapper/wrapper-ui.d.ts +0 -16
- package/dist/types/widgets/wrapper/wrapper.d.ts +0 -16
- package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +0 -56
- package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +0 -2
- package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +0 -29
- package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +0 -14
- package/dist/types/widgets-v2/actions/change-column/types.d.ts +0 -10
- package/dist/types/widgets-v2/actions/download/download.d.ts +0 -18
- package/dist/types/widgets-v2/actions/download/exports.d.ts +0 -37
- package/dist/types/widgets-v2/actions/download/types.d.ts +0 -35
- package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +0 -59
- package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +0 -14
- package/dist/types/widgets-v2/actions/index.d.ts +0 -10
- package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +0 -57
- package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +0 -39
- package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +0 -23
- package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +0 -11
- package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +0 -10
- package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +0 -12
- package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +0 -12
- package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +0 -35
- package/dist/types/widgets-v2/bar/index.d.ts +0 -4
- package/dist/types/widgets-v2/bar/skeleton.d.ts +0 -6
- package/dist/types/widgets-v2/bar/types.d.ts +0 -46
- package/dist/types/widgets-v2/category/category-ui.d.ts +0 -88
- package/dist/types/widgets-v2/category/components/category-bar.d.ts +0 -23
- package/dist/types/widgets-v2/category/components/category-legend.d.ts +0 -34
- package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +0 -31
- package/dist/types/widgets-v2/category/components/category-row-other.d.ts +0 -26
- package/dist/types/widgets-v2/category/components/category-row-single.d.ts +0 -28
- package/dist/types/widgets-v2/category/index.d.ts +0 -10
- package/dist/types/widgets-v2/category/skeleton.d.ts +0 -11
- package/dist/types/widgets-v2/category/style.d.ts +0 -193
- package/dist/types/widgets-v2/category/types.d.ts +0 -55
- package/dist/types/widgets-v2/echart/echart-ui.d.ts +0 -44
- package/dist/types/widgets-v2/echart/echart.d.ts +0 -75
- package/dist/types/widgets-v2/echart/index.d.ts +0 -4
- package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +0 -5
- package/dist/types/widgets-v2/formula/formula-ui.d.ts +0 -20
- package/dist/types/widgets-v2/formula/index.d.ts +0 -11
- package/dist/types/widgets-v2/formula/skeleton.d.ts +0 -4
- package/dist/types/widgets-v2/formula/style.d.ts +0 -29
- package/dist/types/widgets-v2/formula/types.d.ts +0 -43
- package/dist/types/widgets-v2/histogram/index.d.ts +0 -5
- package/dist/types/widgets-v2/histogram/skeleton.d.ts +0 -9
- package/dist/types/widgets-v2/histogram/types.d.ts +0 -60
- package/dist/types/widgets-v2/markdown/index.d.ts +0 -6
- package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +0 -12
- package/dist/types/widgets-v2/markdown/markdown.d.ts +0 -6
- package/dist/types/widgets-v2/markdown/skeleton.d.ts +0 -4
- package/dist/types/widgets-v2/markdown/style.d.ts +0 -61
- package/dist/types/widgets-v2/markdown/types.d.ts +0 -4
- package/dist/types/widgets-v2/note/style.d.ts +0 -26
- package/dist/types/widgets-v2/pie/index.d.ts +0 -4
- package/dist/types/widgets-v2/pie/skeleton.d.ts +0 -13
- package/dist/types/widgets-v2/pie/types.d.ts +0 -57
- package/dist/types/widgets-v2/range/index.d.ts +0 -4
- package/dist/types/widgets-v2/range/range-ui.d.ts +0 -27
- package/dist/types/widgets-v2/range/skeleton.d.ts +0 -9
- package/dist/types/widgets-v2/range/style.d.ts +0 -40
- package/dist/types/widgets-v2/range/types.d.ts +0 -37
- package/dist/types/widgets-v2/scatterplot/index.d.ts +0 -5
- package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +0 -12
- package/dist/types/widgets-v2/scatterplot/types.d.ts +0 -54
- package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +0 -29
- package/dist/types/widgets-v2/selection-summary/style.d.ts +0 -38
- package/dist/types/widgets-v2/spread/index.d.ts +0 -7
- package/dist/types/widgets-v2/spread/skeleton.d.ts +0 -9
- package/dist/types/widgets-v2/spread/spread-ui.d.ts +0 -18
- package/dist/types/widgets-v2/spread/types.d.ts +0 -25
- package/dist/types/widgets-v2/stores/index.d.ts +0 -8
- package/dist/types/widgets-v2/stores/types.d.ts +0 -55
- package/dist/types/widgets-v2/subheader/style.d.ts +0 -10
- package/dist/types/widgets-v2/subheader/subheader.d.ts +0 -11
- package/dist/types/widgets-v2/table/helpers.d.ts +0 -32
- package/dist/types/widgets-v2/table/index.d.ts +0 -8
- package/dist/types/widgets-v2/table/skeleton.d.ts +0 -22
- package/dist/types/widgets-v2/table/style.d.ts +0 -40
- package/dist/types/widgets-v2/table/table-ui.d.ts +0 -44
- package/dist/types/widgets-v2/table/types.d.ts +0 -48
- package/dist/types/widgets-v2/timeseries/index.d.ts +0 -5
- package/dist/types/widgets-v2/timeseries/skeleton.d.ts +0 -8
- package/dist/types/widgets-v2/timeseries/types.d.ts +0 -60
- package/dist/types/widgets-v2/utils/index.d.ts +0 -3
- package/dist/types/widgets-v2/wrapper/index.d.ts +0 -4
- package/dist/use-widget-selector-VSPhfhNm.js +0 -12
- package/dist/use-widget-selector-VSPhfhNm.js.map +0 -1
- package/dist/utils-Dr6gf3vD.js.map +0 -1
- package/dist/widget-store-BFPKYm4R.js +0 -187
- package/dist/widget-store-BFPKYm4R.js.map +0 -1
- package/dist/widgets/category.js.map +0 -1
- package/dist/widgets/error.js +0 -30
- package/dist/widgets/error.js.map +0 -1
- package/dist/widgets/loader.js +0 -66
- package/dist/widgets/loader.js.map +0 -1
- package/dist/widgets/markdown.js.map +0 -1
- package/dist/widgets/no-data.js +0 -55
- package/dist/widgets/no-data.js.map +0 -1
- package/dist/widgets/note.js +0 -127
- package/dist/widgets/note.js.map +0 -1
- package/dist/widgets/range.js.map +0 -1
- package/dist/widgets/selection-summary.js +0 -41
- package/dist/widgets/selection-summary.js.map +0 -1
- package/dist/widgets/skeleton-loader.js +0 -24
- package/dist/widgets/skeleton-loader.js.map +0 -1
- package/dist/widgets/spread.js.map +0 -1
- package/dist/widgets/subheader.js +0 -51
- package/dist/widgets/subheader.js.map +0 -1
- package/dist/widgets/table.js.map +0 -1
- package/dist/widgets/toolbar-actions.js +0 -145
- package/dist/widgets/toolbar-actions.js.map +0 -1
- package/dist/widgets/utils.js.map +0 -1
- package/dist/widgets/wrapper.js +0 -273
- package/dist/widgets/wrapper.js.map +0 -1
- package/dist/widgets-v2/actions.js +0 -4
- package/dist/widgets-v2/bar.js +0 -260
- package/dist/widgets-v2/bar.js.map +0 -1
- package/dist/widgets-v2/category.js +0 -2
- package/dist/widgets-v2/echart.js +0 -2
- package/dist/widgets-v2/formula.js +0 -2
- package/dist/widgets-v2/histogram.js +0 -297
- package/dist/widgets-v2/histogram.js.map +0 -1
- package/dist/widgets-v2/markdown.js +0 -3
- package/dist/widgets-v2/pie.js +0 -374
- package/dist/widgets-v2/pie.js.map +0 -1
- package/dist/widgets-v2/range.js +0 -2
- package/dist/widgets-v2/scatterplot.js +0 -330
- package/dist/widgets-v2/scatterplot.js.map +0 -1
- package/dist/widgets-v2/spread.js +0 -2
- package/dist/widgets-v2/stores.js +0 -2
- package/dist/widgets-v2/table.js +0 -2
- package/dist/widgets-v2/timeseries.js +0 -294
- package/dist/widgets-v2/timeseries.js.map +0 -1
- package/dist/widgets-v2/utils.js +0 -2
- package/dist/widgets-v2.js.map +0 -1
- package/dist/zoom-toggle-IsF8BnAp.js.map +0 -1
- package/src/components/list-data/list-data-skeleton.test.tsx +0 -10
- package/src/components/list-data/list-data-skeleton.tsx +0 -40
- package/src/components/list-data/list-data.test.tsx +0 -167
- package/src/components/list-data/list-data.tsx +0 -124
- package/src/components/list-data/styles.ts +0 -37
- package/src/components/list-data/types.ts +0 -25
- package/src/hooks/index.ts +0 -1
- package/src/hooks/use-skeleton.test.tsx +0 -32
- package/src/hooks/use-skeleton.ts +0 -19
- package/src/hooks/use-widget-ref.ts +0 -34
- package/src/widgets/README.md +0 -277
- package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +0 -465
- package/src/widgets/actions/brush-toggle/brush-overlay.tsx +0 -408
- package/src/widgets/actions/brush-toggle/hit-test.test.ts +0 -65
- package/src/widgets/actions/brush-toggle/hit-test.ts +0 -45
- package/src/widgets/actions/brush-toggle/types.ts +0 -78
- package/src/widgets/actions/change-column/change-column-dnd.test.tsx +0 -193
- package/src/widgets/actions/change-column/sortable-column-item.test.tsx +0 -124
- package/src/widgets/actions/download/exports.tsx +0 -118
- package/src/widgets/actions/fullscreen/styles.ts +0 -17
- package/src/widgets/actions/lock-selection/types.ts +0 -43
- package/src/widgets/actions/relative-data/types.ts +0 -33
- package/src/widgets/actions/relative-data/utils.test.ts +0 -223
- package/src/widgets/actions/relative-data/utils.ts +0 -58
- package/src/widgets/actions/searcher/searcher-toggle.test.tsx +0 -354
- package/src/widgets/actions/searcher/types.ts +0 -72
- package/src/widgets/actions/shared/styles.ts +0 -12
- package/src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx +0 -14
- package/src/widgets/actions/stack-toggle/types.ts +0 -29
- package/src/widgets/actions/zoom-toggle/types.ts +0 -44
- package/src/widgets/bar/config.ts +0 -140
- package/src/widgets/bar/style.ts +0 -33
- package/src/widgets/category/components/category-rows.test.tsx +0 -213
- package/src/widgets/category/config.ts +0 -86
- package/src/widgets/echart/const.ts +0 -1
- package/src/widgets/echart/options.ts +0 -57
- package/src/widgets/echart/types.ts +0 -45
- package/src/widgets/echart/utils.test.ts +0 -277
- package/src/widgets/echart/utils.ts +0 -244
- package/src/widgets/error/error.test.tsx +0 -331
- package/src/widgets/error/error.tsx +0 -51
- package/src/widgets/error/index.ts +0 -2
- package/src/widgets/error/types.ts +0 -24
- package/src/widgets/formula/components/item.test.tsx +0 -249
- package/src/widgets/formula/components/item.tsx +0 -21
- package/src/widgets/formula/components/prefix.test.tsx +0 -341
- package/src/widgets/formula/components/prefix.tsx +0 -19
- package/src/widgets/formula/components/row.test.tsx +0 -364
- package/src/widgets/formula/components/row.tsx +0 -24
- package/src/widgets/formula/components/series.tsx +0 -35
- package/src/widgets/formula/components/suffix.test.tsx +0 -383
- package/src/widgets/formula/components/suffix.tsx +0 -29
- package/src/widgets/formula/components/value.test.tsx +0 -329
- package/src/widgets/formula/components/value.tsx +0 -24
- package/src/widgets/formula/config.test.ts +0 -37
- package/src/widgets/formula/config.ts +0 -38
- package/src/widgets/formula/serializer.test.tsx +0 -144
- package/src/widgets/formula/serializer.ts +0 -28
- package/src/widgets/histogram/config.ts +0 -230
- package/src/widgets/histogram/style.ts +0 -8
- package/src/widgets/loader/index.ts +0 -4
- package/src/widgets/loader/loader.tsx +0 -92
- package/src/widgets/loader/types.ts +0 -13
- package/src/widgets/loader/utils.test.ts +0 -112
- package/src/widgets/loader/utils.ts +0 -57
- package/src/widgets/markdown/config.ts +0 -28
- package/src/widgets/no-data/index.ts +0 -2
- package/src/widgets/no-data/no-data.test.tsx +0 -497
- package/src/widgets/no-data/no-data.tsx +0 -112
- package/src/widgets/no-data/style.ts +0 -18
- package/src/widgets/no-data/types.ts +0 -76
- package/src/widgets/note/index.ts +0 -2
- package/src/widgets/note/note.test.tsx +0 -391
- package/src/widgets/note/note.tsx +0 -124
- package/src/widgets/note/types.ts +0 -9
- package/src/widgets/pie/config.ts +0 -245
- package/src/widgets/pie/style.ts +0 -8
- package/src/widgets/range/components/range-item.test.tsx +0 -243
- package/src/widgets/range/components/range-item.tsx +0 -214
- package/src/widgets/range/config.ts +0 -10
- package/src/widgets/range/serializer.test.ts +0 -70
- package/src/widgets/range/serializer.ts +0 -27
- package/src/widgets/scatterplot/config.ts +0 -136
- package/src/widgets/scatterplot/style.ts +0 -21
- package/src/widgets/selection-summary/index.ts +0 -6
- package/src/widgets/selection-summary/types.ts +0 -14
- package/src/widgets/skeleton-loader/index.ts +0 -2
- package/src/widgets/skeleton-loader/skeleton-loader.test.tsx +0 -139
- package/src/widgets/skeleton-loader/skeleton-loader.tsx +0 -35
- package/src/widgets/skeleton-loader/types.ts +0 -8
- package/src/widgets/spread/components/max-value.tsx +0 -29
- package/src/widgets/spread/components/min-value.tsx +0 -29
- package/src/widgets/spread/components/separator.tsx +0 -9
- package/src/widgets/spread/config.ts +0 -39
- package/src/widgets/spread/style.ts +0 -22
- package/src/widgets/stores/use-widget-selector.ts +0 -47
- package/src/widgets/stores/widget-store-branches.test.ts +0 -275
- package/src/widgets/stores/widget-store-performance.test.ts +0 -750
- package/src/widgets/stores/widget-store.test.ts +0 -942
- package/src/widgets/stores/widget-store.ts +0 -484
- package/src/widgets/subheader/index.ts +0 -3
- package/src/widgets/subheader/types.ts +0 -11
- package/src/widgets/table/components/cell-header.tsx +0 -58
- package/src/widgets/table/components/cell.tsx +0 -82
- package/src/widgets/table/components/pagination-actions.tsx +0 -67
- package/src/widgets/table/components/pagination.tsx +0 -41
- package/src/widgets/table/components/row.tsx +0 -65
- package/src/widgets/table/config.test.ts +0 -65
- package/src/widgets/table/config.ts +0 -75
- package/src/widgets/table/hooks/use-pagination.test.ts +0 -294
- package/src/widgets/table/hooks/use-pagination.ts +0 -148
- package/src/widgets/table/hooks/use-selection.test.ts +0 -504
- package/src/widgets/table/hooks/use-selection.ts +0 -194
- package/src/widgets/table/hooks/use-sort.test.ts +0 -296
- package/src/widgets/table/hooks/use-sort.ts +0 -131
- package/src/widgets/table/serializer.ts +0 -54
- package/src/widgets/timeseries/config.ts +0 -136
- package/src/widgets/timeseries/style.ts +0 -36
- package/src/widgets/toolbar-actions/index.ts +0 -6
- package/src/widgets/toolbar-actions/styles.ts +0 -38
- package/src/widgets/toolbar-actions/toolbar-actions.test.tsx +0 -691
- package/src/widgets/toolbar-actions/toolbar-actions.tsx +0 -145
- package/src/widgets/toolbar-actions/types.ts +0 -60
- package/src/widgets/utils/chart-config/config-factory.ts +0 -67
- package/src/widgets/utils/chart-config/csv-modifiers.ts +0 -56
- package/src/widgets/utils/chart-config/download-config.ts +0 -22
- package/src/widgets/utils/chart-config/index.ts +0 -29
- package/src/widgets/utils/formatter.ts +0 -2
- package/src/widgets/utils/skeleton/index.ts +0 -5
- package/src/widgets/utils/skeleton/styles.ts +0 -20
- package/src/widgets/wrapper/components/actions.test.tsx +0 -105
- package/src/widgets/wrapper/components/actions.tsx +0 -35
- package/src/widgets/wrapper/components/options.test.tsx +0 -331
- package/src/widgets/wrapper/components/options.tsx +0 -81
- package/src/widgets/wrapper/components/title.test.tsx +0 -126
- package/src/widgets/wrapper/components/title.tsx +0 -35
- package/src/widgets/wrapper/styles.ts +0 -98
- package/src/widgets/wrapper/types.ts +0 -55
- package/src/widgets/wrapper/wrapper-ui.test.tsx +0 -232
- package/src/widgets/wrapper/wrapper-ui.tsx +0 -72
- package/src/widgets/wrapper/wrapper.test.tsx +0 -365
- package/src/widgets/wrapper/wrapper.tsx +0 -60
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +0 -180
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +0 -154
- package/src/widgets-v2/actions/change-column/change-column-icon.tsx +0 -14
- package/src/widgets-v2/actions/change-column/change-column.test.tsx +0 -59
- package/src/widgets-v2/actions/change-column/change-column.tsx +0 -189
- package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +0 -63
- package/src/widgets-v2/actions/change-column/types.ts +0 -11
- package/src/widgets-v2/actions/download/download.test.tsx +0 -327
- package/src/widgets-v2/actions/download/download.tsx +0 -144
- package/src/widgets-v2/actions/download/exports.test.tsx +0 -198
- package/src/widgets-v2/actions/download/types.ts +0 -32
- package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +0 -150
- package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +0 -230
- package/src/widgets-v2/actions/fullscreen/types.ts +0 -15
- package/src/widgets-v2/actions/index.ts +0 -95
- package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +0 -301
- package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +0 -188
- package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +0 -71
- package/src/widgets-v2/actions/relative-data/relative-data.tsx +0 -107
- package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +0 -91
- package/src/widgets-v2/actions/searcher/searcher.tsx +0 -111
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +0 -61
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +0 -54
- package/src/widgets-v2/actions/stack-toggle/style.ts +0 -11
- package/src/widgets-v2/actions/zoom-toggle/style.ts +0 -11
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +0 -107
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +0 -106
- package/src/widgets-v2/bar/index.ts +0 -10
- package/src/widgets-v2/bar/skeleton.tsx +0 -69
- package/src/widgets-v2/bar/types.ts +0 -51
- package/src/widgets-v2/category/category-ui.test.tsx +0 -909
- package/src/widgets-v2/category/category-ui.tsx +0 -479
- package/src/widgets-v2/category/components/category-bar.tsx +0 -49
- package/src/widgets-v2/category/components/category-legend.tsx +0 -82
- package/src/widgets-v2/category/components/category-row-multi.tsx +0 -86
- package/src/widgets-v2/category/components/category-row-other.tsx +0 -84
- package/src/widgets-v2/category/components/category-row-single.tsx +0 -76
- package/src/widgets-v2/category/index.ts +0 -32
- package/src/widgets-v2/category/skeleton.tsx +0 -74
- package/src/widgets-v2/category/style.ts +0 -329
- package/src/widgets-v2/category/types.ts +0 -61
- package/src/widgets-v2/echart/echart-ui.test.tsx +0 -327
- package/src/widgets-v2/echart/echart-ui.tsx +0 -232
- package/src/widgets-v2/echart/echart.test.tsx +0 -229
- package/src/widgets-v2/echart/echart.tsx +0 -199
- package/src/widgets-v2/echart/index.ts +0 -22
- package/src/widgets-v2/echart/shared-resize-observer.ts +0 -56
- package/src/widgets-v2/echart/style.ts +0 -8
- package/src/widgets-v2/formula/formula-ui.test.tsx +0 -91
- package/src/widgets-v2/formula/formula-ui.tsx +0 -66
- package/src/widgets-v2/formula/index.ts +0 -17
- package/src/widgets-v2/formula/skeleton.tsx +0 -27
- package/src/widgets-v2/formula/style.ts +0 -31
- package/src/widgets-v2/formula/types.ts +0 -48
- package/src/widgets-v2/histogram/index.ts +0 -13
- package/src/widgets-v2/histogram/skeleton.tsx +0 -70
- package/src/widgets-v2/histogram/types.ts +0 -64
- package/src/widgets-v2/markdown/index.ts +0 -6
- package/src/widgets-v2/markdown/markdown-ui.test.tsx +0 -75
- package/src/widgets-v2/markdown/markdown-ui.tsx +0 -55
- package/src/widgets-v2/markdown/markdown.tsx +0 -17
- package/src/widgets-v2/markdown/skeleton.tsx +0 -32
- package/src/widgets-v2/markdown/style.ts +0 -53
- package/src/widgets-v2/markdown/types.ts +0 -4
- package/src/widgets-v2/note/style.ts +0 -26
- package/src/widgets-v2/pie/index.ts +0 -10
- package/src/widgets-v2/pie/skeleton.tsx +0 -94
- package/src/widgets-v2/pie/types.ts +0 -62
- package/src/widgets-v2/range/index.ts +0 -4
- package/src/widgets-v2/range/range-ui.test.tsx +0 -136
- package/src/widgets-v2/range/range-ui.tsx +0 -278
- package/src/widgets-v2/range/skeleton.tsx +0 -47
- package/src/widgets-v2/range/style.ts +0 -41
- package/src/widgets-v2/range/types.ts +0 -37
- package/src/widgets-v2/scatterplot/index.ts +0 -14
- package/src/widgets-v2/scatterplot/skeleton.tsx +0 -84
- package/src/widgets-v2/scatterplot/types.ts +0 -59
- package/src/widgets-v2/selection-summary/selection-summary.tsx +0 -82
- package/src/widgets-v2/selection-summary/style.ts +0 -38
- package/src/widgets-v2/spread/index.ts +0 -11
- package/src/widgets-v2/spread/skeleton.tsx +0 -38
- package/src/widgets-v2/spread/spread-ui.test.tsx +0 -108
- package/src/widgets-v2/spread/spread-ui.tsx +0 -52
- package/src/widgets-v2/spread/types.ts +0 -27
- package/src/widgets-v2/stores/index.ts +0 -49
- package/src/widgets-v2/stores/types.ts +0 -64
- package/src/widgets-v2/subheader/style.ts +0 -12
- package/src/widgets-v2/subheader/subheader.test.tsx +0 -30
- package/src/widgets-v2/subheader/subheader.tsx +0 -16
- package/src/widgets-v2/table/helpers.test.ts +0 -233
- package/src/widgets-v2/table/helpers.ts +0 -131
- package/src/widgets-v2/table/index.ts +0 -24
- package/src/widgets-v2/table/skeleton.tsx +0 -65
- package/src/widgets-v2/table/style.ts +0 -43
- package/src/widgets-v2/table/table-ui.tsx +0 -364
- package/src/widgets-v2/table/types.ts +0 -55
- package/src/widgets-v2/timeseries/index.ts +0 -11
- package/src/widgets-v2/timeseries/skeleton.tsx +0 -76
- package/src/widgets-v2/timeseries/types.ts +0 -65
- package/src/widgets-v2/utils/index.ts +0 -3
- package/src/widgets-v2/wrapper/index.ts +0 -14
- /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/change-column/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/change-column/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/change-column/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/constants.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/csv-item.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/icons.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/download/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2/actions/brush-toggle → widgets/actions/lock-selection}/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/relative-data/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/relative-data/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2/actions/lock-selection → widgets/actions/relative-data}/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/searcher/filter.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/searcher/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/searcher/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/searcher/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/show-all/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/show-all/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/show-all/show-all.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/show-all/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2/actions/relative-data → widgets/actions/stack-toggle}/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/index.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/bar/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/bar/options.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/category/category.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/category/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/echart/edge-label-clamp.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/echart/use-chart-selection.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/delta.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/formula.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/note.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/prefix.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/formula/suffix.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/histogram/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/histogram/options.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/histogram/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/markdown/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/markdown/markdown-content.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/note/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/note/widget-note.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/pie/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/pie/options.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/provider/widget-provider.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/range/range.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/scatterplot/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/scatterplot/options.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/scatterplot/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/selection-summary/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/spread/band.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/spread/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/spread/separator.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/spread/spread.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/state/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/state/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/state/widget-state.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/pipeline-middleware.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/use-echart-instance.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/use-transform-enabled.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/use-transform.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/widget-context.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/stores/widget-store-registry.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/table/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/table/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/table/table.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/table/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/timeseries/download.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/timeseries/options.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/timeseries/transforms.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/toolbox/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/toolbox/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/toolbox/toolbox.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/utils/data-zoom-layout.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/utils/merge-options.d.ts +0 -0
- /package/dist/types/widgets/utils/{chart-config/option-builders.d.ts → option-builders.d.ts} +0 -0
- /package/dist/types/{widgets-v2 → widgets}/utils/resolve-theme-color.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/wrapper/labels.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/wrapper/style.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/wrapper/widget-actions.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/wrapper/widget-content.d.ts +0 -0
- /package/dist/types/{widgets-v2 → widgets}/wrapper/widget-wrapper.d.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/brush-toggle/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/brush-toggle/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/brush-toggle/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/brush-toggle/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/change-column/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/change-column/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/change-column/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/constants.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/csv-item.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/csv-item.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/icons.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/png-item.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/download/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/fullscreen/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/fullscreen/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/lock-selection/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/lock-selection/labels.ts +0 -0
- /package/src/{widgets-v2/actions/brush-toggle → widgets/actions/lock-selection}/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/lock-selection/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/relative-data/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/relative-data/labels.ts +0 -0
- /package/src/{widgets-v2/actions/lock-selection → widgets/actions/relative-data}/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/relative-data/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/searcher/filter.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/searcher/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/searcher/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/searcher/searcher.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/searcher/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/show-all/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/show-all/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/show-all/show-all.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/show-all/show-all.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/actions/show-all/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/stack-toggle/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/stack-toggle/labels.ts +0 -0
- /package/src/{widgets-v2/actions/relative-data → widgets/actions/stack-toggle}/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/stack-toggle/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/stack-toggle/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/index.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/bar/download.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/bar/download.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/bar/options.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/bar/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/category.relative-data.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/category.stack-toggle.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/category.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/category.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/components/category-bar-stacked.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/components/category-bar.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/components/category-row-other.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/components/category-row-stacked.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/category/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/category/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/category/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/echart/edge-label-clamp.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/echart/edge-label-clamp.ts +0 -0
- /package/src/{widgets-v2 → widgets}/echart/shared-resize-observer.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/echart/use-chart-selection.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/echart/use-chart-selection.ts +0 -0
- /package/src/{widgets-v2 → widgets}/formula/delta.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/download.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/download.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/formula.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/formula.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/prefix.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/subcomponents.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/formula/suffix.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/options.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/histogram/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/download.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/markdown-content.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/markdown-content.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/markdown.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/markdown/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/note/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/note/widget-note.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/pie/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/pie/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/pie/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/provider/widget-provider.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/provider/widget-provider.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/range/range.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/range/range.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/range/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/options.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/scatterplot/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/selection-summary/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/selection-summary/selection-summary.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/spread/band.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/spread/band.ts +0 -0
- /package/src/{widgets-v2 → widgets}/spread/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/spread/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/spread/separator.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/spread/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/spread/spread.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/spread/spread.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/state/labels.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/state/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/state/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/state/widget-state.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/stores/pipeline-middleware.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/pipeline-middleware.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/use-echart-instance.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/stores/use-echart-instance.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/use-transform-enabled.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/stores/use-transform-enabled.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/use-transform.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/stores/widget-context.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/stores/widget-context.ts +0 -0
- /package/src/{widgets-v2 → widgets}/stores/widget-store-registry.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/table/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/table/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/table/labels.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/table/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/table/table-ui.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/table/table.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/table/table.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/table/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/table/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/download.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/download.ts +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/options.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/skeleton.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/transforms.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/timeseries/transforms.ts +0 -0
- /package/src/{widgets-v2 → widgets}/toolbox/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/toolbox/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/toolbox/toolbox.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/toolbox/toolbox.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/utils/data-zoom-layout.ts +0 -0
- /package/src/{widgets-v2 → widgets}/utils/merge-options.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/utils/merge-options.ts +0 -0
- /package/src/widgets/utils/{chart-config/option-builders.test.ts → option-builders.test.ts} +0 -0
- /package/src/widgets/utils/{chart-config/option-builders.ts → option-builders.ts} +0 -0
- /package/src/{widgets-v2 → widgets}/utils/resolve-theme-color.test.ts +0 -0
- /package/src/{widgets-v2 → widgets}/utils/resolve-theme-color.ts +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/labels.ts +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/style.ts +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/widget-actions.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/widget-actions.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/widget-content.test.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/widget-content.tsx +0 -0
- /package/src/{widgets-v2 → widgets}/wrapper/widget-wrapper.test.tsx +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function n(e) {
|
|
1
|
+
//#region src/widgets/utils/option-builders.ts
|
|
2
|
+
function e(e) {
|
|
4
3
|
if (e === 0) return 0;
|
|
5
4
|
let t = Math.abs(e), n = 10 ** Math.floor(Math.log10(t)), r = Math.ceil(t / n) * n;
|
|
6
5
|
return e < 0 ? -r : r;
|
|
7
6
|
}
|
|
8
|
-
function
|
|
7
|
+
function t({ hasLegend: e, labelFormatter: t }) {
|
|
9
8
|
return {
|
|
10
9
|
show: e,
|
|
11
10
|
icon: "circle",
|
|
@@ -16,49 +15,26 @@ function r({ hasLegend: e, labelFormatter: t }) {
|
|
|
16
15
|
...t && { formatter: (e) => String(t(e)) }
|
|
17
16
|
};
|
|
18
17
|
}
|
|
19
|
-
function
|
|
18
|
+
function n(e, t) {
|
|
20
19
|
return {
|
|
21
20
|
...!e && { bottom: parseInt(t.spacing(3)) },
|
|
22
21
|
...e && { bottom: parseInt(t.spacing(7)) }
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
|
-
function
|
|
24
|
+
function r(e) {
|
|
26
25
|
return {
|
|
27
26
|
fontSize: e.typography.overlineDelicate?.fontSize,
|
|
28
27
|
fontFamily: e.typography.overlineDelicate?.fontFamily,
|
|
29
28
|
color: e.palette.black?.[60] ?? e.palette.text.secondary
|
|
30
29
|
};
|
|
31
30
|
}
|
|
32
|
-
function
|
|
31
|
+
function i(e) {
|
|
33
32
|
return function(t, n, r, i, a) {
|
|
34
33
|
let o = { top: parseInt(e.spacing(.5)) };
|
|
35
34
|
return a.contentSize[0] < a.viewSize[0] - t[0] ? o.left = t[0] : o.right = a.viewSize[0] - t[0], o;
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
|
-
function
|
|
39
|
-
if (e) return (t) => e(t);
|
|
40
|
-
}
|
|
41
|
-
function c(e, t) {
|
|
42
|
-
let n = e && !Array.isArray(e), r = e, i = t && n ? (e) => String(t(e)) : void 0;
|
|
43
|
-
return {
|
|
44
|
-
...r,
|
|
45
|
-
axisLabel: {
|
|
46
|
-
...typeof r.axisLabel == "object" && r.axisLabel ? r.axisLabel : {},
|
|
47
|
-
formatter: i
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function l(e, t) {
|
|
52
|
-
let n = s(t), r = e && !Array.isArray(e), i = e;
|
|
53
|
-
return (!r || i.type !== "value") && (n = void 0), {
|
|
54
|
-
...i,
|
|
55
|
-
axisLabel: {
|
|
56
|
-
...typeof i.axisLabel == "object" && i.axisLabel ? i.axisLabel : {},
|
|
57
|
-
formatter: n
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function u(e) {
|
|
37
|
+
function a(e) {
|
|
62
38
|
return (t) => {
|
|
63
39
|
let n = Array.isArray(t) ? t : [t], r = (e, t) => `<div style="margin: 0px 0 0;line-height:1;">${e ? `<div style="font-size:11px;color:#FFFFFF;font-weight:400;line-height:1; margin-bottom: 10px">${e}</div>` : ""}<div style="margin: 0;line-height:1;">${t}</div><div style="clear:both"></div></div>`, i = n.map((t) => {
|
|
64
40
|
let { name: r, seriesName: i, marker: a, value: o } = e(t, n);
|
|
@@ -72,7 +48,7 @@ function u(e) {
|
|
|
72
48
|
return r(a, i.map(({ seriesName: e, marker: t, value: n }) => `<div style="${o}"><div style="margin: 0px 0 0;line-height:1;">${t}${e ? `<span style="font-size:11px;color:#FFFFFF;font-weight:400;margin-left:2px;margin-right:10px">${e}</span>` : ""}<span style="float:right;margin-left:10px;font-size:11px;color:#FFFFFF;font-weight:900">${n}</span></div></div>`).join(""));
|
|
73
49
|
};
|
|
74
50
|
}
|
|
75
|
-
function
|
|
51
|
+
function o(e, t = "y") {
|
|
76
52
|
return e ? { label: { formatter: (n) => {
|
|
77
53
|
let r = n.encode?.[t]?.[0];
|
|
78
54
|
if (r === void 0) return "";
|
|
@@ -80,29 +56,7 @@ function d(e, t = "y") {
|
|
|
80
56
|
return typeof o == "number" ? e(o) : String(o ?? "");
|
|
81
57
|
} } } : {};
|
|
82
58
|
}
|
|
83
|
-
function f(e) {
|
|
84
|
-
return e ? { label: { formatter: (t) => {
|
|
85
|
-
let n = t.value;
|
|
86
|
-
return typeof n == "number" ? e(n) : String(n ?? "");
|
|
87
|
-
} } } : {};
|
|
88
|
-
}
|
|
89
|
-
//#endregion
|
|
90
|
-
//#region src/widgets/utils/chart-config/download-config.ts
|
|
91
|
-
function p(n) {
|
|
92
|
-
return function({ refUI: r }) {
|
|
93
|
-
return [{
|
|
94
|
-
...t,
|
|
95
|
-
modifier: () => t.modifier(r)
|
|
96
|
-
}, {
|
|
97
|
-
...e,
|
|
98
|
-
modifier: async (t) => {
|
|
99
|
-
let r = n(t);
|
|
100
|
-
return e.modifier(r);
|
|
101
|
-
}
|
|
102
|
-
}];
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
59
|
//#endregion
|
|
106
|
-
export {
|
|
60
|
+
export { a, o as i, n, i as o, t as r, e as s, r as t };
|
|
107
61
|
|
|
108
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=option-builders-DQivvvbb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-builders-DQivvvbb.js","names":[],"sources":["../src/widgets/utils/option-builders.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport type { LegendComponentOption } from 'echarts'\nimport type {\n CallbackDataParams,\n TopLevelFormatterParams,\n} from 'echarts/types/dist/shared'\n\n/**\n * Shared EChart configuration builders for chart widgets\n */\n\n/**\n * Rounds a value up to the nearest \"nice\" number.\n * A nice number is a multiple of 10^floor(log10(value)).\n *\n * Examples: 547 → 600, 200 → 200, 1200 → 2000, 18 → 20, 5 → 5, -547 → -500\n */\nexport function niceNum(value: number): number {\n if (value === 0) return 0\n const absValue = Math.abs(value)\n const base = Math.pow(10, Math.floor(Math.log10(absValue)))\n const rounded = Math.ceil(absValue / base) * base\n return value < 0 ? -rounded : rounded\n}\n\n/**\n * Builds standard legend configuration for chart widgets\n *\n * @param params - Legend configuration parameters\n * @param params.hasLegend - Whether to show the legend\n * @param params.labelFormatter - Optional formatter for legend item names\n * @returns Legend configuration object\n */\nexport function buildLegendConfig({\n hasLegend,\n labelFormatter,\n}: {\n hasLegend: boolean\n labelFormatter?: (value: string | number) => string | number\n}): LegendComponentOption {\n return {\n show: hasLegend,\n icon: 'circle' as const,\n left: 0,\n bottom: 0,\n orient: 'horizontal',\n type: 'scroll',\n ...(labelFormatter && {\n formatter: (name: string) => String(labelFormatter(name)),\n }),\n }\n}\n\n/**\n * Builds standard grid configuration with legend-aware spacing\n *\n * @param hasLegend - Whether the chart has a legend\n * @param theme - MUI theme for spacing\n * @param additionalConfig - Additional grid configuration to merge\n * @returns Grid configuration object\n */\nexport function buildGridConfig(hasLegend: boolean, theme: Theme) {\n return {\n ...(!hasLegend && { bottom: parseInt(theme.spacing(3)) }),\n ...(hasLegend && { bottom: parseInt(theme.spacing(7)) }),\n }\n}\n\n/**\n * Builds the shared axis-label text style for chart widgets, matching the\n * design's \"Overline (Delicate)\" token (Inter, 10px) in the secondary text\n * colour (`rgba(44,48,50,0.6)`). Spread into an ECharts `axisLabel` for both\n * x and y axes so every chart's labels stay consistent.\n *\n * Note: the token's `letterSpacing` and `textTransform: uppercase` are not\n * representable in ECharts canvas text, so only font size/family/colour are\n * applied.\n *\n * @param theme - MUI theme providing the typography token and palette\n * @returns `{ fontSize, fontFamily, color }` for an ECharts `axisLabel`\n */\nexport function buildAxisLabelStyle(theme: Theme): {\n fontSize: string | number | undefined\n fontFamily: string | undefined\n color: string\n} {\n return {\n fontSize: theme.typography.overlineDelicate?.fontSize,\n fontFamily: theme.typography.overlineDelicate?.fontFamily,\n color: theme.palette.black?.[60] ?? theme.palette.text.secondary,\n }\n}\n\n/**\n * Creates a tooltip position calculator that handles overflow\n * Used by bar, histogram, and scatterplot widgets\n *\n * @param theme - MUI theme for spacing\n * @returns Tooltip position function\n */\nexport function createTooltipPositioner(theme: Theme) {\n return function (\n point: [number, number],\n _params: unknown,\n _dom: unknown,\n _rect: unknown,\n size: { contentSize: [number, number]; viewSize: [number, number] },\n ) {\n const position = { top: parseInt(theme.spacing(0.5)) } as Record<\n string,\n number\n >\n\n // Position tooltip left or right based on available space\n if (size.contentSize[0] < size.viewSize[0] - point[0]) {\n position.left = point[0]\n } else {\n position.right = size.viewSize[0] - point[0]\n }\n\n return position\n }\n}\n\n/**\n * Creates an axis label formatter for ECharts\n * Used to format numeric axis labels with a widget formatter\n *\n * @param formatter - Optional formatter function from widget config\n * @returns Axis label formatter function or undefined\n */\nexport function createAxisLabelFormatter(\n formatter?: (value: number) => string,\n) {\n if (!formatter) return undefined\n return (value: number) => formatter(value)\n}\n\n/**\n * Applies labelFormatter to xAxis configuration\n * Applies to any xAxis regardless of axis type (category, value, etc.)\n *\n * @param xAxis - Existing xAxis configuration\n * @param labelFormatter - Optional labelFormatter function from widget config\n * @returns Updated xAxis configuration\n */\nexport function applyXAxisFormatter(\n xAxis: unknown,\n formatter?: (value: string | number) => string | number,\n) {\n const xAxisIsObject = xAxis && !Array.isArray(xAxis)\n const xAxisTyped = xAxis as { type?: string; axisLabel?: unknown }\n\n const axisFormatter =\n formatter && xAxisIsObject\n ? (value: string | number) => String(formatter(value))\n : undefined\n\n return {\n ...xAxisTyped,\n axisLabel: {\n ...(typeof xAxisTyped.axisLabel === 'object' && xAxisTyped.axisLabel\n ? xAxisTyped.axisLabel\n : {}),\n formatter: axisFormatter,\n },\n }\n}\n\n/**\n * Applies formatter to yAxis configuration\n * Only applies to single axis objects (not arrays) with type 'value'\n *\n * @param yAxis - Existing yAxis configuration\n * @param formatter - Optional formatter function from widget config\n * @returns Updated yAxis configuration or undefined if no changes needed\n */\nexport function applyYAxisFormatter(\n yAxis: unknown,\n formatter?: (value: number) => string,\n) {\n let axisFormatter = createAxisLabelFormatter(formatter)\n\n const yAxisIsObject = yAxis && !Array.isArray(yAxis)\n const yAxisTyped = yAxis as { type?: string; axisLabel?: unknown }\n\n if (!yAxisIsObject || yAxisTyped.type !== 'value') {\n axisFormatter = undefined\n }\n\n return {\n ...yAxisTyped,\n axisLabel: {\n ...(typeof yAxisTyped.axisLabel === 'object' && yAxisTyped.axisLabel\n ? yAxisTyped.axisLabel\n : {}),\n formatter: axisFormatter,\n },\n }\n}\n\n/**\n * Creates a tooltip formatter for ECharts\n * Formats numeric values in tooltip using widget formatter\n * Handles both axis trigger (array) and item trigger (object) modes\n *\n * @param formatter - Optional formatter function from widget config\n * @returns Tooltip formatter function or undefined\n */\nexport function createTooltipFormatter(\n callback: (\n item: CallbackDataParams,\n items: CallbackDataParams[],\n ) => {\n name: string\n seriesName: string\n marker: string\n value: string | number\n },\n) {\n return (params: TopLevelFormatterParams) => {\n // Handle both array (axis trigger) and object (item trigger)\n const items = Array.isArray(params) ? params : [params]\n\n const tooltip = (name: string, callback: string) =>\n `<div style=\"margin: 0px 0 0;line-height:1;\">${name ? `<div style=\"font-size:11px;color:#FFFFFF;font-weight:400;line-height:1; margin-bottom: 10px\">${name}</div>` : ''}<div style=\"margin: 0;line-height:1;\">${callback}</div><div style=\"clear:both\"></div></div>`\n\n const values = items.map((item) => {\n const { name, seriesName, marker, value } = callback(item, items)\n return {\n name,\n seriesName,\n marker,\n value,\n }\n })\n\n const name = values[0]?.name ?? ''\n // Show margin if name exists or there are multiple items\n const showMargin = name || items.length > 1\n const marginStyle = showMargin\n ? 'margin: 10px 0 0;line-height:1;'\n : 'margin: 0;line-height:1;'\n\n const formattedValues = values.map(\n ({ seriesName, marker, value }) =>\n `<div style=\"${marginStyle}\"><div style=\"margin: 0px 0 0;line-height:1;\">${marker}${seriesName ? `<span style=\"font-size:11px;color:#FFFFFF;font-weight:400;margin-left:2px;margin-right:10px\">${seriesName}</span>` : ''}<span style=\"float:right;margin-left:10px;font-size:11px;color:#FFFFFF;font-weight:900\">${value}</span></div></div>`,\n )\n\n return tooltip(name, formattedValues.join(''))\n }\n}\n\n/**\n * Builds a series `label` config that applies formatter to the data value\n * extracted from a dataset row using ECharts encode/dimensionNames.\n *\n * Does not set `show` — labels remain hidden by default per ECharts defaults.\n *\n * @param formatter - Optional numeric value formatter\n * @param encodeKey - The encode dimension key to extract ('y' for vertical charts, 'x' for horizontal)\n */\nexport function buildSeriesLabelConfig(\n formatter?: (value: number) => string,\n encodeKey = 'y',\n): { label: { formatter: (params: CallbackDataParams) => string } } | object {\n if (!formatter) return {}\n\n return {\n label: {\n formatter: (params: CallbackDataParams) => {\n const encodeIndex = params.encode?.[encodeKey]?.[0]\n if (encodeIndex === undefined) return ''\n const dimName = params.dimensionNames?.[encodeIndex]\n const row = params.value as Record<string, string | number>\n const value = dimName ? row[dimName] : undefined\n return typeof value === 'number'\n ? formatter(value)\n : String(value ?? '')\n },\n },\n }\n}\n\n/**\n * Builds a series `label` config that applies formatter to a raw numeric value.\n * Used by histogram where series data is number[] (not datasets).\n *\n * Does not set `show` — labels remain hidden by default per ECharts defaults.\n *\n * @param formatter - Optional numeric value formatter\n */\nexport function buildHistogramSeriesLabelConfig(\n formatter?: (value: number) => string,\n): { label: { formatter: (params: CallbackDataParams) => string } } | object {\n if (!formatter) return {}\n\n return {\n label: {\n formatter: (params: CallbackDataParams) => {\n const value = params.value as number\n return typeof value === 'number'\n ? formatter(value)\n : String(value ?? '')\n },\n },\n }\n}\n"],"mappings":";AAiBA,SAAgB,EAAQ,GAAuB;CAC7C,IAAI,MAAU,GAAG,OAAO;CACxB,IAAM,IAAW,KAAK,IAAI,CAAK,GACzB,IAAgB,MAAI,KAAK,MAAM,KAAK,MAAM,CAAQ,CAAC,GACnD,IAAU,KAAK,KAAK,IAAW,CAAI,IAAI;CAC7C,OAAO,IAAQ,IAAI,CAAC,IAAU;AAChC;AAUA,SAAgB,EAAkB,EAChC,cACA,qBAIwB;CACxB,OAAO;EACL,MAAM;EACN,MAAM;EACN,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,MAAM;EACN,GAAI,KAAkB,EACpB,YAAY,MAAiB,OAAO,EAAe,CAAI,CAAC,EAC1D;CACF;AACF;AAUA,SAAgB,EAAgB,GAAoB,GAAc;CAChE,OAAO;EACL,GAAI,CAAC,KAAa,EAAE,QAAQ,SAAS,EAAM,QAAQ,CAAC,CAAC,EAAE;EACvD,GAAI,KAAa,EAAE,QAAQ,SAAS,EAAM,QAAQ,CAAC,CAAC,EAAE;CACxD;AACF;AAeA,SAAgB,EAAoB,GAIlC;CACA,OAAO;EACL,UAAU,EAAM,WAAW,kBAAkB;EAC7C,YAAY,EAAM,WAAW,kBAAkB;EAC/C,OAAO,EAAM,QAAQ,QAAQ,OAAO,EAAM,QAAQ,KAAK;CACzD;AACF;AASA,SAAgB,EAAwB,GAAc;CACpD,OAAO,SACL,GACA,GACA,GACA,GACA,GACA;EACA,IAAM,IAAW,EAAE,KAAK,SAAS,EAAM,QAAQ,EAAG,CAAC,EAAE;EAYrD,OANI,EAAK,YAAY,KAAK,EAAK,SAAS,KAAK,EAAM,KACjD,EAAS,OAAO,EAAM,KAEtB,EAAS,QAAQ,EAAK,SAAS,KAAK,EAAM,IAGrC;CACT;AACF;AAuFA,SAAgB,EACd,GASA;CACA,QAAQ,MAAoC;EAE1C,IAAM,IAAQ,MAAM,QAAQ,CAAM,IAAI,IAAS,CAAC,CAAM,GAEhD,KAAW,GAAc,MAC7B,+CAA+C,IAAO,gGAAgG,EAAK,UAAU,GAAG,wCAAwC,EAAS,6CAErN,IAAS,EAAM,KAAK,MAAS;GACjC,IAAM,EAAE,SAAM,eAAY,WAAQ,aAAU,EAAS,GAAM,CAAK;GAChE,OAAO;IACL;IACA;IACA;IACA;GACF;EACF,CAAC,GAEK,IAAO,EAAO,EAAE,EAAE,QAAQ,IAG1B,IADa,KAAQ,EAAM,SAAS,IAEtC,oCACA;EAOJ,OAAO,EAAQ,GALS,EAAO,KAC5B,EAAE,eAAY,WAAQ,eACrB,eAAe,EAAY,gDAAgD,IAAS,IAAa,gGAAgG,EAAW,WAAW,GAAG,0FAA0F,EAAM,oBAGzS,CAAA,CAAgB,KAAK,EAAE,CAAC;CAC/C;AACF;AAWA,SAAgB,EACd,GACA,IAAY,KAC+D;CAG3E,OAFK,IAEE,EACL,OAAO,EACL,YAAY,MAA+B;EACzC,IAAM,IAAc,EAAO,SAAS,EAAU,GAAG;EACjD,IAAI,MAAgB,KAAA,GAAW,OAAO;EACtC,IAAM,IAAU,EAAO,iBAAiB,IAClC,IAAM,EAAO,OACb,IAAQ,IAAU,EAAI,KAAW,KAAA;EACvC,OAAO,OAAO,KAAU,WACpB,EAAU,CAAK,IACf,OAAO,KAAS,EAAE;CACxB,EACF,EACF,IAfuB,CAAC;AAgB1B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { C as e, T as t } from "./stores-
|
|
1
|
+
import { C as e, T as t } from "./stores-B8CHbgw-.js";
|
|
2
2
|
import { c as n } from "react/compiler-runtime";
|
|
3
3
|
import { useState as r } from "react";
|
|
4
4
|
import { Box as i, Skeleton as a, Slider as o, TextField as s, Typography as c } from "@mui/material";
|
|
5
5
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
-
//#region src/widgets
|
|
6
|
+
//#region src/widgets/range/style.ts
|
|
7
7
|
var d = {
|
|
8
8
|
root: {
|
|
9
9
|
display: "flex",
|
|
@@ -38,7 +38,7 @@ var d = {
|
|
|
38
38
|
note: { color: "text.secondary" }
|
|
39
39
|
};
|
|
40
40
|
//#endregion
|
|
41
|
-
//#region src/widgets
|
|
41
|
+
//#region src/widgets/range/range-ui.tsx
|
|
42
42
|
function f(e) {
|
|
43
43
|
let t = n(11), { items: r, onChange: a, onChangeCommitted: o, formatter: s } = e, c = s ?? p, u;
|
|
44
44
|
if (t[0] !== c || t[1] !== r || t[2] !== a || t[3] !== o) {
|
|
@@ -189,7 +189,7 @@ function h(e) {
|
|
|
189
189
|
let C = S, w;
|
|
190
190
|
t[15] === Symbol.for("react.memo_cache_sentinel") ? (w = (e) => _(e.target.value), t[15] = w) : w = t[15];
|
|
191
191
|
let T;
|
|
192
|
-
t[16] === h ? T = t[17] : (T = { "aria-label": h }, t[16] = h, t[17] = T);
|
|
192
|
+
t[16] === h ? T = t[17] : (T = { htmlInput: { "aria-label": h } }, t[16] = h, t[17] = T);
|
|
193
193
|
let E;
|
|
194
194
|
return t[18] !== y || t[19] !== b || t[20] !== C || t[21] !== x || t[22] !== o.disabled || t[23] !== i || t[24] !== T ? (E = /* @__PURE__ */ l(s, {
|
|
195
195
|
name: i,
|
|
@@ -201,14 +201,14 @@ function h(e) {
|
|
|
201
201
|
disabled: o.disabled,
|
|
202
202
|
size: "small",
|
|
203
203
|
sx: d.input,
|
|
204
|
-
|
|
204
|
+
slotProps: T
|
|
205
205
|
}), t[18] = y, t[19] = b, t[20] = C, t[21] = x, t[22] = o.disabled, t[23] = i, t[24] = T, t[25] = E) : E = t[25], E;
|
|
206
206
|
}
|
|
207
207
|
function g(e) {
|
|
208
208
|
if (e != null) return typeof e == "boolean" ? e : [...e];
|
|
209
209
|
}
|
|
210
210
|
//#endregion
|
|
211
|
-
//#region src/widgets
|
|
211
|
+
//#region src/widgets/range/range.tsx
|
|
212
212
|
var _ = (e) => ({
|
|
213
213
|
data: e.data ?? [],
|
|
214
214
|
formatter: e.formatter
|
|
@@ -223,7 +223,7 @@ function v(r) {
|
|
|
223
223
|
}), i[0] = a, i[1] = o, i[2] = c.data, i[3] = c.formatter, i[4] = u) : u = i[4], u;
|
|
224
224
|
}
|
|
225
225
|
//#endregion
|
|
226
|
-
//#region src/widgets
|
|
226
|
+
//#region src/widgets/range/skeleton.tsx
|
|
227
227
|
var y = {
|
|
228
228
|
root: {
|
|
229
229
|
display: "flex",
|
|
@@ -274,4 +274,4 @@ function x(e, t) {
|
|
|
274
274
|
//#endregion
|
|
275
275
|
export { v as n, f as r, b as t };
|
|
276
276
|
|
|
277
|
-
//# sourceMappingURL=range-
|
|
277
|
+
//# sourceMappingURL=range-DHQSsl2_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-DHQSsl2_.js","names":["{\n items,\n onChange,\n onChangeCommitted,\n formatter,\n}: RangeUIProps","(n: number) => String(n)","items.map((item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n ))","(item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n )","<Box sx={styles.root}>\n {items.map((item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n ))}\n </Box>","{\n index,\n item,\n fmt,\n onChange,\n onChangeCommitted,\n}: RangeRowProps","item.value ?? [item.min, item.max]","max","min","value","(next: readonly [number, number]): readonly [number, number] => {\n const [lowRaw, highRaw] = next\n const low = Math.min(Math.max(lowRaw, item.min), item.max)\n const high = Math.min(Math.max(highRaw, item.min), item.max)\n return low <= high ? [low, high] : [high, low]\n }","useCallback(\n (next: readonly [number, number]): readonly [number, number] => {\n const [lowRaw, highRaw] = next\n const low = Math.min(Math.max(lowRaw, item.min), item.max)\n const high = Math.min(Math.max(highRaw, item.min), item.max)\n return low <= high ? [low, high] : [high, low]\n },\n [item.min, item.max],\n )","(next: readonly [number, number]) => {\n onChange?.(index, normalize(next))\n }","next","useCallback(\n (next: readonly [number, number]) => {\n onChange?.(index, normalize(next))\n },\n [index, normalize, onChange],\n )","(next: readonly [number, number]) => {\n onChangeCommitted?.(index, normalize(next))\n }","useCallback(\n (next: readonly [number, number]) => {\n onChangeCommitted?.(index, normalize(next))\n },\n [index, normalize, onChangeCommitted],\n )","(next: readonly [number, number]) => {\n const value = normalize(next)\n onChange?.(index, value)\n onChangeCommitted?.(index, value)\n }","useCallback(\n (next: readonly [number, number]) => {\n const value = normalize(next)\n onChange?.(index, value)\n onChangeCommitted?.(index, value)\n },\n [index, normalize, onChange, onChangeCommitted],\n )","(_: Event, raw: number | number[]) => {\n if (!Array.isArray(raw)) return\n // Hoist defaults out of the destructure: react-compiler can't safely\n // reorder MemberExpression defaults inside an array pattern.\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commit([low, high])\n }","low","high","(\n _: Event | React.SyntheticEvent,\n raw: number | number[],\n ) => {\n if (!Array.isArray(raw)) return\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commitFinal([low, high])\n }","raw","item.color ? { color: item.color } : null","color","{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }","[...current]","resolveMarks(item.marks)","marks","<Box sx={styles.sliderContainer}>\n <Slider\n sx={{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }}\n value={[...current]}\n min={item.min}\n max={item.max}\n step={item.step ?? 1}\n marks={resolveMarks(item.marks)}\n disabled={item.disabled}\n valueLabelDisplay='auto'\n valueLabelFormat={fmt}\n onChange={handleSlider}\n onChangeCommitted={handleSliderCommitted}\n />\n </Box>","disabled","item.step ?? 1","item.min","item.max","<BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />","current[0]","`min-${current[0]}`","<BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />","current[1]","`max-${current[1]}`","<Box sx={styles.inputsRow}>\n {/* Text-input commits (blur / Enter) are final, but also notify\n `onChange` — see `commitText` — so consumers that only wired\n `onChange` still update on a typed value. */}\n <BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />\n <BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />\n </Box>","item.note ? (\n <Typography variant='caption' sx={styles.note}>\n {item.note}\n </Typography>\n ) : null","note","<Box sx={styles.item}>\n <Box sx={styles.sliderContainer}>\n <Slider\n sx={{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }}\n value={[...current]}\n min={item.min}\n max={item.max}\n step={item.step ?? 1}\n marks={resolveMarks(item.marks)}\n disabled={item.disabled}\n valueLabelDisplay='auto'\n valueLabelFormat={fmt}\n onChange={handleSlider}\n onChangeCommitted={handleSliderCommitted}\n />\n </Box>\n <Box sx={styles.inputsRow}>\n {/* Text-input commits (blur / Enter) are final, but also notify\n `onChange` — see `commitText` — so consumers that only wired\n `onChange` still update on a typed value. */}\n <BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />\n <BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />\n </Box>\n {item.note ? (\n <Typography variant='caption' sx={styles.note}>\n {item.note}\n </Typography>\n ) : null}\n </Box>","{\n name,\n value,\n item,\n fmt,\n editing,\n setEditing,\n commit,\n current,\n ariaLabel,\n}: BoundInputProps","() => {\n setEditing(name)\n }","e","editing === name ? raw : fmt(Number(raw))","(e) => setRaw(e.target.value)","{\n htmlInput: { 'aria-label': ariaLabel },\n }","<TextField\n name={name}\n value={display}\n onChange={(e) => setRaw(e.target.value)}\n onFocus={beginEditing}\n onBlur={finishEditingAndCommit}\n onKeyDown={commitOnEnter}\n disabled={item.disabled}\n size='small'\n sx={styles.input}\n slotProps={{\n htmlInput: { 'aria-label': ariaLabel },\n }}\n />","{ onChange, onChangeCommitted }: RangeProps","<RangeUI\n items={slice.data}\n formatter={slice.formatter}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />","data","formatter","{ count = 1 }: RangeSkeletonProps","count = 1","<Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Box key={`item-${i}`} sx={styles.item}>\n <Skeleton variant='rectangular' sx={styles.track} />\n <Box sx={styles.inputsRow}>\n <Skeleton variant='rectangular' sx={styles.input} />\n <Skeleton variant='rectangular' sx={styles.input} />\n </Box>\n </Box>\n ))}\n </Box>","(_, i) => (\n <Box key={`item-${i}`} sx={styles.item}>\n <Skeleton variant='rectangular' sx={styles.track} />\n <Box sx={styles.inputsRow}>\n <Skeleton variant='rectangular' sx={styles.input} />\n <Skeleton variant='rectangular' sx={styles.input} />\n </Box>\n </Box>\n )"],"sources":["../src/widgets/range/style.ts","../src/widgets/range/range-ui.tsx","../src/widgets/range/range.tsx","../src/widgets/range/skeleton.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n py: 1,\n },\n item: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n },\n sliderContainer: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n px: 1,\n },\n slider: {\n width: '100%',\n '&.Mui-disabled': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n inputsRow: {\n display: 'flex',\n gap: 2,\n alignItems: 'center',\n },\n input: {\n flex: 1,\n '& .MuiInputBase-input': {\n textAlign: 'center',\n },\n },\n note: {\n color: 'text.secondary',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n useCallback,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react'\nimport { Box, Slider, TextField, Typography } from '@mui/material'\nimport type { RangeDataItem, RangeItemValue } from './types'\nimport { styles } from './style'\n\nexport interface RangeUIProps {\n items: readonly RangeDataItem[]\n /**\n * Fires on every pointer tick while a thumb is being dragged (mirrors\n * MUI `<Slider>`'s `onChange`). Use this to update local UI state —\n * not to persist expensive operations like remote queries.\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb after dragging,\n * after an arrow-key adjustment commits, or when the text inputs\n * blur / Enter. Mirrors MUI `<Slider>`'s `onChangeCommitted`. Use\n * this for side-effects you want to throttle to \"drag end\" — e.g.\n * writing the value to a source filter that triggers refetches.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n /** Number formatter for the slider tooltip and the text input display. */\n formatter?: (value: number) => string\n}\n\ntype Bound = 'min' | 'max'\n\n/**\n * Pure presentational component for the Range widget. Renders one MUI Slider\n * per item with editable min/max text inputs below — matching the Range v1\n * UX. Each item is always a two-thumb range; supply `value` to seed the\n * starting selection, otherwise it defaults to `[min, max]`.\n */\nexport function RangeUI({\n items,\n onChange,\n onChangeCommitted,\n formatter,\n}: RangeUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box sx={styles.root}>\n {items.map((item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n ))}\n </Box>\n )\n}\n\ninterface RangeRowProps {\n index: number\n item: RangeDataItem\n fmt: (n: number) => string\n onChange?: (index: number, value: RangeItemValue) => void\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\nfunction RangeRow({\n index,\n item,\n fmt,\n onChange,\n onChangeCommitted,\n}: RangeRowProps) {\n const current: readonly [number, number] = item.value ?? [item.min, item.max]\n const [editing, setEditing] = useState<'' | Bound>('')\n\n // Clamp inside [min, max] and keep `low <= high`. Pulled out so both the\n // live `onChange` path and the commit path share the same normalization.\n const normalize = useCallback(\n (next: readonly [number, number]): readonly [number, number] => {\n const [lowRaw, highRaw] = next\n const low = Math.min(Math.max(lowRaw, item.min), item.max)\n const high = Math.min(Math.max(highRaw, item.min), item.max)\n return low <= high ? [low, high] : [high, low]\n },\n [item.min, item.max],\n )\n\n const commit = useCallback(\n (next: readonly [number, number]) => {\n onChange?.(index, normalize(next))\n },\n [index, normalize, onChange],\n )\n\n const commitFinal = useCallback(\n (next: readonly [number, number]) => {\n onChangeCommitted?.(index, normalize(next))\n },\n [index, normalize, onChangeCommitted],\n )\n\n // A text-input commit (blur / Enter) is both a value change AND a final\n // commit, so it fires `onChange` *and* `onChangeCommitted`. Firing both\n // keeps the widget responsive for consumers that only wired `onChange`\n // (the pre-`onChangeCommitted` API) — without it, typing a value and\n // pressing Enter would silently no-op for them.\n const commitText = useCallback(\n (next: readonly [number, number]) => {\n const value = normalize(next)\n onChange?.(index, value)\n onChangeCommitted?.(index, value)\n },\n [index, normalize, onChange, onChangeCommitted],\n )\n\n const handleSlider = (_: Event, raw: number | number[]) => {\n if (!Array.isArray(raw)) return\n // Hoist defaults out of the destructure: react-compiler can't safely\n // reorder MemberExpression defaults inside an array pattern.\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commit([low, high])\n }\n\n const handleSliderCommitted = (\n _: Event | React.SyntheticEvent,\n raw: number | number[],\n ) => {\n if (!Array.isArray(raw)) return\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commitFinal([low, high])\n }\n\n return (\n <Box sx={styles.item}>\n <Box sx={styles.sliderContainer}>\n <Slider\n sx={{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }}\n value={[...current]}\n min={item.min}\n max={item.max}\n step={item.step ?? 1}\n marks={resolveMarks(item.marks)}\n disabled={item.disabled}\n valueLabelDisplay='auto'\n valueLabelFormat={fmt}\n onChange={handleSlider}\n onChangeCommitted={handleSliderCommitted}\n />\n </Box>\n <Box sx={styles.inputsRow}>\n {/* Text-input commits (blur / Enter) are final, but also notify\n `onChange` — see `commitText` — so consumers that only wired\n `onChange` still update on a typed value. */}\n <BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />\n <BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />\n </Box>\n {item.note ? (\n <Typography variant='caption' sx={styles.note}>\n {item.note}\n </Typography>\n ) : null}\n </Box>\n )\n}\n\ninterface BoundInputProps {\n name: Bound\n value: number\n item: RangeDataItem\n fmt: (n: number) => string\n editing: '' | Bound\n setEditing: (next: '' | Bound) => void\n /**\n * Called when the user commits a new value (blur / Enter). Text input\n * edits never produce intermediate \"live\" values, so the consumer\n * only needs one callback — the row wires this to `commitFinal`.\n */\n commit: (next: readonly [number, number]) => void\n current: readonly [number, number]\n ariaLabel: string\n}\n\nfunction BoundInput({\n name,\n value,\n item,\n fmt,\n editing,\n setEditing,\n commit,\n current,\n ariaLabel,\n}: BoundInputProps) {\n const [raw, setRaw] = useState<string>(String(value))\n\n const beginEditing = () => {\n setEditing(name)\n }\n const finishEditingAndCommit = (e: FocusEvent<HTMLInputElement>) => {\n setEditing('')\n commitFromText(e.target.value)\n }\n const commitOnEnter = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n commitFromText((e.target as HTMLInputElement).value)\n ;(e.target as HTMLInputElement).blur()\n }\n }\n\n function commitFromText(input: string) {\n const parsed = parseFloat(input)\n const safe = Number.isFinite(parsed) ? parsed : value\n const next: readonly [number, number] =\n name === 'min' ? [safe, current[1]] : [current[0], safe]\n commit(next)\n }\n\n const display = editing === name ? raw : fmt(Number(raw))\n\n return (\n <TextField\n name={name}\n value={display}\n onChange={(e) => setRaw(e.target.value)}\n onFocus={beginEditing}\n onBlur={finishEditingAndCommit}\n onKeyDown={commitOnEnter}\n disabled={item.disabled}\n size='small'\n sx={styles.input}\n slotProps={{\n htmlInput: { 'aria-label': ariaLabel },\n }}\n />\n )\n}\n\nfunction resolveMarks(\n marks: RangeDataItem['marks'],\n): boolean | { value: number; label?: string }[] | undefined {\n if (marks == null) return undefined\n if (typeof marks === 'boolean') return marks\n return [...marks]\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { RangeUI } from './range-ui'\nimport type { RangeItemValue, RangeWidgetData } from './types'\n\ninterface RangeSlice {\n data: RangeWidgetData\n formatter?: (value: number) => string\n}\n\nconst rangeSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): RangeSlice => ({\n data: (s.data ?? []) as RangeWidgetData,\n formatter: s.formatter,\n})\n\nexport interface RangeProps {\n /**\n * Fires on every pointer tick while a thumb is being dragged. Use this\n * for cheap UI updates (local state, optimistic display).\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb (or when the text\n * inputs blur / Enter, or when an arrow-key adjustment settles). Use\n * this for expensive side-effects you want throttled to drag end —\n * e.g. writing the value to a source filter that refetches widgets.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\n/**\n * Stateful Range bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link RangeUI}. Per\n * the destination-owned principle, value changes flow back through\n * `onChange` (per-tick) and `onChangeCommitted` (drag end) — the consumer\n * is expected to update the data prop on `<Provider>`. Use `disabled` on\n * individual `RangeDataItem`s to disable specific rows.\n */\nexport function Range({ onChange, onChangeCommitted }: RangeProps) {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, rangeSelector)\n return (\n <RangeUI\n items={slice.data}\n formatter={slice.formatter}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport type { SxProps, Theme } from '@mui/material'\n\nconst styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n py: 1,\n },\n item: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n },\n track: { height: 32 },\n inputsRow: {\n display: 'flex',\n gap: 2,\n },\n input: { flex: 1, height: 40 },\n} satisfies Record<string, SxProps<Theme>>\n\nexport interface RangeSkeletonProps {\n count?: number\n}\n\n/**\n * Loading placeholder for the Range widget. Renders `count` rows, each\n * matching the slider-then-inputs layout of {@link RangeUI} so the layout\n * doesn't jump when data resolves.\n */\nexport function RangeSkeleton({ count = 1 }: RangeSkeletonProps) {\n return (\n <Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Box key={`item-${i}`} sx={styles.item}>\n <Skeleton variant='rectangular' sx={styles.track} />\n <Box sx={styles.inputsRow}>\n <Skeleton variant='rectangular' sx={styles.input} />\n <Skeleton variant='rectangular' sx={styles.input} />\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { c as e } from "react/compiler-runtime";
|
|
2
|
+
import { useLayoutEffect as t, useRef as n, useState as r } from "react";
|
|
3
|
+
import { Tooltip as i } from "@mui/material";
|
|
4
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/tooltip/tooltip.tsx
|
|
6
|
+
var o = 500;
|
|
7
|
+
function s(t) {
|
|
8
|
+
let n = e(10), r, s, c, l;
|
|
9
|
+
n[0] === t ? (r = n[1], s = n[2], c = n[3], l = n[4]) : ({children: r, title: l, enterNextDelay: c, ...s} = t, n[0] = t, n[1] = r, n[2] = s, n[3] = c, n[4] = l);
|
|
10
|
+
let u = c === void 0 ? o : c, d;
|
|
11
|
+
return n[5] !== r || n[6] !== u || n[7] !== s || n[8] !== l ? (d = /* @__PURE__ */ a(i, {
|
|
12
|
+
title: l,
|
|
13
|
+
enterNextDelay: u,
|
|
14
|
+
...s,
|
|
15
|
+
children: r
|
|
16
|
+
}), n[5] = r, n[6] = u, n[7] = s, n[8] = l, n[9] = d) : d = n[9], d;
|
|
17
|
+
}
|
|
18
|
+
function c(e) {
|
|
19
|
+
o = e;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/components/smart-tooltip/smart-tooltip.tsx
|
|
23
|
+
var l = [];
|
|
24
|
+
function u(i) {
|
|
25
|
+
let o = e(13), { title: c, dependencies: u, timeout: d, TooltipProps: f, children: p } = i, m = u === void 0 ? l : u, h = d === void 0 ? 500 : d, g = n(null), [_, v] = r(!1), y;
|
|
26
|
+
o[0] === m ? y = o[1] : (y = JSON.stringify(m), o[0] = m, o[1] = y);
|
|
27
|
+
let b = y, x;
|
|
28
|
+
o[2] === h ? x = o[3] : (x = () => {
|
|
29
|
+
let e = () => {
|
|
30
|
+
let e = g.current;
|
|
31
|
+
e && v(e.scrollWidth > e.clientWidth || e.scrollHeight > e.clientHeight);
|
|
32
|
+
}, t = setTimeout(e, h), n = g.current, r = n && typeof ResizeObserver < "u" ? new ResizeObserver(e) : null;
|
|
33
|
+
return n && r?.observe(n), () => {
|
|
34
|
+
clearTimeout(t), r?.disconnect();
|
|
35
|
+
};
|
|
36
|
+
}, o[2] = h, o[3] = x);
|
|
37
|
+
let S;
|
|
38
|
+
o[4] !== b || o[5] !== h ? (S = [b, h], o[4] = b, o[5] = h, o[6] = S) : S = o[6], t(x, S);
|
|
39
|
+
let C = _ && c, w;
|
|
40
|
+
o[7] === p ? w = o[8] : (w = p({ ref: g }), o[7] = p, o[8] = w);
|
|
41
|
+
let T;
|
|
42
|
+
return o[9] !== f || o[10] !== C || o[11] !== w ? (T = /* @__PURE__ */ a(s, {
|
|
43
|
+
title: C,
|
|
44
|
+
...f,
|
|
45
|
+
children: w
|
|
46
|
+
}), o[9] = f, o[10] = C, o[11] = w, o[12] = T) : T = o[12], T;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { s as n, c as r, u as t };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=smart-tooltip-Dc_rHhyI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-tooltip-Dc_rHhyI.js","names":["enterNextDelay = tooltipEnterDelay","{\n children,\n title,\n enterNextDelay = tooltipEnterDelay,\n ...props\n}: TooltipProps","<MuiTooltip title={title} enterNextDelay={enterNextDelay} {...props}>\n {children}\n </MuiTooltip>","{\n title,\n dependencies = EMPTY_DEPENDENCIES,\n timeout = 500,\n TooltipProps,\n children,\n}: {\n title: string | undefined\n dependencies?: unknown[]\n timeout?: number\n children: (props: { ref: Ref<T> }) => JSX.Element\n TooltipProps?: Partial<TooltipProps>\n}","dependencies = EMPTY_DEPENDENCIES","timeout = 500","JSON.stringify(dependencies)","() => {\n const checkOverflow = () => {\n const el = ref.current\n if (!el) return\n setIsOverflowing(\n el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight,\n )\n }\n\n // Initial measure after layout settles (fonts, flex collapse, …).\n const timerId = setTimeout(checkOverflow, timeout)\n // Re-measure when the element is resized (e.g. legend title reflows as\n // hover-faded actions collapse/expand).\n const el = ref.current\n const resizeObserver =\n el && typeof ResizeObserver !== 'undefined'\n ? new ResizeObserver(checkOverflow)\n : null\n if (el) resizeObserver?.observe(el)\n\n return () => {\n clearTimeout(timerId)\n resizeObserver?.disconnect()\n }\n }","el","[dependenciesKey, timeout]","children({ ref })","<Tooltip title={isOverflowing && title} {...TooltipProps}>\n {children({ ref })}\n </Tooltip>","isOverflowing && title"],"sources":["../src/components/tooltip/tooltip.tsx","../src/components/smart-tooltip/smart-tooltip.tsx"],"sourcesContent":["import { Tooltip as MuiTooltip, type TooltipProps } from '@mui/material'\n\nlet tooltipEnterDelay = 500\n\n/**\n * A wrapper around MUI's Tooltip component with enterNextDelay set to 1000ms by default.\n *\n * This component ensures consistent tooltip behavior across the application.\n *\n * @example\n * <Tooltip title=\"This is a tooltip\">\n * <Button>Hover me</Button>\n * </Tooltip>\n */\nexport function Tooltip({\n children,\n title,\n enterNextDelay = tooltipEnterDelay,\n ...props\n}: TooltipProps) {\n return (\n <MuiTooltip title={title} enterNextDelay={enterNextDelay} {...props}>\n {children}\n </MuiTooltip>\n )\n}\n\n/**\n * Sets the global default `enterNextDelay` for all Tooltip components in the application.\n *\n * @param delay - Delay in milliseconds before showing tooltips on subsequent hovers.\n *\n * @example\n * ```tsx\n * import { setTooltipEnterDelay } from '@carto/ps-react-ui/components';\n *\n * // Set global delay to 300ms at app initialization\n * setTooltipEnterDelay(300);\n * ```\n */\nexport function setTooltipEnterDelay(delay: number) {\n tooltipEnterDelay = delay\n}\n","import type { TooltipProps } from '@mui/material'\nimport { useLayoutEffect, useRef, useState, type JSX, type Ref } from 'react'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_DEPENDENCIES: unknown[] = []\n\n/**\n * An intelligent tooltip wrapper that automatically detects text overflow and displays a tooltip only when content is truncated.\n *\n * @remarks\n * Uses a render prop pattern. The child function receives a `ref` that must be attached to the element being monitored for overflow. Use the `dependencies` array to trigger re-evaluation when content or container size changes.\n *\n * @example\n * ```tsx\n * <SmartTooltip title=\"This is a long text that might get truncated\">\n * {({ ref }) => (\n * <Typography ref={ref} noWrap sx={{ overflow: 'hidden', textOverflow: 'ellipsis' }}>\n * This is a long text that might get truncated\n * </Typography>\n * )}\n * </SmartTooltip>\n * ```\n */\nexport function SmartTooltip<T extends HTMLElement>({\n title,\n dependencies = EMPTY_DEPENDENCIES,\n timeout = 500,\n TooltipProps,\n children,\n}: {\n title: string | undefined\n dependencies?: unknown[]\n timeout?: number\n children: (props: { ref: Ref<T> }) => JSX.Element\n TooltipProps?: Partial<TooltipProps>\n}) {\n const ref = useRef<T>(null)\n const [isOverflowing, setIsOverflowing] = useState(false)\n // Call sites pass a fresh `dependencies={[…]}` literal each render; key by\n // value so the effect does not churn ResizeObserver on referential churn.\n const dependenciesKey = JSON.stringify(dependencies)\n\n useLayoutEffect(() => {\n const checkOverflow = () => {\n const el = ref.current\n if (!el) return\n setIsOverflowing(\n el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight,\n )\n }\n\n // Initial measure after layout settles (fonts, flex collapse, …).\n const timerId = setTimeout(checkOverflow, timeout)\n // Re-measure when the element is resized (e.g. legend title reflows as\n // hover-faded actions collapse/expand).\n const el = ref.current\n const resizeObserver =\n el && typeof ResizeObserver !== 'undefined'\n ? new ResizeObserver(checkOverflow)\n : null\n if (el) resizeObserver?.observe(el)\n\n return () => {\n clearTimeout(timerId)\n resizeObserver?.disconnect()\n }\n }, [dependenciesKey, timeout])\n\n return (\n <Tooltip title={isOverflowing && title} {...TooltipProps}>\n {children({ ref })}\n </Tooltip>\n )\n}\n"],"mappings":";;;;;AAEA,IAAI,IAAoB;AAYxB,SAAgB,EAAA,GAKC;gBAJf,GAGG,GADHA,GADA;CAFsBC,AAAAA,EAAAA,OAAAA,gDACtB,wBAEA,gBAAA,GACA,GAAA,KAJsBA;CAGtB,IAAA,IAAA,MAAA,KAAA,IAAiB,IAAjBD,GAIEE;CADF,OAEK,EAAA,OAAA,KAAA,EAAA,OADuC,KAAA,EAAA,OAAoB,KAAA,EAAA,OAA3C,KAAnB,IAAA,kBAAC,GAAD;EAAmB;EAAuB;EAAgB,GAAI;EAC3D;CACS,CAAA,GADT,EAAA,KAAA,GADuC,EAAA,KAAA,GAAoB,EAAA,KAAA,GAA3C,EAAA,KAAA,yBAAnBA;AAIJ;AAeA,SAAgB,EAAqB,GAAe;CAClD,IAAoB;AACtB;;;ACtCA,IAAM,IAAgC,CAAC;AAmBvC,SAAgB,EAAA,GAYb;gBAZiD,EAClD,UACA,cAAA,GACA,SAAA,GACA,iBACA,gBALkDC,GAElD,IAAA,MAAA,KAAA,IAAe,IAAfC,GACA,IAAA,MAAA,KAAA,IAAU,MAAVC,GAUM,IAAM,EAAU,IAAI,GACpB,CAAC,GAAe,KAAoB,EAAS,EAAK,GAGhCC;CAAe,AAAA,EAAA,OAAA,gBAAf,IAAA,KAAK,UAAU,CAAY,GAAZ,EAAA,KAAA;CAAvC,IAAM,IAAkBA,GAERC;CAU4B,AAAA,EAAA,OAAA,gBAV5B,UAAM;EACpB,IAAM,UAAsB;GAC1B,IAAM,IAAK,EAAI;GACV,KACL,EACE,EAAG,cAAc,EAAG,eAAe,EAAG,eAAe,EAAG,YAC1D;EACF,GAGM,IAAU,WAAW,GAAe,CAAO,GAG3CC,IAAK,EAAI,SACT,IACJA,KAAM,OAAO,iBAAmB,MAC5B,IAAI,eAAe,CAAa,IAChC;EAGN,OAFIA,KAAI,GAAgB,QAAQA,CAAE,SAErB;GAEX,AADA,aAAa,CAAO,GACpB,GAAgB,WAAW;EAC7B;CACF,GAd4C,EAAA,KAAA;CAczCC,IAAAA;CAxBH,AAwBI,EAAA,OAAA,KAAA,EAAA,OAAiB,KAAlB,IAAA,CAAC,GAAiB,CAAO,GAAxB,EAAA,KAAA,GAAiB,EAAA,KAAA,yBAxBrB,EAAgBF,GAwBbE,CAA0B;CAGX,IAAA,IAAA,KAAiB,GAC9BC;0BAAS,IAAA,EAAA,EAAE,OAAI,CAAC,GAAhB,EAAA,KAAA;CADHC,IAAAA;CADF,OAC8C,EAAA,OAAA,KAAA,EAAA,QAA5BC,KAAAA,EAAAA,QACbF,KADH,IAAA,kBAAC,GAAD;EAAS,OAAOE;EAAwB,GAAI;EACzCF,UAAAA;CACM,CAAA,GAFmC,EAAA,KAAA,GAA5BE,EAAAA,MAAAA,GACbF,EAAAA,MAAAA,2BADHC;AAIJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { C as e, T as t } from "./stores-
|
|
2
|
-
import { n, t as r } from "./download-
|
|
3
|
-
import { a as i, c as a, l as o, o as s, s as c, u as l } from "./formula-
|
|
1
|
+
import { C as e, T as t } from "./stores-B8CHbgw-.js";
|
|
2
|
+
import { n, t as r } from "./download-Vlzn2jzb.js";
|
|
3
|
+
import { a as i, c as a, l as o, o as s, s as c, u as l } from "./formula-CdHWtepq.js";
|
|
4
4
|
import { c as u } from "react/compiler-runtime";
|
|
5
5
|
import { Box as d, Skeleton as f } from "@mui/material";
|
|
6
6
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
7
|
-
//#region src/widgets
|
|
7
|
+
//#region src/widgets/spread/separator.tsx
|
|
8
8
|
function h() {
|
|
9
9
|
let e = u(1), t;
|
|
10
10
|
return e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ p(s, {
|
|
@@ -13,7 +13,7 @@ function h() {
|
|
|
13
13
|
}), e[0] = t) : t = e[0], t;
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
|
-
//#region src/widgets
|
|
16
|
+
//#region src/widgets/spread/spread-ui.tsx
|
|
17
17
|
function g(e) {
|
|
18
18
|
let t = u(8), { items: n, formatter: r, ref: f } = e, g = r ?? _, v;
|
|
19
19
|
if (t[0] !== g || t[1] !== n) {
|
|
@@ -55,7 +55,7 @@ function _(e) {
|
|
|
55
55
|
return String(e);
|
|
56
56
|
}
|
|
57
57
|
//#endregion
|
|
58
|
-
//#region src/widgets
|
|
58
|
+
//#region src/widgets/spread/spread.tsx
|
|
59
59
|
var v = Object.freeze([]), y = (e) => ({
|
|
60
60
|
data: e.data ?? v,
|
|
61
61
|
formatter: e.formatter
|
|
@@ -68,7 +68,7 @@ function b() {
|
|
|
68
68
|
}), n[0] = i.data, n[1] = i.formatter, n[2] = a) : a = n[2], a;
|
|
69
69
|
}
|
|
70
70
|
//#endregion
|
|
71
|
-
//#region src/widgets
|
|
71
|
+
//#region src/widgets/spread/skeleton.tsx
|
|
72
72
|
var x = {
|
|
73
73
|
root: {
|
|
74
74
|
display: "flex",
|
|
@@ -103,7 +103,7 @@ function C(e, t) {
|
|
|
103
103
|
}, `row-${t}`);
|
|
104
104
|
}
|
|
105
105
|
//#endregion
|
|
106
|
-
//#region src/widgets
|
|
106
|
+
//#region src/widgets/spread/download.ts
|
|
107
107
|
function w(e) {
|
|
108
108
|
let t = [];
|
|
109
109
|
return e.getCaptureEl && t.push(n({
|
|
@@ -135,7 +135,7 @@ function w(e) {
|
|
|
135
135
|
})), t;
|
|
136
136
|
}
|
|
137
137
|
//#endregion
|
|
138
|
-
//#region src/widgets
|
|
138
|
+
//#region src/widgets/spread/band.ts
|
|
139
139
|
function T({ value: e, spread: t, variant: n = "percentage" }) {
|
|
140
140
|
let r = n === "absolute" ? t : t / 100 * e, i = Math.abs(r);
|
|
141
141
|
return {
|
|
@@ -146,4 +146,4 @@ function T({ value: e, spread: t, variant: n = "percentage" }) {
|
|
|
146
146
|
//#endregion
|
|
147
147
|
export { g as a, b as i, w as n, h as o, S as r, T as t };
|
|
148
148
|
|
|
149
|
-
//# sourceMappingURL=spread-
|
|
149
|
+
//# sourceMappingURL=spread-DuM5oTI1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spread-DuM5oTI1.js","names":["<Value color='inherit'>-</Value>","{ items, formatter, ref }: SpreadUIProps","(n: number) => String(n)","items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))","(item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n )","<Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>","<SpreadUI items={slice.data} formatter={slice.formatter} />","data","formatter","{ count = 1 }: SpreadSkeletonProps","count = 1","<Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Box key={`row-${i}`} sx={styles.row}>\n <Skeleton variant='rectangular' sx={styles.block} />\n </Box>\n ))}\n </Box>","(_, i) => (\n <Box key={`row-${i}`} sx={styles.row}>\n <Skeleton variant='rectangular' sx={styles.block} />\n </Box>\n )"],"sources":["../src/widgets/spread/separator.tsx","../src/widgets/spread/spread-ui.tsx","../src/widgets/spread/spread.tsx","../src/widgets/spread/skeleton.tsx","../src/widgets/spread/download.ts","../src/widgets/spread/band.ts"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n","import { Box, Skeleton } from '@mui/material'\nimport type { SxProps, Theme } from '@mui/material'\n\nconst styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n py: 1,\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n },\n block: { width: 200, height: 32 },\n} satisfies Record<string, SxProps<Theme>>\n\nexport interface SpreadSkeletonProps {\n count?: number\n}\n\n/**\n * Loading placeholder for the Spread widget. Renders `count` rows, each\n * sized for the `min — max` pair so the layout doesn't jump once data\n * resolves. Mirrors the row-per-item structure of {@link SpreadUI}.\n */\nexport function SpreadSkeleton({ count = 1 }: SpreadSkeletonProps) {\n return (\n <Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Box key={`row-${i}`} sx={styles.row}>\n <Skeleton variant='rectangular' sx={styles.block} />\n </Box>\n ))}\n </Box>\n )\n}\n","import {\n buildCsvDownloadItem,\n buildPngDownloadItem,\n type DownloadItem,\n} from '../actions/download'\nimport type { SpreadWidgetData } from './types'\n\n/**\n * Download menu items for the Spread widget. Always includes a CSV item\n * with `series, prefix, min, max, suffix, note` columns (one row per\n * entry). When `getCaptureEl` is supplied, prepends a PNG item that\n * rasterises the captured element via `html2canvas`.\n */\nexport function createSpreadDownloadConfig(args: {\n filename: string\n getData: () => SpreadWidgetData\n getCaptureEl?: () => HTMLElement | null\n pngPixelRatio?: number\n pngBackgroundColor?: string | null\n}): DownloadItem[] {\n const items: DownloadItem[] = []\n if (args.getCaptureEl) {\n items.push(\n buildPngDownloadItem({\n filename: args.filename,\n getCaptureEl: args.getCaptureEl,\n pixelRatio: args.pngPixelRatio,\n backgroundColor: args.pngBackgroundColor,\n }),\n )\n }\n items.push(\n buildCsvDownloadItem({\n filename: args.filename,\n getRows: () => {\n const data = args.getData()\n const rows: unknown[][] = [\n ['series', 'prefix', 'min', 'max', 'suffix', 'note'],\n ]\n for (const item of data) {\n rows.push([\n item.series?.name ?? '',\n item.prefix ?? '',\n item.min,\n item.max,\n item.suffix ?? '',\n item.note ?? '',\n ])\n }\n return rows\n },\n }),\n )\n return items\n}\n","/**\n * How a `spread` amount is applied to a centre value.\n *\n * - `percentage` — `spread` is a whole-number percentage of the centre\n * value, so `5` means +/-5%.\n * - `absolute` — `spread` is a raw offset in the value's own units.\n */\nexport type SpreadVariant = 'percentage' | 'absolute'\n\nexport interface GetSpreadBandOptions {\n /** The centre value the band is drawn around. */\n value: number\n /** Half-width of the band, read according to `variant`. */\n spread: number\n /** Defaults to `percentage`. */\n variant?: SpreadVariant\n}\n\n/**\n * Derives the `min` / `max` band around a centre value, for feeding a\n * {@link SpreadDataItem} from a single aggregated number (a prediction, a\n * target) plus a tolerance — rather than from a real column range.\n *\n * `spread` is read as a percentage by default, which is what a tolerance\n * almost always is: an absolute offset is meaningless without knowing the\n * value's magnitude, and gets visually lost on large values (+/-5 on a\n * prediction of 204,113 renders as a range indistinguishable from a single\n * number).\n *\n * @example\n * getSpreadBand({ value: 1000, spread: 5 })\n * // -> { min: 950, max: 1050 }\n * getSpreadBand({ value: 1000, spread: 5, variant: 'absolute' })\n * // -> { min: 995, max: 1005 }\n */\nexport function getSpreadBand({\n value,\n spread,\n variant = 'percentage',\n}: GetSpreadBandOptions): { min: number; max: number } {\n const offset = variant === 'absolute' ? spread : (spread / 100) * value\n // Keep `min <= max`: a percentage of a negative centre value (or a negative\n // `spread`) yields a negative offset, which would invert the band.\n const width = Math.abs(offset)\n\n return { min: value - width, max: value + width }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { useStore as s } from "zustand";
|
|
|
5
5
|
import { createStore as c } from "zustand/vanilla";
|
|
6
6
|
import { devtools as l } from "zustand/middleware";
|
|
7
7
|
import { useShallow as u } from "zustand/react/shallow";
|
|
8
|
-
//#region src/widgets
|
|
8
|
+
//#region src/widgets/stores/transforms.ts
|
|
9
9
|
function d(e, t, n) {
|
|
10
10
|
let r = /* @__PURE__ */ new Set();
|
|
11
11
|
for (let e of t) if (e.enabled && e.disables?.length) for (let t of e.disables) r.add(t);
|
|
@@ -14,7 +14,7 @@ function d(e, t, n) {
|
|
|
14
14
|
i = e.fn(i);
|
|
15
15
|
} catch (t) {
|
|
16
16
|
let r = t instanceof Error ? t : Error(String(t));
|
|
17
|
-
console.warn(`[widgets
|
|
17
|
+
console.warn(`[widgets] Transform "${e.id}" failed:`, r), n?.(e.id, r);
|
|
18
18
|
}
|
|
19
19
|
return i;
|
|
20
20
|
}
|
|
@@ -36,7 +36,7 @@ function m(e, t) {
|
|
|
36
36
|
return !0;
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|
|
39
|
-
//#region src/widgets
|
|
39
|
+
//#region src/widgets/stores/pipeline-middleware.ts
|
|
40
40
|
var h = /* @__PURE__ */ new WeakSet(), g = ((e) => (t, n, r) => {
|
|
41
41
|
let i = r.setState, a = r, o = (e) => ((t, n) => {
|
|
42
42
|
let i = r.getState(), o = typeof t == "function" ? t(i) : t, s = (e) => Object.prototype.hasOwnProperty.call(o, e), c = s("rawData") && !Object.is(o.rawData, i.rawData), l = s("dataTransforms") && o.dataTransforms !== i.dataTransforms;
|
|
@@ -54,11 +54,11 @@ function v() {
|
|
|
54
54
|
return e;
|
|
55
55
|
}
|
|
56
56
|
//#endregion
|
|
57
|
-
//#region src/widgets
|
|
57
|
+
//#region src/widgets/stores/widget-store-registry.ts
|
|
58
58
|
var y = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Set(), S = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map();
|
|
59
59
|
function T(e) {
|
|
60
60
|
let t = y.get(e);
|
|
61
|
-
if (!t) throw Error(`[widgets
|
|
61
|
+
if (!t) throw Error(`[widgets] Widget store "${e}" not found.`);
|
|
62
62
|
return t;
|
|
63
63
|
}
|
|
64
64
|
function E(e) {
|
|
@@ -127,7 +127,7 @@ function z(e, t) {
|
|
|
127
127
|
function B(e, t) {
|
|
128
128
|
y.set(e, t);
|
|
129
129
|
let n = (b.get(e) ?? 0) + 1;
|
|
130
|
-
b.set(e, n), n > 1 && o() && !x.has(e) && (console.warn(`[widgets
|
|
130
|
+
b.set(e, n), n > 1 && o() && !x.has(e) && (console.warn(`[widgets] 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.`), x.add(e));
|
|
131
131
|
}
|
|
132
132
|
function V(e, t) {
|
|
133
133
|
let n = (b.get(e) ?? 1) - 1;
|
|
@@ -142,17 +142,17 @@ function U(t, n) {
|
|
|
142
142
|
return r[0] === t ? i = r[1] : (i = T(t), r[0] = t, r[1] = i), s(i, u(n));
|
|
143
143
|
}
|
|
144
144
|
//#endregion
|
|
145
|
-
//#region src/widgets
|
|
145
|
+
//#region src/widgets/stores/use-echart-instance.ts
|
|
146
146
|
var W = () => null;
|
|
147
147
|
function G(t) {
|
|
148
148
|
let n = e(3), r, i;
|
|
149
149
|
return n[0] === t ? (r = n[1], i = n[2]) : (r = (e) => F(t, e), i = () => P(t), n[0] = t, n[1] = r, n[2] = i), a(r, i, W);
|
|
150
150
|
}
|
|
151
151
|
//#endregion
|
|
152
|
-
//#region src/widgets
|
|
152
|
+
//#region src/widgets/stores/use-transform.ts
|
|
153
153
|
function K(t, n, a) {
|
|
154
154
|
let o = e(29);
|
|
155
|
-
if (n.length === 0) throw Error("[widgets
|
|
155
|
+
if (n.length === 0) throw Error("[widgets] useTransform requires at least one pair.");
|
|
156
156
|
let c;
|
|
157
157
|
o[0] === t ? c = o[1] : (c = T(t), o[0] = t, o[1] = c);
|
|
158
158
|
let l = c, u = n[0].descriptor.id, d = a?.initialEnabled ?? !0, m;
|
|
@@ -232,7 +232,7 @@ function J(t, n, r, i) {
|
|
|
232
232
|
}], a[0] = n, a[1] = r, a[2] = o) : o = a[2], K(t, o, i);
|
|
233
233
|
}
|
|
234
234
|
//#endregion
|
|
235
|
-
//#region src/widgets
|
|
235
|
+
//#region src/widgets/stores/use-transform-enabled.ts
|
|
236
236
|
function Y(t, n) {
|
|
237
237
|
let r = e(2), i;
|
|
238
238
|
return r[0] === n ? i = r[1] : (i = (e) => e.transformStates?.[n]?.enabled === !0, r[0] = n, r[1] = i), U(t, i);
|
|
@@ -240,4 +240,4 @@ function Y(t, n) {
|
|
|
240
240
|
//#endregion
|
|
241
241
|
export { U as C, d as D, g as E, p as O, H as S, v as T, A as _, L as a, F as b, k as c, j as d, P as f, O as g, B as h, G as i, f as k, z as l, E as m, J as n, M as o, T as p, K as r, I as s, Y as t, D as u, N as v, _ as w, V as x, R as y };
|
|
242
242
|
|
|
243
|
-
//# sourceMappingURL=stores-
|
|
243
|
+
//# sourceMappingURL=stores-B8CHbgw-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stores-B8CHbgw-.js","names":["getWidgetStore(id)","(cb) => subscribeEchartInstance(id, cb)","() => getEchartInstance(id)","getWidgetStore(id)","(s) => s.transformStates[primaryId]?.enabled","() => {\n if (typeof persisted === 'boolean') return\n store.setState((s: WidgetState) => ({\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: initialEnabled,\n },\n },\n }))\n }","[store, primaryId, persisted, initialEnabled]","s","(next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n }","useCallback<Dispatch<SetStateAction<boolean>>>(\n (next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n },\n [store, primaryId, initialEnabled],\n )","[]","() => {\n const next: Registration[] = []\n for (const { descriptor, fn } of pairs) {\n const key: RegistrationKey =\n descriptor.type === 'data' ? 'dataTransforms' : 'configTransforms'\n const transform: Transform = { ...descriptor, fn, enabled }\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: upsertTransform(s[key], transform),\n }) as Partial<WidgetState>,\n )\n next.push({ key, id: descriptor.id })\n }\n registeredRef.current = next\n }","[store, pairs, enabled]","next","() => {\n return () => {\n for (const { key, id: descriptorId } of registeredRef.current) {\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: removeTransform(s[key], descriptorId),\n }) as Partial<WidgetState>,\n )\n }\n registeredRef.current = []\n }\n }","[store]","key","() => setEnabled((v) => !v)","(v) => !v","useCallback(() => setEnabled((v) => !v), [setEnabled])","{ enabled, setEnabled, toggle }","[{ descriptor, fn }]","useMemo<readonly TransformPair[]>(\n () => [{ descriptor, fn }],\n [descriptor, fn],\n )","(s: WidgetState) => s.transformStates?.[transformId]?.enabled === true"],"sources":["../src/widgets/stores/transforms.ts","../src/widgets/stores/pipeline-middleware.ts","../src/widgets/stores/widget-context.ts","../src/widgets/stores/widget-store-registry.ts","../src/widgets/stores/use-echart-instance.ts","../src/widgets/stores/use-transform.ts","../src/widgets/stores/use-transform-enabled.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] 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 { createContext, useContext } from 'react'\n\nexport const WidgetContext = createContext<string | null>(null)\n\nexport function useWidgetId(): string {\n const id = useContext(WidgetContext)\n if (id == null) {\n throw new Error(\n 'useWidgetId() must be called inside <Widget.Provider>. ' +\n 'If you are calling from outside the Provider tree, use the hooks ' +\n '(useWidget, useWidgetShallow, useTransform) directly with an explicit id.',\n )\n }\n return id\n}\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 { isDev } from '@carto/ps-utils'\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\nexport function getWidgetStore(id: string): WidgetStoreApi {\n const store = widgetStores.get(id)\n if (!store) throw new Error(`[widgets] 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] 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","import { useSyncExternalStore } from 'react'\nimport type { ECharts } from 'echarts'\nimport {\n getEchartInstance,\n subscribeEchartInstance,\n} from './widget-store-registry'\n\nconst SSR_SNAPSHOT = (): ECharts | null => null\n\n/**\n * Reactive read of the live ECharts instance for a widget. Returns\n * `null` before the `Widget.Echart` bridge has mounted (or after it's\n * disposed); the consumer re-renders when the instance arrives /\n * departs / changes.\n *\n * Wraps {@link subscribeEchartInstance} via `useSyncExternalStore`, so\n * actions can use it inside an effect's deps array to react to chart\n * lifecycle events without polling. Required for actions like\n * `BrushToggle` whose effect needs to dispatch `takeGlobalCursor` the\n * moment the chart exists, then re-dispatch on every `'finished'`\n * event.\n */\nexport function useEchartInstance(id: string): ECharts | null {\n return useSyncExternalStore(\n (cb) => subscribeEchartInstance(id, cb),\n () => getEchartInstance(id),\n SSR_SNAPSHOT,\n )\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type Dispatch,\n type SetStateAction,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { getWidgetStore } from './widget-store-registry'\nimport { removeTransform, upsertTransform } from './transforms'\nimport type {\n Transform,\n TransformDescriptor,\n TransformFn,\n TransformPair,\n WidgetState,\n} from './types'\n\nexport interface UseTransformOptions {\n initialEnabled?: boolean\n}\n\nexport interface TransformControls {\n enabled: boolean\n setEnabled: Dispatch<SetStateAction<boolean>>\n toggle: () => void\n}\n\ntype RegistrationKey = 'dataTransforms' | 'configTransforms'\n\ninterface Registration {\n key: RegistrationKey\n id: string\n}\n\nexport function useTransform(\n id: string,\n pairs: readonly TransformPair[],\n options?: UseTransformOptions,\n): TransformControls {\n if (pairs.length === 0) {\n throw new Error('[widgets] useTransform requires at least one pair.')\n }\n\n const store = getWidgetStore(id)\n const primaryId = pairs[0]!.descriptor.id\n const initialEnabled = options?.initialEnabled ?? true\n\n // Read `enabled` reactively from the store. Multiple mounts of the same\n // descriptor (e.g., Toolbox renders ZoomToggle both in the inline preview\n // and inside its overflow Paper) stay in sync because they share the\n // `transformStates[primaryId].enabled` slot.\n const persisted = useStore(\n store,\n (s) => s.transformStates[primaryId]?.enabled,\n )\n const enabled = typeof persisted === 'boolean' ? persisted : initialEnabled\n\n // Seed the store's `transformStates[primaryId].enabled` on first mount so\n // subsequent reads (and a rehydration after `keepAlive` remounts) have a\n // canonical value to read from. Idempotent: skip when already set.\n useEffect(() => {\n if (typeof persisted === 'boolean') return\n store.setState((s: WidgetState) => ({\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: initialEnabled,\n },\n },\n }))\n }, [store, primaryId, persisted, initialEnabled])\n\n const setEnabled = useCallback<Dispatch<SetStateAction<boolean>>>(\n (next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n },\n [store, primaryId, initialEnabled],\n )\n\n // Track the latest registrations so the unmount cleanup knows what to remove.\n // Updated inside the register effect (post-render), never during render.\n const registeredRef = useRef<Registration[]>([])\n\n // Register / re-register when `pairs` reference or `enabled` changes.\n // upsertTransform is identity-stable: re-registering with an unchanged\n // descriptor + fn returns the same array reference, and the middleware\n // bypasses the pipeline for unchanged refs. Consumers should memoize\n // `pairs` (useSingleTransform does this internally; multi-pair consumers\n // should wrap the pairs array in useMemo).\n useEffect(() => {\n const next: Registration[] = []\n for (const { descriptor, fn } of pairs) {\n const key: RegistrationKey =\n descriptor.type === 'data' ? 'dataTransforms' : 'configTransforms'\n const transform: Transform = { ...descriptor, fn, enabled }\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: upsertTransform(s[key], transform),\n }) as Partial<WidgetState>,\n )\n next.push({ key, id: descriptor.id })\n }\n registeredRef.current = next\n }, [store, pairs, enabled])\n\n // Unmount cleanup — remove every currently-registered descriptor. Reads from\n // the ref so we always remove the latest registrations, not a stale snapshot.\n useEffect(() => {\n return () => {\n for (const { key, id: descriptorId } of registeredRef.current) {\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: removeTransform(s[key], descriptorId),\n }) as Partial<WidgetState>,\n )\n }\n registeredRef.current = []\n }\n }, [store])\n\n const toggle = useCallback(() => setEnabled((v) => !v), [setEnabled])\n\n return { enabled, setEnabled, toggle }\n}\n\nexport function useSingleTransform(\n id: string,\n descriptor: TransformDescriptor,\n fn: TransformFn,\n options?: UseTransformOptions,\n): TransformControls {\n const pairs = useMemo<readonly TransformPair[]>(\n () => [{ descriptor, fn }],\n [descriptor, fn],\n )\n return useTransform(id, pairs, options)\n}\n","import { useWidgetShallow } from './widget-store-registry'\nimport type { WidgetState } from './types'\n\n/**\n * Reactive read of a single transform's `enabled` flag from the\n * per-widget store. Returns `false` if the transform hasn't been\n * registered yet (i.e., the action component hasn't mounted) — safe\n * default for \"the feature is off\".\n *\n * Used by widget composers that want to react to an action's on/off\n * cycle without having the widget primitive import the action. For\n * example, the `CategoryWidget` storybook composer wires the\n * SearcherToggle's open state into `<Widget.Category searcherOpen=…>`\n * so the library primitive stays renderer-agnostic.\n *\n * Magic-string `transformId` is intentional — it lives at the composer\n * layer where the action is already imported by JSX, so the string\n * appears alongside the same name in the toolbox.\n */\nexport function useTransformEnabled(id: string, transformId: string): boolean {\n return useWidgetShallow(\n id,\n (s: WidgetState) => s.transformStates?.[transformId]?.enabled === true,\n )\n}\n"],"mappings":"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"}
|