@carto/ps-react-ui 5.0.0-widgets.9 → 5.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-CGJD6q0t.js +1318 -0
- package/dist/actions-CGJD6q0t.js.map +1 -0
- package/dist/actions-yPZwFxSZ.js +1004 -0
- package/dist/actions-yPZwFxSZ.js.map +1 -0
- package/dist/category-DGUDabsi.js +829 -0
- package/dist/category-DGUDabsi.js.map +1 -0
- package/dist/chart-config-B_fdIcD3.js +108 -0
- package/dist/chart-config-B_fdIcD3.js.map +1 -0
- package/dist/chat.js +1642 -0
- package/dist/chat.js.map +1 -0
- package/dist/cjs-CBrZjPCj.js +75 -0
- package/dist/cjs-CBrZjPCj.js.map +1 -0
- package/dist/components-FED-ArwH.js +4053 -0
- package/dist/components-FED-ArwH.js.map +1 -0
- package/dist/components.js +5 -1351
- package/dist/copy-button-TTlZONkX.js +34 -0
- package/dist/copy-button-TTlZONkX.js.map +1 -0
- package/dist/csv-modifiers-D6HGC24b.js +26 -0
- package/dist/csv-modifiers-D6HGC24b.js.map +1 -0
- package/dist/download-DdaK3qgC.js +232 -0
- package/dist/download-DdaK3qgC.js.map +1 -0
- package/dist/echart-BkaV3V5G.js +133 -0
- package/dist/echart-BkaV3V5G.js.map +1 -0
- package/dist/echart-DeBgdOtX.js +250 -0
- package/dist/echart-DeBgdOtX.js.map +1 -0
- package/dist/formatter-wVO81tYk.js +6 -0
- package/dist/formatter-wVO81tYk.js.map +1 -0
- package/dist/formula-YfZmmuYX.js +190 -0
- package/dist/formula-YfZmmuYX.js.map +1 -0
- package/dist/formula-noJzQwKo.js +285 -0
- package/dist/formula-noJzQwKo.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 -0
- package/dist/legend.js +2284 -0
- package/dist/legend.js.map +1 -0
- package/dist/markdown-2dfL6Cmb.js +165 -0
- package/dist/markdown-2dfL6Cmb.js.map +1 -0
- package/dist/markdown-content-BWUqwx9F.js +8776 -0
- package/dist/markdown-content-BWUqwx9F.js.map +1 -0
- package/dist/range-BCMAl5xf.js +277 -0
- package/dist/range-BCMAl5xf.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-Ccpg9fi0.js +149 -0
- package/dist/spread-Ccpg9fi0.js.map +1 -0
- package/dist/stores-mad-9yFn.js +369 -0
- package/dist/stores-mad-9yFn.js.map +1 -0
- package/dist/stores-tiFePP0A.js +243 -0
- package/dist/stores-tiFePP0A.js.map +1 -0
- package/dist/styles-Y-qGBELO.js +13 -0
- package/dist/styles-Y-qGBELO.js.map +1 -0
- package/dist/table-Bx9Uj3U0.js +440 -0
- package/dist/table-Bx9Uj3U0.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 +12 -0
- package/dist/types/chat/bubbles/chat-agent-message.d.ts +9 -0
- package/dist/types/chat/bubbles/chat-error-message.d.ts +2 -0
- package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +2 -0
- package/dist/types/chat/bubbles/chat-user-message.d.ts +2 -0
- package/dist/types/chat/bubbles/index.d.ts +5 -0
- package/dist/types/chat/bubbles/styles.d.ts +88 -0
- package/dist/types/chat/const.d.ts +4 -0
- package/dist/types/chat/containers/chat-content.d.ts +2 -0
- package/dist/types/chat/containers/chat-footer.d.ts +2 -0
- package/dist/types/chat/containers/chat-header.d.ts +2 -0
- package/dist/types/chat/containers/chat-starter.d.ts +2 -0
- package/dist/types/chat/containers/index.d.ts +4 -0
- package/dist/types/chat/containers/styles.d.ts +160 -0
- package/dist/types/chat/feedback/chat-actions-container.d.ts +3 -0
- package/dist/types/chat/feedback/chat-loader.d.ts +2 -0
- package/dist/types/chat/feedback/chat-rating-action.d.ts +2 -0
- package/dist/types/chat/feedback/chat-thinking.d.ts +2 -0
- package/dist/types/chat/feedback/chat-tool-code-area.d.ts +2 -0
- package/dist/types/chat/feedback/chat-tool-full-view-dialog.d.ts +2 -0
- package/dist/types/chat/feedback/chat-tool-group.d.ts +2 -0
- package/dist/types/chat/feedback/chat-tool-trace.d.ts +3 -0
- package/dist/types/chat/feedback/get-tool-label.d.ts +2 -0
- package/dist/types/chat/feedback/index.d.ts +8 -0
- package/dist/types/chat/feedback/styles.d.ts +212 -0
- package/dist/types/chat/index.d.ts +21 -0
- package/dist/types/chat/types.d.ts +214 -0
- package/dist/types/chat/use-typewriter.d.ts +32 -0
- package/dist/types/components/basemaps/basemaps.d.ts +21 -1
- package/dist/types/components/basemaps/const.d.ts +1 -1
- package/dist/types/components/basemaps/group-wrapper.d.ts +1 -1
- package/dist/types/components/basemaps/group.d.ts +2 -2
- package/dist/types/components/basemaps/header.d.ts +2 -2
- package/dist/types/components/common-types.d.ts +49 -0
- package/dist/types/components/copy-button/copy-button.d.ts +2 -0
- package/dist/types/components/copy-button/types.d.ts +6 -0
- package/dist/types/components/geolocation-controls/geolocation-controls.d.ts +12 -1
- package/dist/types/components/index.d.ts +37 -20
- package/dist/types/components/lasso-tool/chip.d.ts +2 -2
- package/dist/types/components/lasso-tool/const.d.ts +2 -2
- package/dist/types/components/lasso-tool/edit-confirm-toolbar.d.ts +26 -0
- package/dist/types/components/lasso-tool/geometry-toolbar.d.ts +49 -0
- package/dist/types/components/lasso-tool/icons.d.ts +22 -5
- package/dist/types/components/lasso-tool/lasso-tool-inline.d.ts +36 -3
- package/dist/types/components/lasso-tool/lasso-tool.d.ts +34 -9
- package/dist/types/components/lasso-tool/layer-filters.d.ts +10 -0
- package/dist/types/components/lasso-tool/message.d.ts +7 -0
- package/dist/types/components/lasso-tool/options-sections.d.ts +28 -0
- package/dist/types/components/lasso-tool/styles.d.ts +24 -2
- package/dist/types/components/lasso-tool/toolbar/actions/accept-action.d.ts +13 -0
- package/dist/types/components/lasso-tool/toolbar/actions/action-menu.d.ts +28 -0
- package/dist/types/components/lasso-tool/toolbar/actions/cancel-action.d.ts +13 -0
- package/dist/types/components/lasso-tool/toolbar/actions/color-action.d.ts +44 -0
- package/dist/types/components/lasso-tool/toolbar/actions/delete-action.d.ts +11 -0
- package/dist/types/components/lasso-tool/toolbar/actions/duplicate-action.d.ts +11 -0
- package/dist/types/components/lasso-tool/toolbar/actions/edit-geometry-action.d.ts +13 -0
- package/dist/types/components/lasso-tool/toolbar/actions/edit-properties-action.d.ts +60 -0
- package/dist/types/components/lasso-tool/toolbar/actions/fill-action.d.ts +26 -0
- package/dist/types/components/lasso-tool/toolbar/actions/intersect-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/actions/label-action.d.ts +69 -0
- package/dist/types/components/lasso-tool/toolbar/actions/lock-action.d.ts +17 -0
- package/dist/types/components/lasso-tool/toolbar/actions/redo-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/actions/split-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/actions/stroke-action.d.ts +27 -0
- package/dist/types/components/lasso-tool/toolbar/actions/subtract-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/actions/toggle-type-action.d.ts +19 -0
- package/dist/types/components/lasso-tool/toolbar/actions/undo-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/actions/union-action.d.ts +14 -0
- package/dist/types/components/lasso-tool/toolbar/button.d.ts +24 -0
- package/dist/types/components/lasso-tool/toolbar/connected.d.ts +55 -0
- package/dist/types/components/lasso-tool/toolbar/context.d.ts +31 -0
- package/dist/types/components/lasso-tool/toolbar/index.d.ts +41 -0
- package/dist/types/components/lasso-tool/toolbar/styles.d.ts +26 -0
- package/dist/types/components/lasso-tool/toolbar/toolbar.d.ts +30 -0
- package/dist/types/components/lasso-tool/tools-context.d.ts +12 -0
- package/dist/types/components/lasso-tool/types.d.ts +284 -10
- package/dist/types/components/lasso-tool/undo-redo.d.ts +25 -0
- package/dist/types/components/list-data/list-data-skeleton.d.ts +1 -1
- package/dist/types/components/list-data/list-data.d.ts +17 -1
- package/dist/types/components/measurement-tools/const.d.ts +2 -2
- package/dist/types/components/measurement-tools/icons.d.ts +3 -3
- package/dist/types/components/measurement-tools/measurement-tools.d.ts +21 -1
- package/dist/types/components/measurement-tools/styles.d.ts +14 -4
- package/dist/types/components/measurement-tools/types.d.ts +1 -1
- package/dist/types/components/no-data-alert/no-data-alert.d.ts +1 -1
- package/dist/types/components/responsive-drawer/responsive-drawer.d.ts +38 -6
- package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +18 -1
- package/dist/types/components/tooltip/tooltip.d.ts +14 -1
- package/dist/types/components/types.d.ts +1 -1
- package/dist/types/components/zoom-controls/zoom-controls.d.ts +17 -1
- package/dist/types/hooks/index.d.ts +1 -2
- package/dist/types/hooks/use-widget-ref.d.ts +10 -6
- package/dist/types/legend/components/a11y.d.ts +6 -0
- package/dist/types/legend/components/contexts.d.ts +38 -0
- package/dist/types/legend/components/icons.d.ts +12 -0
- package/dist/types/legend/components/index.d.ts +26 -0
- package/dist/types/legend/components/legend-actions/legend-actions.d.ts +25 -0
- package/dist/types/legend/components/legend-actions/styles.d.ts +7 -0
- package/dist/types/legend/components/legend-category/legend-category-ui.d.ts +13 -0
- package/dist/types/legend/components/legend-category/styles.d.ts +52 -0
- package/dist/types/legend/components/legend-config-select/legend-config-select.d.ts +14 -0
- package/dist/types/legend/components/legend-config-select/styles.d.ts +44 -0
- package/dist/types/legend/components/legend-group/legend-group.d.ts +12 -0
- package/dist/types/legend/components/legend-group/styles.d.ts +129 -0
- package/dist/types/legend/components/legend-group-menu/legend-group-menu-items.d.ts +28 -0
- package/dist/types/legend/components/legend-group-menu/legend-group-menu.d.ts +11 -0
- package/dist/types/legend/components/legend-icon/legend-icon-ui.d.ts +10 -0
- package/dist/types/legend/components/legend-icon/styles.d.ts +52 -0
- package/dist/types/legend/components/legend-item/legend-item-ui.d.ts +14 -0
- package/dist/types/legend/components/legend-item/legend-item.d.ts +10 -0
- package/dist/types/{widgets/root/style.d.ts → legend/components/legend-item/styles.d.ts} +2 -3
- package/dist/types/legend/components/legend-opacity/legend-opacity.d.ts +22 -0
- package/dist/types/legend/components/legend-opacity/styles.d.ts +28 -0
- package/dist/types/legend/components/legend-overflow-menu/legend-overflow-menu.d.ts +12 -0
- package/dist/types/legend/components/legend-panel-menu/legend-panel-menu.d.ts +11 -0
- package/dist/types/legend/components/legend-proportion/legend-proportion-ui.d.ts +16 -0
- package/dist/types/legend/components/legend-proportion/styles.d.ts +37 -0
- package/dist/types/legend/components/legend-ramp/legend-ramp-ui.d.ts +20 -0
- package/dist/types/legend/components/legend-ramp/styles.d.ts +53 -0
- package/dist/types/legend/components/legend-row/legend-row.d.ts +16 -0
- package/dist/types/legend/components/legend-row/styles.d.ts +149 -0
- package/dist/types/legend/components/legend-row-menu/legend-row-menu-items.d.ts +12 -0
- package/dist/types/legend/components/legend-row-menu/legend-row-menu.d.ts +12 -0
- package/dist/types/legend/components/legend-row-menu/legend-zoom-to.d.ts +10 -0
- package/dist/types/legend/components/legend-sortable/contexts.d.ts +7 -0
- package/dist/types/legend/components/legend-sortable/legend-sortable.d.ts +11 -0
- package/dist/types/legend/components/legend-sortable/sortable-entity.d.ts +27 -0
- package/dist/types/legend/components/legend-sortable/sortable-ids.d.ts +6 -0
- package/dist/types/legend/components/legend-sortable/styles.d.ts +55 -0
- package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +26 -0
- package/dist/types/legend/components/legend-visibility-toggle/legend-visibility-toggle.d.ts +35 -0
- package/dist/types/legend/components/legend-visible-layers/legend-visible-layers.d.ts +7 -0
- package/dist/types/legend/components/legend-visible-layers/styles.d.ts +48 -0
- package/dist/types/legend/components/run-async-menu-action.d.ts +7 -0
- package/dist/types/legend/index.d.ts +135 -0
- package/dist/types/legend/provider/index.d.ts +6 -0
- package/dist/types/legend/provider/labels.d.ts +48 -0
- package/dist/types/legend/provider/legend-config-context.d.ts +7 -0
- package/dist/types/legend/provider/legend-provider.d.ts +38 -0
- package/dist/types/legend/stores/index.d.ts +5 -0
- package/dist/types/legend/stores/legend-context.d.ts +4 -0
- package/dist/types/legend/stores/legend-store-registry.d.ts +39 -0
- package/dist/types/legend/stores/selectors.d.ts +64 -0
- package/dist/types/legend/stores/types.d.ts +294 -0
- package/dist/types/widgets/actions/brush-toggle/brush-overlay.d.ts +24 -0
- package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +29 -0
- package/dist/types/widgets/actions/brush-toggle/hit-test.d.ts +19 -0
- package/dist/types/widgets/actions/brush-toggle/style.d.ts +21 -0
- package/dist/types/widgets/actions/brush-toggle/types.d.ts +73 -0
- 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 +6 -2
- package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +2 -2
- package/dist/types/widgets/actions/download/download.d.ts +13 -2
- package/dist/types/widgets/actions/download/exports.d.ts +16 -1
- package/dist/types/widgets/actions/download/types.d.ts +1 -1
- package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +15 -2
- package/dist/types/widgets/actions/fullscreen/types.d.ts +3 -2
- package/dist/types/widgets/actions/index.d.ts +20 -18
- package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +2 -2
- package/dist/types/widgets/actions/lock-selection/types.d.ts +10 -10
- package/dist/types/widgets/actions/relative-data/relative-data.d.ts +10 -4
- package/dist/types/widgets/actions/relative-data/types.d.ts +3 -1
- package/dist/types/widgets/actions/relative-data/utils.d.ts +1 -1
- package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +2 -2
- package/dist/types/widgets/actions/searcher/searcher.d.ts +2 -2
- package/dist/types/widgets/actions/searcher/types.d.ts +2 -2
- 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 +5 -4
- package/dist/types/widgets/actions/stack-toggle/types.d.ts +1 -1
- package/dist/types/widgets/actions/zoom-toggle/types.d.ts +1 -1
- package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +10 -2
- package/dist/types/widgets/bar/config.d.ts +8 -4
- package/dist/types/widgets/bar/index.d.ts +3 -3
- package/dist/types/widgets/bar/skeleton.d.ts +1 -1
- package/dist/types/widgets/bar/types.d.ts +3 -3
- package/dist/types/widgets/category/category-ui.d.ts +5 -2
- package/dist/types/widgets/category/components/category-bar.d.ts +4 -1
- package/dist/types/widgets/category/components/category-legend.d.ts +5 -2
- package/dist/types/widgets/category/components/category-row-multi.d.ts +6 -2
- package/dist/types/widgets/category/components/category-row-other.d.ts +4 -1
- package/dist/types/widgets/category/components/category-row-single.d.ts +6 -2
- package/dist/types/widgets/category/config.d.ts +16 -12
- package/dist/types/widgets/category/index.d.ts +14 -6
- package/dist/types/widgets/category/skeleton.d.ts +1 -1
- package/dist/types/widgets/category/style.d.ts +1 -1
- package/dist/types/widgets/category/types.d.ts +4 -3
- package/dist/types/widgets/echart/echart-ui.d.ts +9 -2
- package/dist/types/widgets/echart/echart.d.ts +8 -2
- package/dist/types/widgets/echart/index.d.ts +5 -5
- package/dist/types/widgets/echart/options.d.ts +8 -1
- package/dist/types/widgets/echart/shared-resize-observer.d.ts +12 -0
- package/dist/types/widgets/echart/types.d.ts +7 -2
- package/dist/types/widgets/echart/utils.d.ts +57 -9
- package/dist/types/widgets/error/error.d.ts +12 -2
- package/dist/types/widgets/error/index.d.ts +2 -2
- package/dist/types/widgets/error/types.d.ts +9 -1
- package/dist/types/widgets/formula/components/item.d.ts +5 -2
- package/dist/types/widgets/formula/components/prefix.d.ts +5 -2
- package/dist/types/widgets/formula/components/row.d.ts +5 -2
- package/dist/types/widgets/formula/components/series.d.ts +5 -2
- package/dist/types/widgets/formula/components/suffix.d.ts +5 -2
- package/dist/types/widgets/formula/components/value.d.ts +5 -2
- package/dist/types/widgets/formula/config.d.ts +13 -2
- package/dist/types/widgets/formula/formula-ui.d.ts +5 -2
- package/dist/types/widgets/formula/index.d.ts +11 -11
- package/dist/types/widgets/formula/serializer.d.ts +1 -1
- package/dist/types/widgets/formula/skeleton.d.ts +1 -1
- package/dist/types/widgets/formula/types.d.ts +3 -3
- package/dist/types/widgets/histogram/config.d.ts +20 -4
- package/dist/types/widgets/histogram/index.d.ts +4 -3
- package/dist/types/widgets/histogram/skeleton.d.ts +1 -1
- package/dist/types/widgets/histogram/types.d.ts +8 -5
- package/dist/types/widgets/loader/index.d.ts +3 -0
- package/dist/types/widgets/loader/loader.d.ts +24 -0
- package/dist/types/widgets/loader/types.d.ts +9 -0
- package/dist/types/widgets/loader/utils.d.ts +35 -0
- package/dist/types/widgets/markdown/config.d.ts +12 -2
- package/dist/types/widgets/markdown/index.d.ts +5 -5
- package/dist/types/widgets/markdown/markdown-ui.d.ts +9 -2
- package/dist/types/widgets/markdown/markdown.d.ts +5 -2
- package/dist/types/widgets/markdown/skeleton.d.ts +1 -1
- package/dist/types/widgets/markdown/types.d.ts +3 -3
- package/dist/types/widgets/no-data/index.d.ts +2 -2
- package/dist/types/widgets/no-data/no-data.d.ts +5 -4
- package/dist/types/widgets/no-data/types.d.ts +6 -2
- package/dist/types/widgets/note/index.d.ts +2 -2
- package/dist/types/widgets/note/note.d.ts +12 -2
- package/dist/types/widgets/note/types.d.ts +1 -1
- package/dist/types/widgets/pie/config.d.ts +8 -4
- package/dist/types/widgets/pie/index.d.ts +3 -3
- package/dist/types/widgets/pie/skeleton.d.ts +1 -1
- package/dist/types/widgets/pie/types.d.ts +3 -3
- package/dist/types/widgets/range/components/range-item.d.ts +5 -2
- package/dist/types/widgets/range/config.d.ts +6 -5
- package/dist/types/widgets/range/index.d.ts +6 -6
- package/dist/types/widgets/range/range-ui.d.ts +5 -2
- package/dist/types/widgets/range/serializer.d.ts +1 -1
- package/dist/types/widgets/range/skeleton.d.ts +1 -1
- package/dist/types/widgets/range/types.d.ts +3 -3
- package/dist/types/widgets/scatterplot/config.d.ts +8 -4
- package/dist/types/widgets/scatterplot/index.d.ts +3 -3
- package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -1
- package/dist/types/widgets/scatterplot/types.d.ts +3 -3
- package/dist/types/widgets/selection-summary/index.d.ts +2 -2
- package/dist/types/widgets/selection-summary/selection-summary.d.ts +13 -2
- package/dist/types/widgets/skeleton-loader/index.d.ts +2 -2
- package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +12 -2
- package/dist/types/widgets/skeleton-loader/types.d.ts +1 -1
- package/dist/types/widgets/spread/components/max-value.d.ts +5 -2
- package/dist/types/widgets/spread/components/min-value.d.ts +5 -2
- package/dist/types/widgets/spread/components/separator.d.ts +5 -2
- package/dist/types/widgets/spread/config.d.ts +14 -8
- package/dist/types/widgets/spread/index.d.ts +9 -9
- package/dist/types/widgets/spread/skeleton.d.ts +1 -1
- package/dist/types/widgets/spread/spread-ui.d.ts +5 -2
- package/dist/types/widgets/spread/types.d.ts +4 -4
- package/dist/types/widgets/stores/index.d.ts +3 -2
- package/dist/types/widgets/stores/types.d.ts +31 -10
- package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
- package/dist/types/widgets/stores/widget-store.d.ts +48 -27
- package/dist/types/widgets/subheader/index.d.ts +2 -2
- package/dist/types/widgets/subheader/subheader.d.ts +13 -2
- package/dist/types/widgets/table/components/cell-header.d.ts +2 -2
- package/dist/types/widgets/table/components/cell.d.ts +4 -2
- package/dist/types/widgets/table/components/pagination-actions.d.ts +2 -2
- package/dist/types/widgets/table/components/pagination.d.ts +2 -2
- package/dist/types/widgets/table/components/row.d.ts +2 -2
- package/dist/types/widgets/table/config.d.ts +10 -6
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +12 -4
- package/dist/types/widgets/table/hooks/use-selection.d.ts +12 -3
- package/dist/types/widgets/table/hooks/use-sort.d.ts +12 -4
- package/dist/types/widgets/table/index.d.ts +17 -13
- package/dist/types/widgets/table/serializer.d.ts +1 -1
- package/dist/types/widgets/table/skeleton.d.ts +1 -1
- package/dist/types/widgets/table/table-ui.d.ts +8 -8
- package/dist/types/widgets/table/types.d.ts +5 -5
- package/dist/types/widgets/timeseries/config.d.ts +8 -4
- package/dist/types/widgets/timeseries/index.d.ts +3 -3
- package/dist/types/widgets/timeseries/skeleton.d.ts +1 -1
- package/dist/types/widgets/timeseries/types.d.ts +3 -3
- package/dist/types/widgets/toolbar-actions/index.d.ts +2 -2
- package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +13 -4
- package/dist/types/widgets/toolbar-actions/types.d.ts +10 -3
- package/dist/types/widgets/{_shared → utils}/chart-config/config-factory.d.ts +1 -1
- package/dist/types/widgets/utils/chart-config/download-config.d.ts +3 -0
- package/dist/types/widgets/utils/chart-config/index.d.ts +9 -0
- package/dist/types/widgets/utils/chart-config/option-builders.d.ts +142 -0
- package/dist/types/widgets/utils/formatter.d.ts +2 -0
- package/dist/types/widgets/utils/index.d.ts +7 -0
- package/dist/types/widgets/utils/skeleton/index.d.ts +4 -0
- package/dist/types/widgets/wrapper/components/actions.d.ts +5 -2
- package/dist/types/widgets/wrapper/components/options.d.ts +5 -2
- package/dist/types/widgets/wrapper/components/title.d.ts +5 -2
- package/dist/types/widgets/wrapper/index.d.ts +6 -6
- package/dist/types/widgets/wrapper/types.d.ts +1 -1
- package/dist/types/widgets/wrapper/wrapper-ui.d.ts +16 -2
- package/dist/types/widgets/wrapper/wrapper.d.ts +16 -2
- package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +56 -0
- package/dist/types/widgets-v2/actions/brush-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/brush-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/brush-toggle/transforms.d.ts +11 -0
- package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +2 -0
- package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +29 -0
- package/dist/types/widgets-v2/actions/change-column/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/change-column/labels.d.ts +6 -0
- package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +14 -0
- package/dist/types/widgets-v2/actions/change-column/style.d.ts +59 -0
- package/dist/types/widgets-v2/actions/change-column/types.d.ts +10 -0
- package/dist/types/widgets-v2/actions/download/constants.d.ts +12 -0
- package/dist/types/widgets-v2/actions/download/csv-item.d.ts +38 -0
- package/dist/types/widgets-v2/actions/download/download.d.ts +18 -0
- package/dist/types/widgets-v2/actions/download/exports.d.ts +37 -0
- package/dist/types/widgets-v2/actions/download/icons.d.ts +18 -0
- package/dist/types/widgets-v2/actions/download/index.d.ts +8 -0
- package/dist/types/widgets-v2/actions/download/labels.d.ts +11 -0
- package/dist/types/widgets-v2/actions/download/png-item.d.ts +24 -0
- package/dist/types/widgets-v2/actions/download/style.d.ts +1 -0
- package/dist/types/widgets-v2/actions/download/types.d.ts +35 -0
- package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +59 -0
- package/dist/types/widgets-v2/actions/fullscreen/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/fullscreen/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +48 -0
- package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +14 -0
- package/dist/types/widgets-v2/actions/index.d.ts +10 -0
- package/dist/types/widgets-v2/actions/lock-selection/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/lock-selection/labels.d.ts +6 -0
- package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +57 -0
- package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/lock-selection/transforms.d.ts +6 -0
- package/dist/types/widgets-v2/actions/relative-data/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/relative-data/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +39 -0
- package/dist/types/widgets-v2/actions/relative-data/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/relative-data/transforms.d.ts +30 -0
- package/dist/types/widgets-v2/actions/searcher/filter.d.ts +6 -0
- package/dist/types/widgets-v2/actions/searcher/index.d.ts +4 -0
- package/dist/types/widgets-v2/actions/searcher/labels.d.ts +7 -0
- package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +23 -0
- package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +11 -0
- package/dist/types/widgets-v2/actions/searcher/style.d.ts +16 -0
- package/dist/types/widgets-v2/actions/show-all/index.d.ts +2 -0
- package/dist/types/widgets-v2/actions/show-all/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/show-all/show-all.d.ts +33 -0
- package/dist/types/widgets-v2/actions/show-all/style.d.ts +8 -0
- package/dist/types/widgets-v2/actions/stack-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/stack-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +10 -0
- package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/stack-toggle/transforms.d.ts +13 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/index.d.ts +3 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/labels.d.ts +5 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +12 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/transforms.d.ts +51 -0
- package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +35 -0
- package/dist/types/widgets-v2/bar/download.d.ts +24 -0
- package/dist/types/widgets-v2/bar/index.d.ts +4 -0
- package/dist/types/widgets-v2/bar/options.d.ts +43 -0
- package/dist/types/widgets-v2/bar/skeleton.d.ts +6 -0
- package/dist/types/widgets-v2/bar/types.d.ts +46 -0
- package/dist/types/widgets-v2/category/category-ui.d.ts +88 -0
- package/dist/types/widgets-v2/category/category.d.ts +55 -0
- package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +28 -0
- package/dist/types/widgets-v2/category/components/category-bar.d.ts +23 -0
- package/dist/types/widgets-v2/category/components/category-legend.d.ts +34 -0
- package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +31 -0
- package/dist/types/widgets-v2/category/components/category-row-other.d.ts +26 -0
- package/dist/types/widgets-v2/category/components/category-row-single.d.ts +28 -0
- package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +43 -0
- package/dist/types/widgets-v2/category/download.d.ts +16 -0
- package/dist/types/widgets-v2/category/index.d.ts +10 -0
- package/dist/types/widgets-v2/category/skeleton.d.ts +11 -0
- package/dist/types/widgets-v2/category/style.d.ts +193 -0
- package/dist/types/widgets-v2/category/types.d.ts +55 -0
- package/dist/types/widgets-v2/echart/echart-ui.d.ts +44 -0
- package/dist/types/widgets-v2/echart/echart.d.ts +75 -0
- package/dist/types/widgets-v2/echart/edge-label-clamp.d.ts +57 -0
- package/dist/types/widgets-v2/echart/index.d.ts +4 -0
- package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +5 -0
- package/dist/types/widgets-v2/echart/style.d.ts +6 -0
- package/dist/types/widgets-v2/echart/use-chart-selection.d.ts +57 -0
- package/dist/types/widgets-v2/formula/delta.d.ts +22 -0
- package/dist/types/widgets-v2/formula/download.d.ts +20 -0
- package/dist/types/widgets-v2/formula/formula-ui.d.ts +20 -0
- package/dist/types/widgets-v2/formula/formula.d.ts +8 -0
- package/dist/types/widgets-v2/formula/index.d.ts +11 -0
- package/dist/types/widgets-v2/formula/note.d.ts +11 -0
- package/dist/types/widgets-v2/formula/prefix.d.ts +12 -0
- package/dist/types/widgets-v2/formula/series.d.ts +16 -0
- package/dist/types/widgets-v2/formula/skeleton.d.ts +4 -0
- package/dist/types/widgets-v2/formula/style.d.ts +29 -0
- package/dist/types/widgets-v2/formula/suffix.d.ts +12 -0
- package/dist/types/widgets-v2/formula/types.d.ts +43 -0
- package/dist/types/widgets-v2/formula/value.d.ts +14 -0
- package/dist/types/widgets-v2/histogram/download.d.ts +17 -0
- package/dist/types/widgets-v2/histogram/index.d.ts +5 -0
- package/dist/types/widgets-v2/histogram/options.d.ts +42 -0
- package/dist/types/widgets-v2/histogram/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/histogram/transforms.d.ts +28 -0
- package/dist/types/widgets-v2/histogram/types.d.ts +60 -0
- package/dist/types/widgets-v2/index.d.ts +109 -0
- package/dist/types/widgets-v2/markdown/download.d.ts +16 -0
- package/dist/types/widgets-v2/markdown/index.d.ts +6 -0
- package/dist/types/widgets-v2/markdown/markdown-content.d.ts +40 -0
- package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +12 -0
- package/dist/types/widgets-v2/markdown/markdown.d.ts +6 -0
- package/dist/types/widgets-v2/markdown/skeleton.d.ts +4 -0
- package/dist/types/widgets-v2/markdown/style.d.ts +61 -0
- package/dist/types/widgets-v2/markdown/types.d.ts +4 -0
- package/dist/types/widgets-v2/note/labels.d.ts +5 -0
- package/dist/types/widgets-v2/note/style.d.ts +26 -0
- package/dist/types/widgets-v2/note/widget-note.d.ts +46 -0
- package/dist/types/widgets-v2/pie/download.d.ts +17 -0
- package/dist/types/widgets-v2/pie/index.d.ts +4 -0
- package/dist/types/widgets-v2/pie/options.d.ts +35 -0
- package/dist/types/widgets-v2/pie/skeleton.d.ts +13 -0
- package/dist/types/widgets-v2/pie/types.d.ts +57 -0
- package/dist/types/widgets-v2/provider/widget-provider.d.ts +32 -0
- package/dist/types/widgets-v2/range/index.d.ts +4 -0
- package/dist/types/widgets-v2/range/range-ui.d.ts +27 -0
- package/dist/types/widgets-v2/range/range.d.ts +24 -0
- package/dist/types/widgets-v2/range/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/range/style.d.ts +40 -0
- package/dist/types/widgets-v2/range/types.d.ts +37 -0
- package/dist/types/widgets-v2/scatterplot/download.d.ts +16 -0
- package/dist/types/widgets-v2/scatterplot/index.d.ts +5 -0
- package/dist/types/widgets-v2/scatterplot/options.d.ts +42 -0
- package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +12 -0
- package/dist/types/widgets-v2/scatterplot/transforms.d.ts +26 -0
- package/dist/types/widgets-v2/scatterplot/types.d.ts +54 -0
- package/dist/types/widgets-v2/selection-summary/labels.d.ts +11 -0
- package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +29 -0
- package/dist/types/widgets-v2/selection-summary/style.d.ts +38 -0
- package/dist/types/widgets-v2/spread/band.d.ts +37 -0
- package/dist/types/widgets-v2/spread/download.d.ts +15 -0
- package/dist/types/widgets-v2/spread/index.d.ts +7 -0
- package/dist/types/widgets-v2/spread/separator.d.ts +7 -0
- package/dist/types/widgets-v2/spread/skeleton.d.ts +9 -0
- package/dist/types/widgets-v2/spread/spread-ui.d.ts +18 -0
- package/dist/types/widgets-v2/spread/spread.d.ts +5 -0
- package/dist/types/widgets-v2/spread/types.d.ts +25 -0
- package/dist/types/widgets-v2/state/labels.d.ts +7 -0
- package/dist/types/widgets-v2/state/style.d.ts +19 -0
- package/dist/types/widgets-v2/state/widget-state.d.ts +19 -0
- package/dist/types/widgets-v2/stores/index.d.ts +8 -0
- package/dist/types/widgets-v2/stores/pipeline-middleware.d.ts +5 -0
- package/dist/types/widgets-v2/stores/transforms.d.ts +4 -0
- package/dist/types/widgets-v2/stores/types.d.ts +55 -0
- package/dist/types/widgets-v2/stores/use-echart-instance.d.ts +15 -0
- package/dist/types/widgets-v2/stores/use-transform-enabled.d.ts +17 -0
- package/dist/types/widgets-v2/stores/use-transform.d.ts +12 -0
- package/dist/types/widgets-v2/stores/widget-context.d.ts +2 -0
- package/dist/types/widgets-v2/stores/widget-store-registry.d.ts +74 -0
- package/dist/types/widgets-v2/subheader/style.d.ts +10 -0
- package/dist/types/widgets-v2/subheader/subheader.d.ts +11 -0
- package/dist/types/widgets-v2/table/download.d.ts +18 -0
- package/dist/types/widgets-v2/table/helpers.d.ts +32 -0
- package/dist/types/widgets-v2/table/index.d.ts +8 -0
- package/dist/types/widgets-v2/table/labels.d.ts +22 -0
- package/dist/types/widgets-v2/table/skeleton.d.ts +22 -0
- package/dist/types/widgets-v2/table/style.d.ts +40 -0
- package/dist/types/widgets-v2/table/table-ui.d.ts +44 -0
- package/dist/types/widgets-v2/table/table.d.ts +50 -0
- package/dist/types/widgets-v2/table/transforms.d.ts +15 -0
- package/dist/types/widgets-v2/table/types.d.ts +48 -0
- package/dist/types/widgets-v2/timeseries/download.d.ts +17 -0
- package/dist/types/widgets-v2/timeseries/index.d.ts +5 -0
- package/dist/types/widgets-v2/timeseries/options.d.ts +39 -0
- package/dist/types/widgets-v2/timeseries/skeleton.d.ts +8 -0
- package/dist/types/widgets-v2/timeseries/transforms.d.ts +10 -0
- package/dist/types/widgets-v2/timeseries/types.d.ts +60 -0
- package/dist/types/widgets-v2/toolbox/labels.d.ts +5 -0
- package/dist/types/widgets-v2/toolbox/style.d.ts +30 -0
- package/dist/types/widgets-v2/toolbox/toolbox.d.ts +49 -0
- package/dist/types/widgets-v2/types.d.ts +25 -0
- package/dist/types/widgets-v2/utils/data-zoom-layout.d.ts +11 -0
- package/dist/types/widgets-v2/utils/index.d.ts +3 -0
- package/dist/types/widgets-v2/utils/merge-options.d.ts +12 -0
- package/dist/types/widgets-v2/utils/resolve-theme-color.d.ts +18 -0
- package/dist/types/widgets-v2/wrapper/index.d.ts +4 -0
- package/dist/types/widgets-v2/wrapper/labels.d.ts +6 -0
- package/dist/types/widgets-v2/wrapper/style.d.ts +103 -0
- package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +22 -0
- package/dist/types/widgets-v2/wrapper/widget-content.d.ts +12 -0
- package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +56 -0
- package/dist/use-widget-selector-VSPhfhNm.js +12 -0
- package/dist/use-widget-selector-VSPhfhNm.js.map +1 -0
- package/dist/utils-Dr6gf3vD.js +58 -0
- package/dist/utils-Dr6gf3vD.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 -837
- package/dist/widgets/bar.js +183 -186
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +438 -455
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +3 -123
- package/dist/widgets/error.js +30 -5
- package/dist/widgets/error.js.map +1 -1
- package/dist/widgets/formula.js +3 -125
- package/dist/widgets/histogram.js +185 -167
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +66 -0
- package/dist/widgets/loader.js.map +1 -0
- package/dist/widgets/markdown.js +142 -121
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/no-data.js +55 -5
- package/dist/widgets/no-data.js.map +1 -1
- package/dist/widgets/note.js +126 -4
- package/dist/widgets/note.js.map +1 -1
- package/dist/widgets/pie.js +244 -208
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +226 -210
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +219 -216
- 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 +23 -23
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +150 -159
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +3 -5
- package/dist/widgets/subheader.js +49 -50
- package/dist/widgets/subheader.js.map +1 -1
- package/dist/widgets/table.js +573 -653
- 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 +144 -6105
- package/dist/widgets/toolbar-actions.js.map +1 -1
- package/dist/widgets/utils.js +18 -0
- package/dist/widgets/utils.js.map +1 -0
- package/dist/widgets/wrapper.js +265 -287
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets-v2/actions.js +4 -0
- package/dist/widgets-v2/bar.js +260 -0
- package/dist/widgets-v2/bar.js.map +1 -0
- package/dist/widgets-v2/category.js +2 -0
- package/dist/widgets-v2/echart.js +2 -0
- package/dist/widgets-v2/formula.js +2 -0
- package/dist/widgets-v2/histogram.js +297 -0
- package/dist/widgets-v2/histogram.js.map +1 -0
- package/dist/widgets-v2/markdown.js +3 -0
- package/dist/widgets-v2/pie.js +374 -0
- package/dist/widgets-v2/pie.js.map +1 -0
- package/dist/widgets-v2/range.js +2 -0
- package/dist/widgets-v2/scatterplot.js +330 -0
- package/dist/widgets-v2/scatterplot.js.map +1 -0
- package/dist/widgets-v2/spread.js +2 -0
- package/dist/widgets-v2/stores.js +2 -0
- package/dist/widgets-v2/table.js +2 -0
- package/dist/widgets-v2/timeseries.js +294 -0
- package/dist/widgets-v2/timeseries.js.map +1 -0
- package/dist/widgets-v2/utils.js +2 -0
- package/dist/widgets-v2.js +964 -0
- package/dist/widgets-v2.js.map +1 -0
- package/dist/zoom-toggle-IsF8BnAp.js +163 -0
- package/dist/zoom-toggle-IsF8BnAp.js.map +1 -0
- package/package.json +109 -17
- package/src/chat/bubbles/chat-agent-message-markdown.test.tsx +38 -0
- package/src/chat/bubbles/chat-agent-message-markdown.tsx +34 -0
- package/src/chat/bubbles/chat-agent-message.test.tsx +42 -0
- package/src/chat/bubbles/chat-agent-message.tsx +31 -0
- package/src/chat/bubbles/chat-error-message.test.tsx +40 -0
- package/src/chat/bubbles/chat-error-message.tsx +47 -0
- package/src/chat/bubbles/chat-suggestion-button.test.tsx +24 -0
- package/src/chat/bubbles/chat-suggestion-button.tsx +27 -0
- package/src/chat/bubbles/chat-user-message.test.tsx +27 -0
- package/src/chat/bubbles/chat-user-message.tsx +27 -0
- package/src/chat/bubbles/index.ts +5 -0
- package/src/chat/bubbles/styles.ts +171 -0
- package/src/chat/const.ts +4 -0
- package/src/chat/containers/chat-content.test.tsx +269 -0
- package/src/chat/containers/chat-content.tsx +145 -0
- package/src/chat/containers/chat-footer.test.tsx +93 -0
- package/src/chat/containers/chat-footer.tsx +166 -0
- package/src/chat/containers/chat-header.test.tsx +28 -0
- package/src/chat/containers/chat-header.tsx +29 -0
- package/src/chat/containers/chat-starter.test.tsx +32 -0
- package/src/chat/containers/chat-starter.tsx +75 -0
- package/src/chat/containers/index.ts +4 -0
- package/src/chat/containers/styles.ts +187 -0
- package/src/chat/feedback/chat-actions-container.test.tsx +64 -0
- package/src/chat/feedback/chat-actions-container.tsx +10 -0
- package/src/chat/feedback/chat-loader.test.tsx +10 -0
- package/src/chat/feedback/chat-loader.tsx +31 -0
- package/src/chat/feedback/chat-rating-action.tsx +43 -0
- package/src/chat/feedback/chat-thinking.test.tsx +15 -0
- package/src/chat/feedback/chat-thinking.tsx +23 -0
- package/src/chat/feedback/chat-tool-code-area.test.tsx +23 -0
- package/src/chat/feedback/chat-tool-code-area.tsx +71 -0
- package/src/chat/feedback/chat-tool-full-view-dialog.test.tsx +39 -0
- package/src/chat/feedback/chat-tool-full-view-dialog.tsx +121 -0
- package/src/chat/feedback/chat-tool-group.test.tsx +84 -0
- package/src/chat/feedback/chat-tool-group.tsx +156 -0
- package/src/chat/feedback/chat-tool-trace.test.tsx +81 -0
- package/src/chat/feedback/chat-tool-trace.tsx +192 -0
- package/src/chat/feedback/get-tool-label.test.tsx +91 -0
- package/src/chat/feedback/get-tool-label.ts +13 -0
- package/src/chat/feedback/index.ts +8 -0
- package/src/chat/feedback/styles.ts +239 -0
- package/src/chat/index.ts +62 -0
- package/src/chat/types.ts +247 -0
- package/src/chat/use-typewriter.test.tsx +38 -0
- package/src/chat/use-typewriter.ts +90 -0
- package/src/components/basemaps/basemaps.test.tsx +196 -0
- package/src/components/basemaps/basemaps.tsx +150 -0
- package/src/components/basemaps/const.ts +13 -0
- package/src/components/basemaps/group-wrapper.test.tsx +38 -0
- package/src/components/basemaps/group-wrapper.tsx +28 -0
- package/src/components/basemaps/group.test.tsx +52 -0
- package/src/components/basemaps/group.tsx +42 -0
- package/src/components/basemaps/header.test.tsx +54 -0
- package/src/components/basemaps/header.tsx +36 -0
- package/src/components/basemaps/styles.ts +76 -0
- package/src/components/basemaps/types.ts +30 -0
- package/src/components/common-types.ts +1 -0
- package/src/components/copy-button/copy-button.test.tsx +41 -0
- package/src/components/copy-button/copy-button.tsx +31 -0
- package/src/components/copy-button/types.ts +10 -0
- package/src/components/geolocation-controls/const.ts +6 -0
- package/src/components/geolocation-controls/geolocation-controls.test.tsx +148 -0
- package/src/components/geolocation-controls/geolocation-controls.tsx +126 -0
- package/src/components/geolocation-controls/types.ts +17 -0
- package/src/components/index.ts +163 -0
- package/src/components/lasso-tool/chip.test.tsx +257 -0
- package/src/components/lasso-tool/chip.tsx +66 -0
- package/src/components/lasso-tool/const.tsx +94 -0
- package/src/components/lasso-tool/edit-confirm-toolbar.test.tsx +67 -0
- package/src/components/lasso-tool/edit-confirm-toolbar.tsx +48 -0
- package/src/components/lasso-tool/geometry-toolbar.test.tsx +804 -0
- package/src/components/lasso-tool/geometry-toolbar.tsx +158 -0
- package/src/components/lasso-tool/icons.tsx +193 -0
- package/src/components/lasso-tool/lasso-tool-inline.test.tsx +759 -0
- package/src/components/lasso-tool/lasso-tool-inline.tsx +508 -0
- package/src/components/lasso-tool/lasso-tool.test.tsx +700 -0
- package/src/components/lasso-tool/lasso-tool.tsx +673 -0
- package/src/components/lasso-tool/layer-filters.test.tsx +103 -0
- package/src/components/lasso-tool/layer-filters.tsx +242 -0
- package/src/components/lasso-tool/message.tsx +36 -0
- package/src/components/lasso-tool/options-sections.test.tsx +101 -0
- package/src/components/lasso-tool/options-sections.tsx +104 -0
- package/src/components/lasso-tool/styles.test.ts +26 -0
- package/src/components/lasso-tool/styles.ts +190 -0
- package/src/components/lasso-tool/toolbar/actions/accept-action.tsx +34 -0
- package/src/components/lasso-tool/toolbar/actions/action-menu.tsx +103 -0
- package/src/components/lasso-tool/toolbar/actions/cancel-action.tsx +34 -0
- package/src/components/lasso-tool/toolbar/actions/color-action.tsx +201 -0
- package/src/components/lasso-tool/toolbar/actions/delete-action.tsx +31 -0
- package/src/components/lasso-tool/toolbar/actions/duplicate-action.tsx +30 -0
- package/src/components/lasso-tool/toolbar/actions/edit-geometry-action.tsx +44 -0
- package/src/components/lasso-tool/toolbar/actions/edit-properties-action.tsx +487 -0
- package/src/components/lasso-tool/toolbar/actions/fill-action.tsx +55 -0
- package/src/components/lasso-tool/toolbar/actions/intersect-action.tsx +33 -0
- package/src/components/lasso-tool/toolbar/actions/label-action.tsx +292 -0
- package/src/components/lasso-tool/toolbar/actions/lock-action.tsx +40 -0
- package/src/components/lasso-tool/toolbar/actions/redo-action.tsx +35 -0
- package/src/components/lasso-tool/toolbar/actions/split-action.tsx +33 -0
- package/src/components/lasso-tool/toolbar/actions/stroke-action.tsx +57 -0
- package/src/components/lasso-tool/toolbar/actions/style-actions.test.tsx +212 -0
- package/src/components/lasso-tool/toolbar/actions/subtract-action.tsx +33 -0
- package/src/components/lasso-tool/toolbar/actions/toggle-type-action.tsx +50 -0
- package/src/components/lasso-tool/toolbar/actions/undo-action.tsx +35 -0
- package/src/components/lasso-tool/toolbar/actions/union-action.tsx +40 -0
- package/src/components/lasso-tool/toolbar/button.tsx +62 -0
- package/src/components/lasso-tool/toolbar/connected.tsx +383 -0
- package/src/components/lasso-tool/toolbar/context.tsx +65 -0
- package/src/components/lasso-tool/toolbar/index.ts +70 -0
- package/src/components/lasso-tool/toolbar/styles.ts +42 -0
- package/src/components/lasso-tool/toolbar/toolbar.test.tsx +77 -0
- package/src/components/lasso-tool/toolbar/toolbar.tsx +50 -0
- package/src/components/lasso-tool/tools-context.tsx +47 -0
- package/src/components/lasso-tool/types.ts +384 -0
- package/src/components/lasso-tool/undo-redo.test.tsx +162 -0
- package/src/components/lasso-tool/undo-redo.tsx +55 -0
- package/src/components/list-data/list-data-skeleton.test.tsx +10 -0
- package/src/components/list-data/list-data-skeleton.tsx +40 -0
- package/src/components/list-data/list-data.test.tsx +167 -0
- package/src/components/list-data/list-data.tsx +124 -0
- package/src/components/list-data/styles.ts +37 -0
- package/src/components/list-data/types.ts +25 -0
- package/src/components/measurement-tools/const.tsx +108 -0
- package/src/components/measurement-tools/icons.tsx +54 -0
- package/src/components/measurement-tools/measurement-tools.test.tsx +165 -0
- package/src/components/measurement-tools/measurement-tools.tsx +467 -0
- package/src/components/measurement-tools/styles.ts +92 -0
- package/src/components/measurement-tools/types.ts +77 -0
- package/src/components/no-data-alert/no-data-alert.test.tsx +69 -0
- package/src/components/no-data-alert/no-data-alert.tsx +59 -0
- package/src/components/responsive-drawer/responsive-drawer.test.tsx +415 -0
- package/src/components/responsive-drawer/responsive-drawer.tsx +219 -0
- package/src/components/smart-tooltip/smart-tooltip.test.tsx +168 -0
- package/src/components/smart-tooltip/smart-tooltip.tsx +74 -0
- package/src/components/tooltip/tooltip.test.tsx +86 -0
- package/src/components/tooltip/tooltip.tsx +43 -0
- package/src/components/types.ts +1 -0
- package/src/components/zoom-controls/styles.ts +27 -0
- package/src/components/zoom-controls/types.ts +19 -0
- package/src/components/zoom-controls/zoom-controls.test.tsx +101 -0
- package/src/components/zoom-controls/zoom-controls.tsx +130 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-skeleton.test.tsx +32 -0
- package/src/hooks/use-skeleton.ts +19 -0
- package/src/hooks/use-widget-ref.ts +34 -0
- package/src/legend/components/a11y.ts +14 -0
- package/src/legend/components/contexts.ts +57 -0
- package/src/legend/components/icons.tsx +22 -0
- package/src/legend/components/index.ts +38 -0
- package/src/legend/components/legend-actions/legend-actions.tsx +58 -0
- package/src/legend/components/legend-actions/styles.ts +9 -0
- package/src/legend/components/legend-category/legend-category-ui.tsx +91 -0
- package/src/legend/components/legend-category/styles.ts +61 -0
- package/src/legend/components/legend-config-select/legend-config-select.tsx +96 -0
- package/src/legend/components/legend-config-select/styles.ts +48 -0
- package/src/legend/components/legend-group/legend-group.test.tsx +297 -0
- package/src/legend/components/legend-group/legend-group.tsx +126 -0
- package/src/legend/components/legend-group/styles.ts +184 -0
- package/src/legend/components/legend-group-menu/legend-group-menu-items.tsx +132 -0
- package/src/legend/components/legend-group-menu/legend-group-menu.tsx +25 -0
- package/src/legend/components/legend-icon/legend-icon-ui.tsx +56 -0
- package/src/legend/components/legend-icon/styles.ts +56 -0
- package/src/legend/components/legend-item/legend-item-ui.test.tsx +362 -0
- package/src/legend/components/legend-item/legend-item-ui.tsx +43 -0
- package/src/legend/components/legend-item/legend-item.tsx +34 -0
- package/src/legend/components/legend-item/styles.ts +11 -0
- package/src/legend/components/legend-opacity/legend-opacity.tsx +152 -0
- package/src/legend/components/legend-opacity/styles.ts +33 -0
- package/src/legend/components/legend-overflow-menu/legend-overflow-menu.tsx +84 -0
- package/src/legend/components/legend-panel-menu/legend-panel-menu.tsx +23 -0
- package/src/legend/components/legend-proportion/legend-proportion-ui.tsx +122 -0
- package/src/legend/components/legend-proportion/styles.ts +43 -0
- package/src/legend/components/legend-ramp/legend-ramp-ui.tsx +160 -0
- package/src/legend/components/legend-ramp/styles.ts +62 -0
- package/src/legend/components/legend-row/legend-row.test.tsx +736 -0
- package/src/legend/components/legend-row/legend-row.tsx +170 -0
- package/src/legend/components/legend-row/styles.ts +219 -0
- package/src/legend/components/legend-row-menu/legend-row-menu-items.tsx +57 -0
- package/src/legend/components/legend-row-menu/legend-row-menu.tsx +30 -0
- package/src/legend/components/legend-row-menu/legend-zoom-to.tsx +43 -0
- package/src/legend/components/legend-sortable/contexts.ts +12 -0
- package/src/legend/components/legend-sortable/legend-sortable.test.tsx +144 -0
- package/src/legend/components/legend-sortable/legend-sortable.tsx +195 -0
- package/src/legend/components/legend-sortable/sortable-entity.tsx +91 -0
- package/src/legend/components/legend-sortable/sortable-ids.ts +17 -0
- package/src/legend/components/legend-sortable/styles.ts +65 -0
- package/src/legend/components/legend-swatch/legend-swatch.test.tsx +109 -0
- package/src/legend/components/legend-swatch/legend-swatch.tsx +237 -0
- package/src/legend/components/legend-visibility-toggle/legend-visibility-toggle.tsx +133 -0
- package/src/legend/components/legend-visible-layers/legend-visible-layers.test.tsx +86 -0
- package/src/legend/components/legend-visible-layers/legend-visible-layers.tsx +135 -0
- package/src/legend/components/legend-visible-layers/styles.ts +60 -0
- package/src/legend/components/run-async-menu-action.ts +20 -0
- package/src/legend/index.ts +176 -0
- package/src/legend/provider/index.ts +6 -0
- package/src/legend/provider/labels.ts +101 -0
- package/src/legend/provider/legend-config-context.ts +15 -0
- package/src/legend/provider/legend-provider.tsx +102 -0
- package/src/legend/stores/index.ts +50 -0
- package/src/legend/stores/legend-context.ts +17 -0
- package/src/legend/stores/legend-store-registry.ts +745 -0
- package/src/legend/stores/legend-store.test.ts +701 -0
- package/src/legend/stores/selectors.ts +127 -0
- package/src/legend/stores/types.ts +359 -0
- package/src/widgets/README.md +277 -0
- package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
- package/src/widgets/actions/brush-toggle/brush-overlay.tsx +408 -0
- package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +208 -0
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +133 -0
- package/src/widgets/actions/brush-toggle/hit-test.test.ts +65 -0
- package/src/widgets/actions/brush-toggle/hit-test.ts +45 -0
- package/src/widgets/actions/brush-toggle/style.ts +46 -0
- package/src/widgets/actions/brush-toggle/types.ts +78 -0
- package/src/widgets/actions/change-column/change-column-dnd.test.tsx +193 -0
- package/src/widgets/actions/change-column/change-column-icon.tsx +10 -0
- package/src/widgets/actions/change-column/change-column.test.tsx +290 -0
- package/src/widgets/actions/change-column/change-column.tsx +218 -0
- package/src/widgets/actions/change-column/sortable-column-item.test.tsx +124 -0
- package/src/widgets/actions/change-column/sortable-column-item.tsx +51 -0
- package/src/widgets/actions/change-column/types.ts +20 -0
- package/src/widgets/actions/download/download.test.tsx +326 -0
- package/src/widgets/actions/download/download.tsx +132 -0
- package/src/widgets/actions/download/exports.test.tsx +288 -0
- package/src/widgets/actions/download/exports.tsx +118 -0
- package/src/widgets/actions/download/types.ts +21 -0
- package/src/widgets/actions/fullscreen/fullscreen.test.tsx +269 -0
- package/src/widgets/actions/fullscreen/fullscreen.tsx +98 -0
- package/src/widgets/actions/fullscreen/styles.ts +17 -0
- package/src/widgets/actions/fullscreen/types.ts +32 -0
- package/src/widgets/actions/index.ts +73 -0
- package/src/widgets/actions/lock-selection/lock-selection.test.tsx +198 -0
- package/src/widgets/actions/lock-selection/lock-selection.tsx +128 -0
- package/src/widgets/actions/lock-selection/types.ts +43 -0
- package/src/widgets/actions/relative-data/relative-data.test.tsx +542 -0
- package/src/widgets/actions/relative-data/relative-data.tsx +188 -0
- package/src/widgets/actions/relative-data/types.ts +33 -0
- package/src/widgets/actions/relative-data/utils.test.ts +223 -0
- package/src/widgets/actions/relative-data/utils.ts +58 -0
- package/src/widgets/actions/searcher/searcher-toggle.test.tsx +354 -0
- package/src/widgets/actions/searcher/searcher-toggle.tsx +72 -0
- package/src/widgets/actions/searcher/searcher.tsx +196 -0
- package/src/widgets/actions/searcher/types.ts +72 -0
- package/src/widgets/actions/shared/styles.ts +12 -0
- package/src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx +14 -0
- package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +414 -0
- package/src/widgets/actions/stack-toggle/stack-toggle.tsx +129 -0
- package/src/widgets/actions/stack-toggle/types.ts +29 -0
- package/src/widgets/actions/zoom-toggle/style.ts +14 -0
- package/src/widgets/actions/zoom-toggle/types.ts +44 -0
- package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +322 -0
- package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +218 -0
- package/src/widgets/bar/config.ts +140 -0
- package/src/widgets/bar/index.ts +9 -0
- package/src/widgets/bar/skeleton.tsx +60 -0
- package/src/widgets/bar/style.ts +33 -0
- package/src/widgets/bar/types.ts +16 -0
- package/src/widgets/category/category-ui.test.tsx +399 -0
- package/src/widgets/category/category-ui.tsx +166 -0
- package/src/widgets/category/components/category-bar.tsx +31 -0
- package/src/widgets/category/components/category-legend.tsx +33 -0
- package/src/widgets/category/components/category-row-multi.tsx +57 -0
- package/src/widgets/category/components/category-row-other.tsx +26 -0
- package/src/widgets/category/components/category-row-single.tsx +54 -0
- package/src/widgets/category/components/category-rows.test.tsx +213 -0
- package/src/widgets/category/config.ts +86 -0
- package/src/widgets/category/index.ts +29 -0
- package/src/widgets/category/skeleton.tsx +24 -0
- package/src/widgets/category/style.ts +134 -0
- package/src/widgets/category/types.ts +41 -0
- package/src/widgets/echart/const.ts +1 -0
- package/src/widgets/echart/echart-ui.test.tsx +526 -0
- package/src/widgets/echart/echart-ui.tsx +78 -0
- package/src/widgets/echart/echart.test.tsx +546 -0
- package/src/widgets/echart/echart.tsx +66 -0
- package/src/widgets/echart/index.ts +16 -0
- package/src/widgets/echart/options.ts +57 -0
- package/src/widgets/echart/shared-resize-observer.ts +45 -0
- package/src/widgets/echart/types.ts +45 -0
- package/src/widgets/echart/utils.test.ts +277 -0
- package/src/widgets/echart/utils.ts +244 -0
- package/src/widgets/error/error.test.tsx +331 -0
- package/src/widgets/error/error.tsx +51 -0
- package/src/widgets/error/index.ts +2 -0
- package/src/widgets/error/types.ts +24 -0
- package/src/widgets/formula/components/item.test.tsx +249 -0
- package/src/widgets/formula/components/item.tsx +21 -0
- package/src/widgets/formula/components/prefix.test.tsx +341 -0
- package/src/widgets/formula/components/prefix.tsx +19 -0
- package/src/widgets/formula/components/row.test.tsx +364 -0
- package/src/widgets/formula/components/row.tsx +24 -0
- package/src/widgets/formula/components/series.tsx +35 -0
- package/src/widgets/formula/components/suffix.test.tsx +383 -0
- package/src/widgets/formula/components/suffix.tsx +29 -0
- package/src/widgets/formula/components/value.test.tsx +329 -0
- package/src/widgets/formula/components/value.tsx +24 -0
- package/src/widgets/formula/config.test.ts +37 -0
- package/src/widgets/formula/config.ts +38 -0
- package/src/widgets/formula/formula-ui.test.tsx +399 -0
- package/src/widgets/formula/formula-ui.tsx +30 -0
- package/src/widgets/formula/index.ts +24 -0
- package/src/widgets/formula/serializer.test.tsx +144 -0
- package/src/widgets/formula/serializer.ts +28 -0
- package/src/widgets/formula/skeleton.tsx +10 -0
- package/src/widgets/formula/style.ts +23 -0
- package/src/widgets/formula/types.ts +50 -0
- package/src/widgets/histogram/config.ts +230 -0
- package/src/widgets/histogram/index.ts +13 -0
- package/src/widgets/histogram/skeleton.tsx +52 -0
- package/src/widgets/histogram/style.ts +8 -0
- package/src/widgets/histogram/types.ts +23 -0
- package/src/widgets/loader/index.ts +4 -0
- package/src/widgets/loader/loader.tsx +92 -0
- package/src/widgets/loader/types.ts +13 -0
- package/src/widgets/loader/utils.test.ts +112 -0
- package/src/widgets/loader/utils.ts +57 -0
- package/src/widgets/markdown/config.ts +28 -0
- package/src/widgets/markdown/index.ts +14 -0
- package/src/widgets/markdown/markdown-ui.test.tsx +341 -0
- package/src/widgets/markdown/markdown-ui.tsx +59 -0
- package/src/widgets/markdown/markdown.tsx +20 -0
- package/src/widgets/markdown/skeleton.tsx +12 -0
- package/src/widgets/markdown/style.ts +28 -0
- package/src/widgets/markdown/types.ts +28 -0
- package/src/widgets/no-data/index.ts +2 -0
- package/src/widgets/no-data/no-data.test.tsx +497 -0
- package/src/widgets/no-data/no-data.tsx +112 -0
- package/src/widgets/no-data/style.ts +18 -0
- package/src/widgets/no-data/types.ts +76 -0
- package/src/widgets/note/index.ts +2 -0
- package/src/widgets/note/note.test.tsx +391 -0
- package/src/widgets/note/note.tsx +124 -0
- package/src/widgets/note/style.ts +29 -0
- package/src/widgets/note/types.ts +9 -0
- package/src/widgets/pie/config.ts +245 -0
- package/src/widgets/pie/index.ts +8 -0
- package/src/widgets/pie/skeleton.tsx +70 -0
- package/src/widgets/pie/style.ts +8 -0
- package/src/widgets/pie/types.ts +16 -0
- package/src/widgets/range/components/range-item.test.tsx +243 -0
- package/src/widgets/range/components/range-item.tsx +214 -0
- package/src/widgets/range/config.ts +10 -0
- package/src/widgets/range/index.ts +16 -0
- package/src/widgets/range/range-ui.test.tsx +203 -0
- package/src/widgets/range/range-ui.tsx +14 -0
- package/src/widgets/range/serializer.test.ts +70 -0
- package/src/widgets/range/serializer.ts +27 -0
- package/src/widgets/range/skeleton.tsx +14 -0
- package/src/widgets/range/style.ts +37 -0
- package/src/widgets/range/types.ts +39 -0
- package/src/widgets/scatterplot/config.ts +136 -0
- package/src/widgets/scatterplot/index.ts +8 -0
- package/src/widgets/scatterplot/skeleton.tsx +59 -0
- package/src/widgets/scatterplot/style.ts +21 -0
- package/src/widgets/scatterplot/types.ts +17 -0
- package/src/widgets/selection-summary/index.ts +6 -0
- package/src/widgets/selection-summary/selection-summary.tsx +57 -0
- package/src/widgets/selection-summary/style.ts +10 -0
- package/src/widgets/selection-summary/types.ts +14 -0
- package/src/widgets/skeleton-loader/index.ts +2 -0
- package/src/widgets/skeleton-loader/skeleton-loader.test.tsx +139 -0
- package/src/widgets/skeleton-loader/skeleton-loader.tsx +35 -0
- package/src/widgets/skeleton-loader/types.ts +8 -0
- package/src/widgets/spread/components/max-value.tsx +29 -0
- package/src/widgets/spread/components/min-value.tsx +29 -0
- package/src/widgets/spread/components/separator.tsx +9 -0
- package/src/widgets/spread/config.ts +39 -0
- package/src/widgets/spread/index.ts +23 -0
- package/src/widgets/spread/skeleton.tsx +10 -0
- package/src/widgets/spread/spread-ui.test.tsx +368 -0
- package/src/widgets/spread/spread-ui.tsx +32 -0
- package/src/widgets/spread/style.ts +22 -0
- package/src/widgets/spread/types.ts +47 -0
- package/src/widgets/stores/index.ts +13 -0
- package/src/widgets/stores/types.ts +203 -0
- package/src/widgets/stores/use-widget-selector.ts +47 -0
- package/src/widgets/stores/widget-store-branches.test.ts +275 -0
- package/src/widgets/stores/widget-store-performance.test.ts +750 -0
- package/src/widgets/stores/widget-store.test.ts +942 -0
- package/src/widgets/stores/widget-store.ts +484 -0
- package/src/widgets/subheader/index.ts +3 -0
- package/src/widgets/subheader/style.ts +20 -0
- package/src/widgets/subheader/subheader.test.tsx +45 -0
- package/src/widgets/subheader/subheader.tsx +35 -0
- package/src/widgets/subheader/types.ts +11 -0
- package/src/widgets/table/components/cell-header.tsx +58 -0
- package/src/widgets/table/components/cell.tsx +82 -0
- package/src/widgets/table/components/pagination-actions.tsx +67 -0
- package/src/widgets/table/components/pagination.tsx +41 -0
- package/src/widgets/table/components/row.tsx +65 -0
- package/src/widgets/table/config.test.ts +65 -0
- package/src/widgets/table/config.ts +75 -0
- package/src/widgets/table/helpers.test.ts +244 -0
- package/src/widgets/table/helpers.ts +107 -0
- package/src/widgets/table/hooks/use-pagination.test.ts +294 -0
- package/src/widgets/table/hooks/use-pagination.ts +148 -0
- package/src/widgets/table/hooks/use-selection.test.ts +504 -0
- package/src/widgets/table/hooks/use-selection.ts +194 -0
- package/src/widgets/table/hooks/use-sort.test.ts +296 -0
- package/src/widgets/table/hooks/use-sort.ts +131 -0
- package/src/widgets/table/index.ts +55 -0
- package/src/widgets/table/serializer.ts +54 -0
- package/src/widgets/table/skeleton.tsx +48 -0
- package/src/widgets/table/style.ts +34 -0
- package/src/widgets/table/table-ui.tsx +64 -0
- package/src/widgets/table/types.ts +223 -0
- package/src/widgets/timeseries/config.ts +136 -0
- package/src/widgets/timeseries/index.ts +8 -0
- package/src/widgets/timeseries/skeleton.tsx +55 -0
- package/src/widgets/timeseries/style.ts +36 -0
- package/src/widgets/timeseries/types.ts +17 -0
- package/src/widgets/toolbar-actions/index.ts +6 -0
- package/src/widgets/toolbar-actions/styles.ts +38 -0
- package/src/widgets/toolbar-actions/toolbar-actions.test.tsx +691 -0
- package/src/widgets/toolbar-actions/toolbar-actions.tsx +145 -0
- package/src/widgets/toolbar-actions/types.ts +60 -0
- package/src/widgets/utils/chart-config/config-factory.ts +67 -0
- package/src/widgets/utils/chart-config/csv-modifiers.ts +56 -0
- package/src/widgets/utils/chart-config/download-config.ts +22 -0
- package/src/widgets/utils/chart-config/index.ts +29 -0
- package/src/widgets/utils/chart-config/option-builders.test.ts +366 -0
- package/src/widgets/utils/chart-config/option-builders.ts +308 -0
- package/src/widgets/utils/formatter.ts +2 -0
- package/src/widgets/utils/index.ts +26 -0
- package/{dist/types/widgets/_shared/skeleton/index.d.ts → src/widgets/utils/skeleton/index.ts} +2 -1
- package/src/widgets/utils/skeleton/styles.ts +20 -0
- package/src/widgets/wrapper/components/actions.test.tsx +105 -0
- package/src/widgets/wrapper/components/actions.tsx +35 -0
- package/src/widgets/wrapper/components/options.test.tsx +331 -0
- package/src/widgets/wrapper/components/options.tsx +81 -0
- package/src/widgets/wrapper/components/title.test.tsx +126 -0
- package/src/widgets/wrapper/components/title.tsx +35 -0
- package/src/widgets/wrapper/index.ts +16 -0
- package/src/widgets/wrapper/styles.ts +98 -0
- package/src/widgets/wrapper/types.ts +55 -0
- package/src/widgets/wrapper/wrapper-ui.test.tsx +232 -0
- package/src/widgets/wrapper/wrapper-ui.tsx +72 -0
- package/src/widgets/wrapper/wrapper.test.tsx +365 -0
- package/src/widgets/wrapper/wrapper.tsx +60 -0
- package/src/widgets-v2/PERFORMANCE.md +189 -0
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +180 -0
- package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +154 -0
- package/src/widgets-v2/actions/brush-toggle/index.ts +3 -0
- package/src/widgets-v2/actions/brush-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/brush-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/brush-toggle/transforms.test.ts +47 -0
- package/src/widgets-v2/actions/brush-toggle/transforms.ts +31 -0
- package/src/widgets-v2/actions/change-column/change-column-icon.tsx +14 -0
- package/src/widgets-v2/actions/change-column/change-column.test.tsx +59 -0
- package/src/widgets-v2/actions/change-column/change-column.tsx +189 -0
- package/src/widgets-v2/actions/change-column/index.ts +7 -0
- package/src/widgets-v2/actions/change-column/labels.ts +11 -0
- package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +63 -0
- package/src/widgets-v2/actions/change-column/style.ts +58 -0
- package/src/widgets-v2/actions/change-column/types.ts +11 -0
- package/src/widgets-v2/actions/download/constants.ts +14 -0
- package/src/widgets-v2/actions/download/csv-item.test.tsx +77 -0
- package/src/widgets-v2/actions/download/csv-item.tsx +71 -0
- package/src/widgets-v2/actions/download/download.test.tsx +327 -0
- package/src/widgets-v2/actions/download/download.tsx +144 -0
- package/src/widgets-v2/actions/download/exports.test.tsx +198 -0
- package/src/widgets-v2/actions/download/exports.ts +115 -0
- package/src/widgets-v2/actions/download/icons.tsx +35 -0
- package/src/widgets-v2/actions/download/index.ts +15 -0
- package/src/widgets-v2/actions/download/labels.ts +16 -0
- package/src/widgets-v2/actions/download/png-item.test.tsx +72 -0
- package/src/widgets-v2/actions/download/png-item.tsx +53 -0
- package/src/widgets-v2/actions/download/style.ts +3 -0
- package/src/widgets-v2/actions/download/types.ts +32 -0
- package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +150 -0
- package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +230 -0
- package/src/widgets-v2/actions/fullscreen/index.ts +7 -0
- package/src/widgets-v2/actions/fullscreen/labels.ts +9 -0
- package/src/widgets-v2/actions/fullscreen/style.ts +59 -0
- package/src/widgets-v2/actions/fullscreen/types.ts +15 -0
- package/src/widgets-v2/actions/index.ts +95 -0
- package/src/widgets-v2/actions/lock-selection/index.ts +10 -0
- package/src/widgets-v2/actions/lock-selection/labels.ts +11 -0
- package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +301 -0
- package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +188 -0
- package/src/widgets-v2/actions/lock-selection/style.ts +11 -0
- package/src/widgets-v2/actions/lock-selection/transforms.ts +27 -0
- package/src/widgets-v2/actions/relative-data/index.ts +3 -0
- package/src/widgets-v2/actions/relative-data/labels.ts +9 -0
- package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +71 -0
- package/src/widgets-v2/actions/relative-data/relative-data.tsx +107 -0
- package/src/widgets-v2/actions/relative-data/style.ts +11 -0
- package/src/widgets-v2/actions/relative-data/transforms.test.ts +151 -0
- package/src/widgets-v2/actions/relative-data/transforms.ts +70 -0
- package/src/widgets-v2/actions/searcher/filter.ts +28 -0
- package/src/widgets-v2/actions/searcher/index.ts +8 -0
- package/src/widgets-v2/actions/searcher/labels.ts +13 -0
- package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +91 -0
- package/src/widgets-v2/actions/searcher/searcher.test.tsx +92 -0
- package/src/widgets-v2/actions/searcher/searcher.tsx +111 -0
- package/src/widgets-v2/actions/searcher/style.ts +15 -0
- package/src/widgets-v2/actions/show-all/index.ts +7 -0
- package/src/widgets-v2/actions/show-all/labels.ts +8 -0
- package/src/widgets-v2/actions/show-all/show-all.test.tsx +50 -0
- package/src/widgets-v2/actions/show-all/show-all.tsx +72 -0
- package/src/widgets-v2/actions/show-all/style.ts +8 -0
- package/src/widgets-v2/actions/stack-toggle/index.ts +3 -0
- package/src/widgets-v2/actions/stack-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +61 -0
- package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +54 -0
- package/src/widgets-v2/actions/stack-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/stack-toggle/transforms.test.ts +43 -0
- package/src/widgets-v2/actions/stack-toggle/transforms.ts +25 -0
- package/src/widgets-v2/actions/zoom-toggle/index.ts +9 -0
- package/src/widgets-v2/actions/zoom-toggle/labels.ts +9 -0
- package/src/widgets-v2/actions/zoom-toggle/style.ts +11 -0
- package/src/widgets-v2/actions/zoom-toggle/transforms.test.ts +148 -0
- package/src/widgets-v2/actions/zoom-toggle/transforms.ts +171 -0
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +107 -0
- package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +106 -0
- package/src/widgets-v2/bar/download.test.tsx +91 -0
- package/src/widgets-v2/bar/download.tsx +60 -0
- package/src/widgets-v2/bar/index.ts +10 -0
- package/src/widgets-v2/bar/options.test.ts +361 -0
- package/src/widgets-v2/bar/options.ts +333 -0
- package/src/widgets-v2/bar/skeleton.test.tsx +19 -0
- package/src/widgets-v2/bar/skeleton.tsx +69 -0
- package/src/widgets-v2/bar/types.ts +51 -0
- package/src/widgets-v2/category/category-ui.test.tsx +909 -0
- package/src/widgets-v2/category/category-ui.tsx +479 -0
- package/src/widgets-v2/category/category.relative-data.test.tsx +107 -0
- package/src/widgets-v2/category/category.stack-toggle.test.tsx +85 -0
- package/src/widgets-v2/category/category.test.tsx +305 -0
- package/src/widgets-v2/category/category.tsx +130 -0
- package/src/widgets-v2/category/components/category-bar-stacked.test.tsx +121 -0
- package/src/widgets-v2/category/components/category-bar-stacked.tsx +73 -0
- package/src/widgets-v2/category/components/category-bar.test.tsx +64 -0
- package/src/widgets-v2/category/components/category-bar.tsx +49 -0
- package/src/widgets-v2/category/components/category-legend.test.tsx +102 -0
- package/src/widgets-v2/category/components/category-legend.tsx +82 -0
- package/src/widgets-v2/category/components/category-row-multi.tsx +86 -0
- package/src/widgets-v2/category/components/category-row-other.test.tsx +57 -0
- package/src/widgets-v2/category/components/category-row-other.tsx +84 -0
- package/src/widgets-v2/category/components/category-row-single.tsx +76 -0
- package/src/widgets-v2/category/components/category-row-stacked.test.tsx +248 -0
- package/src/widgets-v2/category/components/category-row-stacked.tsx +104 -0
- package/src/widgets-v2/category/download.test.ts +80 -0
- package/src/widgets-v2/category/download.ts +50 -0
- package/src/widgets-v2/category/index.ts +32 -0
- package/src/widgets-v2/category/skeleton.test.tsx +26 -0
- package/src/widgets-v2/category/skeleton.tsx +74 -0
- package/src/widgets-v2/category/style.ts +329 -0
- package/src/widgets-v2/category/types.ts +61 -0
- package/src/widgets-v2/echart/echart-ui.test.tsx +327 -0
- package/src/widgets-v2/echart/echart-ui.tsx +232 -0
- package/src/widgets-v2/echart/echart.test.tsx +229 -0
- package/src/widgets-v2/echart/echart.tsx +199 -0
- package/src/widgets-v2/echart/edge-label-clamp.test.ts +198 -0
- package/src/widgets-v2/echart/edge-label-clamp.ts +217 -0
- package/src/widgets-v2/echart/index.ts +22 -0
- package/src/widgets-v2/echart/shared-resize-observer.test.ts +91 -0
- package/src/widgets-v2/echart/shared-resize-observer.ts +56 -0
- package/src/widgets-v2/echart/style.ts +8 -0
- package/src/widgets-v2/echart/use-chart-selection.test.tsx +120 -0
- package/src/widgets-v2/echart/use-chart-selection.ts +121 -0
- package/src/widgets-v2/formula/delta.tsx +61 -0
- package/src/widgets-v2/formula/download.test.tsx +65 -0
- package/src/widgets-v2/formula/download.tsx +63 -0
- package/src/widgets-v2/formula/formula-ui.test.tsx +91 -0
- package/src/widgets-v2/formula/formula-ui.tsx +66 -0
- package/src/widgets-v2/formula/formula.test.tsx +50 -0
- package/src/widgets-v2/formula/formula.tsx +34 -0
- package/src/widgets-v2/formula/index.ts +17 -0
- package/src/widgets-v2/formula/note.tsx +25 -0
- package/src/widgets-v2/formula/prefix.tsx +25 -0
- package/src/widgets-v2/formula/series.tsx +67 -0
- package/src/widgets-v2/formula/skeleton.test.tsx +21 -0
- package/src/widgets-v2/formula/skeleton.tsx +27 -0
- package/src/widgets-v2/formula/style.ts +31 -0
- package/src/widgets-v2/formula/subcomponents.test.tsx +107 -0
- package/src/widgets-v2/formula/suffix.tsx +25 -0
- package/src/widgets-v2/formula/types.ts +48 -0
- package/src/widgets-v2/formula/value.tsx +31 -0
- package/src/widgets-v2/histogram/download.test.ts +94 -0
- package/src/widgets-v2/histogram/download.ts +56 -0
- package/src/widgets-v2/histogram/index.ts +13 -0
- package/src/widgets-v2/histogram/options.test.ts +411 -0
- package/src/widgets-v2/histogram/options.ts +390 -0
- package/src/widgets-v2/histogram/skeleton.test.tsx +16 -0
- package/src/widgets-v2/histogram/skeleton.tsx +70 -0
- package/src/widgets-v2/histogram/transforms.test.ts +81 -0
- package/src/widgets-v2/histogram/transforms.ts +53 -0
- package/src/widgets-v2/histogram/types.ts +64 -0
- package/src/widgets-v2/index.ts +212 -0
- package/src/widgets-v2/markdown/download.test.ts +66 -0
- package/src/widgets-v2/markdown/download.tsx +56 -0
- package/src/widgets-v2/markdown/index.ts +6 -0
- package/src/widgets-v2/markdown/markdown-content.test.tsx +165 -0
- package/src/widgets-v2/markdown/markdown-content.tsx +81 -0
- package/src/widgets-v2/markdown/markdown-ui.test.tsx +75 -0
- package/src/widgets-v2/markdown/markdown-ui.tsx +55 -0
- package/src/widgets-v2/markdown/markdown.test.tsx +39 -0
- package/src/widgets-v2/markdown/markdown.tsx +17 -0
- package/src/widgets-v2/markdown/skeleton.test.tsx +15 -0
- package/src/widgets-v2/markdown/skeleton.tsx +32 -0
- package/src/widgets-v2/markdown/style.ts +53 -0
- package/src/widgets-v2/markdown/types.ts +4 -0
- package/src/widgets-v2/note/labels.ts +9 -0
- package/src/widgets-v2/note/style.ts +26 -0
- package/src/widgets-v2/note/widget-note.test.tsx +158 -0
- package/src/widgets-v2/note/widget-note.tsx +172 -0
- package/src/widgets-v2/pie/download.test.ts +78 -0
- package/src/widgets-v2/pie/download.ts +51 -0
- package/src/widgets-v2/pie/index.ts +10 -0
- package/src/widgets-v2/pie/options.test.ts +930 -0
- package/src/widgets-v2/pie/options.ts +611 -0
- package/src/widgets-v2/pie/skeleton.test.tsx +20 -0
- package/src/widgets-v2/pie/skeleton.tsx +94 -0
- package/src/widgets-v2/pie/types.ts +62 -0
- package/src/widgets-v2/provider/widget-provider.test.tsx +119 -0
- package/src/widgets-v2/provider/widget-provider.tsx +111 -0
- package/src/widgets-v2/range/index.ts +4 -0
- package/src/widgets-v2/range/range-ui.test.tsx +136 -0
- package/src/widgets-v2/range/range-ui.tsx +278 -0
- package/src/widgets-v2/range/range.test.tsx +68 -0
- package/src/widgets-v2/range/range.tsx +52 -0
- package/src/widgets-v2/range/skeleton.test.tsx +17 -0
- package/src/widgets-v2/range/skeleton.tsx +47 -0
- package/src/widgets-v2/range/style.ts +41 -0
- package/src/widgets-v2/range/types.ts +37 -0
- package/src/widgets-v2/scatterplot/download.test.ts +71 -0
- package/src/widgets-v2/scatterplot/download.ts +50 -0
- package/src/widgets-v2/scatterplot/index.ts +14 -0
- package/src/widgets-v2/scatterplot/options.test.ts +411 -0
- package/src/widgets-v2/scatterplot/options.ts +422 -0
- package/src/widgets-v2/scatterplot/skeleton.test.tsx +17 -0
- package/src/widgets-v2/scatterplot/skeleton.tsx +84 -0
- package/src/widgets-v2/scatterplot/transforms.test.ts +134 -0
- package/src/widgets-v2/scatterplot/transforms.ts +61 -0
- package/src/widgets-v2/scatterplot/types.ts +59 -0
- package/src/widgets-v2/selection-summary/labels.ts +15 -0
- package/src/widgets-v2/selection-summary/selection-summary.test.tsx +59 -0
- package/src/widgets-v2/selection-summary/selection-summary.tsx +82 -0
- package/src/widgets-v2/selection-summary/style.ts +38 -0
- package/src/widgets-v2/spread/band.test.ts +46 -0
- package/src/widgets-v2/spread/band.ts +47 -0
- package/src/widgets-v2/spread/download.test.ts +64 -0
- package/src/widgets-v2/spread/download.ts +55 -0
- package/src/widgets-v2/spread/index.ts +11 -0
- package/src/widgets-v2/spread/separator.tsx +11 -0
- package/src/widgets-v2/spread/skeleton.test.tsx +17 -0
- package/src/widgets-v2/spread/skeleton.tsx +38 -0
- package/src/widgets-v2/spread/spread-ui.test.tsx +108 -0
- package/src/widgets-v2/spread/spread-ui.tsx +52 -0
- package/src/widgets-v2/spread/spread.test.tsx +50 -0
- package/src/widgets-v2/spread/spread.tsx +31 -0
- package/src/widgets-v2/spread/types.ts +27 -0
- package/src/widgets-v2/state/labels.test.ts +33 -0
- package/src/widgets-v2/state/labels.ts +20 -0
- package/src/widgets-v2/state/style.ts +25 -0
- package/src/widgets-v2/state/widget-state.test.tsx +294 -0
- package/src/widgets-v2/state/widget-state.tsx +184 -0
- package/src/widgets-v2/stores/index.ts +49 -0
- package/src/widgets-v2/stores/pipeline-middleware.test.ts +187 -0
- package/src/widgets-v2/stores/pipeline-middleware.ts +91 -0
- package/src/widgets-v2/stores/transforms.test.ts +162 -0
- package/src/widgets-v2/stores/transforms.ts +70 -0
- package/src/widgets-v2/stores/types.ts +64 -0
- package/src/widgets-v2/stores/use-echart-instance.test.tsx +91 -0
- package/src/widgets-v2/stores/use-echart-instance.ts +29 -0
- package/src/widgets-v2/stores/use-transform-enabled.test.tsx +127 -0
- package/src/widgets-v2/stores/use-transform-enabled.ts +25 -0
- package/src/widgets-v2/stores/use-transform.test.tsx +262 -0
- package/src/widgets-v2/stores/use-transform.ts +158 -0
- package/src/widgets-v2/stores/widget-context.test.tsx +58 -0
- package/src/widgets-v2/stores/widget-context.ts +15 -0
- package/src/widgets-v2/stores/widget-store-registry.test.ts +292 -0
- package/src/widgets-v2/stores/widget-store-registry.ts +239 -0
- package/src/widgets-v2/subheader/style.ts +12 -0
- package/src/widgets-v2/subheader/subheader.test.tsx +30 -0
- package/src/widgets-v2/subheader/subheader.tsx +16 -0
- package/src/widgets-v2/table/download.test.ts +85 -0
- package/src/widgets-v2/table/download.ts +43 -0
- package/src/widgets-v2/table/helpers.test.ts +233 -0
- package/src/widgets-v2/table/helpers.ts +131 -0
- package/src/widgets-v2/table/index.ts +24 -0
- package/src/widgets-v2/table/labels.tsx +41 -0
- package/src/widgets-v2/table/skeleton.test.tsx +26 -0
- package/src/widgets-v2/table/skeleton.tsx +65 -0
- package/src/widgets-v2/table/style.ts +43 -0
- package/src/widgets-v2/table/table-ui.test.tsx +200 -0
- package/src/widgets-v2/table/table-ui.tsx +364 -0
- package/src/widgets-v2/table/table.test.tsx +119 -0
- package/src/widgets-v2/table/table.tsx +179 -0
- package/src/widgets-v2/table/transforms.test.ts +40 -0
- package/src/widgets-v2/table/transforms.ts +28 -0
- package/src/widgets-v2/table/types.ts +55 -0
- package/src/widgets-v2/test-utils.ts +107 -0
- package/src/widgets-v2/timeseries/download.test.ts +95 -0
- package/src/widgets-v2/timeseries/download.ts +82 -0
- package/src/widgets-v2/timeseries/index.ts +11 -0
- package/src/widgets-v2/timeseries/options.test.ts +399 -0
- package/src/widgets-v2/timeseries/options.ts +342 -0
- package/src/widgets-v2/timeseries/skeleton.test.tsx +13 -0
- package/src/widgets-v2/timeseries/skeleton.tsx +76 -0
- package/src/widgets-v2/timeseries/transforms.test.ts +49 -0
- package/src/widgets-v2/timeseries/transforms.ts +31 -0
- package/src/widgets-v2/timeseries/types.ts +65 -0
- package/src/widgets-v2/toolbox/labels.ts +9 -0
- package/src/widgets-v2/toolbox/style.ts +33 -0
- package/src/widgets-v2/toolbox/toolbox.test.tsx +200 -0
- package/src/widgets-v2/toolbox/toolbox.tsx +309 -0
- package/src/widgets-v2/types.ts +25 -0
- package/src/widgets-v2/utils/data-zoom-layout.ts +26 -0
- package/src/widgets-v2/utils/index.ts +3 -0
- package/src/widgets-v2/utils/merge-options.test.ts +52 -0
- package/src/widgets-v2/utils/merge-options.ts +50 -0
- package/src/widgets-v2/utils/resolve-theme-color.test.ts +43 -0
- package/src/widgets-v2/utils/resolve-theme-color.ts +34 -0
- package/src/widgets-v2/wrapper/index.ts +14 -0
- package/src/widgets-v2/wrapper/labels.ts +11 -0
- package/src/widgets-v2/wrapper/style.ts +128 -0
- package/src/widgets-v2/wrapper/widget-actions.test.tsx +52 -0
- package/src/widgets-v2/wrapper/widget-actions.tsx +43 -0
- package/src/widgets-v2/wrapper/widget-content.test.tsx +27 -0
- package/src/widgets-v2/wrapper/widget-content.tsx +29 -0
- package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +255 -0
- package/src/widgets-v2/wrapper/widget-wrapper.tsx +194 -0
- package/dist/cjs-D9ro6BXv.js +0 -85
- package/dist/cjs-D9ro6BXv.js.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/error-B2IJ9d2h.js +0 -38
- package/dist/error-B2IJ9d2h.js.map +0 -1
- package/dist/exports-Cr43OCul.js +0 -51
- package/dist/exports-Cr43OCul.js.map +0 -1
- package/dist/lasso-tool-CYn3ivf-.js +0 -534
- package/dist/lasso-tool-CYn3ivf-.js.map +0 -1
- package/dist/markdown-ui-CpNYUPqC.js +0 -68
- package/dist/markdown-ui-CpNYUPqC.js.map +0 -1
- package/dist/no-data-C54XJt13.js +0 -61
- package/dist/no-data-C54XJt13.js.map +0 -1
- package/dist/note-Clng2ej6.js +0 -124
- package/dist/note-Clng2ej6.js.map +0 -1
- package/dist/options-D9wflre6.js +0 -49
- package/dist/options-D9wflre6.js.map +0 -1
- package/dist/row-DLKZN5aF.js +0 -33
- package/dist/row-DLKZN5aF.js.map +0 -1
- package/dist/row-DrHwXNvF.js +0 -35
- package/dist/row-DrHwXNvF.js.map +0 -1
- package/dist/series-Cf1QPZHV.js +0 -83
- package/dist/series-Cf1QPZHV.js.map +0 -1
- package/dist/series-Do02NQUF.js +0 -91
- package/dist/series-Do02NQUF.js.map +0 -1
- package/dist/smart-tooltip-BEtBaIdz.js +0 -39
- package/dist/smart-tooltip-BEtBaIdz.js.map +0 -1
- package/dist/styles-CcC5L2cr.js +0 -77
- package/dist/styles-CcC5L2cr.js.map +0 -1
- package/dist/styles-dOu_pRNb.js +0 -77
- package/dist/styles-dOu_pRNb.js.map +0 -1
- package/dist/tooltip-BDnrRKrp.js +0 -25
- package/dist/tooltip-BDnrRKrp.js.map +0 -1
- package/dist/types/common/common.d.ts +0 -3
- package/dist/types/common/index.d.ts +0 -26
- package/dist/types/common/lasso-tools.d.ts +0 -36
- package/dist/types/common/measurement-tools.d.ts +0 -65
- package/dist/types/hooks/use-debounce.d.ts +0 -19
- package/dist/types/widgets/_shared/chart-config/index.d.ts +0 -7
- package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +0 -34
- package/dist/types/widgets/actions/relative-data/style.d.ts +0 -8
- package/dist/types/widgets/actions/relative-data/utils.test.d.ts +0 -1
- package/dist/types/widgets/actions/zoom-toggle/index.d.ts +0 -2
- package/dist/types/widgets/category/components/index.d.ts +0 -10
- package/dist/types/widgets/index.d.ts +0 -8
- package/dist/types/widgets/range/serializer.test.d.ts +0 -1
- package/dist/types/widgets/root/index.d.ts +0 -3
- package/dist/types/widgets/root/root.d.ts +0 -2
- package/dist/types/widgets/root/types.d.ts +0 -9
- package/dist/types/widgets/root/utils.d.ts +0 -1
- package/dist/types/widgets/stores/widget-store.test.d.ts +0 -1
- package/dist/types/widgets/table/components/index.d.ts +0 -4
- package/dist/types/widgets/table/helpers.test.d.ts +0 -1
- package/dist/types/widgets/table/hooks/index.d.ts +0 -6
- package/dist/types/widgets/table/hooks/use-pagination.test.d.ts +0 -1
- package/dist/types/widgets/table/hooks/use-selection.test.d.ts +0 -1
- package/dist/types/widgets/table/hooks/use-sort.test.d.ts +0 -1
- package/dist/utils-DNtU8q7E.js +0 -144
- package/dist/utils-DNtU8q7E.js.map +0 -1
- package/dist/utils-Dv5Z47UQ.js +0 -144
- package/dist/utils-Dv5Z47UQ.js.map +0 -1
- package/dist/widget-store-CB6Trp_0.js +0 -131
- package/dist/widget-store-CB6Trp_0.js.map +0 -1
- package/dist/widget-store-yDO2ul8g.js +0 -44
- package/dist/widget-store-yDO2ul8g.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/root.js +0 -68
- package/dist/widgets/root.js.map +0 -1
- package/dist/widgets/stores.js.map +0 -1
- package/dist/widgets.js +0 -11
- package/dist/widgets.js.map +0 -1
- /package/dist/types/widgets/{_shared → utils}/chart-config/csv-modifiers.d.ts +0 -0
- /package/dist/types/widgets/{_shared → utils}/skeleton/styles.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/hooks/use-widget-ref.ts","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell key={column.id} column={column} value={row[column.id]} />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import { useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../widgets/stores/widget-store'\n\n/**\n * Custom hook for registering a DOM element ref with the widget store.\n * This allows other parts of the application to access the widget's DOM element.\n *\n * @param widgetId - The widget ID to register the ref under\n * @returns A ref object to attach to the DOM element\n *\n * @example\n * ```tsx\n * function MyWidget({ id }: { id: string }) {\n * const ref = useWidgetRef<HTMLDivElement>(id)\n *\n * return <div ref={ref}>Widget content</div>\n * }\n * ```\n */\nexport function useWidgetRef<T extends HTMLElement = HTMLElement>(\n widgetId: string,\n) {\n const ref = useRef<T | null>(null)\n const setWidget = useWidgetStore((store) => store.setWidget)\n\n useEffect(() => {\n if (ref.current) {\n setWidget(widgetId, { refUI: ref })\n }\n }, [widgetId, setWidget])\n\n return ref\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\nexport interface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const ref = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../root/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nexport const DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Default table download configuration\n * Supports PNG export (screenshot) and CSV export (data)\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Default table widget configuration\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n selected: [],\n mode: DEFAULT_MODE,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Whether pagination is enabled */\n paginationEnabled: boolean\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination\n * Supports both local (client-side) and remote (server-side) pagination\n * State is persisted in the widget store for the given widgetId\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const paginationState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n paginationEnabled: !!widget?.pagination,\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ??\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n }\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Calculate max page\n const maxPage = Math.max(\n 0,\n Math.ceil(paginationState.total / (paginationState?.rowsPerPage ?? 1)) - 1,\n )\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n const boundedPage = Math.max(0, Math.min(newPage, maxPage))\n\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n page: boundedPage,\n },\n })\n },\n [maxPage, paginationState, setWidget, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n rowsPerPage: newRowsPerPage,\n },\n })\n },\n [paginationState, setWidget, widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(\n () => setPage(paginationState.page + 1),\n [setPage, paginationState.page],\n )\n const goToPreviousPage = useCallback(\n () => setPage(paginationState.page - 1),\n [setPage, paginationState.page],\n )\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote' || !paginationState.paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, paginationState.page, paginationState.rowsPerPage)\n }, [\n data,\n mode,\n paginationState.page,\n paginationState.paginationEnabled,\n paginationState.rowsPerPage,\n ])\n\n return {\n ...paginationState,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortResult<T> extends SortState {\n /** Whether sorting is enabled */\n sortEnabled: boolean\n /** Current sort state */\n columnId: string | null\n direction: SortDirection\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting\n * Supports both local (client-side) and remote (server-side) sorting\n * State is persisted in the widget store for the given widgetId\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UseSortResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const sortStoreState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n sortEnabled: !!widget?.sort,\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n }\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n let newDirection: SortDirection = 'asc'\n\n if (sortStoreState.columnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = sortStoreState.direction === 'asc' ? 'desc' : 'asc'\n }\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n },\n [setWidget, sortStoreState, widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n },\n [setWidget, sortStoreState, widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [setWidget, getWidget, widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (\n mode === 'remote' ||\n !sortStoreState.columnId ||\n !sortStoreState.sortEnabled\n ) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, sortStoreState.columnId, sortStoreState.direction)\n }, [\n data,\n mode,\n sortStoreState.columnId,\n sortStoreState.direction,\n sortStoreState.sortEnabled,\n ])\n\n return {\n ...sortStoreState,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: (string | number)[]) => void\n}\n\nexport interface UseSelectionResult {\n /** Array of selected row IDs */\n selectedIds: (string | number)[]\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection\n * Selection persists across pagination and is stored in the widget store\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const selected = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.selected\n }),\n )\n\n // Use store values with fallback to empty array\n const selectedIds = useMemo(() => selected ?? [], [selected])\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.includes(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSelected: (string | number)[] = []\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }, [setWidget, widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"names":["CellHeader","t0","$","_c","column","sortState","onSort","isSelectAll","isAllSelected","isIndeterminate","onSelectAll","t1","Symbol","for","t2","jsx","TableCell","Checkbox","isSorted","columnId","id","sortDirection","direction","undefined","sortable","width","t3","t4","label","TableSortLabel","t5","align","getCellValue","cellValue","Array","isArray","map","item","String","join","JSON","stringify","compareValues","a","b","comparison","localeCompare","strA","strB","sortData","data","sort","paginateData","page","rowsPerPage","start","end","slice","DEFAULT_P","children","Typography","CELL_MARKDOWN_COMPONENTS","h1","h2","h3","p","href","isExternal","startsWith","Link","img","ul","ol","li","Cell","value","formatter","MuiTableCell","ReactMarkdown","Row","row","columns","isSelected","selectable","onClick","onSelect","onMouseEnter","onMouseLeave","handleClick","event","stopPropagation","handleCheckboxClick","handleMouseEnter","t6","handleMouseLeave","t7","t8","t9","cursor","t10","t11","t12","MuiTableRow","PaginationActions","count","onPageChange","lastPage","Math","max","ceil","handleFirstPage","event_0","handlePreviousPage","event_1","handleNextPage","event_2","handleLastPage","flexShrink","ml","FirstPageIcon","IconButton","KeyboardArrowLeft","t13","KeyboardArrowRight","t14","t15","t16","LastPageIcon","t17","t18","jsxs","Box","Pagination","total","rowsPerPageOptions","onRowsPerPageChange","_event","newPage","handlePageChange","parseInt","target","handleRowsPerPageChange","MuiTablePagination","useWidgetRef","widgetId","ref","useRef","setWidget","useWidgetStore","_temp","current","refUI","useEffect","store","Table","props","stickyHeader","MuiTable","Head","TableHead","Body","TableBody","Container","TableContainer","Paper","MuiTableContainer","DEFAULT_MODE","DEFAULT_PAGE","DEFAULT_ROWS_PER_PAGE","DEFAULT_ROWS_PER_PAGE_OPTIONS","DEFAULT_COLUMN_ID","DEFAULT_DIRECTION","tableDownloadConfig","downloadToPNG","modifier","downloadToCSV","length","firstRow","headers","Object","keys","filter","key","rows","header","tableConfig","selected","mode","usePagination","state_0","widget","state","widgets","paginationEnabled","pagination","paginationState","useShallow","state_1","maxPage","boundedPage","min","setPage","newRowsPerPage","setRowsPerPage","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","bb0","paginatedData","useSort","getWidget","_temp2","sortEnabled","sortStoreState","state_2","toggleColumnId","newDirection","toggleSort","newColumnId","newDirection_0","setSort","widget_1","clearSort","sortedData","useSelection","options","onSelectionChange","selectedIds","includes","every","rows_0","selectedCount","row_0","id_0","currentSelected","newSelected","s","toggleRow","rows_1","currentSelected_0","rowIds","_temp3","newSelected_0","id_1","id_2","Set","toggleAll","ids","currentSelected_1","newSelected_1","selectRows","ids_0","newSelected_2","id_3","deselectRows","newSelected_3","clearSelection","row_1","TableSkeleton","TableRow","from","__0","rowIndex","__1","colIndex","Skeleton","_","index","sanitizeTableRow","sanitized","entries","sanitizeTableData","styles","container","overflow","table","minWidth","headerCell","fontWeight","backgroundColor","theme","palette","background","paper","border","rowHover","action","hover","rowSelected","borderTop","divider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","names":["{\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps","{ 'aria-label': 'select all rows' }","<TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>","{ width: column.width }","width","() => onSort(column.id)","id","<TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>","label","sortDirection ?? 'asc'","<TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>","align","<TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>","{ children }: { children?: ReactNode }","<Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>","{ column, row, value }: CellProps","column.formatter(value, row)","<MuiTableCell align={column.align}>\n {column.formatter(value, row)}\n </MuiTableCell>","align","column.align","<ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>","<MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>","getCellValue(value)","<MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>","{\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps","isSelected = false","selectable = false","() => {\n onClick?.(row)\n }","(event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }","() => {\n onMouseEnter?.(row)\n }","() => {\n onMouseLeave?.()\n }","{\n cursor: onClick ? 'pointer' : 'default',\n }","onClick ? 'pointer' : 'default'","selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )","row.id","columns.map((column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n ))","(column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n )","<MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n ))}\n </MuiTableRow>","!!onMouseEnter || !!onMouseLeave || !!onClick","{\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps","(event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }","(event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }","event","(event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }","(event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }","{ flexShrink: 0, ml: 2.5 }","<FirstPageIcon />","<IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>","page === 0","<KeyboardArrowLeft />","<IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>","<KeyboardArrowRight />","<IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>","page >= lastPage","<LastPageIcon />","<IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>","<Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>","{\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps","rowsPerPageOptions = [5, 10, 25, 50]","(\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }","(\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }","<MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />","stickyHeader = true","{\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps","<MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>","<MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>","children","(w) => {\n const widget = w as TableWidgetState | undefined\n return {\n paginationEnabled: !!widget?.pagination,\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ?? DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n mode: widget?.mode,\n }\n }","length","(newPage: number) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentTotal = widget?.pagination?.total ?? data.length\n const currentRowsPerPage =\n widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE\n const currentMaxPage = Math.max(\n 0,\n Math.ceil(currentTotal / currentRowsPerPage) - 1,\n )\n const boundedPage = Math.max(0, Math.min(newPage, currentMaxPage))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n page: boundedPage,\n },\n })\n }","widget","useCallback(\n (newPage: number) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentTotal = widget?.pagination?.total ?? data.length\n const currentRowsPerPage =\n widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE\n const currentMaxPage = Math.max(\n 0,\n Math.ceil(currentTotal / currentRowsPerPage) - 1,\n )\n const boundedPage = Math.max(0, Math.min(newPage, currentMaxPage))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n page: boundedPage,\n },\n })\n },\n [data.length, widgetId],\n )","(newRowsPerPage: number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n rowsPerPage: newRowsPerPage,\n page: 0, // Reset to first page when changing rows per page\n },\n })\n }","useCallback(\n (newRowsPerPage: number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n rowsPerPage: newRowsPerPage,\n page: 0, // Reset to first page when changing rows per page\n },\n })\n },\n [widgetId],\n )","() => setPage(0)","useCallback(() => setPage(0), [setPage])","() => setPage(maxPage)","useCallback(() => setPage(maxPage), [setPage, maxPage])","() => setPage(page + 1)","useCallback(() => setPage(page + 1), [setPage, page])","() => setPage(page - 1)","useCallback(() => setPage(page - 1), [setPage, page])","useMemo(() => {\n if (mode === 'remote' || !paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, page, rowsPerPage)\n }, [data, mode, page, paginationEnabled, rowsPerPage])","paginateData(data, page, rowsPerPage)","{\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }","(w) => {\n const widget = w as TableWidgetState | undefined\n return {\n sortEnabled: !!widget?.sort,\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n mode: widget?.mode,\n }\n }","(toggleColumnId: string) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentColumnId = widget?.sort?.columnId ?? DEFAULT_COLUMN_ID\n const currentDirection = widget?.sort?.direction ?? DEFAULT_DIRECTION\n\n let newDirection: SortDirection = 'asc'\n\n if (currentColumnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc'\n }\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n }","widget","useCallback(\n (toggleColumnId: string) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentColumnId = widget?.sort?.columnId ?? DEFAULT_COLUMN_ID\n const currentDirection = widget?.sort?.direction ?? DEFAULT_DIRECTION\n\n let newDirection: SortDirection = 'asc'\n\n if (currentColumnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc'\n }\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )","(newColumnId: string | null, newDirection: SortDirection) => {\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n }","newDirection","useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )","() => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }","useCallback(() => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [widgetId])","useMemo(() => {\n if (mode === 'remote' || !columnId || !sortEnabled) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, columnId, direction)\n }, [data, mode, columnId, direction, sortEnabled])","sortData(data, columnId, direction)","{\n sortEnabled,\n columnId,\n direction,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }","options ?? {}","(w) => (w as TableWidgetState | undefined)?.selected","selected ?? []","useMemo(() => selected ?? [], [selected])","(id: string | number) => selectedIds.includes(id)","useCallback(\n (id: string | number) => selectedIds.includes(id),\n [selectedIds],\n )","(rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n }","useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n },\n [selectedIds],\n )","(rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n }","rows","row","useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )","(id: string | number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }","id","useCallback(\n (id: string | number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )","(rows: TableRow[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }","widget","currentSelected","(row) => row.id","newSelected","useCallback(\n (rows: TableRow[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )","(ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }","useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )","(ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }","ids","useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )","() => {\n const newSelected: (string | number)[] = []\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }","useCallback(() => {\n const newSelected: (string | number)[] = []\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }, [widgetId, onSelectionChange])","{\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }","{ columns = 4, rows = 5 }: TableSkeletonProps","columns = 4","rows = 5","<TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>","(_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n )","Array.from({ length: rows })","<TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>","(_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n )","<Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>"],"sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn, TableRow } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Full table row for context */\n row: TableRow\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, row, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value, row)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport { FirstPage as FirstPageIcon } from '@mui/icons-material'\nimport { KeyboardArrowLeft } from '@mui/icons-material'\nimport { KeyboardArrowRight } from '@mui/icons-material'\nimport { LastPage as LastPageIcon } from '@mui/icons-material'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\ninterface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const { ref } = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nconst DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Creates download configuration for table widgets, supporting PNG (screenshot) and CSV (data) exports. CSV output uses column keys as headers and filters out `id` fields.\n *\n * @param props - Configuration with `refUI` reference for PNG export.\n * @returns Array of download items for use with the Download action.\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for table widgets with pagination and sorting, including column definitions and local data mode.\n *\n * @param columns - Array of column definitions for the table.\n * @returns Default table widget config.\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n mode: DEFAULT_MODE,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Whether pagination is enabled */\n paginationEnabled: boolean\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination with support for both local (client-side) and remote (server-side) modes.\n * State is persisted in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist pagination state under.\n * @param data - The full data array (used for local pagination and total count fallback).\n * @returns Pagination state and navigation helpers.\n *\n * @example\n * ```tsx\n * const { page, setPage, paginatedData, totalPages } = usePagination(widgetId, data)\n * ```\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store state\n const {\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n mode,\n } = useWidgetSelector(widgetId, (w) => {\n const widget = w as TableWidgetState | undefined\n return {\n paginationEnabled: !!widget?.pagination,\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ?? DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n mode: widget?.mode,\n }\n })\n\n // Calculate max page\n const maxPage = Math.max(0, Math.ceil(total / (rowsPerPage ?? 1)) - 1)\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentTotal = widget?.pagination?.total ?? data.length\n const currentRowsPerPage =\n widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE\n const currentMaxPage = Math.max(\n 0,\n Math.ceil(currentTotal / currentRowsPerPage) - 1,\n )\n const boundedPage = Math.max(0, Math.min(newPage, currentMaxPage))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n page: boundedPage,\n },\n })\n },\n [data.length, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n rowsPerPage: newRowsPerPage,\n page: 0, // Reset to first page when changing rows per page\n },\n })\n },\n [widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(() => setPage(page + 1), [setPage, page])\n const goToPreviousPage = useCallback(() => setPage(page - 1), [setPage, page])\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote' || !paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, page, rowsPerPage)\n }, [data, mode, page, paginationEnabled, rowsPerPage])\n\n return {\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortResult<T> extends SortState {\n /** Whether sorting is enabled */\n sortEnabled: boolean\n /** Current sort state */\n columnId: string | null\n direction: SortDirection\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting with support for both local (client-side) and remote (server-side) modes.\n * State is persisted in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist sort state under.\n * @param data - The data array to sort (for local mode).\n * @returns Sort state, sorted data, and sort control functions.\n *\n * @example\n * ```tsx\n * const { sortedData, sortField, sortDirection, handleSort } = useSort(widgetId, data)\n * ```\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UseSortResult<T> {\n // Get store state\n const { sortEnabled, columnId, direction, mode } = useWidgetSelector(\n widgetId,\n (w) => {\n const widget = w as TableWidgetState | undefined\n return {\n sortEnabled: !!widget?.sort,\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n mode: widget?.mode,\n }\n },\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentColumnId = widget?.sort?.columnId ?? DEFAULT_COLUMN_ID\n const currentDirection = widget?.sort?.direction ?? DEFAULT_DIRECTION\n\n let newDirection: SortDirection = 'asc'\n\n if (currentColumnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc'\n }\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (mode === 'remote' || !columnId || !sortEnabled) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, columnId, direction)\n }, [data, mode, columnId, direction, sortEnabled])\n\n return {\n sortEnabled,\n columnId,\n direction,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: (string | number)[]) => void\n}\n\nexport interface UseSelectionResult {\n /** Array of selected row IDs */\n selectedIds: (string | number)[]\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection with persistence across pagination.\n * Selection state is stored in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist selection state under.\n * @param options - Optional configuration including an `onSelectionChange` callback.\n * @returns Selection state and control functions (toggle, select, deselect, clear).\n *\n * @example\n * ```tsx\n * const { selectedIds, isAllSelected, handleSelectRow, clearSelection } = useSelection(widgetId)\n * ```\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store state\n const selected = useWidgetSelector(\n widgetId,\n (w) => (w as TableWidgetState | undefined)?.selected,\n )\n\n // Use store values with fallback to empty array\n const selectedIds = useMemo(() => selected ?? [], [selected])\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.includes(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSelected: (string | number)[] = []\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }, [widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"mappings":";;;;;;;;;;AAMA,SAAgB,EAAA,GAQI;gBARO,EACzB,WACA,cACA,WACA,gBACA,kBACA,oBACA,mBAPyBA;CAUzB,IAAI,GAAa;EAOGC,IAAAA;sDAAE,IAAA,EAAA,cAAc,kBAAkB;EALlDC,IAAAA;EADF,OAGe,EAAA,OAAA,KAAA,EAAA,OACM,KAAA,EAAA,OACL,KAJd,IAAA,kBAAC,GAAD;GAAW,SAAQ;GACjB,UAAA,kBAAC,GAAD;IACE,SAAS;IACT,eAAe;IACf,UAAU;IACV,YAAYD;GACb,CAAA;EACQ,CAAA,GALE,EAAA,KAAA,GACM,EAAA,KAAA,GACL,EAAA,KAAA,yBAJdC;CASJ;CAEA,IAAM,IAAW,GAAW,aAAa,EAAO,IAC1C,IAAgB,IAAW,EAAU,YAAY,KAAA;CAGvD,IAAI,EAAO,YAAY,GAAQ;EAIlBC,IAAAA;EAAgBC,AAAAA,EAAAA,OAAAA,EAAAA,oBAAhB,IAAA,EAAE,OAAO,EAAO,MAAM,GAANA,EAAAA,KAAAA,EAAAA;EAKV,IAAA,IAAA,KAAiB,OACnBC;EAAoBC,AAAAA,EAAAA,OAAAA,EAAAA,MAAAA,EAAAA,OAAd,KAAN,UAAM,EAAO,EAAO,EAAE,GAAFA,EAAAA,KAAAA,EAAAA,IAAd,EAAA,KAAA;EAHjBC,IAAAA;EAKUC,AAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,QAJA,KAAA,EAAA,QACGC,KAAAA,EAAAA,QACFJ,KAHX,IAAA,kBAAC,GAAD;GACE,QAAQ;GACR,WAAWI;GACX,SAASJ;GAER,UAAA,EAAO;EACM,CAAA,GADNG,EAAAA,MAAAA,EAAAA,OAJA,EAAA,MAAA,GACGC,EAAAA,MAAAA,GACFJ,EAAAA,MAAAA;EARbK,IAAAA;EADF,OAEkBC,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,QAEC,KAAA,EAAA,QADRR,KAAAA,EAAAA,QAGPI,KALF,IAAA,kBAAC,GAAD;GACE,OAAO,EAAO;GACd,OAAOJ;GACQ;GAEfI,UAAAA;EAOS,CAAA,GAXKI,EAAAA,MAAAA,EAAAA,OAEC,EAAA,MAAA,GADRR,EAAAA,MAAAA,GAGPI,EAAAA,MAAAA,2BALFG;CAcJ;CAIyCP,IAAAA;CAAgBC,AAAAA,EAAAA,QAAAA,EAAAA,qBAAhB,IAAA,EAAE,OAAO,EAAO,MAAM,GAANA,EAAAA,MAAAA,EAAAA;CAAvDQ,IAAAA;CADF,OAC2BD,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,QACfH,EAAAA,SAAAA,EAAAA,QAD6BL,KAAvC,IAAA,kBAAC,GAAD;EAAW,OAAO,EAAO;EAAO,OAAOA;EACpC,UAAA,EAAO;CACC,CAAA,GAFcQ,EAAAA,MAAAA,EAAAA,OACfH,EAAAA,MAAAA,EAAAA,OAD6BL,EAAAA,MAAAA,2BAAvCS;AAIJ;;;AC/CA,SAAgB,EAAgB,GAAyB;CAoBvD,OAlBI,KAAc,OACT,KAIL,MAAM,QAAQ,CAAS,IAIlB,IAHW,EACf,KAAK,MAAU,OAAO,KAAS,WAAW,IAAI,EAAK,KAAK,OAAO,CAAI,CAAE,CAAC,CACtE,KAAK,IACG,EAAU,KAInB,OAAO,KAAc,WAChB,KAAK,UAAU,CAAS,IAI1B;AACT;AAWA,SAAgB,EACd,GACA,GACA,GACQ;CAER,IAAI,KAAM,MAAyB,OAAO;CAC1C,IAAI,KAAM,MAAyB,OAAO;CAE1C,IAAI,IAAa;CAEjB,IAAI,OAAO,KAAM,YAAY,OAAO,KAAM,UACxC,IAAa,EAAE,cAAc,CAAC;MACzB,IAAI,OAAO,KAAM,YAAY,OAAO,KAAM,UAC/C,IAAa,IAAI;MACZ,IAAI,OAAO,KAAM,aAAa,OAAO,KAAM,WAChD,IAAa,MAAM,IAAI,IAAI,IAAI,IAAI;MAC9B,IAAI,OAAO,KAAM,YAAY,OAAO,KAAM,UAAU;EAEzD,IAAM,IAAO,KAAK,UAAU,CAAC,GACvB,IAAO,KAAK,UAAU,CAAC;EAC7B,IAAa,EAAK,cAAc,CAAI;CACtC,OAEE,IAAa;CAGf,OAAO,MAAc,QAAQ,IAAa,CAAC;AAC7C;AAUA,SAAgB,EACd,GACA,GACA,GACK;CACL,OAAO,CAAC,GAAG,CAAI,CAAC,CAAC,MAAM,GAAG,MACxB,EAAc,EAAE,IAAW,EAAE,IAAW,CAAS,CACnD;AACF;AAUA,SAAgB,EACd,GACA,GACA,GACK;CACL,IAAM,IAAQ,IAAO,GACf,IAAM,IAAQ;CACpB,OAAO,EAAK,MAAM,GAAO,CAAG;AAC9B;;;ACxFA,IAAM,KAAA,MAAa;eAAE,EAAA,gBAAFC,GACjBC;CAAAA,OACG,EAAA,OAAA,gBADH,IAAA,kBAAC,GAAD;EAAY,WAAU;EAAO,SAAQ;EAAQ,OAAM;EAChD;CACS,CAAA,GADT,EAAA,KAAA,cADHA;AADsD,GAUlD,IAAuC;CAC3C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,IAAI,EAAE,aAAU,cAAW;EACzB,IAAM,IAAa,GAAM,WAAW,MAAM;EAC1C,OACE,kBAAC,GAAD;GACQ;GACN,QAAQ,IAAa,WAAW,KAAA;GAChC,KAAK,IAAa,wBAAwB,KAAA;GAC1C,OAAM;GACN,WAAU;GAET;EACG,CAAA;CAEV;CACA,WAAW;CACX,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAOA,SAAgB,EAAA,GAAwC;gBAAnC,EAAE,WAAQ,QAAK,aAAfC;CAEnB,IAAI,EAAO,WAAW;EAEG,IAAA,IAAA,EAAO,OACzBC;EAAwB,AAAA,EAAA,OAAA,KAAA,EAAA,OAAA,KAAA,EAAA,OAAP,KAAjB,IAAA,EAAO,UAAU,GAAO,CAAG,GAA3B,EAAA,KAAA,GAAwB,EAAA,KAAA,GAAP,EAAA,KAAA;EADpBC,IAAAA;EADF,OAC8BC,EAAAA,OAAAA,EAAAA,SAAAA,EAAAA,OACzBF,KADH,IAAA,kBAAC,GAAD;GAAc,OAAOG;GAClBH,UAAAA;EACW,CAAA,GAFcE,EAAAA,KAAAA,EAAAA,OACzBF,EAAAA,KAAAA,yBADHC;CAIJ;CAGA,IAAI,OAAO,KAAU,UAAU;EAGzBG,IAAAA;EACG,AAAA,EAAA,OAAA,gBADH,IAAA,kBAAC,GAAD;GAAe,YAAY;GACxB,UAAA;EACY,CAAA,GADZ,EAAA,KAAA;EAFLC,IAAAA;EADF,OAC8BH,EAAAA,OAAAA,EAAAA,SAAAA,EAAAA,QAC1BE,KADF,IAAA,kBAAC,GAAD;GAAc,OAAO,EAAO;GAC1BA,UAAAA;EAGY,CAAA,GAJcF,EAAAA,KAAAA,EAAAA,OAC1BE,EAAAA,MAAAA,2BADFC;CAMJ;CAG4B,IAAA,IAAA,EAAO,OAAQC;CAAa,AAAA,EAAA,QAAA,iBAAb,IAAA,EAAa,CAAK,GAAL,EAAA,MAAA;CAAjDC,IAAAA;CAAP,OAAmCL,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,QAAQI,KAApC,IAAA,kBAAC,GAAD;EAAc,OAAOH;EAAeG,UAAAA;CAAkC,CAAA,GAA1CJ,EAAAA,MAAAA,EAAAA,OAAQI,EAAAA,MAAAA,2BAApCC;AACT;;;AC1EA,SAAgB,EAAA,GASH;gBATO,EAClB,QACA,YACA,YAAA,GACA,YAAA,GACA,YACA,aACA,iBACA,oBARkBC,GAGlB,IAAA,MAAA,KAAA,KAAAC,GACA,IAAA,MAAA,KAAA,KAAAC,GAMoBC;CAClB,AAAA,EAAA,OAAA,KAAA,EAAA,OAAU,KADQ,UAAM;EACxB,IAAU,CAAG;CACf,GADE,EAAA,KAAA,GAAU,EAAA,KAAA;CADZ,IAAM,IAAcA,GAIQC;CAE1B,AAAA,EAAA,OAAA,KAAA,EAAA,OAAW,KAFe,KAAC,MAA4B;EAEvD,AADA,EAAM,gBAAgB,GACtB,IAAW,CAAG;CAChB,GADE,EAAA,KAAA,GAAW,EAAA,KAAA;CAFb,IAAM,IAAsBA,GAKHC;CACvB,AAAA,EAAA,OAAA,KAAA,EAAA,OAAe,KADQ,UAAM;EAC7B,IAAe,CAAG;CACpB,GADE,EAAA,KAAA,GAAe,EAAA,KAAA;CADjB,IAAM,IAAmBA,GAIAC;CACvB,AAAA,EAAA,OAAA,iBADuB,UAAM;EAC7B,IAAe;CACjB,GADE,EAAA,KAAA;CADF,IAAM,IAAmBA,GAMd,IAAA,CAAC,CAAC,KAAgB,CAAC,CAAC,KAAgB,CAAC,CAAC,GAMnC,IAAA,IAAU,YAAY,WAD5BC;CACMC,AAAAA,EAAAA,QAAAA,iBADN,IAAA,EACF,QAAQA,EACV,GADUA,EAAAA,MAAAA;CAGTC,IAAAA;CAIc,AAAA,EAAA,QAAA,KAAA,EAAA,QADA,KAAA,EAAA,QAEiCC,KAAAA,EAAAA,QAL/C,KACC,IAAA,KAAA,kBAAC,GAAD;EAAW,SAAQ;EACjB,UAAA,kBAAC,GAAD;GACE,SAAS;GACT,SAAS;GACT,YAAY,EAAE,cAAc,cAAc,EAAI,KAAK;EACpD,CAAA;CACQ,CAAA,GAHE,EAAA,MAAA,GADA,EAAA,MAAA,GAEiCA,EAAAA,MAAAA,GAL/C,EAAA,MAAA;CASAC,IAAAA;CAKU,IAAA,EAAA,QAAA,KAAA,EAAA,QAAA,GAAA;EALEC,IAAAA;EAKF,EAAA,QAAA,iBALE,KAAC,MACZ,kBAAC,GAAD;GAEO;GACG;GACR,OAAO,EAAI,EAAO;EACnB,GAJM,EAAO,EAIb,GADQ,EAAA,MAAA,eALV,IAAA,EAAQ,IAAIA,CAOZ,GAPA,EAAA,MAAA,GAKU,EAAA,MAAA;;CAxBbC,IAAAA;CADF,OAIa,EAAA,QAAA,KAAA,EAAA,QACK,KAAA,EAAA,QACA,KAAA,EAAA,QAHJ,KAAA,EAAA,QAQTJ,KAAAA,EAAAA,QASAE,KAAAA,EAAAA,QAlBMG,KAAAA,EAAAA,QAKHP,KANN,IAAA,kBAAC,GAAD;EACE,OAAOO;EACP,UAAU;EACV,SAAS;EACT,cAAc;EACd,cAAc;EACd,IAAIP;EANN,UAAA,CAUGE,GASAE,CAQU;KAxBF,EAAA,MAAA,GACK,EAAA,MAAA,GACA,EAAA,MAAA,GAHJ,EAAA,MAAA,GAQTF,EAAAA,MAAAA,GASAE,EAAAA,MAAAA,GAlBMG,EAAAA,MAAAA,GAKHP,EAAAA,MAAAA,2BANNM;AA6BJ;;;ACtDA,SAAgB,EAAA,GAKW;gBALO,EAChC,UACA,SACA,gBACA,oBAJgCE,GAM1B,IAAW,KAAK,IAAI,GAAG,KAAK,KAAK,IAAQ,CAAW,IAAI,CAAC,GAEvCC;CACtB,AAAA,EAAA,OAAA,gBADsB,KAAC,MAA+C;EACtE,EAAa,GAAO,CAAC;CACvB,GADE,EAAA,KAAA;CADF,IAAM,IAAkBA,GAIGC;CACzB,AAAA,EAAA,OAAA,KAAA,EAAA,OAAoB,KADK,KAAC,MAA+C;EACzE,EAAaC,GAAO,IAAO,CAAC;CAC9B,GADE,EAAA,KAAA,GAAoB,EAAA,KAAA;CADtB,IAAM,IAAqBD,GAIJE;CACrB,AAAA,EAAA,OAAA,KAAA,EAAA,OAAoB,KADC,KAAC,MAA+C;EACrE,EAAaD,GAAO,IAAO,CAAC;CAC9B,GADE,EAAA,KAAA,GAAoB,EAAA,KAAA;CADtB,IAAM,IAAiBC,GAIAC;CACD,AAAA,EAAA,OAAA,KAAA,EAAA,OAApB,KADqB,KAAC,MAA+C;EACrE,EAAaF,GAAO,CAAQ;CAC9B,GADsB,EAAA,KAAA,GAApB,EAAA,KAAA;CADF,IAAM,IAAiBE,GAKZC;;EAAE,YAAY;EAAG,IAAI;CAAI;CAGpB,IAAA,IAAA,MAAS,GAGnBC;sDAAC,IAAA,kBAAA,GAAD,CAAgB,CAAA;CALlBC,IAAAA;CACW,AAAA,EAAA,QAAA,KAAA,EAAA,QACCC,KAFZ,IAAA,kBAAC,GAAD;EACE,SAAS;EACT,UAAUA;EACV,cAAW;EAEXF,UAAAA;CACU,CAAA,GALD,EAAA,MAAA,GACCE,EAAAA,MAAAA;CAOA,IAAA,IAAA,MAAS,GAGnBC;sDAAC,IAAA,kBAAA,GAAD,CAAoB,CAAA;CALtBC,IAAAA;CACW,AAAA,EAAA,QAAA,KAAA,EAAA,QACCF,KAFZ,IAAA,kBAAC,GAAD;EACE,SAAS;EACT,UAAUA;EACV,cAAW;EAEXC,UAAAA;CACU,CAAA,GALD,EAAA,MAAA,GACCD,EAAAA,MAAAA;CAOA,IAAA,IAAA,KAAQ,GAGlBG;sDAAC,IAAA,kBAAA,GAAD,CAAqB,CAAA;CALvBC,IAAAA;CACW,AAAA,EAAA,QAAA,KAAA,EAAA,QACCC,KAFZ,IAAA,kBAAC,GAAD;EACE,SAAS;EACT,UAAUA;EACV,cAAW;EAEXF,UAAAA;CACU,CAAA,GALD,EAAA,MAAA,GACCE,EAAAA,MAAAA;CAOA,IAAA,IAAA,KAAQ,GAGlBC;sDAAC,IAAA,kBAAA,GAAD,CAAe,CAAA;CALjBC,IAAAA;CACW,AAAA,EAAA,QAAA,KAAA,EAAA,QACCF,KAFZ,IAAA,kBAAC,GAAD;EACE,SAAS;EACT,UAAUA;EACV,cAAW;EAEXC,UAAAA;CACU,CAAA,GALD,EAAA,MAAA,GACCD,EAAAA,MAAAA;CAxBdG,IAAAA;CADF,OASIN,EAAAA,QAAAA,KAAAA,EAAAA,QAOAE,KAAAA,EAAAA,QAOAG,KAAAA,EAAAA,QArBAR,KADF,IAAA,kBAAC,GAAD;EAAK,IAAIF;EAAT,UAAA;GACEE;GAOAG;GAOAE;GAOAG;EAOG;KArBHL,EAAAA,MAAAA,GAOAE,EAAAA,MAAAA,GAOAG,EAAAA,MAAAA,GArBAR,EAAAA,MAAAA,2BADFS;AA+BJ;;;AC3DA,SAAgB,EAAA,GAOI;gBAPO,EACzB,SACA,gBACA,UACA,oBAAA,GACA,iBACA,2BANyBC,GAIzBC;0BAAqB,IAAA,MAAA,KAAA,IAAA;EAAC;EAAG;EAAI;EAAI;CAAE,IAAnCA;YAIyBC;CAIvB,AAAA,EAAA,OAAA,gBAJuB,KACvB,GACA,MACG;EACH,EAAa,CAAO;CACtB,GADE,EAAA,KAAA;CAJF,IAAM,IAAmBA,GAOOC;CAG9B,AAAA,EAAA,OAAA,gBAH8B,KAC9B,MACG;EACH,EAAoB,SAAS,EAAM,OAAO,OAAO,EAAE,CAAC;CACtD,GADE,EAAA,KAAA;CAHF,IAAM,IAA0BA,GAO9BC;CADF,OAOkB,EAAA,OAAA,KAAA,EAAA,OACO,KAAA,EAAA,OAJf,KAAA,EAAA,OACO,KAAA,EAAA,QACO,KAAA,EAAA,QAHb,KAFT,IAAA,kBAAC,GAAD;EACE,WAAU;EACV,OAAO;EACD;EACO;EACO;EACpB,cAAc;EACd,qBAAqB;EACrB,kBAAkB;CACnB,CAAA,GAHe,EAAA,KAAA,GACO,EAAA,KAAA,GAJf,EAAA,KAAA,GACO,EAAA,KAAA,GACO,EAAA,MAAA,GAHb,EAAA,MAAA,2BAFTA;AAWJ;;;ACXA,SAAS,EAAA,GAKe;gBAJtB,GAGG,GAFH,GACAC;CAHaC,AAAAA,EAAAA,OAAAA,gDACb,sBAEA,cAAA,GACA,GAAA,KAJaA;CAGb,IAAA,IAAA,MAAA,KAAA,KAAAD,GAIEE;CADF,OAEK,EAAA,OAAA,KAAA,EAAA,OADiD,KAAA,EAAA,OAAT,KAAA,EAAA,OAAnB,KAAxB,IAAA,kBAAC,GAAD;EAAwB;EAAmB;EAAK,GAAI;EACjD;CACO,CAAA,GADP,EAAA,KAAA,GADiD,EAAA,KAAA,GAAT,EAAA,KAAA,GAAnB,EAAA,KAAA,yBAAxBA;AAIJ;AAGA,EAAM,OAAO,GACb,EAAM,aAAa,GACnB,EAAM,OAAO,GACb,EAAM,MAAM,GACZ,EAAM,OAAO,GACb,EAAM,YAAY,GAClB,EAAM,QAAQ,GACd,EAAM,aAAa,GACnB,EAAM,oBAAoB;AAQ1B,SAAS,EAAe,GAAqB;eACrC,EAAE,WAAQ,EAA6B,EAAM,EAAE,GAE9CC;CAAP,OAA2CC,EAAAA,OAAAA,EAAAA,YAAAA,EAAAA,OAAZ,KAAxB,IAAA,kBAAC,GAAD;EAAwB;EAAM,UAAA,EAAM;CAA4B,CAAA,GAA5BA,EAAAA,KAAAA,EAAAA,UAAZ,EAAA,KAAA,yBAAxBD;AACT;;;ACrDA,IAAM,IAAqB,SAGd,IAAgC;CAAC;CAAG;CAAI;CAAI;AAAE;AAW3D,SAAgB,EAAoB,EAClC,YACmC;CACnC,OAAO,CACL;EACE,GAAG;EACH,gBAAgB,EAAc,SAAS,CAAK;CAC9C,GACA;EACE,GAAG;EACH,UAAU,OAAO,MAAS;GACxB,IAAI,CAAC,GAAM,QACT,OAAO,EAAc,SAAS,CAAC,CAAC;GAKlC,IAAM,IAAW,EAAK;GACtB,IAAI,CAAC,GACH,OAAO,EAAc,SAAS,CAAC,CAAC;GAGlC,IAAM,IAAU,OAAO,KAAK,CAAQ,CAAC,CAAC,QAAQ,MAAQ,MAAQ,IAAI,GAC5D,IAAO,EAAK,KAAK,MACrB,EAAQ,KAAK,MAAW;IACtB,IAAM,IAAQ,EAAI;IAGlB,OAFI,KAAU,OAAoC,KAC9C,OAAO,KAAU,WAAiB,KAAK,UAAU,CAAK,IACnD;GACT,CAAC,CACH;GAEA,OAAO,EAAc,SAAS,CAAC,GAAS,GAAG,CAAI,CAAC;EAClD;CACF,CACF;AACF;AAQA,SAAgB,EAAY,IAAyB,CAAC,GAAsB;CAC1E,OAAO;EACL;EACA,YAAY;EACZ,MAAM;CACR;AACF;;;ACvBA,SAAgB,EACd,GACA,GACwB;gBASQE;CAQaC,AAAAA,EAAAA,OAAAA,EAAAA,qBARb,KAAC,MAAM;EACrC,IAAM,IAAS;EACf,OAAO;GACL,mBAAmB,CAAC,CAAC,GAAQ;GAC7B,MAAM,GAAQ,YAAY,QAAA;GAC1B,aAAa,GAAQ,YAAY,eAAA;GACjC,oBACE,GAAQ,YAAY,sBAAsB;GAC5C,OAAO,GAAQ,YAAY,SAAS,EAAK;GACzC,MAAM,GAAQ;EAChB;CACF,GAH6CA,EAAAA,KAAAA,EAAAA;CAf7C,IAAM,EACJ,sBACA,SACA,gBACA,uBACA,UACA,YACE,EAAkB,GAAUD,CAW/B,GAGK,IAAU,KAAK,IAAI,GAAG,KAAK,KAAK,KAAS,KAAe,EAAE,IAAI,CAAC,GAInEE;CAGyDD,AAAAA,EAAAA,OAAAA,EAAAA,UAAAA,EAAAA,OADO,KAFhE,KAAC,MAAoB;EAEnB,IAAME,IAAS,EAAmB,UAA4B,CAAQ,GAChE,IAAeA,GAAQ,YAAY,SAAS,EAAK,QACjD,IACJA,GAAQ,YAAY,eAAA,IAChB,IAAiB,KAAK,IAC1B,GACA,KAAK,KAAK,IAAe,CAAkB,IAAI,CACjD,GACM,IAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAS,CAAc,CAAC;EAEjE,EAAmB,UAA4B,GAAU,EACvD,YAAY;GACV,GAAGA,GAAQ;GACX,MAAM;EACR,EACF,CAAC;CACH,GAfyDF,EAAAA,KAAAA,EAAAA,QADO,EAAA,KAAA;CAHlE,IAAM,IAAUG,GAyBdC;CACgE,AAAA,EAAA,OAAA,gBADhE,KAAC,MAA2B;EAC1B,IAAMF,IAAS,EAAmB,UAA4B,CAAQ;EACtE,EAAmB,UAA4B,GAAU,EACvD,YAAY;GACV,GAAGA,GAAQ;GACX,aAAa;GACb,MAAM;EACR,EACF,CAAC;CACH,GARgE,EAAA,KAAA;CAFlE,IAAM,IAAiBG,GAeWC;CAAM,AAAA,EAAA,OAAA,gBAAN,UAAM,EAAQ,CAAC,GAAT,EAAA,KAAA;CAAxC,IAAM,IAAgBC,GACWC;CAAc,AAAA,EAAA,OAAA,KAAA,EAAA,QAAR,KAAN,UAAM,EAAQ,CAAO,GAAP,EAAA,KAAA,GAAR,EAAA,MAAA;CAAvC,IAAM,IAAeC,GACYC;CAAc,AAAA,EAAA,QAAA,KAAA,EAAA,QAAR,KAAN,UAAM,EAAQ,IAAO,CAAC,GAAR,EAAA,MAAA,GAAR,EAAA,MAAA;CAAvC,IAAM,IAAeC,GACgBC;CAAc,AAAA,EAAA,QAAA,KAAA,EAAA,QAAR,KAAN,UAAM,EAAQ,IAAO,CAAC,GAAR,EAAA,MAAA,GAAR,EAAA,MAAA;CAA3C,IAAM,IAAmBC,GAGHC;;EACpB,IAAI,MAAS,YAAY,CAAC,GAAmB;GAE3C,IAAO;GAAP,MAAA;EACF;EACOC,IAAAA;EAAP,AAAoB,EAAA,QAAA,KAAA,EAAA,QAAM,KAAA,EAAA,QAAM,KAAzB,IAAA,EAAa,GAAM,GAAM,CAAW,GAAvB,EAAA,MAAA,GAAM,EAAA,MAAA,GAAM,EAAA,MAAA,2BAAhC,IAAOA;;CALT,IAAM,IAAgBD,GAQfE;CAAP,OASE,EAAA,QAAA,KAAA,EAAA,QACA,KAAA,EAAA,QACA,KAAA,EAAA,QACA,KAAA,EAAA,QAVA,KAAA,EAAA,QAIA,KAAA,EAAA,QALA,KAAA,EAAA,QAEA,KAAA,EAAA,QACA,KAAA,EAAA,QAGA,KAAA,EAAA,QACA,KAAA,EAAA,QAHA,KALK,IAAA;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,GAJE,EAAA,MAAA,GACA,EAAA,MAAA,GACA,EAAA,MAAA,GACA,EAAA,MAAA,GAVA,EAAA,MAAA,GAIA,EAAA,MAAA,GALA,EAAA,MAAA,GAEA,EAAA,MAAA,GACA,EAAA,MAAA,GAGA,EAAA,MAAA,GACA,EAAA,MAAA,GAHA,EAAA,MAAA,2BALKA;AAcT;;;AC1GA,SAAgB,EACd,GACA,GACkB;gBAEZ,EAAE,gBAAa,aAAU,cAAW,YAAS,EACjD,GACAC,CASF,GAIEC;CAEgE,AAAA,EAAA,OAAA,gBAFhE,KAAC,MAA2B;EAE1B,IAAMC,IAAS,EAAmB,UAA4B,CAAQ,GAChE,IAAkBA,GAAQ,MAAM,YAAA,MAChC,IAAmBA,GAAQ,MAAM,aAAA,OAEnC,IAA8B;EAOlC,AALI,MAAoB,MAEtB,IAAe,MAAqB,QAAQ,SAAS,QAGvD,EAAmB,UAA4B,GAAU,EACvD,MAAM;GACJ,UAAU;GACV,WAAW;EACb,EACF,CAAC;CACH,GAjBgE,EAAA,KAAA;CAHlE,IAAM,IAAaC,GA0BjBC;CACiD,AAAA,EAAA,OAAA,gBADjD,KAAC,GAA4B,MAAgC;EAC3D,EAAmB,UAA4B,GAAU,EACvD,MAAM;GACJ,UAAU;GACV,WAAWC;EACb,EACF,CAAC;CACH,GANiD,EAAA,KAAA;CAFnD,IAAM,IAAUC,GAacC;CACkC,AAAA,EAAA,OAAA,gBADlC,UAAM;EAClC,IAAML,IAAS,EAAmB,UAA4B,CAAQ;EACjEA,GAAQ,QAEb,EAAmB,UAA4B,GAAU,EACvD,MAAM;GACJ,GAAGA,EAAO;GACV,UAAU;GACV,WAAW;EACb,EACF,CAAC;CACH,GAVgE,EAAA,KAAA;CADhE,IAAM,IAAYM,GAcCC;;EACjB,IAAI,MAAS,YAAY,CAAC,KAAY,CAAC,GAAa;GAGlD,IAAO;GAAP,MAAA;EACF;EACOC,IAAAA;EAAP,AAAsB,EAAA,OAAA,KAAA,EAAA,OAAN,KAAA,EAAA,OAAgB,KAAzB,IAAA,EAAS,GAAM,GAAU,CAAS,GAAnB,EAAA,KAAA,GAAN,EAAA,KAAA,GAAgB,EAAA,KAAA,yBAAhC,IAAOA;;CANT,IAAM,IAAaD,GASZE;CAAP,OAOE,EAAA,QAAA,KAAA,EAAA,QALA,KAAA,EAAA,QACA,KAAA,EAAA,QAGA,KAAA,EAAA,QALA,KAAA,EAAA,QAGA,KAAA,EAAA,QACA,KALK,IAAA;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF,GADE,EAAA,MAAA,GALA,EAAA,MAAA,GACA,EAAA,MAAA,GAGA,EAAA,MAAA,GALA,EAAA,MAAA,GAGA,EAAA,MAAA,GACA,EAAA,MAAA,2BALKA;AAST;AAlFI,SAAA,EAAC,GAAM;CACL,IAAM,IAAS;CACf,OAAO;EACL,aAAa,CAAC,CAAC,GAAQ;EACvB,UAAU,GAAQ,MAAM,YAAA;EACxB,WAAW,GAAQ,MAAM,aAAA;EACzB,MAAM,GAAQ;CAChB;AACF;;;ACZJ,SAAgB,EACd,GACA,GACoB;gBACUC;0BAAW,IAAA,KAAA,CAAC,GAAZ,EAAA,KAAA;CAA9B,IAAM,EAAE,yBAAsBA,GAGxB,IAAW,EACf,GACAC,CACF,GAGkCC;0BAAY,IAAA,KAAA,CAAC,GAAb,EAAA,KAAA;CAAlC,IAAM,IAAcC,GAIlBC;CAAyB,AAAA,EAAA,OAAA,gBAAzB,KAAC,MAAwB,EAAY,SAAS,CAAE,GAAvB,EAAA,KAAA;CAD3B,IAAM,IAAaC,GAOjBC;CAE6B,AAAA,EAAA,OAAA,gBAF7B,KAAC,MACK,EAAK,WAAW,KACb,EAAK,OAAO,MAAQ,EAAY,SAAS,EAAI,EAAE,CAAC,GAA5B,EAAA,KAAA;CAH/B,IAAM,IAAgBC,GAUpBC;CAGI,AAAA,EAAA,OAAA,gBAHJ,KAAC,MAAqB;EACpB,IAAIC,EAAK,WAAW,GAAG,OAAO;EAC9B,IAAM,IAAgBA,EAAK,QAAQ,MACjC,EAAY,SAASC,EAAI,EAAE,CAC7B,CAAC,CAAC;EACF,OAAO,IAAgB,KAAK,IAAgBD,EAAK;CACnD,GAHI,EAAA,KAAA;CAJN,IAAM,IAAkBE,GAatBC;CAYM,AAAA,EAAA,QAAA,KAAA,EAAA,QAX0D,KADhE,KAAC,MAAwB;EAEvB,IAAM,IADS,EAAmB,UAA4B,CACtC,CAAA,EAAQ,YAAY,CAAC,GAEvC,IAAc,EAAgB,SAASC,CAAE,IAC3C,EAAgB,QAAQ,MAAM,MAAMA,CAAE,IACtC,CAAC,GAAG,GAAiBA,CAAE;EAM3B,AAJA,EAAmB,UAA4B,GAAU,EACvD,UAAU,EACZ,CAAC,GAEG,KACF,EAAkB,CAAW;CAEjC,GAHM,EAAA,MAAA,GAX0D,EAAA,MAAA;CAFlE,IAAM,IAAYC,GAsBhBC;CAeM,AAAA,EAAA,QAAA,KAAA,EAAA,QAd0D,KADhE,KAAC,MAAqB;EAEpB,IAAME,IADS,EAAmB,UAA4B,CACtCD,CAAAA,EAAQ,YAAY,CAAC,GAEvC,IAASP,EAAK,IAAIS,CAAe,GAGjCC,IAFc,EAAO,OAAO,MAAOF,EAAgB,SAASJ,CAAE,CAEhD,IAChBI,EAAgB,QAAQ,MAAO,CAAC,EAAO,SAASJ,CAAE,CAAC,IACnD,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAGI,GAAiB,GAAG,CAAM,CAAC,CAAC;EAMhD,AAJA,EAAmB,UAA4B,GAAU,EACvD,UAAUE,EACZ,CAAC,GAEG,KACF,EAAkBA,CAAW;CAEjC,GAHM,EAAA,MAAA,GAd0D,EAAA,MAAA;CAFlE,IAAM,IAAYC,GAyBhBC;CAUM,AAAA,EAAA,QAAA,KAAA,EAAA,QAT0D,KADhE,KAAC,MAA6B;EAE5B,IAAMJ,IADS,EAAmB,UAA4B,CACtCD,CAAAA,EAAQ,YAAY,CAAC,GAEvCG,IAAc,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAGF,GAAiB,GAAG,CAAG,CAAC,CAAC;EAM7D,AAJA,EAAmB,UAA4B,GAAU,EACvD,UAAUE,EACZ,CAAC,GAEG,KACF,EAAkBA,CAAW;CAEjC,GAHM,EAAA,MAAA,GAT0D,EAAA,MAAA;CAFlE,IAAM,IAAaG,GAoBjBC;CAUM,AAAA,EAAA,QAAA,KAAA,EAAA,QAT0D,KADhE,KAAC,MAA6B;EAI5B,IAAMJ,KAHS,EAAmB,UAA4B,CACtCH,CAAAA,EAAQ,YAAY,CAAC,EAAA,CAET,QAAQ,MAAO,CAACQ,EAAI,SAASX,CAAE,CAAC;EAMpE,AAJA,EAAmB,UAA4B,GAAU,EACvD,UAAUM,EACZ,CAAC,GAEG,KACF,EAAkBA,CAAW;CAEjC,GAHM,EAAA,MAAA,GAT0D,EAAA,MAAA;CAFlE,IAAM,IAAeM,GAmBcC;CAO7B,AAAA,EAAA,QAAA,KAAA,EAAA,QAJ2C,KAHd,UAAM;EACvC,IAAMP,IAAmC,CAAC;EAM1C,AAJA,EAAmB,UAA4B,GAAU,EACvD,UAAUA,EACZ,CAAC,GAEG,KACF,EAAkBA,CAAW;CAEjC,GAHM,EAAA,MAAA,GAJ2C,EAAA,MAAA;CAHjD,IAAM,IAAiBQ,GAYhBC;CAAP,OASE,EAAA,QAAA,KAAA,EAAA,QADA,KAAA,EAAA,QALA,KAAA,EAAA,QACA,KAAA,EAAA,QAFA,KAAA,EAAA,QAKA,KAAA,EAAA,QANA,KAAA,EAAA,QAKA,KAAA,EAAA,QADA,KALK,IAAA;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,GADE,EAAA,MAAA,GADA,EAAA,MAAA,GALA,EAAA,MAAA,GACA,EAAA,MAAA,GAFA,EAAA,MAAA,GAKA,EAAA,MAAA,GANA,EAAA,MAAA,GAKA,EAAA,MAAA,GADA,EAAA,MAAA,2BALKA;AAWT;AAhF8B,SAAA,EAAC,GAAA;CAAQlB,OAAAA,EAAI;;AA5DvC,SAAA,EAAC,GAAA;CAAO,OAAA,GAAoC;;;;ACjChD,SAAgB,EAAA,GAA6D;gBAA/C,EAAE,SAAA,GAAa,MAAA,MAAfmB,GAAE,IAAA,MAAA,KAAA,IAAU,IAAVC,GAAa,IAAA,MAAA,KAAA,IAAO,IAAPC,GAIrCC;CAE0B,AAAA,EAAA,OAAA,gBAF1B,IAAA,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UACG,MAAM,KAAK,EAAE,QAAQ,EAAQ,CAAC,CAAC,CAAC,IAAIC,EAIpC,EACO,CAAA,EACD,CAAA,GANe,EAAA,KAAA;CAQvBC,IAAAA;CAAqB,AAAA,EAAA,OAAA,gBAArB,IAAA,MAAM,KAAK,EAAE,QAAQ,EAAK,CAAC,GAAN,EAAA,KAAA;CADxBC,IAAAA;CAG4B,AAAA,EAAA,OAAA,KAAA,EAAA,OAFzBD,KADH,IAAA,kBAAC,GAAD,EAAA,UACGA,EAA6B,KAAK,GAAG,MACpC,kBAAC,GAAD,EAAA,UACG,MAAM,KAAK,EAAE,QAAQ,EAAQ,CAAC,CAAC,CAAC,IAAIE,CAIpC,EACO,GANK,CAML,CACX,EACQ,CAAA,GAPiB,EAAA,KAAA,GAFzBF,EAAAA,KAAAA;CAZPG,IAAAA;CADF,OAGML,EAAAA,OAAAA,KAAAA,EAAAA,OASAG,KAXJ,IAAA,kBAAC,GAAD;EAAK,cAAW;EACd,UAAA,kBAAC,GAAD,EAAA,UAAA,CACEH,GASAG,CAWK,EAAA,CAAA;CACJ,CAAA,GArBDH,EAAAA,KAAAA,GASAG,EAAAA,KAAAA,yBAXJE;AAyBJ;AAXmD,SAAA,EAAC,GAAG,GAAA;CACvC,OAAA,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,OAAM;EAAM,QAAQ;CAAK,CAAA,EAC1B,GAFK,CAEL;;AAbsB,SAAA,GAAC,GAAG,GAAA;CACvC,OAAA,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,OAAM;EAAM,QAAQ;CAAK,CAAA,EAC1B,GAFK,CAEL;;;;ACpBzB,SAAgB,EAAiB,GAAyB;CACxD,IAAM,IAAsB,EAAE,IAAI,EAAI,GAAG;CAEzC,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAG,GACvC,UAAQ,MAGZ;MACE,OAAO,KAAU,YACjB,OAAO,KAAU,YACjB,OAAO,KAAU,aACjB,MAAU,MAEV,EAAU,KAAO;OAGd,IAAI,MAAM,QAAQ,CAAK,KAAK,OAAO,KAAU,UAChD,IAAI;GAGF,AADA,KAAK,UAAU,CAAK,GACpB,EAAU,KAAO;EACnB,QAAQ;GACN,EAAU,KAAO,KAAA;EACnB;OAIA,EAAU,KAAO,KAAA;CAAA;CAIrB,OAAO;AACT;AAQA,SAAgB,GACd,GAC6B;CAC7B,OAAO,GAAM,IAAI,CAAgB;AACnC;;;ACnDA,IAAa,KAAS;CACpB,WAAW;EACT,OAAO;EACP,UAAU;CACZ;CACA,OAAO,EACL,UAAU,IACZ;CACA,YAAY;EACV,YAAY;EACZ,kBAAkB,MAAiB,EAAM,QAAQ,WAAW;CAC9D;CACA,KAAK,EACH,oCAAoC,EAClC,QAAQ,EACV,EACF;CACA,UAAU,EACR,WAAW,EACT,kBAAkB,MAAiB,EAAM,QAAQ,OAAO,MAC1D,EACF;CACA,aAAa;EACX,kBAAkB,MAAiB,EAAM,QAAQ,OAAO;EACxD,WAAW,EACT,kBAAkB,MAAiB,EAAM,QAAQ,OAAO,SAC1D;CACF;CACA,YAAY,EACV,YAAY,MAAiB,aAAa,EAAM,QAAQ,UAC1D;AACF"}
|