@carto/ps-react-ui 4.20.0 → 4.20.1
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-DKX98LlI.js +1318 -0
- package/dist/actions-DKX98LlI.js.map +1 -0
- package/dist/actions-Dy9JVr7F.js +1004 -0
- package/dist/actions-Dy9JVr7F.js.map +1 -0
- package/dist/category-DHZscHaS.js +826 -0
- package/dist/category-DHZscHaS.js.map +1 -0
- package/dist/chart-config-BGt7wkK7.js +108 -0
- package/dist/chart-config-BGt7wkK7.js.map +1 -0
- package/dist/chat.js +1589 -1711
- package/dist/chat.js.map +1 -1
- package/dist/cjs-CBrZjPCj.js +75 -0
- package/dist/cjs-CBrZjPCj.js.map +1 -0
- package/dist/components-DDt4mOQn.js +2403 -0
- package/dist/components-DDt4mOQn.js.map +1 -0
- package/dist/components.js +5 -1841
- package/dist/copy-button-DaQqWVu0.js +25 -0
- package/dist/copy-button-DaQqWVu0.js.map +1 -0
- package/dist/csv-modifiers-D6HGC24b.js +26 -0
- package/dist/csv-modifiers-D6HGC24b.js.map +1 -0
- package/dist/download-BT6qBamM.js +232 -0
- package/dist/download-BT6qBamM.js.map +1 -0
- package/dist/echart-BkaV3V5G.js +133 -0
- package/dist/echart-BkaV3V5G.js.map +1 -0
- package/dist/echart-DSz2Tu0z.js +250 -0
- package/dist/echart-DSz2Tu0z.js.map +1 -0
- package/dist/formatter-wVO81tYk.js +6 -0
- package/dist/formatter-wVO81tYk.js.map +1 -0
- package/dist/formula-Bk9CBzm2.js +190 -0
- package/dist/formula-Bk9CBzm2.js.map +1 -0
- package/dist/formula-Dsru_p-g.js +285 -0
- package/dist/formula-Dsru_p-g.js.map +1 -0
- package/dist/hooks-zf5gKZYq.js +22 -0
- package/dist/hooks-zf5gKZYq.js.map +1 -0
- package/dist/legend/stores.js +2 -24
- package/dist/legend.js +2274 -2323
- package/dist/legend.js.map +1 -1
- package/dist/markdown-DnSJMPjQ.js +165 -0
- package/dist/markdown-DnSJMPjQ.js.map +1 -0
- package/dist/markdown-content-BzKoX3eu.js +8764 -0
- package/dist/markdown-content-BzKoX3eu.js.map +1 -0
- package/dist/range-BPWVrAsY.js +277 -0
- package/dist/range-BPWVrAsY.js.map +1 -0
- package/dist/rolldown-runtime-B0aSnxlc.js +20 -0
- package/dist/row-CvVGBuy_.js +35 -0
- package/dist/row-CvVGBuy_.js.map +1 -0
- package/dist/shared-resize-observer-BEiP2rQt.js +157 -0
- package/dist/shared-resize-observer-BEiP2rQt.js.map +1 -0
- package/dist/smart-tooltip-CwGHCqab.js +34 -0
- package/dist/smart-tooltip-CwGHCqab.js.map +1 -0
- package/dist/spread-Dy8pshpN.js +149 -0
- package/dist/spread-Dy8pshpN.js.map +1 -0
- package/dist/stores-B81-IU1G.js +374 -0
- package/dist/stores-B81-IU1G.js.map +1 -0
- package/dist/stores-BVFMfgyo.js +248 -0
- package/dist/stores-BVFMfgyo.js.map +1 -0
- package/dist/styles-Y-qGBELO.js +13 -0
- package/dist/styles-Y-qGBELO.js.map +1 -0
- package/dist/table-BfTG6rrs.js +439 -0
- package/dist/table-BfTG6rrs.js.map +1 -0
- package/dist/tooltip-DJUGNZxY.js +23 -0
- package/dist/tooltip-DJUGNZxY.js.map +1 -0
- package/dist/types/chat/bubbles/chat-agent-message-markdown.d.ts +1 -1
- package/dist/types/chat/bubbles/chat-error-message.d.ts +1 -1
- package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +1 -1
- package/dist/types/chat/bubbles/chat-user-message.d.ts +1 -1
- package/dist/types/chat/containers/chat-footer.d.ts +1 -1
- package/dist/types/chat/containers/chat-header.d.ts +1 -1
- package/dist/types/chat/containers/chat-starter.d.ts +1 -1
- package/dist/types/chat/feedback/chat-loader.d.ts +1 -1
- package/dist/types/chat/feedback/chat-rating-action.d.ts +1 -1
- package/dist/types/chat/feedback/chat-thinking.d.ts +1 -1
- package/dist/types/chat/feedback/chat-tool-code-area.d.ts +1 -1
- package/dist/types/chat/feedback/chat-tool-full-view-dialog.d.ts +1 -1
- package/dist/types/chat/feedback/chat-tool-group.d.ts +1 -1
- package/dist/types/chat/feedback/chat-tool-trace.d.ts +2 -2
- package/dist/types/components/basemaps/group-wrapper.d.ts +1 -1
- package/dist/types/components/basemaps/group.d.ts +1 -1
- package/dist/types/components/basemaps/header.d.ts +1 -1
- package/dist/types/components/copy-button/copy-button.d.ts +1 -1
- package/dist/types/components/lasso-tool/chip.d.ts +1 -1
- package/dist/types/components/lasso-tool/icons.d.ts +7 -7
- package/dist/types/components/lasso-tool/lasso-tool.d.ts +4 -4
- package/dist/types/components/lasso-tool/message.d.ts +1 -1
- package/dist/types/components/list-data/list-data-skeleton.d.ts +1 -1
- package/dist/types/components/measurement-tools/icons.d.ts +3 -3
- package/dist/types/components/no-data-alert/no-data-alert.d.ts +1 -1
- package/dist/types/components/responsive-drawer/responsive-drawer.d.ts +1 -1
- package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +1 -1
- package/dist/types/hooks/use-widget-ref.d.ts +2 -1
- package/dist/types/legend/components/legend-actions/legend-actions.d.ts +1 -1
- package/dist/types/legend/components/legend-category/legend-category-ui.d.ts +1 -1
- package/dist/types/legend/components/legend-config-select/legend-config-select.d.ts +1 -1
- package/dist/types/legend/components/legend-group/legend-group.d.ts +1 -1
- package/dist/types/legend/components/legend-group-menu/legend-group-menu-items.d.ts +4 -4
- package/dist/types/legend/components/legend-group-menu/legend-group-menu.d.ts +1 -1
- package/dist/types/legend/components/legend-icon/legend-icon-ui.d.ts +1 -1
- package/dist/types/legend/components/legend-item/legend-item-ui.d.ts +1 -1
- package/dist/types/legend/components/legend-item/legend-item.d.ts +1 -1
- package/dist/types/legend/components/legend-opacity/legend-opacity.d.ts +2 -2
- package/dist/types/legend/components/legend-overflow-menu/legend-overflow-menu.d.ts +1 -1
- package/dist/types/legend/components/legend-panel-menu/legend-panel-menu.d.ts +1 -1
- package/dist/types/legend/components/legend-proportion/legend-proportion-ui.d.ts +1 -1
- package/dist/types/legend/components/legend-ramp/legend-ramp-ui.d.ts +1 -1
- package/dist/types/legend/components/legend-row/legend-row.d.ts +1 -1
- package/dist/types/legend/components/legend-row-menu/legend-row-menu-items.d.ts +2 -2
- package/dist/types/legend/components/legend-row-menu/legend-row-menu.d.ts +1 -1
- package/dist/types/legend/components/legend-row-menu/legend-zoom-to.d.ts +1 -1
- package/dist/types/legend/components/legend-sortable/legend-sortable.d.ts +1 -1
- package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +1 -1
- package/dist/types/legend/components/legend-visibility-toggle/legend-visibility-toggle.d.ts +1 -1
- package/dist/types/legend/components/legend-visible-layers/legend-visible-layers.d.ts +1 -1
- package/dist/types/legend/index.d.ts +2 -2
- package/dist/types/legend/provider/legend-provider.d.ts +1 -1
- package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +1 -1
- package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -1
- package/dist/types/widgets/actions/change-column/change-column.d.ts +1 -1
- package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +1 -1
- package/dist/types/widgets/actions/download/download.d.ts +1 -1
- package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
- package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +1 -1
- package/dist/types/widgets/actions/relative-data/relative-data.d.ts +1 -1
- package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +1 -1
- package/dist/types/widgets/actions/searcher/searcher.d.ts +1 -1
- package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -1
- package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +1 -1
- package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
- package/dist/types/widgets/bar/skeleton.d.ts +1 -1
- package/dist/types/widgets/category/category-ui.d.ts +1 -1
- package/dist/types/widgets/category/components/category-bar.d.ts +1 -1
- package/dist/types/widgets/category/components/category-legend.d.ts +1 -1
- package/dist/types/widgets/category/components/category-row-multi.d.ts +1 -1
- package/dist/types/widgets/category/components/category-row-other.d.ts +1 -1
- package/dist/types/widgets/category/components/category-row-single.d.ts +1 -1
- package/dist/types/widgets/category/skeleton.d.ts +1 -1
- package/dist/types/widgets/echart/echart-ui.d.ts +1 -1
- package/dist/types/widgets/echart/echart.d.ts +1 -1
- package/dist/types/widgets/error/error.d.ts +1 -1
- package/dist/types/widgets/formula/components/item.d.ts +1 -1
- package/dist/types/widgets/formula/components/prefix.d.ts +1 -1
- package/dist/types/widgets/formula/components/row.d.ts +1 -1
- package/dist/types/widgets/formula/components/series.d.ts +1 -1
- package/dist/types/widgets/formula/components/suffix.d.ts +1 -1
- package/dist/types/widgets/formula/components/value.d.ts +1 -1
- package/dist/types/widgets/formula/formula-ui.d.ts +1 -1
- package/dist/types/widgets/formula/skeleton.d.ts +1 -1
- package/dist/types/widgets/histogram/skeleton.d.ts +1 -1
- package/dist/types/widgets/markdown/markdown-ui.d.ts +1 -1
- package/dist/types/widgets/markdown/markdown.d.ts +1 -1
- package/dist/types/widgets/markdown/skeleton.d.ts +1 -1
- package/dist/types/widgets/no-data/no-data.d.ts +1 -1
- package/dist/types/widgets/note/note.d.ts +1 -1
- package/dist/types/widgets/pie/skeleton.d.ts +1 -1
- package/dist/types/widgets/range/components/range-item.d.ts +1 -1
- package/dist/types/widgets/range/range-ui.d.ts +1 -1
- package/dist/types/widgets/range/skeleton.d.ts +1 -1
- package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -1
- package/dist/types/widgets/selection-summary/selection-summary.d.ts +1 -1
- package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +1 -1
- package/dist/types/widgets/spread/components/max-value.d.ts +1 -1
- package/dist/types/widgets/spread/components/min-value.d.ts +1 -1
- package/dist/types/widgets/spread/components/separator.d.ts +1 -1
- package/dist/types/widgets/spread/skeleton.d.ts +1 -1
- package/dist/types/widgets/spread/spread-ui.d.ts +1 -1
- package/dist/types/widgets/subheader/subheader.d.ts +1 -1
- package/dist/types/widgets/table/components/cell-header.d.ts +1 -1
- package/dist/types/widgets/table/components/cell.d.ts +1 -1
- package/dist/types/widgets/table/components/pagination-actions.d.ts +1 -1
- package/dist/types/widgets/table/components/pagination.d.ts +1 -1
- package/dist/types/widgets/table/components/row.d.ts +1 -1
- package/dist/types/widgets/table/skeleton.d.ts +1 -1
- package/dist/types/widgets/table/table-ui.d.ts +2 -2
- package/dist/types/widgets/timeseries/skeleton.d.ts +1 -1
- package/dist/types/widgets/wrapper/components/actions.d.ts +1 -1
- package/dist/types/widgets/wrapper/components/options.d.ts +1 -1
- package/dist/types/widgets/wrapper/components/title.d.ts +1 -1
- package/dist/types/widgets/wrapper/wrapper-ui.d.ts +1 -1
- package/dist/types/widgets/wrapper/wrapper.d.ts +1 -1
- package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +1 -1
- package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +1 -1
- package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +1 -1
- package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +1 -1
- package/dist/types/widgets-v2/actions/download/download.d.ts +1 -1
- package/dist/types/widgets-v2/actions/download/icons.d.ts +3 -3
- package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +2 -2
- package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +1 -1
- package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +1 -1
- package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +1 -1
- package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +1 -1
- package/dist/types/widgets-v2/actions/show-all/show-all.d.ts +1 -1
- package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +1 -1
- package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
- package/dist/types/widgets-v2/bar/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/category/category-ui.d.ts +1 -1
- package/dist/types/widgets-v2/category/category.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-bar.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-legend.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-row-other.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-row-single.d.ts +1 -1
- package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +1 -1
- package/dist/types/widgets-v2/category/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/echart/echart-ui.d.ts +1 -1
- package/dist/types/widgets-v2/echart/echart.d.ts +1 -1
- package/dist/types/widgets-v2/formula/delta.d.ts +1 -1
- package/dist/types/widgets-v2/formula/formula-ui.d.ts +1 -1
- package/dist/types/widgets-v2/formula/formula.d.ts +1 -1
- package/dist/types/widgets-v2/formula/note.d.ts +1 -1
- package/dist/types/widgets-v2/formula/prefix.d.ts +1 -1
- package/dist/types/widgets-v2/formula/series.d.ts +1 -1
- package/dist/types/widgets-v2/formula/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/formula/suffix.d.ts +1 -1
- package/dist/types/widgets-v2/formula/value.d.ts +1 -1
- package/dist/types/widgets-v2/histogram/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/index.d.ts +4 -4
- package/dist/types/widgets-v2/markdown/markdown-content.d.ts +1 -1
- package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +1 -1
- package/dist/types/widgets-v2/markdown/markdown.d.ts +1 -1
- package/dist/types/widgets-v2/markdown/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/note/widget-note.d.ts +2 -2
- package/dist/types/widgets-v2/pie/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/provider/widget-provider.d.ts +1 -1
- package/dist/types/widgets-v2/range/range-ui.d.ts +1 -1
- package/dist/types/widgets-v2/range/range.d.ts +1 -1
- package/dist/types/widgets-v2/range/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +1 -1
- package/dist/types/widgets-v2/spread/separator.d.ts +1 -1
- package/dist/types/widgets-v2/spread/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/spread/spread-ui.d.ts +1 -1
- package/dist/types/widgets-v2/spread/spread.d.ts +1 -1
- package/dist/types/widgets-v2/state/widget-state.d.ts +1 -1
- package/dist/types/widgets-v2/subheader/subheader.d.ts +1 -1
- package/dist/types/widgets-v2/table/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/table/table-ui.d.ts +1 -1
- package/dist/types/widgets-v2/table/table.d.ts +1 -1
- package/dist/types/widgets-v2/timeseries/skeleton.d.ts +1 -1
- package/dist/types/widgets-v2/toolbox/toolbox.d.ts +1 -1
- package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +2 -2
- package/dist/types/widgets-v2/wrapper/widget-content.d.ts +2 -2
- package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +1 -1
- package/dist/use-widget-selector-VSPhfhNm.js +12 -0
- package/dist/{use-widget-selector-DFl2hW0R.js.map → use-widget-selector-VSPhfhNm.js.map} +1 -1
- package/dist/utils-DtvTjjMq.js +58 -0
- package/dist/utils-DtvTjjMq.js.map +1 -0
- package/dist/widget-store-BFPKYm4R.js +187 -0
- package/dist/widget-store-BFPKYm4R.js.map +1 -0
- package/dist/widgets/actions.js +2 -1317
- package/dist/widgets/bar.js +183 -175
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +429 -434
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +3 -120
- package/dist/widgets/error.js +28 -38
- package/dist/widgets/error.js.map +1 -1
- package/dist/widgets/formula.js +3 -123
- package/dist/widgets/histogram.js +183 -202
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +63 -61
- package/dist/widgets/loader.js.map +1 -1
- package/dist/widgets/markdown.js +141 -123
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/no-data.js +52 -58
- package/dist/widgets/no-data.js.map +1 -1
- package/dist/widgets/note.js +125 -122
- package/dist/widgets/note.js.map +1 -1
- package/dist/widgets/pie.js +245 -259
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +225 -204
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +220 -215
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/selection-summary.js +39 -38
- package/dist/widgets/selection-summary.js.map +1 -1
- package/dist/widgets/skeleton-loader.js +22 -23
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +150 -156
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +3 -8
- package/dist/widgets/subheader.js +49 -50
- package/dist/widgets/subheader.js.map +1 -1
- package/dist/widgets/table.js +576 -644
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +175 -170
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/toolbar-actions.js +140 -145
- package/dist/widgets/toolbar-actions.js.map +1 -1
- package/dist/widgets/utils.js +17 -33
- package/dist/widgets/utils.js.map +1 -1
- package/dist/widgets/wrapper.js +265 -276
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets-v2/actions.js +4 -51
- package/dist/widgets-v2/bar.js +253 -307
- package/dist/widgets-v2/bar.js.map +1 -1
- package/dist/widgets-v2/category.js +2 -98
- package/dist/widgets-v2/echart.js +2 -57
- package/dist/widgets-v2/formula.js +2 -68
- package/dist/widgets-v2/histogram.js +285 -350
- package/dist/widgets-v2/histogram.js.map +1 -1
- package/dist/widgets-v2/markdown.js +3 -69
- package/dist/widgets-v2/pie.js +363 -461
- package/dist/widgets-v2/pie.js.map +1 -1
- package/dist/widgets-v2/range.js +2 -52
- package/dist/widgets-v2/scatterplot.js +316 -391
- package/dist/widgets-v2/scatterplot.js.map +1 -1
- package/dist/widgets-v2/spread.js +2 -78
- package/dist/widgets-v2/stores.js +2 -42
- package/dist/widgets-v2/table.js +2 -78
- package/dist/widgets-v2/timeseries.js +285 -340
- package/dist/widgets-v2/timeseries.js.map +1 -1
- package/dist/widgets-v2/utils.js +2 -8
- package/dist/widgets-v2.js +955 -951
- package/dist/widgets-v2.js.map +1 -1
- package/dist/zoom-toggle-CA0ifG23.js +164 -0
- package/dist/zoom-toggle-CA0ifG23.js.map +1 -0
- package/package.json +4 -4
- package/src/hooks/use-widget-ref.ts +1 -0
- package/dist/category-Ct2BzADB.js +0 -753
- package/dist/category-Ct2BzADB.js.map +0 -1
- package/dist/change-column-Fu1DCYQ3.js +0 -1186
- package/dist/change-column-Fu1DCYQ3.js.map +0 -1
- package/dist/cjs-D4KH3azB.js +0 -85
- package/dist/cjs-D4KH3azB.js.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/copy-button-DGL1tyli.js +0 -26
- package/dist/copy-button-DGL1tyli.js.map +0 -1
- package/dist/csv-item-hH_Gt7ur.js +0 -32
- package/dist/csv-item-hH_Gt7ur.js.map +0 -1
- package/dist/data-zoom-layout-D_FYdnap.js +0 -28
- package/dist/data-zoom-layout-D_FYdnap.js.map +0 -1
- package/dist/download-config-OKlLLSW_.js +0 -58
- package/dist/download-config-OKlLLSW_.js.map +0 -1
- package/dist/echart-B10dhEaM.js +0 -262
- package/dist/echart-B10dhEaM.js.map +0 -1
- package/dist/exports-Cr43OCul.js +0 -51
- package/dist/exports-Cr43OCul.js.map +0 -1
- package/dist/exports-Cx-f6m6U.js +0 -63
- package/dist/exports-Cx-f6m6U.js.map +0 -1
- package/dist/formatter-B9Bxn1k7.js +0 -6
- package/dist/formatter-B9Bxn1k7.js.map +0 -1
- package/dist/formula-DuC0NQLH.js +0 -79
- package/dist/formula-DuC0NQLH.js.map +0 -1
- package/dist/lasso-tool-YLFRgb-S.js +0 -582
- package/dist/lasso-tool-YLFRgb-S.js.map +0 -1
- package/dist/legend/stores.js.map +0 -1
- package/dist/legend-store-registry-p1tSwJXH.js +0 -472
- package/dist/legend-store-registry-p1tSwJXH.js.map +0 -1
- package/dist/markdown-DdqANCiN.js +0 -102
- package/dist/markdown-DdqANCiN.js.map +0 -1
- package/dist/markdown-content-Dk2DSgbf.js +0 -10287
- package/dist/markdown-content-Dk2DSgbf.js.map +0 -1
- package/dist/option-builders-DPeoyQaM.js +0 -130
- package/dist/option-builders-DPeoyQaM.js.map +0 -1
- package/dist/options-CthfUJDz.js +0 -46
- package/dist/options-CthfUJDz.js.map +0 -1
- package/dist/png-item-9dNbB37T.js +0 -57
- package/dist/png-item-9dNbB37T.js.map +0 -1
- package/dist/range-l4fNHLEg.js +0 -213
- package/dist/range-l4fNHLEg.js.map +0 -1
- package/dist/resolve-theme-color-BdojIw0K.js +0 -47
- package/dist/resolve-theme-color-BdojIw0K.js.map +0 -1
- package/dist/row-DZSP99LW.js +0 -34
- package/dist/row-DZSP99LW.js.map +0 -1
- package/dist/series-DLNHDWs0.js +0 -90
- package/dist/series-DLNHDWs0.js.map +0 -1
- package/dist/shared-resize-observer-98b1SK1e.js +0 -17
- package/dist/shared-resize-observer-98b1SK1e.js.map +0 -1
- package/dist/smart-tooltip-DFV6GD8R.js +0 -40
- package/dist/smart-tooltip-DFV6GD8R.js.map +0 -1
- package/dist/spread-4MYPOntd.js +0 -66
- package/dist/spread-4MYPOntd.js.map +0 -1
- package/dist/style-DVnT6HC1.js +0 -131
- package/dist/style-DVnT6HC1.js.map +0 -1
- package/dist/styles-cohnxh9F.js +0 -23
- package/dist/styles-cohnxh9F.js.map +0 -1
- package/dist/table-CTcLOycx.js +0 -383
- package/dist/table-CTcLOycx.js.map +0 -1
- package/dist/tooltip-BDnrRKrp.js +0 -25
- package/dist/tooltip-BDnrRKrp.js.map +0 -1
- package/dist/transforms-Cdx4fkU5.js +0 -106
- package/dist/transforms-Cdx4fkU5.js.map +0 -1
- package/dist/use-transform-DXPN3nY7.js +0 -110
- package/dist/use-transform-DXPN3nY7.js.map +0 -1
- package/dist/use-widget-ref-Ddr_SlJJ.js +0 -22
- package/dist/use-widget-ref-Ddr_SlJJ.js.map +0 -1
- package/dist/use-widget-selector-DFl2hW0R.js +0 -12
- package/dist/utils-BOhInag6.js +0 -170
- package/dist/utils-BOhInag6.js.map +0 -1
- package/dist/widget-context-DTGO0Yta.js +0 -13
- package/dist/widget-context-DTGO0Yta.js.map +0 -1
- package/dist/widget-store-Bw5zRUGg.js +0 -261
- package/dist/widget-store-Bw5zRUGg.js.map +0 -1
- package/dist/widget-store-registry-_W4Z4xp-.js +0 -178
- package/dist/widget-store-registry-_W4Z4xp-.js.map +0 -1
- package/dist/widgets/actions.js.map +0 -1
- package/dist/widgets/echart.js.map +0 -1
- package/dist/widgets/formula.js.map +0 -1
- package/dist/widgets/stores.js.map +0 -1
- package/dist/widgets-v2/actions.js.map +0 -1
- package/dist/widgets-v2/category.js.map +0 -1
- package/dist/widgets-v2/echart.js.map +0 -1
- package/dist/widgets-v2/formula.js.map +0 -1
- package/dist/widgets-v2/markdown.js.map +0 -1
- package/dist/widgets-v2/range.js.map +0 -1
- package/dist/widgets-v2/spread.js.map +0 -1
- package/dist/widgets-v2/stores.js.map +0 -1
- package/dist/widgets-v2/table.js.map +0 -1
- package/dist/widgets-v2/utils.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IconButton as e } from "@mui/material";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { ContentCopyOutlined as n } from "@mui/icons-material";
|
|
4
|
+
import { copy as r } from "@carto/ps-utils";
|
|
5
|
+
//#region src/components/copy-button/copy-button.tsx
|
|
6
|
+
function i({ copyText: i, onSuccess: a, onError: o, "aria-label": s, ...c }) {
|
|
7
|
+
async function l() {
|
|
8
|
+
try {
|
|
9
|
+
await r(i), a?.();
|
|
10
|
+
} catch (e) {
|
|
11
|
+
o?.(e);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return /* @__PURE__ */ t(e, {
|
|
15
|
+
size: "small",
|
|
16
|
+
onClick: () => void l(),
|
|
17
|
+
"aria-label": s ?? "Copy",
|
|
18
|
+
...c,
|
|
19
|
+
children: /* @__PURE__ */ t(n, { fontSize: "small" })
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { i as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=copy-button-DaQqWVu0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-button-DaQqWVu0.js","names":["IconButton","ContentCopyOutlined","CopyButtonProps","copy","CopyButton","copyText","onSuccess","onError","ariaLabel","props","onCopy","err","Error"],"sources":["../src/components/copy-button/copy-button.tsx"],"sourcesContent":["import { IconButton } from '@mui/material'\nimport { ContentCopyOutlined } from '@mui/icons-material'\nimport type { CopyButtonProps } from './types'\nimport { copy } from '@carto/ps-utils'\n\nexport function CopyButton({\n copyText,\n onSuccess,\n onError,\n 'aria-label': ariaLabel,\n ...props\n}: CopyButtonProps) {\n async function onCopy() {\n try {\n await copy(copyText)\n onSuccess?.()\n } catch (err) {\n onError?.(err as Error)\n }\n }\n return (\n <IconButton\n size='small'\n onClick={() => void onCopy()}\n aria-label={ariaLabel ?? 'Copy'}\n {...props}\n >\n <ContentCopyOutlined fontSize='small' />\n </IconButton>\n )\n}\n"],"mappings":";;;;;AAKA,SAAgBI,EAAW,EACzBC,aACAC,cACAC,YACA,cAAcC,GACd,GAAGC,KACe;CAClB,eAAeC,IAAS;EACtB,IAAI;GAEFJ,AADA,MAAMH,EAAKE,CAAQ,GACnBC,IAAY;EACd,SAASK,GAAK;GACZJ,IAAUI,CAAY;EACxB;CACF;CACA,OACE,kBAAC,GAAD;EACE,MAAK;EACL,eAAe,KAAKD,EAAO;EAC3B,cAAYF,KAAa;EACzB,GAAIC;EAEJ,UAAA,kBAAC,GAAD,EAAqB,UAAS,QAAO,CAAA;CAC3B,CAAA;AAEhB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/widgets/utils/chart-config/csv-modifiers.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let t = [];
|
|
4
|
+
if (e.length > 0 && (e[0]?.length ?? 0) > 0) {
|
|
5
|
+
let n = e?.[0]?.[0] ?? {}, r = Object.keys(n);
|
|
6
|
+
t.push(r);
|
|
7
|
+
}
|
|
8
|
+
return e.forEach((e) => {
|
|
9
|
+
e.forEach((e) => {
|
|
10
|
+
let n = Object.values(e).map((e) => String(e));
|
|
11
|
+
t.push(n);
|
|
12
|
+
});
|
|
13
|
+
}), t;
|
|
14
|
+
}
|
|
15
|
+
function t(e) {
|
|
16
|
+
let t = [];
|
|
17
|
+
return t.push(["x", "y"]), e.forEach((e) => {
|
|
18
|
+
e.forEach((e) => {
|
|
19
|
+
t.push([String(e[0]), String(e[1])]);
|
|
20
|
+
});
|
|
21
|
+
}), t;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { t as n, e as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=csv-modifiers-D6HGC24b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-modifiers-D6HGC24b.js","names":["flattenObjectArrayToCSV","Record","data","T","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV"],"sources":["../src/widgets/utils/chart-config/csv-modifiers.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n"],"mappings":";AAWA,SAAgBA,EACdE,GACY;CACZ,IAAME,IAAmB,CAAA;CAGzB,IAAIF,EAAKG,SAAS,MAAMH,EAAK,EAAE,EAAEG,UAAU,KAAK,GAAG;EACjD,IAAMC,IAAiBJ,IAAO,EAAE,GAAG,MAAM,CAAC,GACpCK,IAAUC,OAAOC,KAAKH,CAAc;EAC1CF,EAAKM,KAAKH,CAAO;CACnB;CAUA,OAPAL,EAAKS,SAASC,MAAW;EACvBA,EAAOD,SAASE,MAAc;GAC5B,IAAMC,IAASN,OAAOM,OAAOD,CAAS,CAAC,CAACE,KAAKC,MAAMC,OAAOD,CAAC,CAAC;GAC5DZ,EAAKM,KAAKI,CAAM;EAClB,CAAC;CACH,CAAC,GAEMV;AACT;AASA,SAAgBc,EAAqBhB,GAAgC;CACnE,IAAME,IAAmB,CAAA;CAYzB,OATAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBR,EAAKS,SAASC,MAAW;EACvBA,EAAOD,SAASE,MAAc;GAC5BT,EAAKM,KAAK,CAACO,OAAOJ,EAAU,EAAE,GAAGI,OAAOJ,EAAU,EAAE,CAAC,CAAC;EACxD,CAAC;CACH,CAAC,GAEMT;AACT"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { t as e } from "./tooltip-DJUGNZxY.js";
|
|
2
|
+
import "./components-DDt4mOQn.js";
|
|
3
|
+
import { c as t } from "react/compiler-runtime";
|
|
4
|
+
import { useState as n } from "react";
|
|
5
|
+
import { CircularProgress as r, IconButton as i, ListItemIcon as a, ListItemText as o, Menu as s, MenuItem as c, SvgIcon as l } from "@mui/material";
|
|
6
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
7
|
+
import { ArticleOutlined as p, FileDownload as m, ImageOutlined as h } from "@mui/icons-material";
|
|
8
|
+
import g from "html2canvas";
|
|
9
|
+
//#region src/widgets-v2/actions/download/exports.ts
|
|
10
|
+
var _ = /^[=+\-@\t\r]/;
|
|
11
|
+
function v(e) {
|
|
12
|
+
let t = (e) => {
|
|
13
|
+
if (e == null) return "";
|
|
14
|
+
let t = typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" ? String(e) : JSON.stringify(e);
|
|
15
|
+
return _.test(t) && (t = `'${t}`), /[",\n\r]/.test(t) ? `"${t.replace(/"/g, "\"\"")}"` : t;
|
|
16
|
+
};
|
|
17
|
+
return e.map((e) => e.map(t).join(",")).join("\n");
|
|
18
|
+
}
|
|
19
|
+
function y(e) {
|
|
20
|
+
let t = v(e), n = new Blob([t], { type: "text/csv;charset=utf-8;" }), r = URL.createObjectURL(n);
|
|
21
|
+
return {
|
|
22
|
+
url: r,
|
|
23
|
+
revoke: () => URL.revokeObjectURL(r)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
var b = /[\\/\x00-\x1f\x7f]/g, x = 200;
|
|
27
|
+
function S(e) {
|
|
28
|
+
return (e ?? "").replace(b, "_").slice(0, x) || "download";
|
|
29
|
+
}
|
|
30
|
+
function C(e) {
|
|
31
|
+
let { url: t, filename: n } = e, r = document.createElement("a");
|
|
32
|
+
r.href = t, r.download = S(n), r.style.display = "none", document.body.appendChild(r), r.click(), r.remove();
|
|
33
|
+
}
|
|
34
|
+
async function w(e) {
|
|
35
|
+
let { element: t, pixelRatio: n = 2, backgroundColor: r = null } = e, i = await g(t, {
|
|
36
|
+
scale: n,
|
|
37
|
+
backgroundColor: r,
|
|
38
|
+
useCORS: !0,
|
|
39
|
+
logging: !1
|
|
40
|
+
});
|
|
41
|
+
return new Promise((e, t) => {
|
|
42
|
+
i.toBlob((n) => {
|
|
43
|
+
if (!n) {
|
|
44
|
+
t(/* @__PURE__ */ Error("[widgets-v2] toBlob() returned null"));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let r = URL.createObjectURL(n);
|
|
48
|
+
e({
|
|
49
|
+
url: r,
|
|
50
|
+
revoke: () => URL.revokeObjectURL(r)
|
|
51
|
+
});
|
|
52
|
+
}, "image/png");
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/widgets-v2/actions/download/labels.ts
|
|
57
|
+
var T = {
|
|
58
|
+
trigger: "Download",
|
|
59
|
+
loading: "Downloading…",
|
|
60
|
+
error: "Download failed"
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/widgets-v2/actions/download/download.tsx
|
|
64
|
+
function E(l) {
|
|
65
|
+
let p = t(36), { items: h, labels: g, icon: _, iconProps: v, onError: y } = l, b = _ === void 0 ? m : _, x;
|
|
66
|
+
p[0] === g ? x = p[1] : (x = {
|
|
67
|
+
...T,
|
|
68
|
+
...g
|
|
69
|
+
}, p[0] = g, p[1] = x);
|
|
70
|
+
let S = x, [w, E] = n(null), [D, O] = n(!1), [k, A] = n(null), j;
|
|
71
|
+
p[2] === Symbol.for("react.memo_cache_sentinel") ? (j = (e) => {
|
|
72
|
+
A(null), E(e.currentTarget);
|
|
73
|
+
}, p[2] = j) : j = p[2];
|
|
74
|
+
let M = j, N;
|
|
75
|
+
p[3] === Symbol.for("react.memo_cache_sentinel") ? (N = () => E(null), p[3] = N) : N = p[3];
|
|
76
|
+
let P = N, F;
|
|
77
|
+
p[4] !== D || p[5] !== y ? (F = (e) => {
|
|
78
|
+
e.disabled || D || (P(), O(!0), A(null), e.resolve().then((t) => {
|
|
79
|
+
let { url: n, filename: r, revoke: i } = t;
|
|
80
|
+
C({
|
|
81
|
+
url: n,
|
|
82
|
+
filename: e.filename ?? r
|
|
83
|
+
}), i && setTimeout(i, 0);
|
|
84
|
+
}).catch((e) => {
|
|
85
|
+
let t = e instanceof Error ? e : Error(String(e));
|
|
86
|
+
A(t), y?.(t);
|
|
87
|
+
}).finally(() => {
|
|
88
|
+
O(!1);
|
|
89
|
+
}));
|
|
90
|
+
}, p[4] = D, p[5] = y, p[6] = F) : F = p[6];
|
|
91
|
+
let I = F, L = D ? S.loading : k ? S.error : S.trigger, R = !!w || D, z = w ? "true" : void 0, B = D || void 0, V = k ? "true" : void 0, H = D || h.length === 0, U = R ? "active" : void 0, W;
|
|
92
|
+
p[7] !== b || p[8] !== v || p[9] !== D ? (W = D ? /* @__PURE__ */ d(r, {
|
|
93
|
+
size: 18,
|
|
94
|
+
color: "inherit"
|
|
95
|
+
}) : /* @__PURE__ */ d(b, {
|
|
96
|
+
fontSize: "small",
|
|
97
|
+
...v
|
|
98
|
+
}), p[7] = b, p[8] = v, p[9] = D, p[10] = W) : W = p[10];
|
|
99
|
+
let G;
|
|
100
|
+
p[11] !== U || p[12] !== W || p[13] !== z || p[14] !== B || p[15] !== V || p[16] !== H || p[17] !== L ? (G = /* @__PURE__ */ d(i, {
|
|
101
|
+
size: "small",
|
|
102
|
+
"aria-label": L,
|
|
103
|
+
"aria-haspopup": "true",
|
|
104
|
+
"aria-expanded": z,
|
|
105
|
+
"aria-busy": B,
|
|
106
|
+
"data-error": V,
|
|
107
|
+
disabled: H,
|
|
108
|
+
onClick: M,
|
|
109
|
+
className: U,
|
|
110
|
+
children: W
|
|
111
|
+
}), p[11] = U, p[12] = W, p[13] = z, p[14] = B, p[15] = V, p[16] = H, p[17] = L, p[18] = G) : G = p[18];
|
|
112
|
+
let K;
|
|
113
|
+
p[19] !== G || p[20] !== L ? (K = /* @__PURE__ */ d(e, {
|
|
114
|
+
title: L,
|
|
115
|
+
children: G
|
|
116
|
+
}), p[19] = G, p[20] = L, p[21] = K) : K = p[21];
|
|
117
|
+
let q = !!w, J, Y;
|
|
118
|
+
p[22] === Symbol.for("react.memo_cache_sentinel") ? (J = {
|
|
119
|
+
vertical: "bottom",
|
|
120
|
+
horizontal: "right"
|
|
121
|
+
}, Y = {
|
|
122
|
+
vertical: "top",
|
|
123
|
+
horizontal: "right"
|
|
124
|
+
}, p[22] = J, p[23] = Y) : (J = p[22], Y = p[23]);
|
|
125
|
+
let X;
|
|
126
|
+
if (p[24] !== h || p[25] !== I) {
|
|
127
|
+
let e;
|
|
128
|
+
p[27] === I ? e = p[28] : (e = (e) => /* @__PURE__ */ f(c, {
|
|
129
|
+
disabled: e.disabled,
|
|
130
|
+
onClick: () => void I(e),
|
|
131
|
+
children: [e.icon && /* @__PURE__ */ d(a, {
|
|
132
|
+
sx: { color: "text.primary" },
|
|
133
|
+
children: e.icon
|
|
134
|
+
}), /* @__PURE__ */ d(o, { children: e.label })]
|
|
135
|
+
}, e.id), p[27] = I, p[28] = e), X = h.map(e), p[24] = h, p[25] = I, p[26] = X;
|
|
136
|
+
} else X = p[26];
|
|
137
|
+
let Z;
|
|
138
|
+
p[29] !== w || p[30] !== q || p[31] !== X ? (Z = /* @__PURE__ */ d(s, {
|
|
139
|
+
anchorEl: w,
|
|
140
|
+
open: q,
|
|
141
|
+
onClose: P,
|
|
142
|
+
variant: "menu",
|
|
143
|
+
elevation: 8,
|
|
144
|
+
anchorOrigin: J,
|
|
145
|
+
transformOrigin: Y,
|
|
146
|
+
children: X
|
|
147
|
+
}), p[29] = w, p[30] = q, p[31] = X, p[32] = Z) : Z = p[32];
|
|
148
|
+
let Q;
|
|
149
|
+
return p[33] !== K || p[34] !== Z ? (Q = /* @__PURE__ */ f(u, { children: [K, Z] }), p[33] = K, p[34] = Z, p[35] = Q) : Q = p[35], Q;
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
//#region src/widgets-v2/actions/download/icons.tsx
|
|
153
|
+
function D(e) {
|
|
154
|
+
let n = t(2), r;
|
|
155
|
+
return n[0] === e ? r = n[1] : (r = /* @__PURE__ */ d(h, { ...e }), n[0] = e, n[1] = r), r;
|
|
156
|
+
}
|
|
157
|
+
function O(e) {
|
|
158
|
+
let n = t(2), r;
|
|
159
|
+
return n[0] === e ? r = n[1] : (r = /* @__PURE__ */ d(p, { ...e }), n[0] = e, n[1] = r), r;
|
|
160
|
+
}
|
|
161
|
+
function k(e) {
|
|
162
|
+
let n = t(3), r;
|
|
163
|
+
n[0] === Symbol.for("react.memo_cache_sentinel") ? (r = /* @__PURE__ */ d("path", {
|
|
164
|
+
fill: "currentColor",
|
|
165
|
+
d: "M4.313 11.25h2.25v-1.125H4.688v-2.25h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v3c0 .213.072.39.216.534a.726.726 0 0 0 .534.216Zm2.925 0h2.25c.212 0 .39-.072.534-.216a.726.726 0 0 0 .216-.534V9.375a.931.931 0 0 0-.216-.59.658.658 0 0 0-.534-.273H8.363v-.637h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v1.125c0 .213.072.403.216.572a.675.675 0 0 0 .534.253h1.126v.675H7.238v1.125Zm4.95 0h1.124l1.313-4.5H13.5l-.75 2.588L12 6.75h-1.125l1.313 4.5ZM3 15c-.413 0-.766-.147-1.06-.44a1.445 1.445 0 0 1-.44-1.06v-9c0-.412.147-.766.44-1.06C2.235 3.148 2.588 3 3 3h12c.412 0 .766.147 1.06.44.293.294.44.648.44 1.06v9c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3Zm0-1.5h12v-9H3v9Z"
|
|
166
|
+
}), n[0] = r) : r = n[0];
|
|
167
|
+
let i;
|
|
168
|
+
return n[1] === e ? i = n[2] : (i = /* @__PURE__ */ d(l, {
|
|
169
|
+
viewBox: "0 0 18 18",
|
|
170
|
+
...e,
|
|
171
|
+
children: r
|
|
172
|
+
}), n[1] = e, n[2] = i), i;
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/widgets-v2/actions/download/constants.ts
|
|
176
|
+
var A = {
|
|
177
|
+
png: "png",
|
|
178
|
+
csv: "csv",
|
|
179
|
+
markdown: "md"
|
|
180
|
+
};
|
|
181
|
+
//#endregion
|
|
182
|
+
//#region src/widgets-v2/actions/download/png-item.tsx
|
|
183
|
+
function j(e) {
|
|
184
|
+
return {
|
|
185
|
+
id: A.png,
|
|
186
|
+
label: e.label ?? "PNG",
|
|
187
|
+
icon: /* @__PURE__ */ d(D, { fontSize: "small" }),
|
|
188
|
+
resolve: async () => {
|
|
189
|
+
let t = e.getCaptureEl();
|
|
190
|
+
if (!t) throw Error("[widgets-v2] No PNG capture element available");
|
|
191
|
+
let n = await w({
|
|
192
|
+
element: t,
|
|
193
|
+
pixelRatio: e.pixelRatio,
|
|
194
|
+
backgroundColor: e.backgroundColor
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
url: n.url,
|
|
198
|
+
filename: `${e.filename}.png`,
|
|
199
|
+
revoke: n.revoke
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//#endregion
|
|
205
|
+
//#region src/widgets-v2/actions/download/csv-item.tsx
|
|
206
|
+
function M(e) {
|
|
207
|
+
return {
|
|
208
|
+
id: A.csv,
|
|
209
|
+
label: e.label ?? "CSV",
|
|
210
|
+
icon: /* @__PURE__ */ d(k, { fontSize: "small" }),
|
|
211
|
+
resolve: () => {
|
|
212
|
+
if (e.getCsv) {
|
|
213
|
+
let t = e.getCsv(), n = new Blob([t], { type: "text/csv;charset=utf-8;" }), r = URL.createObjectURL(n);
|
|
214
|
+
return Promise.resolve({
|
|
215
|
+
url: r,
|
|
216
|
+
filename: `${e.filename}.csv`,
|
|
217
|
+
revoke: () => URL.revokeObjectURL(r)
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
let t = y(e.getRows());
|
|
221
|
+
return Promise.resolve({
|
|
222
|
+
url: t.url,
|
|
223
|
+
filename: `${e.filename}.csv`,
|
|
224
|
+
revoke: t.revoke
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//#endregion
|
|
230
|
+
export { O as a, T as c, v as d, C as f, k as i, w as l, j as n, D as o, A as r, E as s, M as t, y as u };
|
|
231
|
+
|
|
232
|
+
//# sourceMappingURL=download-BT6qBamM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download-BT6qBamM.js","names":["html2canvas","DownloadHandle","url","revoke","CSV_FORMULA_PREFIX","toCsvString","rows","escape","cell","value","String","JSON","stringify","test","replace","map","row","join","downloadToCSV","csv","blob","Blob","type","URL","createObjectURL","revokeObjectURL","UNSAFE_FILENAME_CHARS","MAX_FILENAME_LENGTH","sanitizeFilename","name","slice","triggerLinkDownload","args","filename","a","document","createElement","href","download","style","display","body","appendChild","click","remove","DownloadDOMToPNGOptions","element","HTMLElement","pixelRatio","backgroundColor","downloadDOMToPNG","opts","Promise","canvas","scale","useCORS","logging","resolve","reject","toBlob","Error","DownloadLabels","trigger","loading","error","DEFAULT_DOWNLOAD_LABELS","useCallback","useState","ComponentType","CircularProgress","IconButton","ListItemIcon","ListItemText","Menu","MenuItem","SvgIconProps","FileDownload","DownloadIcon","Tooltip","triggerLinkDownload","DownloadItem","DEFAULT_DOWNLOAD_LABELS","DownloadLabels","DownloadProps","items","labels","Partial","icon","iconProps","onError","err","Error","Download","t0","$","_c","t1","Icon","undefined","t2","_labels","anchorEl","setAnchorEl","isDownloading","setIsDownloading","error","setError","t3","Symbol","for","e","currentTarget","open","t4","close","t5","item","disabled","resolve","then","t6","url","filename","revoke","setTimeout","catch","e_0","String","finally","onSelect","triggerLabel","loading","trigger","triggerActive","Boolean","t7","t8","t9","length","t10","t11","t12","t13","t14","t15","t16","vertical","horizontal","t17","t18","item_0","id","color","label","map","t19","SvgIcon","SvgIconProps","ArticleOutlined","ImageOutlined","PNGIcon","props","$","_c","t0","MarkdownIcon","CSVIcon","Symbol","for","t1","DOWNLOAD_ITEM_IDS","png","csv","markdown","const","DownloadItemId","DOWNLOAD_ITEM_IDS","downloadDOMToPNG","PNGIcon","DownloadItem","BuildPngDownloadItemArgs","filename","getCaptureEl","HTMLElement","pixelRatio","backgroundColor","label","buildPngDownloadItem","args","id","png","icon","resolve","el","Error","handle","element","url","revoke","DOWNLOAD_ITEM_IDS","downloadToCSV","CSVIcon","DownloadItem","BuildCsvDownloadItemBase","filename","label","BuildCsvDownloadItemArgs","getRows","getCsv","buildCsvDownloadItem","args","id","csv","icon","resolve","blob","Blob","type","url","URL","createObjectURL","Promise","revoke","revokeObjectURL","handle"],"sources":["../src/widgets-v2/actions/download/exports.ts","../src/widgets-v2/actions/download/labels.ts","../src/widgets-v2/actions/download/download.tsx","../src/widgets-v2/actions/download/icons.tsx","../src/widgets-v2/actions/download/constants.ts","../src/widgets-v2/actions/download/png-item.tsx","../src/widgets-v2/actions/download/csv-item.tsx"],"sourcesContent":["/**\n * Pure download helpers — no React, no DOM lifecycle outside the link click.\n * Component layer in {@link ./download.tsx} orchestrates these.\n */\n\nimport html2canvas from 'html2canvas'\n\nexport interface DownloadHandle {\n url: string\n revoke: () => void\n}\n\n// Leading characters that Excel / Sheets / Numbers interpret as a formula\n// when the CSV is opened. Prefixing the cell with a single quote forces the\n// spreadsheet app to render it as plain text. Tab and CR are included\n// because some tooling strips leading whitespace before formula evaluation.\nconst CSV_FORMULA_PREFIX = /^[=+\\-@\\t\\r]/\n\nexport function toCsvString(rows: readonly (readonly unknown[])[]): string {\n const escape = (cell: unknown): string => {\n if (cell == null) return ''\n let value =\n typeof cell === 'string'\n ? cell\n : typeof cell === 'number' || typeof cell === 'boolean'\n ? String(cell)\n : JSON.stringify(cell)\n if (CSV_FORMULA_PREFIX.test(value)) value = `'${value}`\n if (/[\",\\n\\r]/.test(value)) return `\"${value.replace(/\"/g, '\"\"')}\"`\n return value\n }\n return rows.map((row) => row.map(escape).join(',')).join('\\n')\n}\n\nexport function downloadToCSV(\n rows: readonly (readonly unknown[])[],\n): DownloadHandle {\n const csv = toCsvString(rows)\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n return { url, revoke: () => URL.revokeObjectURL(url) }\n}\n\n// Path separators, NUL, and ASCII control chars. Filenames containing these\n// can confuse the browser download stack and historically enabled\n// Content-Disposition-style trickery.\n// eslint-disable-next-line no-control-regex\nconst UNSAFE_FILENAME_CHARS = /[\\\\/\\x00-\\x1f\\x7f]/g\nconst MAX_FILENAME_LENGTH = 200\n\nexport function sanitizeFilename(name: string): string {\n return (\n (name ?? '')\n .replace(UNSAFE_FILENAME_CHARS, '_')\n .slice(0, MAX_FILENAME_LENGTH) || 'download'\n )\n}\n\n/**\n * Triggers a browser download for the given URL by synthesizing an anchor,\n * clicking it, and removing it. Pure DOM — no React. The filename is run\n * through {@link sanitizeFilename} before being assigned to `a.download`.\n */\nexport function triggerLinkDownload(args: {\n url: string\n filename: string\n}): void {\n const { url, filename } = args\n const a = document.createElement('a')\n a.href = url\n a.download = sanitizeFilename(filename)\n a.style.display = 'none'\n document.body.appendChild(a)\n a.click()\n a.remove()\n}\n\nexport interface DownloadDOMToPNGOptions {\n element: HTMLElement\n /** html2canvas `scale`. Default 2 — crisp on hi-DPI displays. */\n pixelRatio?: number\n /**\n * html2canvas `backgroundColor`. Default `null` (transparent) so the PNG\n * inherits whatever surface it lands on when the user pastes it.\n */\n backgroundColor?: string | null\n}\n\n/**\n * Rasterise an HTMLElement to PNG via `html2canvas` and wrap the result in\n * a `DownloadHandle`. The caller is responsible for calling `handle.revoke`\n * after the link click is dispatched. Used by per-widget download configs\n * to power the PNG menu item.\n */\nexport async function downloadDOMToPNG(\n opts: DownloadDOMToPNGOptions,\n): Promise<DownloadHandle> {\n const { element, pixelRatio = 2, backgroundColor = null } = opts\n const canvas = await html2canvas(element, {\n scale: pixelRatio,\n backgroundColor,\n useCORS: true,\n logging: false,\n })\n return new Promise<DownloadHandle>((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error('[widgets-v2] toBlob() returned null'))\n return\n }\n const url = URL.createObjectURL(blob)\n resolve({ url, revoke: () => URL.revokeObjectURL(url) })\n }, 'image/png')\n })\n}\n","export interface DownloadLabels {\n trigger: string\n /** Tooltip / aria-label shown on the trigger while a download is in flight. */\n loading: string\n /**\n * Tooltip / aria-label shown on the trigger after a download failed. Cleared\n * the next time the menu opens.\n */\n error: string\n}\n\nexport const DEFAULT_DOWNLOAD_LABELS: DownloadLabels = {\n trigger: 'Download',\n loading: 'Downloading…',\n error: 'Download failed',\n}\n","import { useCallback, useState, type ComponentType } from 'react'\nimport {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n type SvgIconProps,\n} from '@mui/material'\nimport { FileDownload as DownloadIcon } from '@mui/icons-material'\nimport { Tooltip } from '../../../components'\nimport { triggerLinkDownload } from './exports'\nimport type { DownloadItem } from './types'\nimport { DEFAULT_DOWNLOAD_LABELS, type DownloadLabels } from './labels'\n\nexport interface DownloadProps {\n items: readonly DownloadItem[]\n labels?: Partial<DownloadLabels>\n icon?: ComponentType<SvgIconProps>\n iconProps?: SvgIconProps\n /**\n * Fires when an item's `resolve()` rejects (or any step in the click-through\n * path throws). The error is normalised to a real `Error` first. Surface\n * to your telemetry / toast layer here; the trigger already shows a visual\n * error indicator independently.\n */\n onError?: (err: Error) => void\n}\n\nexport function Download({\n items,\n labels,\n icon: Icon = DownloadIcon,\n iconProps,\n onError,\n}: DownloadProps) {\n const _labels = { ...DEFAULT_DOWNLOAD_LABELS, ...labels }\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const [isDownloading, setIsDownloading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n\n const open = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n // Clear any prior error when the user re-engages the menu — the next\n // attempt is a fresh interaction, not a continuation of the failed one.\n setError(null)\n setAnchorEl(e.currentTarget)\n }, [])\n const close = useCallback(() => setAnchorEl(null), [])\n\n const onSelect = useCallback(\n (item: DownloadItem) => {\n // Single-flight: ignore re-entry while a download is already in flight.\n // The trigger is `disabled` and the menu is closed during that window,\n // so this guard mostly defends against future call sites that bypass\n // the menu (e.g. keyboard shortcuts).\n if (item.disabled || isDownloading) return\n close()\n setIsDownloading(true)\n setError(null)\n item\n .resolve()\n .then(({ url, filename, revoke }) => {\n // `item.filename` overrides what `resolve()` returns — lets consumers\n // template the filename with widget metadata declaratively.\n triggerLinkDownload({ url, filename: item.filename ?? filename })\n // Defer revoke past the current task so Safari / Firefox-on-slow-disk\n // can dispatch the download before the blob URL is invalidated.\n // Synchronous revoke here can silently cancel the download.\n if (revoke) setTimeout(revoke, 0)\n })\n .catch((err: unknown) => {\n const e = err instanceof Error ? err : new Error(String(err))\n setError(e)\n onError?.(e)\n })\n .finally(() => {\n setIsDownloading(false)\n })\n },\n [close, isDownloading, onError],\n )\n\n const triggerLabel = isDownloading\n ? _labels.loading\n : error\n ? _labels.error\n : _labels.trigger\n const triggerActive = Boolean(anchorEl) || isDownloading\n\n return (\n <>\n <Tooltip title={triggerLabel}>\n <IconButton\n size='small'\n aria-label={triggerLabel}\n aria-haspopup='true'\n aria-expanded={anchorEl ? 'true' : undefined}\n aria-busy={isDownloading || undefined}\n data-error={error ? 'true' : undefined}\n disabled={isDownloading || items.length === 0}\n onClick={open}\n className={triggerActive ? 'active' : undefined}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n <Icon fontSize='small' {...iconProps} />\n )}\n </IconButton>\n </Tooltip>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={close}\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n {items.map((item) => (\n <MenuItem\n key={item.id}\n disabled={item.disabled}\n onClick={() => void onSelect(item)}\n >\n {item.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {item.icon}\n </ListItemIcon>\n )}\n <ListItemText>{item.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import { SvgIcon, type SvgIconProps } from '@mui/material'\nimport { ArticleOutlined, ImageOutlined } from '@mui/icons-material'\n\n/**\n * Generic \"image\" glyph used for the PNG download item. Wraps MUI's\n * `ImageOutlined` so callers can swap it via the per-widget download\n * config's `icon` override without pulling MUI directly.\n */\nexport function PNGIcon(props: SvgIconProps) {\n return <ImageOutlined {...props} />\n}\n\n/**\n * Generic \"document\" glyph used for the Markdown download item. Wraps MUI's\n * `ArticleOutlined`, mirroring {@link PNGIcon}, so the Markdown menu item\n * carries an icon consistent with the other download formats.\n */\nexport function MarkdownIcon(props: SvgIconProps) {\n return <ArticleOutlined {...props} />\n}\n\n/**\n * \"CSV\" rectangle with the letters spelled inside — matches v1 visual and is\n * easier to recognise in a download menu than a generic table glyph.\n */\nexport function CSVIcon(props: SvgIconProps) {\n return (\n <SvgIcon viewBox='0 0 18 18' {...props}>\n <path\n fill='currentColor'\n d='M4.313 11.25h2.25v-1.125H4.688v-2.25h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v3c0 .213.072.39.216.534a.726.726 0 0 0 .534.216Zm2.925 0h2.25c.212 0 .39-.072.534-.216a.726.726 0 0 0 .216-.534V9.375a.931.931 0 0 0-.216-.59.658.658 0 0 0-.534-.273H8.363v-.637h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v1.125c0 .213.072.403.216.572a.675.675 0 0 0 .534.253h1.126v.675H7.238v1.125Zm4.95 0h1.124l1.313-4.5H13.5l-.75 2.588L12 6.75h-1.125l1.313 4.5ZM3 15c-.413 0-.766-.147-1.06-.44a1.445 1.445 0 0 1-.44-1.06v-9c0-.412.147-.766.44-1.06C2.235 3.148 2.588 3 3 3h12c.412 0 .766.147 1.06.44.293.294.44.648.44 1.06v9c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3Zm0-1.5h12v-9H3v9Z'\n />\n </SvgIcon>\n )\n}\n","/**\n * Canonical `DownloadItem.id`s for the built-in download formats. Centralised\n * so the per-format builders — and anything that keys off the id (menu logic,\n * tests) — reference one source of truth instead of re-typing string literals.\n * The Markdown format keeps the short `'md'` id to match its `.md` extension.\n */\nexport const DOWNLOAD_ITEM_IDS = {\n png: 'png',\n csv: 'csv',\n markdown: 'md',\n} as const\n\nexport type DownloadItemId =\n (typeof DOWNLOAD_ITEM_IDS)[keyof typeof DOWNLOAD_ITEM_IDS]\n","import { DOWNLOAD_ITEM_IDS } from './constants'\nimport { downloadDOMToPNG } from './exports'\nimport { PNGIcon } from './icons'\nimport type { DownloadItem } from './types'\n\nexport interface BuildPngDownloadItemArgs {\n /** Base filename (without extension). The item appends `.png`. */\n filename: string\n /**\n * Reads the capture element to rasterise. Called at click time so the\n * download config doesn't capture a stale reference. Wire it to\n * `() => getCaptureEl(id)` from `widgets-v2/stores`.\n */\n getCaptureEl: () => HTMLElement | null\n /** html2canvas `scale`. Default 2. */\n pixelRatio?: number\n /** html2canvas `backgroundColor`. Default transparent (`null`). */\n backgroundColor?: string | null\n /** Override the menu label. Default `'PNG'`. */\n label?: string\n}\n\n/**\n * Builds the standard PNG `DownloadItem` used by every per-widget download\n * config. Centralised so the menu label, icon, error message, and filename\n * suffix stay consistent across widgets without each `create*DownloadConfig`\n * re-deriving the same shape.\n */\nexport function buildPngDownloadItem(\n args: BuildPngDownloadItemArgs,\n): DownloadItem {\n return {\n id: DOWNLOAD_ITEM_IDS.png,\n label: args.label ?? 'PNG',\n icon: <PNGIcon fontSize='small' />,\n resolve: async () => {\n const el = args.getCaptureEl()\n if (!el) {\n throw new Error('[widgets-v2] No PNG capture element available')\n }\n const handle = await downloadDOMToPNG({\n element: el,\n pixelRatio: args.pixelRatio,\n backgroundColor: args.backgroundColor,\n })\n return {\n url: handle.url,\n filename: `${args.filename}.png`,\n revoke: handle.revoke,\n }\n },\n }\n}\n","import { DOWNLOAD_ITEM_IDS } from './constants'\nimport { downloadToCSV } from './exports'\nimport { CSVIcon } from './icons'\nimport type { DownloadItem } from './types'\n\ninterface BuildCsvDownloadItemBase {\n /** Base filename (without extension). The item appends `.csv`. */\n filename: string\n /** Override the menu label. Default `'CSV'`. */\n label?: string\n}\n\n/**\n * Args for {@link buildCsvDownloadItem}. A discriminated union: a caller must\n * supply exactly one content source — `getRows` (rows serialised through the\n * shared `toCsvString`) or `getCsv` (a pre-built CSV string). The `?: never`\n * arms make passing both — or neither — a compile-time error.\n */\nexport type BuildCsvDownloadItemArgs =\n | (BuildCsvDownloadItemBase & {\n /**\n * Builds the CSV rows at click time. Used by most widgets — rows are run\n * through `toCsvString` so escaping (incl. the spreadsheet\n * formula-injection guard) stays consistent across widgets.\n */\n getRows: () => readonly (readonly unknown[])[]\n getCsv?: never\n })\n | (BuildCsvDownloadItemBase & {\n /**\n * Returns a pre-built CSV string at click time. Escape hatch for widgets\n * (e.g. Table) that already serialise their own CSV with bespoke\n * header/cell handling.\n */\n getCsv: () => string\n getRows?: never\n })\n\n/**\n * Builds the standard CSV `DownloadItem` used by every per-widget download\n * config. Centralised so the menu label, icon, and `.csv` filename suffix stay\n * consistent across widgets — mirrors {@link buildPngDownloadItem} so neither\n * format can drift again.\n */\nexport function buildCsvDownloadItem(\n args: BuildCsvDownloadItemArgs,\n): DownloadItem {\n return {\n id: DOWNLOAD_ITEM_IDS.csv,\n label: args.label ?? 'CSV',\n icon: <CSVIcon fontSize='small' />,\n resolve: () => {\n if (args.getCsv) {\n const csv = args.getCsv()\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n return Promise.resolve({\n url,\n filename: `${args.filename}.csv`,\n revoke: () => URL.revokeObjectURL(url),\n })\n }\n const handle = downloadToCSV(args.getRows())\n return Promise.resolve({\n url: handle.url,\n filename: `${args.filename}.csv`,\n revoke: handle.revoke,\n })\n },\n }\n}\n"],"mappings":";;;;;;;;;AAgBA,IAAMI,IAAqB;AAE3B,SAAgBC,EAAYC,GAA+C;CACzE,IAAMC,KAAUC,MAA0B;EACxC,IAAIA,KAAQ,MAAM,OAAO;EACzB,IAAIC,IACF,OAAOD,KAAS,WACZA,IACA,OAAOA,KAAS,YAAY,OAAOA,KAAS,YAC1CE,OAAOF,CAAI,IACXG,KAAKC,UAAUJ,CAAI;EAG3B,OAFIJ,EAAmBS,KAAKJ,CAAK,MAAGA,IAAQ,IAAIA,MAC5C,WAAWI,KAAKJ,CAAK,IAAU,IAAIA,EAAMK,QAAQ,MAAM,MAAI,EAAC,KACzDL;CACT;CACA,OAAOH,EAAKS,KAAKC,MAAQA,EAAID,IAAIR,CAAM,CAAC,CAACU,KAAK,GAAG,CAAC,CAAC,CAACA,KAAK,IAAI;AAC/D;AAEA,SAAgBC,EACdZ,GACgB;CAChB,IAAMa,IAAMd,EAAYC,CAAI,GACtBc,IAAO,IAAIC,KAAK,CAACF,CAAG,GAAG,EAAEG,MAAM,0BAA0B,CAAC,GAC1DpB,IAAMqB,IAAIC,gBAAgBJ,CAAI;CACpC,OAAO;EAAElB;EAAKC,cAAcoB,IAAIE,gBAAgBvB,CAAG;CAAE;AACvD;AAMA,IAAMwB,IAAwB,uBACxBC,IAAsB;AAE5B,SAAgBC,EAAiBC,GAAsB;CACrD,QACGA,KAAQ,GAAA,CACNf,QAAQY,GAAuB,GAAG,CAAC,CACnCI,MAAM,GAAGH,CAAmB,KAAK;AAExC;AAOA,SAAgBI,EAAoBC,GAG3B;CACP,IAAM,EAAE9B,QAAK+B,gBAAaD,GACpBE,IAAIC,SAASC,cAAc,GAAG;CAMpCF,AALAA,EAAEG,OAAOnC,GACTgC,EAAEI,WAAWV,EAAiBK,CAAQ,GACtCC,EAAEK,MAAMC,UAAU,QAClBL,SAASM,KAAKC,YAAYR,CAAC,GAC3BA,EAAES,MAAM,GACRT,EAAEU,OAAO;AACX;AAmBA,eAAsBM,EACpBC,GACyB;CACzB,IAAM,EAAEL,YAASE,gBAAa,GAAGC,qBAAkB,SAASE,GACtDE,IAAS,MAAMrD,EAAY8C,GAAS;EACxCQ,OAAON;EACPC;EACAM,SAAS;EACTC,SAAS;CACX,CAAC;CACD,OAAO,IAAIJ,SAAyBK,GAASC,MAAW;EACtDL,EAAOM,QAAQvC,MAAS;GACtB,IAAI,CAACA,GAAM;IACTsC,EAAO,gBAAIE,MAAM,qCAAqC,CAAC;IACvD;GACF;GACA,IAAM1D,IAAMqB,IAAIC,gBAAgBJ,CAAI;GACpCqC,EAAQ;IAAEvD;IAAKC,cAAcoB,IAAIE,gBAAgBvB,CAAG;GAAE,CAAC;EACzD,GAAG,WAAW;CAChB,CAAC;AACH;;;ACvGA,IAAa+D,IAA0C;CACrDH,SAAS;CACTC,SAAS;CACTC,OAAO;AACT;;;ACeA,SAAO4B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAkB,EAAAX,UAAAC,WAAAE,MAAAS,GAAAR,cAAAC,eAAAI,GAGjBI,IAAAD,MAAAE,KAAAA,IAAArB,IAAAmB,GAAmBG;CAAA,AAAAL,EAAA,OAAAT,IAIgCc,IAAAL,EAAA,MAAzCK,IAAA;EAAA,GAAKlB;EAAuB,GAAKI;CAAO,GAACS,EAAA,KAAAT,GAAAS,EAAA,KAAAK;CAAzD,IAAAC,IAAgBD,GAChB,CAAAE,GAAAC,KAAgCnC,EAA6B,IAAI,GACjE,CAAAoC,GAAAC,KAA0CrC,EAAS,EAAK,GACxD,CAAAsC,GAAAC,KAA0BvC,EAAuB,IAAI,GAACwC;CAAA,AAAAb,EAAA,OAAAc,OAAAC,IAAA,2BAAA,KAE7BF,KAAAG,MAAA;EAIvBR,AADAI,EAAS,IAAI,GACbJ,EAAYQ,EAACC,aAAc;CAAC,GAC7BjB,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CALD,IAAAkB,IAAaL,GAKPM;CAAA,AAAAnB,EAAA,OAAAc,OAAAC,IAAA,2BAAA,KACoBI,UAAMX,EAAY,IAAI,GAACR,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA;CAAjD,IAAAoB,IAAcD,GAAwCE;CAAA,AAAArB,EAAA,OAAAS,KAAAT,EAAA,OAAAL,KAGpD0B,KAAAC,MAAA;EAKMA,EAAIC,YAAJd,MACJW,EAAM,GACNV,EAAiB,EAAI,GACrBE,EAAS,IAAI,GACbU,EAAIE,QACO,CAAC,CAAAC,MACJC,MAAA;GAAC,IAAA,EAAAC,QAAAC,aAAAC,cAAAH;GAOL,AAJAzC,EAAoB;IAAA0C;IAAAC,UAAiBN,EAAIM,YAAJA;GAA0B,CAAC,GAI5DC,KAAQC,WAAWD,GAAQ,CAAC;EAAC,CAClC,CAAC,CAAAE,OACKnC,MAAA;GACL,IAAAoC,IAAUpC,aAAeC,QAAfD,IAAiCC,MAAMoC,OAAOrC,CAAG,CAAC;GAE5DD,AADAiB,EAASI,CAAC,GACVrB,IAAUqB,CAAC;EAAC,CACb,CAAC,CAAAkB,cACO;GACPxB,EAAiB,EAAK;EAAC,CACxB;CAAC,GACLV,EAAA,KAAAS,GAAAT,EAAA,KAAAL,GAAAK,EAAA,KAAAqB,KAAAA,IAAArB,EAAA;CA7BH,IAAAmC,IAAiBd,GAiCjBe,IAAqB3B,IACjBH,EAAO+B,UACP1B,IACEL,EAAOK,QACPL,EAAOgC,SACbC,IAAsBC,EAAQjC,KAARE,GASCiB,IAAAnB,IAAA,SAAAH,KAAAA,GACJqC,IAAAhC,KAAAL,KAAAA,GACCsC,IAAA/B,IAAA,SAAAP,KAAAA,GACFuC,IAAAlC,KAAiBnB,EAAKsD,WAAY,GAEjCC,IAAAN,IAAA,WAAAnC,KAAAA,GAAoC0C;CAAA,AAAA9C,EAAA,OAAAG,KAAAH,EAAA,OAAAN,KAAAM,EAAA,OAAAS,KAE9CqC,IAAArC,IACC,kBAAC,GAAD;EAAwB,MAAA;EAAU,OAAA;CAAS,CAAA,IAE3C,kBAAC,GAAD;EAAe,UAAA;EAAO,GAAKf;CAAS,CAAA,GACrCM,EAAA,KAAAG,GAAAH,EAAA,KAAAN,GAAAM,EAAA,KAAAS,GAAAT,EAAA,MAAA8C,KAAAA,IAAA9C,EAAA;CAAA,IAAA+C;CAAA,AAAA/C,EAAA,QAAA6C,KAAA7C,EAAA,QAAA8C,KAAA9C,EAAA,QAAA0B,KAAA1B,EAAA,QAAAyC,KAAAzC,EAAA,QAAA0C,KAAA1C,EAAA,QAAA2C,KAAA3C,EAAA,QAAAoC,KAfHW,IAAA,kBAAC,GAAD;EACO,MAAA;EACOX,cAAAA;EACE,iBAAA;EACC,iBAAAV;EACJ,aAAAe;EACC,cAAAC;EACF,UAAAC;EACDzB,SAAAA;EACE,WAAA2B;EAEVC,UAAAA;CAXQ,CAAA,GAgBE9C,EAAA,MAAA6C,GAAA7C,EAAA,MAAA8C,GAAA9C,EAAA,MAAA0B,GAAA1B,EAAA,MAAAyC,GAAAzC,EAAA,MAAA0C,GAAA1C,EAAA,MAAA2C,GAAA3C,EAAA,MAAAoC,GAAApC,EAAA,MAAA+C,KAAAA,IAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA+C,KAAA/C,EAAA,QAAAoC,KAjBfY,IAAA,kBAAC,GAAD;EAAgBZ,OAAAA;EACdW,UAAAA;CADM,CAAA,GAkBE/C,EAAA,MAAA+C,GAAA/C,EAAA,MAAAoC,GAAApC,EAAA,MAAAgD,KAAAA,IAAAhD,EAAA;CAGF,IAAAiD,IAAAT,EAAQjC,GAAS2C,GAAAC;CAAA,AAAAnD,EAAA,QAAAc,OAAAC,IAAA,2BAAA,KAITmC,IAAA;EAAAE,UACF;EAAQC,YACN;CACd,GACiBF,IAAA;EAAAC,UACL;EAAKC,YACH;CACd,GAACrD,EAAA,MAAAkD,GAAAlD,EAAA,MAAAmD,MAAAD,IAAAlD,EAAA,KAAAmD,IAAAnD,EAAA;CAAA,IAAAsD;CAAA,IAAAtD,EAAA,QAAAV,KAAAU,EAAA,QAAAmC,GAAA;EAAA,IAAAoB;EAeCvD,AAfDA,EAAA,QAAAmC,IAeAoB,IAAAvD,EAAA,OAbUuD,KAAAC,MACT,kBAAC,GAAD;GAEY,UAAAlC,EAAIC;GACL,eAAM,KAAKY,EAASb,CAAI;GAHnC,UAAA,CAKGA,EAAI7B,QACH,kBAAC,GAAD;IAAkB,IAAA,EAAAiE,OAAS,eAAe;IACvCpC,UAAAA,EAAI7B;GADM,CAAA,GAIf,kBAAC,GAAD,EAAA,UAAe6B,EAAIqC,MAAN,CAAA,CAVN;EACFrC,GAAAA,EAAImC,EADF,GAYVzD,EAAA,MAAAmC,GAAAnC,EAAA,MAAAuD,IAbAD,IAAAhE,EAAKsE,IAAKL,CAaV,GAACvD,EAAA,MAAAV,GAAAU,EAAA,MAAAmC,GAAAnC,EAAA,MAAAsD;CAAA,OAAAA,IAAAtD,EAAA;CAAA,IAAAuD;CAAA,AAAAvD,EAAA,QAAAO,KAAAP,EAAA,QAAAiD,KAAAjD,EAAA,QAAAsD,KA5BJC,IAAA,kBAAC,GAAD;EACYhD;EACJ,MAAA0C;EACG7B,SAAAA;EACD,SAAA;EACG,WAAA;EACG,cAAA8B;EAIG,iBAAAC;EAKhBG,UAAAA;CAfE,CAAA,GA6BEtD,EAAA,MAAAO,GAAAP,EAAA,MAAAiD,GAAAjD,EAAA,MAAAsD,GAAAtD,EAAA,MAAAuD,KAAAA,IAAAvD,EAAA;CAAA,IAAA6D;CACN,OADM7D,EAAA,QAAAgD,KAAAhD,EAAA,QAAAuD,KAjDTM,IAAA,kBAAA,GAAA,EAAA,UAAA,CACEb,GAmBAO,CA6BO,EAAA,CAAA,GACNvD,EAAA,MAAAgD,GAAAhD,EAAA,MAAAuD,GAAAvD,EAAA,MAAA6D,KAAAA,IAAA7D,EAAA,KAlDH6D;AAkDG;;;ACrIP,SAAOK,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAC8B,OAD9BF,EAAA,OAAAD,IAC8BG,IAAAF,EAAA,MAA5BE,IAAA,kBAAC,GAAD,EAAc,GAAKH,EAAK,CAAA,GAAIC,EAAA,KAAAD,GAAAC,EAAA,KAAAE,IAA5BA;AAA4B;AAQrC,SAAOC,EAAAJ,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CACgC,OADhCF,EAAA,OAAAD,IACgCG,IAAAF,EAAA,MAA9BE,IAAA,kBAAC,GAAD,EAAgB,GAAKH,EAAK,CAAA,GAAIC,EAAA,KAAAD,GAAAC,EAAA,KAAAE,IAA9BA;AAA8B;AAOvC,SAAOE,EAAAL,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAGDJ,IAAA,kBAAA,QAAA;EACO,MAAA;EACH,GAAA;CAA8sB,CAAA,GAChtBF,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAO;CACM,OADNP,EAAA,OAAAD,IACMQ,IAAAP,EAAA,MALVO,IAAA,kBAAC,GAAD;EAAiB,SAAA;EAAW,GAAKR;EAC/BG,UAAAA;CADM,CAAA,GAKEF,EAAA,KAAAD,GAAAC,EAAA,KAAAO,IALVA;AAKU;;;AC1Bd,IAAaC,IAAoB;CAC/BC,KAAK;CACLC,KAAK;CACLC,UAAU;AACZ;;;ACkBA,SAAgBc,EACdC,GACc;CACd,OAAO;EACLC,IAAIb,EAAkBc;EACtBJ,OAAOE,EAAKF,SAAS;EACrBK,MAAM,kBAAC,GAAD,EAAS,UAAS,QAAO,CAAA;EAC/BC,SAAS,YAAY;GACnB,IAAMC,IAAKL,EAAKN,aAAa;GAC7B,IAAI,CAACW,GACH,MAAUC,MAAM,+CAA+C;GAEjE,IAAMC,IAAS,MAAMlB,EAAiB;IACpCmB,SAASH;IACTT,YAAYI,EAAKJ;IACjBC,iBAAiBG,EAAKH;GACxB,CAAC;GACD,OAAO;IACLY,KAAKF,EAAOE;IACZhB,UAAU,GAAGO,EAAKP,SAAQ;IAC1BiB,QAAQH,EAAOG;GACjB;EACF;CACF;AACF;;;ACRA,SAAgBW,EACdC,GACc;CACd,OAAO;EACLC,IAAIZ,EAAkBa;EACtBP,OAAOK,EAAKL,SAAS;EACrBQ,MAAM,kBAAC,GAAD,EAAS,UAAS,QAAO,CAAA;EAC/BC,eAAe;GACb,IAAIJ,EAAKF,QAAQ;IACf,IAAMI,IAAMF,EAAKF,OAAO,GAClBO,IAAO,IAAIC,KAAK,CAACJ,CAAG,GAAG,EAAEK,MAAM,0BAA0B,CAAC,GAC1DC,IAAMC,IAAIC,gBAAgBL,CAAI;IACpC,OAAOM,QAAQP,QAAQ;KACrBI;KACAd,UAAU,GAAGM,EAAKN,SAAQ;KAC1BkB,cAAcH,IAAII,gBAAgBL,CAAG;IACvC,CAAC;GACH;GACA,IAAMM,IAASxB,EAAcU,EAAKH,QAAQ,CAAC;GAC3C,OAAOc,QAAQP,QAAQ;IACrBI,KAAKM,EAAON;IACZd,UAAU,GAAGM,EAAKN,SAAQ;IAC1BkB,QAAQE,EAAOF;GACjB,CAAC;EACH;CACF;AACF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { t as e } from "./use-widget-selector-VSPhfhNm.js";
|
|
2
|
+
import { t } from "./shared-resize-observer-BEiP2rQt.js";
|
|
3
|
+
import { t as n } from "./hooks-zf5gKZYq.js";
|
|
4
|
+
import { c as r } from "react/compiler-runtime";
|
|
5
|
+
import { useEffect as i, useImperativeHandle as a, useRef as o } from "react";
|
|
6
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
7
|
+
import * as c from "echarts";
|
|
8
|
+
//#region src/widgets/echart/echart-ui.tsx
|
|
9
|
+
function l(e) {
|
|
10
|
+
let l = r(21), { id: u, ref: d, init: f, option: p, className: m, style: h, onEvents: g } = e, { ref: _, instance: v } = n(u), y = o(null), b, x;
|
|
11
|
+
l[0] === Symbol.for("react.memo_cache_sentinel") ? (b = () => y.current, x = [], l[0] = b, l[1] = x) : (b = l[0], x = l[1]), a(d, b, x);
|
|
12
|
+
let S, C;
|
|
13
|
+
l[2] !== v || l[3] !== _ || l[4] !== f ? (S = () => {
|
|
14
|
+
if (_.current) return y.current = c.init(_.current, null, {
|
|
15
|
+
renderer: "svg",
|
|
16
|
+
height: 304,
|
|
17
|
+
...f
|
|
18
|
+
}), v.current = y.current, () => {
|
|
19
|
+
y.current?.dispose(), y.current = null, v.current = null;
|
|
20
|
+
};
|
|
21
|
+
}, C = [
|
|
22
|
+
v,
|
|
23
|
+
_,
|
|
24
|
+
f
|
|
25
|
+
], l[2] = v, l[3] = _, l[4] = f, l[5] = S, l[6] = C) : (S = l[5], C = l[6]), i(S, C);
|
|
26
|
+
let w, T;
|
|
27
|
+
l[7] === p ? (w = l[8], T = l[9]) : (w = () => {
|
|
28
|
+
y.current?.setOption(p, {
|
|
29
|
+
lazyUpdate: !0,
|
|
30
|
+
notMerge: !0
|
|
31
|
+
});
|
|
32
|
+
}, T = [p], l[7] = p, l[8] = w, l[9] = T), i(w, T);
|
|
33
|
+
let E, D;
|
|
34
|
+
l[10] === _ ? (E = l[11], D = l[12]) : (E = () => {
|
|
35
|
+
if (_.current) return t(_.current, () => {
|
|
36
|
+
y.current?.resize();
|
|
37
|
+
});
|
|
38
|
+
}, D = [_], l[10] = _, l[11] = E, l[12] = D), i(E, D);
|
|
39
|
+
let O, k;
|
|
40
|
+
l[13] === g ? (O = l[14], k = l[15]) : (O = () => {
|
|
41
|
+
let e = { ...g ?? {} };
|
|
42
|
+
return e.click || (e.mousemove = () => {
|
|
43
|
+
y.current?.getZr().setCursorStyle("default");
|
|
44
|
+
}), Object.entries(e).forEach((e) => {
|
|
45
|
+
let [t, n] = e;
|
|
46
|
+
y.current?.on(t, n);
|
|
47
|
+
}), () => {
|
|
48
|
+
Object.entries(e).forEach((e) => {
|
|
49
|
+
let [t] = e;
|
|
50
|
+
y.current?.off(t);
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
}, k = [g], l[13] = g, l[14] = O, l[15] = k), i(O, k);
|
|
54
|
+
let A;
|
|
55
|
+
return l[16] !== _ || l[17] !== m || l[18] !== u || l[19] !== h ? (A = /* @__PURE__ */ s("div", {
|
|
56
|
+
id: u,
|
|
57
|
+
ref: _,
|
|
58
|
+
style: h,
|
|
59
|
+
className: m
|
|
60
|
+
}), l[16] = _, l[17] = m, l[18] = u, l[19] = h, l[20] = A) : A = l[20], A;
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/widgets/echart/echart.tsx
|
|
64
|
+
function u(t) {
|
|
65
|
+
let n = r(12), { id: i, data: a, widgetOption: o, onEvents: c, init: u } = e(t.id, d), p;
|
|
66
|
+
n[0] === a ? p = n[1] : (p = f(a), n[0] = a, n[1] = p);
|
|
67
|
+
let m = p, h;
|
|
68
|
+
n[2] === m ? h = n[3] : (h = m && { dataset: m }, n[2] = m, n[3] = h);
|
|
69
|
+
let g;
|
|
70
|
+
n[4] !== h || n[5] !== o ? (g = {
|
|
71
|
+
...o,
|
|
72
|
+
...h
|
|
73
|
+
}, n[4] = h, n[5] = o, n[6] = g) : g = n[6];
|
|
74
|
+
let _ = g;
|
|
75
|
+
if (!i) return null;
|
|
76
|
+
let v;
|
|
77
|
+
return n[7] !== u || n[8] !== c || n[9] !== _ || n[10] !== t.id ? (v = /* @__PURE__ */ s(l, {
|
|
78
|
+
id: t.id,
|
|
79
|
+
option: _,
|
|
80
|
+
onEvents: c,
|
|
81
|
+
init: u
|
|
82
|
+
}), n[7] = u, n[8] = c, n[9] = _, n[10] = t.id, n[11] = v) : v = n[11], v;
|
|
83
|
+
}
|
|
84
|
+
function d(e) {
|
|
85
|
+
return {
|
|
86
|
+
id: e?.id,
|
|
87
|
+
data: e?.data,
|
|
88
|
+
widgetOption: e?.option,
|
|
89
|
+
onEvents: e?.onEvents,
|
|
90
|
+
init: e?.init
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function f(e) {
|
|
94
|
+
if (!(!e || e.length === 0)) return e.map((e) => ({ source: e }));
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/widgets/echart/options.ts
|
|
98
|
+
function p({ theme: e }) {
|
|
99
|
+
return {
|
|
100
|
+
grid: {
|
|
101
|
+
left: parseInt(e.spacing(1)),
|
|
102
|
+
top: parseInt(e.spacing(3)),
|
|
103
|
+
right: parseInt(e.spacing(1)),
|
|
104
|
+
bottom: parseInt(e.spacing(4)),
|
|
105
|
+
containLabel: !0
|
|
106
|
+
},
|
|
107
|
+
toolbox: { show: !1 },
|
|
108
|
+
tooltip: {
|
|
109
|
+
axisPointer: { type: "line" },
|
|
110
|
+
backgroundColor: e.palette.grey[900],
|
|
111
|
+
borderWidth: 0,
|
|
112
|
+
padding: [parseInt(e.spacing(1)), parseInt(e.spacing(1))],
|
|
113
|
+
textStyle: {
|
|
114
|
+
color: e.palette.common.white,
|
|
115
|
+
fontSize: 11,
|
|
116
|
+
fontFamily: e.typography.caption.fontFamily
|
|
117
|
+
},
|
|
118
|
+
trigger: "axis"
|
|
119
|
+
},
|
|
120
|
+
legend: {
|
|
121
|
+
type: "scroll",
|
|
122
|
+
bottom: 0
|
|
123
|
+
},
|
|
124
|
+
axisPointer: { lineStyle: { color: e.palette.grey[400] } },
|
|
125
|
+
xAxis: {},
|
|
126
|
+
yAxis: {},
|
|
127
|
+
color: [e.palette.secondary.main, ...Object.values(e.palette.qualitative?.bold ?? {})]
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { u as n, l as r, p as t };
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=echart-BkaV3V5G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"echart-BkaV3V5G.js","names":["useEffect","useRef","useImperativeHandle","echarts","EchartUIProps","useWidgetRef","observeResize","EchartUI","props","$","_c","id","ref","init","option","className","style","onEvents","chartRef","instance","chartInstanceRef","chartInstance","t0","t1","Symbol","for","current","t2","t3","renderer","height","dispose","t4","t5","setOption","lazyUpdate","notMerge","t6","t7","resize","t8","t9","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t10","event","handler","on","t11","event_0","off","EchartProps","EchartWidgetState","EchartWidgetData","EchartOptionsProps","EchartUI","useWidgetSelector","useMemo","Echart","props","$","_c","id","data","widgetOption","onEvents","init","_temp","t0","buildDataset","dataset","t1","t2","option","t3","w","length","undefined","map","d","source","EchartOptionsProps","EchartWidgetOptionProps","getCommonOptions","theme","grid","left","parseInt","spacing","top","right","bottom","containLabel","toolbox","show","tooltip","axisPointer","type","backgroundColor","palette","grey","borderWidth","padding","textStyle","color","common","white","fontSize","fontFamily","typography","caption","trigger","legend","lineStyle","xAxis","yAxis","secondary","main","Object","values","qualitative","bold","Record"],"sources":["../src/widgets/echart/echart-ui.tsx","../src/widgets/echart/echart.tsx","../src/widgets/echart/options.ts"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetRef } from '../../hooks'\nimport { observeResize } from './shared-resize-observer'\n\n/**\n * Presentational component that initializes and manages an Apache ECharts instance.\n *\n * @remarks\n * Handles chart lifecycle (init, dispose), option updates, resize observation, and event listener management.\n * Uses SVG renderer with a default height of 304px.\n */\nexport function EchartUI(props: EchartUIProps) {\n const { id, ref, init, option, className, style, onEvents } = props\n\n const { ref: chartRef, instance: chartInstanceRef } =\n useWidgetRef<HTMLDivElement>(id)\n const chartInstance = useRef<echarts.ECharts>(null)\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n chartInstanceRef.current = chartInstance.current\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n chartInstanceRef.current = null\n }\n }, [chartInstanceRef, chartRef, init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n notMerge: true,\n })\n }, [option])\n\n // Handle resize using shared ResizeObserver (single instance for all charts)\n useEffect(() => {\n if (!chartRef.current) return\n\n return observeResize(chartRef.current, () => {\n chartInstance.current?.resize()\n })\n }, [chartRef])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport { useMemo } from 'react'\n\n/**\n * Stateful EChart widget component that reads data and options from the widget store and renders an ECharts chart.\n *\n * @remarks\n * Transforms widget data into ECharts dataset format and delegates rendering to {@link EchartUI}.\n */\nexport function Echart(props: EchartProps) {\n // Single consolidated subscription instead of 5 separate ones.\n const { id, data, widgetOption, onEvents, init } = useWidgetSelector(\n props.id,\n (w) => ({\n id: w?.id,\n data: (w as EchartWidgetState | undefined)?.data as\n | EchartWidgetData\n | undefined,\n widgetOption: (w as EchartWidgetState | undefined)?.option,\n onEvents: (w as EchartWidgetState | undefined)?.onEvents,\n init: (w as EchartWidgetState | undefined)?.init,\n }),\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(data), [data])\n\n const option = useMemo<EchartOptionsProps>(\n () => ({\n ...widgetOption,\n ...(dataset && { dataset }),\n }),\n [widgetOption, dataset],\n )\n\n if (!id) {\n return null\n }\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n","import type { EchartOptionsProps, EchartWidgetOptionProps } from './types'\n\n/**\n * Returns the shared base ECharts options used across all EChart-based widgets (bar, pie, histogram, etc.).\n *\n * @remarks\n * Configures grid spacing, tooltip styling, legend, axis pointer, and the default color palette\n * derived from the MUI theme.\n */\nexport function getCommonOptions({\n theme,\n}: EchartWidgetOptionProps<unknown>): EchartOptionsProps {\n return {\n grid: {\n left: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n bottom: parseInt(theme.spacing(4)),\n containLabel: true,\n },\n toolbox: {\n show: false,\n },\n tooltip: {\n axisPointer: {\n type: 'line',\n },\n backgroundColor: theme.palette.grey[900],\n borderWidth: 0,\n padding: [parseInt(theme.spacing(1)), parseInt(theme.spacing(1))],\n textStyle: {\n color: theme.palette.common.white,\n fontSize: 11,\n fontFamily: theme.typography.caption.fontFamily,\n },\n trigger: 'axis',\n },\n legend: {\n type: 'scroll',\n bottom: 0,\n },\n axisPointer: {\n lineStyle: {\n color: theme.palette.grey[400],\n },\n },\n xAxis: {},\n yAxis: {},\n color: [\n theme.palette.secondary.main,\n ...Object.values(\n (theme.palette as { qualitative?: { bold?: Record<string, string> } })\n .qualitative?.bold ?? {},\n ),\n ],\n }\n}\n"],"mappings":"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"}
|