@carto/ps-react-ui 4.3.0-widgets.0 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{cjs-D9ro6BXv.js → cjs-D4KH3azB.js} +2 -2
- package/dist/{cjs-D9ro6BXv.js.map → cjs-D4KH3azB.js.map} +1 -1
- package/dist/components.js +59 -64
- package/dist/components.js.map +1 -1
- package/dist/error-B2IJ9d2h.js +38 -0
- package/dist/error-B2IJ9d2h.js.map +1 -0
- package/dist/exports-Cr43OCul.js +51 -0
- package/dist/exports-Cr43OCul.js.map +1 -0
- package/dist/lasso-tool-BwRzEW7k.js +534 -0
- package/dist/lasso-tool-BwRzEW7k.js.map +1 -0
- package/dist/no-data-C54XJt13.js +61 -0
- package/dist/no-data-C54XJt13.js.map +1 -0
- package/dist/note-t51drNe0.js +124 -0
- package/dist/note-t51drNe0.js.map +1 -0
- package/dist/options-D9wflre6.js +49 -0
- package/dist/options-D9wflre6.js.map +1 -0
- package/dist/row-DrHwXNvF.js +35 -0
- package/dist/row-DrHwXNvF.js.map +1 -0
- package/dist/series-D3Pc-kYX.js +91 -0
- package/dist/series-D3Pc-kYX.js.map +1 -0
- package/dist/{smart-tooltip-BSlcAkBM.js → smart-tooltip-BEtBaIdz.js} +2 -2
- package/dist/{smart-tooltip-BSlcAkBM.js.map → smart-tooltip-BEtBaIdz.js.map} +1 -1
- package/dist/styles-CCZnY17y.js +117 -0
- package/dist/styles-CCZnY17y.js.map +1 -0
- package/dist/tooltip-BDnrRKrp.js +25 -0
- package/dist/tooltip-BDnrRKrp.js.map +1 -0
- package/dist/types/components/measurement-tools/styles.d.ts +13 -4
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/use-debounce.d.ts +19 -0
- package/dist/types/hooks/use-widget-ref.d.ts +17 -0
- package/dist/types/widgets/_shared/chart-config/config-factory.d.ts +5 -11
- package/dist/types/widgets/_shared/chart-config/index.d.ts +1 -1
- package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +54 -8
- package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -0
- package/dist/types/widgets/actions/change-column/change-column.d.ts +16 -0
- package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +9 -0
- package/dist/types/widgets/actions/change-column/types.d.ts +19 -0
- package/dist/types/widgets/actions/download/download.d.ts +1 -1
- package/dist/types/widgets/actions/download/exports.d.ts +1 -1
- package/dist/types/widgets/actions/download/types.d.ts +3 -11
- package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
- package/dist/types/widgets/actions/fullscreen/styles.d.ts +6 -0
- package/dist/types/widgets/actions/fullscreen/types.d.ts +8 -9
- package/dist/types/widgets/actions/index.d.ts +14 -1
- package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +19 -0
- package/dist/types/widgets/actions/lock-selection/types.d.ts +36 -0
- package/dist/types/widgets/actions/relative-data/relative-data.d.ts +18 -0
- package/dist/types/widgets/actions/relative-data/style.d.ts +8 -0
- package/dist/types/widgets/actions/relative-data/types.d.ts +27 -0
- package/dist/types/widgets/actions/relative-data/utils.d.ts +9 -0
- package/dist/types/widgets/actions/relative-data/utils.test.d.ts +1 -0
- package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +18 -0
- package/dist/types/widgets/actions/searcher/searcher.d.ts +21 -0
- package/dist/types/widgets/actions/searcher/types.d.ts +64 -0
- package/dist/types/widgets/actions/shared/styles.d.ts +11 -0
- package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -0
- package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +16 -0
- package/dist/types/widgets/actions/stack-toggle/types.d.ts +25 -0
- package/dist/types/widgets/actions/zoom-toggle/index.d.ts +2 -0
- package/dist/types/widgets/actions/zoom-toggle/style.d.ts +13 -0
- package/dist/types/widgets/actions/zoom-toggle/types.d.ts +41 -0
- package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +18 -0
- package/dist/types/widgets/bar/config.d.ts +5 -4
- package/dist/types/widgets/bar/index.d.ts +2 -2
- package/dist/types/widgets/bar/types.d.ts +6 -12
- package/dist/types/widgets/category/category-ui.d.ts +2 -0
- package/dist/types/widgets/category/components/category-bar.d.ts +7 -0
- package/dist/types/widgets/category/components/category-legend.d.ts +6 -0
- package/dist/types/widgets/category/components/category-row-multi.d.ts +11 -0
- package/dist/types/widgets/category/components/category-row-other.d.ts +6 -0
- package/dist/types/widgets/category/components/category-row-single.d.ts +11 -0
- package/dist/types/widgets/category/components/index.d.ts +10 -0
- package/dist/types/widgets/category/config.d.ts +16 -0
- package/dist/types/widgets/category/index.d.ts +6 -0
- package/dist/types/widgets/category/skeleton.d.ts +1 -0
- package/dist/types/widgets/category/style.d.ts +120 -0
- package/dist/types/widgets/category/types.d.ts +34 -0
- package/dist/types/widgets/echart/echart-ui.d.ts +1 -1
- package/dist/types/widgets/echart/index.d.ts +2 -2
- package/dist/types/widgets/echart/options.d.ts +2 -3
- package/dist/types/widgets/echart/types.d.ts +13 -10
- package/dist/types/widgets/echart/utils.d.ts +22 -16
- package/dist/types/widgets/error/error.d.ts +2 -0
- package/dist/types/widgets/error/index.d.ts +2 -0
- package/dist/types/widgets/error/types.d.ts +12 -0
- package/dist/types/widgets/formula/components/row.d.ts +1 -1
- package/dist/types/widgets/formula/config.d.ts +4 -2
- package/dist/types/widgets/formula/index.d.ts +2 -1
- package/dist/types/widgets/formula/types.d.ts +6 -18
- package/dist/types/widgets/histogram/config.d.ts +5 -4
- package/dist/types/widgets/histogram/index.d.ts +2 -2
- package/dist/types/widgets/histogram/types.d.ts +6 -12
- package/dist/types/widgets/index.d.ts +9 -4
- package/dist/types/widgets/loader/index.d.ts +3 -0
- package/dist/types/widgets/loader/loader.d.ts +2 -0
- package/dist/types/widgets/loader/types.d.ts +9 -0
- package/dist/types/widgets/loader/utils.d.ts +12 -0
- package/dist/types/widgets/loader/utils.test.d.ts +1 -0
- package/dist/types/widgets/markdown/config.d.ts +4 -2
- package/dist/types/widgets/markdown/index.d.ts +2 -2
- package/dist/types/widgets/markdown/markdown-ui.d.ts +1 -1
- package/dist/types/widgets/markdown/types.d.ts +6 -16
- package/dist/types/widgets/no-data/index.d.ts +2 -0
- package/dist/types/widgets/no-data/no-data.d.ts +35 -0
- package/dist/types/widgets/no-data/style.d.ts +6 -0
- package/dist/types/widgets/no-data/types.d.ts +67 -0
- package/dist/types/widgets/note/index.d.ts +2 -2
- package/dist/types/widgets/note/note.d.ts +2 -2
- package/dist/types/widgets/note/style.d.ts +12 -1
- package/dist/types/widgets/note/types.d.ts +4 -3
- package/dist/types/widgets/pie/config.d.ts +5 -4
- package/dist/types/widgets/pie/index.d.ts +2 -2
- package/dist/types/widgets/pie/types.d.ts +6 -12
- package/dist/types/widgets/range/config.d.ts +6 -2
- package/dist/types/widgets/range/index.d.ts +2 -1
- package/dist/types/widgets/range/types.d.ts +6 -17
- package/dist/types/widgets/scatterplot/config.d.ts +5 -4
- package/dist/types/widgets/scatterplot/index.d.ts +2 -2
- package/dist/types/widgets/scatterplot/types.d.ts +6 -12
- package/dist/types/widgets/selection-summary/index.d.ts +2 -0
- package/dist/types/widgets/selection-summary/selection-summary.d.ts +2 -0
- package/dist/types/widgets/{root → selection-summary}/style.d.ts +3 -2
- package/dist/types/widgets/selection-summary/types.d.ts +13 -0
- package/dist/types/widgets/spread/config.d.ts +10 -2
- package/dist/types/widgets/spread/index.d.ts +2 -1
- package/dist/types/widgets/spread/types.d.ts +6 -18
- package/dist/types/widgets/stores/index.d.ts +2 -0
- package/dist/types/widgets/stores/types.d.ts +108 -12
- package/dist/types/widgets/stores/widget-store.d.ts +2 -27
- package/dist/types/widgets/subheader/index.d.ts +2 -0
- package/dist/types/widgets/subheader/style.d.ts +19 -0
- package/dist/types/widgets/subheader/subheader.d.ts +2 -0
- package/dist/types/widgets/subheader/types.d.ts +10 -0
- package/dist/types/widgets/table/components/cell-header.d.ts +5 -0
- package/dist/types/widgets/table/components/cell.d.ts +16 -0
- package/dist/types/widgets/table/components/index.d.ts +4 -0
- package/dist/types/widgets/table/components/pagination-actions.d.ts +5 -0
- package/dist/types/widgets/table/components/pagination.d.ts +5 -0
- package/dist/types/widgets/table/components/row.d.ts +5 -0
- package/dist/types/widgets/table/config.d.ts +17 -0
- package/dist/types/widgets/table/helpers.d.ts +38 -0
- package/dist/types/widgets/table/helpers.test.d.ts +1 -0
- package/dist/types/widgets/table/hooks/index.d.ts +6 -0
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +33 -0
- package/dist/types/widgets/table/hooks/use-pagination.test.d.ts +1 -0
- package/dist/types/widgets/table/hooks/use-selection.d.ts +30 -0
- package/dist/types/widgets/table/hooks/use-selection.test.d.ts +1 -0
- package/dist/types/widgets/table/hooks/use-sort.d.ts +22 -0
- package/dist/types/widgets/table/hooks/use-sort.test.d.ts +1 -0
- package/dist/types/widgets/table/index.d.ts +13 -0
- package/dist/types/widgets/table/serializer.d.ts +16 -0
- package/dist/types/widgets/table/skeleton.d.ts +10 -0
- package/dist/types/widgets/table/style.d.ts +33 -0
- package/dist/types/widgets/table/table-ui.d.ts +32 -0
- package/dist/types/widgets/table/types.d.ts +196 -0
- package/dist/types/widgets/timeseries/config.d.ts +5 -4
- package/dist/types/widgets/timeseries/index.d.ts +2 -2
- package/dist/types/widgets/timeseries/types.d.ts +6 -12
- package/dist/types/widgets/toolbar-actions/index.d.ts +2 -0
- package/dist/types/widgets/toolbar-actions/styles.d.ts +37 -0
- package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +8 -0
- package/dist/types/widgets/toolbar-actions/types.d.ts +45 -0
- package/dist/types/widgets/wrapper/index.d.ts +2 -2
- package/dist/types/widgets/wrapper/styles.d.ts +6 -0
- package/dist/types/widgets/wrapper/types.d.ts +7 -5
- package/dist/types/widgets/wrapper/wrapper-ui.d.ts +1 -1
- package/dist/types/widgets/wrapper/wrapper.d.ts +1 -1
- package/dist/use-widget-ref-B0aNCANx.js +19 -0
- package/dist/use-widget-ref-B0aNCANx.js.map +1 -0
- package/dist/utils-D3-eQyDR.js +144 -0
- package/dist/utils-D3-eQyDR.js.map +1 -0
- package/dist/widget-store-CB6Trp_0.js +131 -0
- package/dist/widget-store-CB6Trp_0.js.map +1 -0
- package/dist/widgets/actions.js +869 -6
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +185 -4
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +427 -0
- package/dist/widgets/category.js.map +1 -0
- package/dist/widgets/echart.js +112 -8
- package/dist/widgets/echart.js.map +1 -1
- package/dist/widgets/error.js +5 -0
- package/dist/widgets/error.js.map +1 -0
- package/dist/widgets/formula.js +112 -20
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +183 -4
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +61 -0
- package/dist/widgets/loader.js.map +1 -0
- package/dist/widgets/markdown.js +127 -0
- package/dist/widgets/markdown.js.map +1 -0
- package/dist/widgets/no-data.js +5 -0
- package/dist/widgets/no-data.js.map +1 -0
- package/dist/widgets/note.js +2 -2
- package/dist/widgets/pie.js +227 -4
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +210 -12
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +230 -4
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/selection-summary.js +40 -0
- package/dist/widgets/selection-summary.js.map +1 -0
- package/dist/widgets/skeleton-loader.js +21 -2
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +158 -18
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +5 -0
- package/dist/widgets/stores.js.map +1 -0
- package/dist/widgets/subheader.js +52 -0
- package/dist/widgets/subheader.js.map +1 -0
- package/dist/widgets/table.js +672 -0
- package/dist/widgets/table.js.map +1 -0
- package/dist/widgets/timeseries.js +184 -4
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/toolbar-actions.js +6725 -0
- package/dist/widgets/toolbar-actions.js.map +1 -0
- package/dist/widgets/wrapper.js +292 -6
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets.js +10 -83
- package/dist/widgets.js.map +1 -1
- package/package.json +51 -11
- package/dist/const-BLV7Tvte.js +0 -758
- package/dist/const-BLV7Tvte.js.map +0 -1
- package/dist/download-KroQ0SWg.js +0 -195
- package/dist/download-KroQ0SWg.js.map +0 -1
- package/dist/echart-CqfROFu3.js +0 -214
- package/dist/echart-CqfROFu3.js.map +0 -1
- package/dist/formula-ui-ChzvMEOG.js +0 -52
- package/dist/formula-ui-ChzvMEOG.js.map +0 -1
- package/dist/lasso-tool-BC-rsMMW.js +0 -552
- package/dist/lasso-tool-BC-rsMMW.js.map +0 -1
- package/dist/markdown-n_tOtoiT.js +0 -27
- package/dist/markdown-n_tOtoiT.js.map +0 -1
- package/dist/markdown-ui-BBrzzd7Y.js +0 -62
- package/dist/markdown-ui-BBrzzd7Y.js.map +0 -1
- package/dist/note-DF-n70TX.js +0 -101
- package/dist/note-DF-n70TX.js.map +0 -1
- package/dist/range-ui-CtUX11Xm.js +0 -146
- package/dist/range-ui-CtUX11Xm.js.map +0 -1
- package/dist/root-L_WZnJY5.js +0 -46
- package/dist/root-L_WZnJY5.js.map +0 -1
- package/dist/row-DQaSxmDV.js +0 -18
- package/dist/row-DQaSxmDV.js.map +0 -1
- package/dist/series-CsyEPq-X.js +0 -83
- package/dist/series-CsyEPq-X.js.map +0 -1
- package/dist/skeleton-BSPcEvfq.js +0 -27
- package/dist/skeleton-BSPcEvfq.js.map +0 -1
- package/dist/skeleton-C4rOYTy-.js +0 -78
- package/dist/skeleton-C4rOYTy-.js.map +0 -1
- package/dist/skeleton-C9Jqc241.js +0 -82
- package/dist/skeleton-C9Jqc241.js.map +0 -1
- package/dist/skeleton-D-zHBBIw.js +0 -64
- package/dist/skeleton-D-zHBBIw.js.map +0 -1
- package/dist/skeleton-DMP-IwaJ.js +0 -109
- package/dist/skeleton-DMP-IwaJ.js.map +0 -1
- package/dist/skeleton-DRorqowB.js +0 -22
- package/dist/skeleton-DRorqowB.js.map +0 -1
- package/dist/skeleton-DsZhv-AH.js +0 -89
- package/dist/skeleton-DsZhv-AH.js.map +0 -1
- package/dist/skeleton-Dx3FCer0.js +0 -13
- package/dist/skeleton-Dx3FCer0.js.map +0 -1
- package/dist/skeleton-QVDdb1c2.js +0 -21
- package/dist/skeleton-QVDdb1c2.js.map +0 -1
- package/dist/skeleton-loader-DWC1-EAx.js +0 -23
- package/dist/skeleton-loader-DWC1-EAx.js.map +0 -1
- package/dist/spread-ui-BjzH190y.js +0 -82
- package/dist/spread-ui-BjzH190y.js.map +0 -1
- package/dist/style-BGeCtQkP.js +0 -19
- package/dist/style-BGeCtQkP.js.map +0 -1
- package/dist/style-C7v1iwqD.js +0 -34
- package/dist/style-C7v1iwqD.js.map +0 -1
- package/dist/styles-cohnxh9F.js +0 -23
- package/dist/styles-cohnxh9F.js.map +0 -1
- package/dist/types/widgets/config-loader/index.d.ts +0 -2
- package/dist/types/widgets/config-loader/types.d.ts +0 -12
- package/dist/types/widgets/config-loader/use-config.d.ts +0 -5
- package/dist/types/widgets/root/index.d.ts +0 -2
- package/dist/types/widgets/root/root.d.ts +0 -2
- package/dist/types/widgets/root/types.d.ts +0 -15
- package/dist/types/widgets/widget/const.d.ts +0 -2
- package/dist/types/widgets/widget/types.d.ts +0 -47
- package/dist/types/widgets/widget/widget.d.ts +0 -2
- package/dist/use-config-BYEOiIcu.js +0 -43
- package/dist/use-config-BYEOiIcu.js.map +0 -1
- package/dist/widget-store-yDO2ul8g.js +0 -44
- package/dist/widget-store-yDO2ul8g.js.map +0 -1
- package/dist/widgets/config-loader.js +0 -5
- package/dist/widgets/config-loader.js.map +0 -1
- package/dist/widgets/root.js +0 -5
- package/dist/widgets/root.js.map +0 -1
- package/dist/wrapper-57csMybC.js +0 -265
- package/dist/wrapper-57csMybC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
1
|
+
{"version":3,"file":"actions.js","sources":["../../src/widgets/actions/fullscreen/styles.ts","../../src/widgets/actions/fullscreen/fullscreen.tsx","../../src/widgets/actions/download/download.tsx","../../src/widgets/actions/shared/styles.ts","../../src/widgets/actions/relative-data/utils.ts","../../src/widgets/actions/relative-data/relative-data.tsx","../../src/widgets/actions/zoom-toggle/style.ts","../../src/widgets/actions/zoom-toggle/zoom-toggle.tsx","../../src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx","../../src/widgets/actions/stack-toggle/stack-toggle.tsx","../../src/widgets/actions/lock-selection/lock-selection.tsx","../../src/widgets/actions/searcher/searcher.tsx","../../src/widgets/actions/searcher/searcher-toggle.tsx","../../src/widgets/actions/change-column/change-column-icon.tsx","../../src/widgets/actions/change-column/sortable-column-item.tsx","../../src/widgets/actions/change-column/change-column.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n title: {\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Close, FullscreenOutlined } from '@mui/icons-material'\nimport type {\n FullScreenConfig,\n FullScreenProps,\n FullScreenState,\n} from './types'\nimport { styles } from './styles'\nimport { useShallow } from 'zustand/shallow'\n\nexport function FullScreen({\n id,\n labels,\n children,\n Icon,\n IconButtonProps,\n DialogContentProps: { sx, ...DialogContentProps } = {},\n}: FullScreenProps) {\n const { isFullScreen, title } = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<FullScreenState>(id)\n return {\n isFullScreen: widget?.isFullScreen,\n title: widget?.title,\n }\n }),\n )\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n const updateFullScreenConfig = (updates: Partial<FullScreenConfig>) => {\n setWidget<FullScreenState>(id, {\n isFullScreen: updates.isFullScreen,\n })\n }\n\n return (\n <>\n <IconButton\n {...IconButtonProps}\n onClick={() => updateFullScreenConfig({ isFullScreen: true })}\n >\n {Icon ?? <FullscreenOutlined />}\n </IconButton>\n <Dialog\n maxWidth={false}\n open={!!isFullScreen}\n aria-labelledby={labels?.ariaLabel ?? `fullscreen-dialog-title-${id}`}\n onClose={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <DialogTitle\n id={`fullscreen-dialog-title-${id}`}\n sx={styles.title.container}\n >\n <Typography variant='subtitle1' component='span'>\n {title}\n </Typography>\n <IconButton\n onClick={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n ...styles.content,\n ...sx,\n }}\n {...DialogContentProps}\n >\n {children}\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport type { DownloadItem, DownloadProps } from './types'\nimport { FileDownloadOutlined } from '@mui/icons-material'\nimport { useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../../widgets'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Download({\n id,\n items,\n labels = {},\n Icon,\n IconButtonProps,\n}: DownloadProps) {\n const data = useWidgetStore(useShallow((state) => state.getWidget(id)?.data))\n\n const [isDownloading, setIsDownloading] = useState(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleToggle = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }\n\n const handleDownload = (data: string, option: DownloadItem) => {\n const link = document.createElement('a')\n link.href = data\n link.download = option.filename ?? id\n link.style.display = 'none'\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n option.callback?.(link.href)\n }\n\n const handleClick = async (\n event: MouseEvent<HTMLElement>,\n option: DownloadItem,\n ) => {\n event.stopPropagation()\n\n setIsDownloading(true)\n setAnchorEl(null)\n\n const result = await option.modifier(data)\n\n if (!result) {\n setIsDownloading(false)\n return\n }\n\n handleDownload(result, option)\n setIsDownloading(false)\n }\n\n return (\n <>\n <IconButton\n size='small'\n aria-label={labels.ariaLabel ?? 'download options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={handleToggle}\n {...IconButtonProps}\n disabled={isDownloading || items.length === 0}\n className={isDownloading || anchorEl ? 'active' : ''}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n (Icon ?? <FileDownloadOutlined />)\n )}\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: {\n paddingBottom: 0,\n },\n }}\n >\n {items.map((option) => (\n <MenuItem\n key={option.id}\n disabled={option.disabled}\n onClick={(e) => void handleClick(e, option)}\n >\n {option.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {option.icon}\n </ListItemIcon>\n )}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Shared styles for widget action buttons\n */\nexport const actionButtonStyles = {\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { EchartWidgetData } from '../../echart/types'\n\n/**\n * Calculates the sum of all numeric values in the data\n */\nexport function calculateTotal(data: EchartWidgetData): number {\n return data.reduce((total, series) => {\n return series.reduce((seriesTotal, item) => {\n if (Array.isArray(item)) {\n const value = item.at(-1) as number\n return typeof value === 'number' ? seriesTotal + value : seriesTotal\n }\n\n return Object.entries(item).reduce((itemTotal: number, [key, value]) => {\n if (key === 'name') {\n return itemTotal\n }\n return typeof value === 'number' ? itemTotal + value : itemTotal\n }, seriesTotal)\n }, total)\n }, 0)\n}\n\n/**\n * Transforms data to relative (percentage) values\n */\nexport function toRelativeData(\n data: EchartWidgetData,\n total: number,\n): EchartWidgetData {\n if (total === 0) return data\n\n return data.map((series) =>\n series.map((item) => {\n if (Array.isArray(item)) {\n return item.map((value: number, index) => {\n if (index === item.length - 1 && typeof value === 'number') {\n return (value / total) * 100\n }\n return value\n }) as typeof item\n }\n\n const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\n if (key === 'name') {\n transformed[key] = value\n continue\n }\n transformed[key] =\n typeof value === 'number' ? (value / total) * 100 : value\n }\n\n return transformed\n }),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { PercentOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { RelativeDataProps, RelativeDataState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { calculateTotal, toRelativeData } from './utils'\nimport type { EchartWidgetData } from '../../../widgets/echart'\n\nexport const RELATIVE_DATA_TOOL_ID = 'relative-data'\n\n/**\n * Widget action to toggle between relative (percentage) and absolute data display.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * When relative mode is active, transforms data to percentages via the pipeline.\n *\n * @example\n * ```tsx\n * <RelativeData\n * id=\"my-widget\"\n * order={20}\n * defaultIsRelative={false}\n * />\n * ```\n */\nexport function RelativeData({\n id,\n order = 10,\n defaultIsRelative = false,\n labels,\n Icon,\n IconButtonProps,\n}: RelativeDataProps) {\n const previousMaxValue = useRef<number | undefined>(undefined)\n const originalFormatter = useRef<((value: number) => string) | undefined>(\n undefined,\n )\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n\n const storeIsRelative = useWidgetStore(\n (state) => state.getWidget<RelativeDataState>(id)?.isRelative,\n )\n\n const isRelative = storeIsRelative ?? defaultIsRelative\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<RelativeDataState>(id)?.isRelative\n if (currentValue === undefined) {\n setWidget(id, { isRelative: defaultIsRelative })\n }\n }, [defaultIsRelative, getWidget, id, setWidget])\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: RELATIVE_DATA_TOOL_ID,\n order,\n enabled: isRelative,\n fn: (data) => {\n const echartData = data as EchartWidgetData\n const total = calculateTotal(echartData)\n return toRelativeData(echartData, total)\n },\n })\n\n return () => unregisterTool(id, RELATIVE_DATA_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isRelative])\n\n // Update enabled flag when toggle changes\n useEffect(() => {\n setToolEnabled(id, RELATIVE_DATA_TOOL_ID, isRelative)\n }, [id, isRelative, setToolEnabled])\n\n const handleToggle = useCallback(() => {\n const newIsRelative = !isRelative\n let max = previousMaxValue.current\n\n if (newIsRelative) {\n // Backup current formatter to ref\n const widget = getWidget(id) as {\n formatter?: (value: number) => string\n locale?: string\n }\n originalFormatter.current = widget?.formatter\n\n // Save current max value before setting to 100\n const currentMax = (getWidget(id) as { max?: number })?.max\n previousMaxValue.current = currentMax\n max = 100\n }\n\n setWidget(id, {\n isRelative: newIsRelative,\n max,\n formatter: newIsRelative\n ? (value: number) => {\n const widget = getWidget(id) as { locale?: string }\n return new Intl.NumberFormat(widget?.locale, {\n style: 'percent',\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }).format(value / 100)\n }\n : originalFormatter.current,\n })\n }, [isRelative, setWidget, id, getWidget])\n\n const tooltipLabel = isRelative\n ? (labels?.absolute ?? 'Show absolute values')\n : (labels?.relative ?? 'Show relative values')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isRelative}\n {...IconButtonProps}\n >\n {Icon ?? <PercentOutlined />}\n </IconButton>\n </Tooltip>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, IconButton, useTheme } from '@mui/material'\nimport {\n SubdirectoryArrowLeftOutlined,\n ZoomInOutlined,\n} from '@mui/icons-material'\nimport { useEffect, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ZoomToggleProps, ZoomState } from './types'\nimport { styles } from './style'\nimport { Tooltip } from '../../../components'\nimport { getEChartZoomConfig } from '../../echart/utils'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle EChart zoom functionality.\n *\n * When zoom is active, displays an inline reset button to disable zoom.\n * Only intended for use in fullscreen ToolbarActions for bar and histogram widgets.\n *\n * @example\n * ```tsx\n * <ZoomToggle\n * id=\"my-widget\"\n * defaultZoom={false}\n * zoomStart={0}\n * zoomEnd={100}\n * />\n * ```\n */\nexport function ZoomToggle({\n id,\n defaultZoom = false,\n defaultZoomStart = 0,\n defaultZoomEnd = 100,\n labels,\n Icon,\n ResetIcon,\n IconButtonProps,\n}: ZoomToggleProps) {\n const theme = useTheme()\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n const zoom = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<ZoomState>(id)\n return widget?.zoom ?? false\n }),\n )\n\n const updateZoomOption = useCallback(\n (enabled: boolean, start: number, end: number) => {\n const zoomConfig = getEChartZoomConfig(\n enabled,\n { start, end },\n { inside: true, xSlider: true, ySlider: false },\n theme,\n )\n const currentOption = getWidget<EchartWidgetState>(id)?.option\n\n setWidget<EchartWidgetState & ZoomState>(id, {\n zoom: enabled,\n zoomStart: start,\n zoomEnd: end,\n option: {\n ...currentOption,\n ...zoomConfig,\n },\n })\n },\n [getWidget, id, setWidget, theme],\n )\n\n // Initialize zoom state from defaults only if not already set\n useEffect(() => {\n const existingState = getWidget<ZoomState>(id)\n\n if (existingState?.zoom) return\n\n // Apply initial zoom config\n updateZoomOption(\n existingState?.zoom ?? defaultZoom,\n existingState?.zoomStart ?? defaultZoomStart,\n existingState?.zoomEnd ?? defaultZoomEnd,\n )\n }, [\n defaultZoom,\n defaultZoomEnd,\n defaultZoomStart,\n getWidget,\n id,\n updateZoomOption,\n ])\n\n // Cleanup: reset zoom when component unmounts\n useEffect(() => {\n return () => {\n const existingState = getWidget<ZoomState>(id)\n updateZoomOption(\n false,\n existingState?.zoomStart ?? 0,\n existingState?.zoomEnd ?? 100,\n )\n }\n }, [getWidget, id, updateZoomOption])\n\n const handleToggle = () => {\n const newZoom = !zoom\n\n const existingState = getWidget<ZoomState>(id)\n\n updateZoomOption(\n newZoom,\n newZoom ? (existingState?.zoomStart ?? defaultZoomStart) : 0,\n newZoom ? (existingState?.zoomEnd ?? defaultZoomEnd) : 100,\n )\n }\n\n const handleReset = () => {\n updateZoomOption(true, defaultZoomStart, defaultZoomEnd)\n }\n\n // Handle dataZoom event to update zoom range in store\n const handleDataZoom = useCallback(\n (event: unknown) => {\n const zoomEvent = event as {\n start: number\n end: number\n }\n\n const start = zoomEvent.start\n const end = zoomEvent.end\n\n if (start !== undefined && end !== undefined) {\n updateZoomOption(true, start, end)\n }\n },\n [updateZoomOption],\n )\n\n // Register dataZoom event handler when zoom is enabled\n useEffect(() => {\n if (zoom) {\n setWidget<EchartWidgetState>(id, {\n onEvents: {\n dataZoom: handleDataZoom,\n },\n })\n }\n }, [id, zoom, handleDataZoom, setWidget])\n\n const enableLabel = labels?.enable ?? 'Enable zoom'\n const disableLabel = labels?.disable ?? 'Disable zoom'\n const resetLabel = labels?.reset ?? 'Reset zoom'\n const tooltipLabel = zoom ? disableLabel : enableLabel\n\n return (\n <Box sx={styles.container}>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={styles.trigger}\n data-active={zoom}\n {...IconButtonProps}\n >\n {Icon ?? <ZoomInOutlined />}\n </IconButton>\n </Tooltip>\n {zoom && (\n <Tooltip title={resetLabel}>\n <IconButton\n size='small'\n aria-label={resetLabel}\n onClick={handleReset}\n {...IconButtonProps}\n >\n {ResetIcon ?? <SubdirectoryArrowLeftOutlined />}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )\n}\n","export const GroupedBarChartIcon = () => (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n d='M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z'\n fill='currentColor'\n />\n </svg>\n)\n","import { IconButton } from '@mui/material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { StackToggleProps, StackToggleState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { GroupedBarChartIcon } from './grouped-bar-chart-icon'\nimport { getEChartStackConfig } from '../../echart/utils'\nimport { DEFAULT_STACK_GROUP } from '../../echart/const'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle stacking behavior in ECharts bar and histogram widgets.\n *\n * Stores the stack state in the widget store and updates the ECharts option\n * using getEChartStackConfig to apply stacking to all series.\n *\n * @example\n * ```tsx\n * <StackToggle\n * id=\"my-widget\"\n * defaultIsStacked={false}\n * />\n * ```\n */\nexport function StackToggle({\n id,\n defaultIsStacked = false,\n labels,\n Icon,\n IconButtonProps,\n}: StackToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const storeIsStacked = useWidgetStore(\n useShallow((state) => state.getWidget<StackToggleState>(id)?.isStacked),\n )\n\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n /**\n * Checks if there are multiple series in the chart\n */\n const hasMultiSeries = useMemo(() => {\n const option = getWidget<EchartWidgetState>(id)?.option\n if (!option) return false\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n return series.length > 1\n }, [getWidget, id])\n\n /**\n * Checks if any series in the option has a stack property defined\n */\n const hasStackInSeries = useMemo(() => {\n const option = getWidget<EchartWidgetState>(id)?.option\n if (!option) return false\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n return series.some((s) => (s as { stack?: string })?.stack)\n }, [getWidget, id])\n\n // If series already has stack defined, default to stacked=true\n const effectiveDefaultIsStacked = hasStackInSeries || defaultIsStacked\n const isStacked = storeIsStacked ?? effectiveDefaultIsStacked\n\n /**\n * Updates the ECharts option with the stack configuration\n * Preserves existing stack group names from series, falling back to DEFAULT_STACK_GROUP\n */\n const updateOptions = useCallback(\n (stacked: boolean) => {\n const option = getWidget<EchartWidgetState>(id)?.option\n\n if (!option) return\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n const updatedSeries = series.map((s) => {\n // Extract existing stack group from series, fallback to default\n const existingStack = (s as { stack?: string })?.stack\n const stackGroup =\n typeof existingStack === 'string'\n ? existingStack\n : DEFAULT_STACK_GROUP\n\n return {\n ...s,\n ...getEChartStackConfig(stacked, stackGroup),\n }\n })\n\n setWidget(id, {\n option: {\n ...option,\n series: updatedSeries,\n },\n })\n },\n [getWidget, id, setWidget],\n )\n\n // Initialize store with default value only if not already configured\n useEffect(() => {\n setWidget(id, { isStacked: effectiveDefaultIsStacked })\n }, [effectiveDefaultIsStacked, id, setWidget])\n\n const handleToggle = useCallback(() => {\n const newIsStacked = !isStacked\n\n setWidget(id, { isStacked: newIsStacked })\n updateOptions(newIsStacked)\n }, [isStacked, id, setWidget, updateOptions])\n\n const tooltipLabel = isStacked\n ? (labels?.unstacked ?? 'Disable stacking')\n : (labels?.stacked ?? 'Enable stacking')\n\n // Early return if there's only one series - stacking doesn't apply\n if (!hasMultiSeries) {\n return null\n }\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isStacked}\n {...IconButtonProps}\n >\n {Icon ?? <GroupedBarChartIcon />}\n </IconButton>\n </Tooltip>\n )\n}\n","import { IconButton } from '@mui/material'\nimport { CheckBoxOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport type { LockSelectionProps, LockSelectionState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport type { EchartWidgetData } from '../../echart/types'\n\nexport const LOCK_SELECTION_TOOL_ID = 'lock-selection'\n\n/**\n * Widget action button to lock the current selection.\n *\n * When locked, the widget data is filtered to only show the selected items.\n * The button is only visible when there are selected items.\n * Registers a transformation tool in the widget pipeline when mounted.\n *\n * @example\n * ```tsx\n * <LockSelection\n * id=\"my-widget\"\n * order={30}\n * selectedItems={selectedItems}\n * />\n * ```\n */\nexport function LockSelection({\n id,\n selectedItems,\n order = 30,\n labels,\n Icon,\n IconButtonProps,\n}: LockSelectionProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const storeIsLocked = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.isLocked),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(\n () => (isLocked ? selectedItems : []),\n [isLocked, selectedItems],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: LOCK_SELECTION_TOOL_ID,\n order,\n enabled: isLocked,\n fn: (data, config) => {\n const items = (config?.lockedItems as string[]) || []\n if (items.length === 0) return data\n\n return filterDataByLockedItems(data as EchartWidgetData, items)\n },\n config: { lockedItems },\n })\n\n return () => unregisterTool(id, LOCK_SELECTION_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isLocked, lockedItems])\n\n // Update enabled flag and config when they change\n useEffect(() => {\n setToolEnabled(id, LOCK_SELECTION_TOOL_ID, isLocked)\n updateToolConfig(id, LOCK_SELECTION_TOOL_ID, { lockedItems })\n }, [id, isLocked, lockedItems, setToolEnabled, updateToolConfig])\n\n const handleToggle = useCallback(() => {\n if (isLocked) {\n // Unlock: clear locked items and disable tool\n setWidget(id, {\n isLocked: false,\n lockedItems: [],\n })\n } else {\n // Lock: save selected items and enable tool\n setWidget(id, {\n isLocked: true,\n lockedItems: selectedItems,\n })\n }\n }, [id, isLocked, selectedItems, setWidget])\n\n // Don't render if no selections\n if (selectedItems.length === 0) {\n return null\n }\n\n const tooltipLabel = isLocked\n ? (labels?.unlock ?? 'Unlock selection')\n : (labels?.lock ?? 'Lock selection')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isLocked}\n {...IconButtonProps}\n >\n {Icon ?? <CheckBoxOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n\n/**\n * Filters widget data to only include items with names matching the locked items.\n */\nfunction filterDataByLockedItems(\n data: EchartWidgetData,\n lockedItems: string[],\n): EchartWidgetData {\n return data.map((series) =>\n series.filter((item) => {\n const name = item.name\n return typeof name === 'string' && lockedItems.includes(name)\n }),\n )\n}\n","import { TextField, InputAdornment, IconButton } from '@mui/material'\nimport { ClearOutlined, SearchOutlined } from '@mui/icons-material'\nimport { useEffect, useRef, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { SearcherProps, SearcherFilterFn, SearcherState } from './types'\nimport type { EchartWidgetData } from '../../echart/types'\nimport { LOCK_SELECTION_TOOL_ID } from '../lock-selection/lock-selection'\n\nexport const SEARCHER_TOOL_ID = 'searcher'\n\nconst DEBOUNCE_DELAY = 300\n\n/**\n * Search input component that works with SearcherToggle.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * Reads the enabled state from the widget store using the provided id.\n * Uses a debounced search to filter data via the transformation pipeline.\n * Auto-focuses when enabled becomes true.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * order={10}\n * labels={{ placeholder: 'Search categories...' }}\n * />\n * ```\n */\nexport function Searcher({\n id,\n filterFn,\n order = 20,\n labels,\n TextFieldProps,\n ClearIcon,\n debounceDelay = DEBOUNCE_DELAY,\n}: SearcherProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const debounceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Read enabled state and search text from widget store\n const widgetState = useWidgetStore((state) =>\n state.getWidget<SearcherState>(id),\n )\n const enabled = widgetState?.isSearchEnabled ?? false\n const searchText = widgetState?.searchText ?? ''\n const prevEnabledRef = useRef(enabled)\n\n const filter = filterFn ?? defaultFilterFn\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const setSearchText = useCallback(\n (text: string) => {\n setWidget(id, { searchText: text })\n },\n [id, setWidget],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: SEARCHER_TOOL_ID,\n order,\n enabled,\n fn: async (data, config) => {\n const searchTextFromConfig = (config?.searchText as string) || ''\n\n // Execute filter (can be sync or async)\n const result = filter(data as EchartWidgetData, searchTextFromConfig)\n\n // Return result directly (pipeline will handle Promise)\n return result\n },\n config: { searchText },\n disables: [LOCK_SELECTION_TOOL_ID],\n })\n\n return () => unregisterTool(id, SEARCHER_TOOL_ID)\n }, [id, order, filter, registerTool, unregisterTool, enabled, searchText])\n\n // Update enabled flag when it changes\n useEffect(() => {\n setToolEnabled(id, SEARCHER_TOOL_ID, enabled)\n }, [id, enabled, setToolEnabled])\n\n // Update config when search text changes (debounced)\n const debouncedUpdateConfig = useCallback(\n (text: string) => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n debounceTimeoutRef.current = setTimeout(() => {\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: text })\n }, debounceDelay)\n },\n [id, updateToolConfig, debounceDelay],\n )\n\n // Auto-focus when enabled becomes true\n useEffect(() => {\n // Transition from disabled to enabled - focus input\n if (enabled && !prevEnabledRef.current && inputRef.current) {\n inputRef.current.focus()\n }\n\n prevEnabledRef.current = enabled\n }, [enabled])\n\n // Cleanup debounce timeout on unmount\n useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n }\n }, [])\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setSearchText(newValue)\n debouncedUpdateConfig(newValue)\n },\n [debouncedUpdateConfig, setSearchText],\n )\n\n const handleClear = useCallback(() => {\n setSearchText('')\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: '' })\n if (inputRef.current) {\n inputRef.current.focus()\n }\n }, [id, setSearchText, updateToolConfig])\n\n if (!enabled) {\n return null\n }\n\n const placeholder = labels?.placeholder ?? 'Search...'\n const clearAriaLabel = labels?.clearAriaLabel ?? 'Clear search'\n\n return (\n <TextField\n inputRef={inputRef}\n size='small'\n fullWidth\n variant='filled'\n placeholder={placeholder}\n value={searchText}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position='start'>\n <SearchOutlined />\n </InputAdornment>\n ),\n endAdornment: searchText ? (\n <InputAdornment position='end'>\n <IconButton\n size='small'\n aria-label={clearAriaLabel}\n onClick={handleClear}\n edge='end'\n >\n {ClearIcon ?? <ClearOutlined fontSize='small' />}\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n {...TextFieldProps}\n />\n )\n}\n\n/**\n * Default filter function that searches all string fields case-insensitively.\n * Note: Should be synchronous for the new pipeline architecture.\n */\nconst defaultFilterFn: SearcherFilterFn = (\n data: EchartWidgetData,\n searchText: string,\n) => {\n if (!searchText.trim()) return Promise.resolve(data)\n\n const lowerSearch = searchText.toLowerCase()\n\n return Promise.resolve(\n data.map((series) =>\n series.filter((item) =>\n Object.values(item).some(\n (value) =>\n typeof value === 'string' &&\n value.toLowerCase().includes(lowerSearch),\n ),\n ),\n ),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect } from 'react'\nimport type { SearcherToggleProps, SearcherState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action button to toggle search functionality.\n *\n * Stores the enabled state in the widget store using the provided id.\n * When search is active, the button shows an active state with a light background.\n * Use in conjunction with the Searcher component to display the search input.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * data={widgetData}\n * />\n * ```\n */\nexport function SearcherToggle({\n id,\n defaultEnabled = false,\n labels,\n Icon,\n IconButtonProps,\n}: SearcherToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const storeIsEnabled = useWidgetStore(\n useShallow((state) => state.getWidget<SearcherState>(id)?.isSearchEnabled),\n )\n\n const isEnabled = storeIsEnabled ?? defaultEnabled\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<SearcherState>(id)?.isSearchEnabled\n if (currentValue === undefined) {\n setWidget(id, { isSearchEnabled: defaultEnabled })\n }\n }, [defaultEnabled, getWidget, id, setWidget])\n\n const handleToggle = useCallback(() => {\n setWidget(id, { isSearchEnabled: !isEnabled })\n }, [id, isEnabled, setWidget])\n\n const tooltipLabel = isEnabled\n ? (labels?.disable ?? 'Disable search')\n : (labels?.enable ?? 'Enable search')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isEnabled}\n {...IconButtonProps}\n >\n {Icon ?? <SearchOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n","export const ChangeColumnIcon = () => (\n <svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 18 18'>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z'\n clipRule='evenodd'\n />\n </svg>\n)\n","import { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { ListItemText, MenuItem } from '@mui/material'\nimport type { TableColumn } from '../../table/types'\n\nexport interface SortableColumnItemProps {\n column: TableColumn\n}\n\n/**\n * A draggable menu item for column reordering.\n * Uses @dnd-kit/sortable for drag-and-drop functionality.\n */\nexport function SortableColumnItem({ column }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? 'grabbing' : 'grab',\n }\n\n return (\n <MenuItem\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n role='menuitem'\n tabIndex={0}\n sx={{\n '&:focus-visible': {\n outline: (theme) => `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n }}\n >\n <ListItemText>{column.label}</ListItemText>\n </MenuItem>\n )\n}\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { IconButton, Menu, SvgIcon } from '@mui/material'\nimport { useCallback, useMemo, useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ChangeColumnProps } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport type { TableWidgetState } from '../../table/types'\nimport { ChangeColumnIcon } from './change-column-icon'\nimport { SortableColumnItem } from './sortable-column-item'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to reorder columns in a table widget via drag-and-drop.\n *\n * This action reads the columns from the widget store and allows users to\n * drag and drop columns to reorder them. All columns are displayed and\n * can be reordered.\n *\n * Returns null if there are fewer than 2 columns.\n *\n * @example\n * ```tsx\n * <ChangeColumn id=\"my-table-widget\" />\n * ```\n */\nexport function ChangeColumn({\n id,\n labels,\n Icon,\n IconButtonProps,\n MenuProps,\n}: ChangeColumnProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const columns = useWidgetStore(\n useShallow((state) => state.getWidget<TableWidgetState>(id)?.columns),\n )\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const columnIds = useMemo(\n () => columns?.map((col) => col.id) ?? [],\n [columns],\n )\n\n const handleToggle = useCallback((event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }, [])\n\n const handleClose = useCallback(() => {\n setAnchorEl(null)\n }, [])\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id || !columns) return\n const oldIndex = columns.findIndex((col) => col.id === active.id)\n const newIndex = columns.findIndex((col) => col.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n const newColumns = arrayMove(columns, oldIndex, newIndex)\n setWidget(id, { columns: newColumns })\n }\n }\n\n // Return null if there are fewer than 2 columns\n if (!columns || columns.length < 2) {\n return null\n }\n\n const tooltipLabel = labels?.tooltip ?? 'Change column'\n const isOpen = Boolean(anchorEl)\n\n return (\n <>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n aria-controls={isOpen ? 'change-column-menu' : undefined}\n aria-haspopup='true'\n aria-expanded={isOpen ? 'true' : undefined}\n onClick={handleToggle}\n data-active={isOpen}\n sx={actionButtonStyles.trigger}\n {...IconButtonProps}\n >\n {Icon ?? (\n <SvgIcon>\n <ChangeColumnIcon />\n </SvgIcon>\n )}\n </IconButton>\n </Tooltip>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <Menu\n id='change-column-menu'\n anchorEl={anchorEl}\n open={isOpen}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n {...MenuProps}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((column) => (\n <SortableColumnItem key={column.id} column={column} />\n ))}\n </SortableContext>\n </Menu>\n </DndContext>\n </>\n )\n}\n"],"names":["styles","title","container","display","alignItems","justifyContent","gap","content","flexDirection","spacing","FullScreen","t0","$","_c","id","labels","children","Icon","IconButtonProps","DialogContentProps","t1","t2","undefined","sx","t3","state","widget","getWidget","isFullScreen","useWidgetStore","useShallow","setWidget","_temp","t4","updates","updateFullScreenConfig","t5","t6","FullscreenOutlined","t7","IconButton","t8","t9","ariaLabel","t10","t11","t12","Typography","t13","t14","Symbol","for","Close","t15","jsx","t16","DialogTitle","t17","t18","DialogContent","t19","jsxs","Dialog","t20","state_0","Download","items","data","isDownloading","setIsDownloading","useState","anchorEl","setAnchorEl","event","stopPropagation","currentTarget","handleToggle","data_0","option","link","document","createElement","href","download","filename","style","body","appendChild","click","removeChild","callback","handleDownload","event_0","option_0","result","modifier","handleClick","length","CircularProgress","FileDownloadOutlined","vertical","horizontal","Boolean","paddingBottom","option_1","MenuItem","disabled","e","icon","ListItemIcon","color","ListItemText","label","map","Menu","actionButtonStyles","trigger","background","theme","palette","primary","relatedLight","calculateTotal","reduce","total","series","seriesTotal","item","Array","isArray","value","at","Object","entries","itemTotal","key","toRelativeData","index","transformed","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","previousMaxValue","useRef","originalFormatter","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","max","current","formatter","currentMax","widget_0","Intl","NumberFormat","locale","minimumFractionDigits","maximumFractionDigits","format","tooltipLabel","absolute","relative","PercentOutlined","Tooltip","echartData","state_3","state_2","state_1","ZoomToggle","defaultZoom","defaultZoomStart","defaultZoomEnd","ResetIcon","useTheme","zoom","start","end","zoomConfig","getEChartZoomConfig","inside","xSlider","ySlider","currentOption","zoomStart","zoomEnd","updateZoomOption","existingState","existingState_0","newZoom","existingState_1","handleReset","zoomEvent","start_0","end_0","handleDataZoom","onEvents","dataZoom","enableLabel","enable","disableLabel","disable","resetLabel","reset","ZoomInOutlined","SubdirectoryArrowLeftOutlined","Box","GroupedBarChartIcon","StackToggle","defaultIsStacked","isStacked","storeIsStacked","bb0","hasMultiSeries","bb1","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","lockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","values","SearcherToggle","defaultEnabled","isEnabled","ChangeColumnIcon","SortableColumnItem","column","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","cursor","outline","outlineOffset","main","ChangeColumn","MenuProps","columns","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","columnIds","handleClose","active","over","oldIndex","findIndex","col_0","col","newIndex","col_1","newColumns","arrayMove","handleDragEnd","tooltip","isOpen","SvgIcon","SortableContext","verticalListSortingStrategy","DndContext","closestCenter"],"mappings":";;;;;;;;;;;;;;;;AAEO,MAAMA,KAAS;AAAA,EACpBC,OAAO;AAAA,IACLC,WAAW;AAAA,MACTC,SAAS;AAAA,MACTC,YAAY;AAAA,MACZC,gBAAgB;AAAA,MAChBC,KAAK;AAAA,IAAA;AAAA,EACP;AAAA,EAEFC,SAAS;AAAA,IACPJ,SAAS;AAAA,IACTK,eAAe;AAAA,IACfF,KAAKA,CAAC;AAAA,MAAEG,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAEnC;ACCO,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,QAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAAC,oBAAAC;AAAAA,EAAAA,IAAAT;AAOT,MAAAU;AAAA,EAAAT,SAAAQ,KADIC,IAAAD,MAAAE,SAAA,CAAA,IAAAF,GAAkCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAA,MAAAO,GAAAI;AAAA,EAAAX,SAAAS,KAAlC;AAAA,IAAAE,IAAAA;AAAAA,IAAA,GAAAJ;AAAAA,EAAAA,IAAAE,GAAkCT,OAAAS,GAAAT,OAAAO,GAAAP,OAAAW,MAAAJ,IAAAP,EAAA,CAAA,GAAAW,IAAAX,EAAA,CAAA;AAAA,MAAAY;AAAA,EAAAZ,SAAAE,KAGzCU,IAAAC,CAAAA,MAAA;AACT,UAAAC,IAAeD,EAAKE,UAA4Bb,CAAE;AAAC,WAC5C;AAAA,MAAAc,cACSF,GAAME;AAAAA,MAAc3B,OAC3ByB,GAAMzB;AAAAA,IAAAA;AAAAA,EACd,GACFW,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAPH,QAAA;AAAA,IAAAgB,cAAAA;AAAAA,IAAA3B,OAAAA;AAAAA,EAAAA,IAAgC4B,EAC9BC,GAAWN,CAMV,CACH,GACAO,IAAkBF,EAAeG,EAA0B;AAAC,MAAAC;AAAA,EAAArB,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAE7BE,IAAAC,CAAAA,MAAA;AAC7BH,IAAAA,EAA2BjB,GAAI;AAAA,MAAAc,cACfM,EAAON;AAAAA,IAAAA,CACtB;AAAA,EAAC,GACHhB,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAJD,QAAAuB,IAA+BF;AAI9B,MAAAG;AAAA,EAAAxB,UAAAuB,KAMcC,IAAAA,MAAMD,EAAuB;AAAA,IAAAP,cAAgB;AAAA,EAAA,CAAM,GAAChB,QAAAuB,GAAAvB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA,MAAAyB;AAAA,EAAAzB,UAAAK,KAE5DoB,IAAApB,uBAASqB,IAAA,CAAA,CAAkB,GAAG1B,QAAAK,GAAAL,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,EAAA3B,EAAA,EAAA,MAAAM,KAAAN,UAAAwB,KAAAxB,EAAA,EAAA,MAAAyB,KAJjCE,sBAACC,GAAA,EAAU,GACLtB,GACK,SAAAkB,GAERC,UAAAA,GACH,GAAazB,QAAAM,GAAAN,QAAAwB,GAAAxB,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAGL,QAAA6B,IAAA,CAAC,CAACb,GACSc,IAAA3B,GAAM4B,aAAN,2BAAgD7B,CAAE;AAAE,MAAA8B;AAAA,EAAAhC,UAAAuB,KAC5DS,IAAAA,MAAMT,EAAuB;AAAA,IAAAP,cAAgB;AAAA,EAAA,CAAO,GAAChB,QAAAuB,GAAAvB,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAGxD,QAAAiC,IAAA,2BAA2B/B,CAAE;AAAE,MAAAgC;AAAA,EAAAlC,UAAAX,KAGnC6C,sBAACC,IAAA,EAAmB,SAAA,aAAsB,WAAA,QACvC9C,UAAAA,GACH,GAAaW,QAAAX,GAAAW,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAoC;AAAA,EAAApC,UAAAuB,KAEFa,IAAAA,MAAMb,EAAuB;AAAA,IAAAP,cAAgB;AAAA,EAAA,CAAO,GAAChB,QAAAuB,GAAAvB,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,EAAArC,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAE9DF,sBAACG,IAAA,EAAK,GAAGxC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,UAAAoC,KAHXK,IAAA,gBAAAC,EAACd,GAAA,EACU,SAAAQ,GAETC,UAAAA,GACF,GAAarC,QAAAoC,GAAApC,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAAiC,KAAAjC,UAAAkC,KAAAlC,EAAA,EAAA,MAAAyC,KAXfE,sBAACC,IAAA,EACK,IAAAX,GACA,IAAA7C,GAAMC,MAAMC,WAEhB4C,UAAAA;AAAAA,IAAAA;AAAAA,IAGAO;AAAAA,EAAAA,GAKF,GAAczC,QAAAiC,GAAAjC,QAAAkC,GAAAlC,QAAAyC,GAAAzC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,UAAAW,KAERkC,IAAA;AAAA,IAAA,GACCzD,GAAMO;AAAAA,IAAQ,GACdgB;AAAAA,EAAAA,GACJX,QAAAW,GAAAX,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAAO,KAAAP,UAAAI,KAAAJ,EAAA,EAAA,MAAA6C,KAJHC,sBAACC,IAAA,EACK,IAAAF,GAGH,GACGtC,GAEHH,UAAAA,GACH,GAAgBJ,QAAAO,GAAAP,QAAAI,GAAAJ,QAAA6C,GAAA7C,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,EAAAhD,EAAA,EAAA,MAAAgC,KAAAhC,EAAA,EAAA,MAAA2C,KAAA3C,EAAA,EAAA,MAAA8C,KAAA9C,EAAA,EAAA,MAAA6B,KAAA7B,UAAA8B,KA3BlBkB,IAAA,gBAAAC,EAACC,MACW,UAAA,IACJ,MAAArB,GACW,mBAAAC,GACR,SAAAE,GAETW,UAAAA;AAAAA,IAAAA;AAAAA,IAaAG;AAAAA,EAAAA,GASF,GAAS9C,QAAAgC,GAAAhC,QAAA2C,GAAA3C,QAAA8C,GAAA9C,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA;AAAA,MAAAmD;AAAA,SAAAnD,EAAA,EAAA,MAAAgD,KAAAhD,UAAA2B,KAnCXwB,4BACExB,UAAAA;AAAAA,IAAAA;AAAAA,IAMAqB;AAAAA,EAAAA,GA4BS,GACRhD,QAAAgD,GAAAhD,QAAA2B,GAAA3B,QAAAmD,KAAAA,IAAAnD,EAAA,EAAA,GApCHmD;AAoCG;AA9DA,SAAA/B,GAAAgC,GAAA;AAAA,SAiBuCvC,EAAKM;AAAU;ACpBtD,SAAAkC,GAAAtD,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAC,IAAAA;AAAAA,IAAAoD,OAAAA;AAAAA,IAAAnD,QAAAK;AAAAA,IAAAH,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP;AAMT,MAAAU;AAAA,EAAAT,SAAAQ,KAHdC,IAAAD,MAAAE,SAAA,CAAA,IAAAF,GAAWR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAX,QAAAG,IAAAM;AAAW,MAAAG;AAAA,EAAAZ,SAAAE,KAI4BU,IAAAC,CAAAA,MAAWA,EAAKE,UAAWb,CAAQ,GAACqD,MAAAvD,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAA3E,QAAAuD,IAAatC,EAAeC,GAAWN,CAAoC,CAAC,GAE5E,CAAA4C,GAAAC,CAAA,IAA0CC,GAAS,EAAK,GACxD,CAAAC,GAAAC,CAAA,IAAgCF,GAA6B,IAAI;AAAC,MAAArC;AAAA,EAAArB,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAE7ClB,IAAAwC,CAAAA,MAAA;AACnBA,IAAAA,EAAKC,gBAAAA,GACLF,EAAYC,EAAKE,aAAc;AAAA,EAAC,GACjC/D,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAHD,QAAAgE,IAAqB3C;AAGpB,MAAAG;AAAA,EAAAxB,SAAAE,KAEsBsB,IAAAA,CAAAyC,GAAAC,MAAA;AACrB,UAAAC,IAAaC,SAAQC,cAAe,GAAG;AACvCF,IAAAA,EAAIG,OAAQf,GACZY,EAAII,WAAYL,EAAMM,YAANtE,GAChBiE,EAAIM,MAAMlF,UAAW,QACrB6E,SAAQM,KAAKC,YAAaR,CAAI,GAC9BA,EAAIS,MAAAA,GACJR,SAAQM,KAAKG,YAAaV,CAAI,GAC9BD,EAAMY,WAAYX,EAAIG,IAAK;AAAA,EAAC,GAC7BtE,OAAAE,GAAAF,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AATD,QAAA+E,IAAuBvD;AAStB,MAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAuD,KAAAvD,SAAA+E,KAEmBtD,IAAA,OAAAuD,GAAAC,MAAA;AAIlBpB,IAAAA,EAAKC,gBAAAA,GAELL,EAAiB,EAAI,GACrBG,EAAY,IAAI;AAEhB,UAAAsB,IAAe,MAAMhB,EAAMiB,SAAU5B,CAAI;AAEzC,QAAI,CAAC2B,GAAM;AACTzB,MAAAA,EAAiB,EAAK;AAAC;AAAA,IAAA;AAIzBsB,IAAAA,EAAeG,GAAQhB,CAAM,GAC7BT,EAAiB,EAAK;AAAA,EAAC,GACxBzD,OAAAuD,GAAAvD,OAAA+E,GAAA/E,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAlBD,QAAAoF,IAAoB3D,GAwBFE,IAAAxB,EAAM4B,aAAN,oBAKFF,IAAA2B,KAAiBF,EAAK+B,WAAY,GACjCvD,IAAA0B,KAAAG,IAAA,WAAA;AAAyC,MAAA3B;AAAA,EAAAhC,EAAA,EAAA,MAAAK,KAAAL,UAAAwD,KAEnDxB,IAAAwB,IACC,gBAAAd,EAAC4C,IAAA,EAAuB,MAAA,IAAU,OAAA,UAAA,CAAS,IAE1CjF,KAAQ,gBAAAqC,EAAC6C,IAAA,CAAA,CAAoB,GAC/BvF,QAAAK,GAAAL,QAAAwD,GAAAxD,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,EAAAjC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgC,KAAAhC,EAAA,EAAA,MAAA2B,KAAA3B,EAAA,EAAA,MAAA6B,KAAA7B,UAAA8B,KAdHG,sBAACL,GAAA,EACM,MAAA,SACO,cAAAD,GACE,iBAAA,gBACA,iBAAA,QACLqC,SAAAA,MACL1D,GACM,UAAAuB,GACC,WAAAC,GAEVE,UAAAA,GAKH,GAAahC,QAAAM,GAAAN,QAAAgC,GAAAhC,QAAA2B,GAAA3B,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAAA,MAAAkC,GAAAE;AAAA,EAAApC,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAIGL,IAAA;AAAA,IAAAsD,UACF;AAAA,IAAQC,YACN;AAAA,EAAA,GAEGrD,IAAA;AAAA,IAAAoD,UACL;AAAA,IAAKC,YACH;AAAA,EAAA,GACbzF,QAAAkC,GAAAlC,QAAAoC,MAAAF,IAAAlC,EAAA,EAAA,GAAAoC,IAAApC,EAAA,EAAA;AAEK,QAAAqC,IAAAqD,EAAQ/B;AAAS,MAAAlB,GAAAE;AAAA,EAAA3C,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KACdE,IAAAA,MAAMmB,EAAY,IAAI,GAChBjB,IAAA;AAAA,IAAAhC,IACT;AAAA,MAAAgF,eACa;AAAA,IAAA;AAAA,EACjB,GACD3F,QAAAyC,GAAAzC,QAAA2C,MAAAF,IAAAzC,EAAA,EAAA,GAAA2C,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,MAAA7C,EAAA,EAAA,MAAAoF,KAAApF,UAAAsD,GAAA;AAAA,QAAAR;AAAA,IAAA9C,UAAAoF,KAEUtC,IAAA8C,CAAAA,MACT,gBAAA3C,EAAC4C,IAAA,EAEW,UAAA3B,EAAM4B,UACP,SAAAC,CAAAA,MAAAA;AAAO,MAAKX,EAAYW,GAAG7B,CAAM;AAAA,OAEzCA,UAAAA;AAAAA,MAAAA,EAAM8B,QACL,gBAAAtD,EAACuD,IAAA,EAAiB,IAAA;AAAA,QAAAC,OAAS;AAAA,MAAA,GACxBhC,YAAM8B,MACT;AAAA,MAEF,gBAAAtD,EAACyD,IAAA,EAAcjC,UAAAA,EAAMkC,MAAAA,CAAO;AAAA,IAAA,EAAA,GATvBlC,EAAMhE,EAUb,GACDF,QAAAoF,GAAApF,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA,GAbA6C,IAAAS,EAAK+C,IAAKvD,CAaV,GAAC9C,QAAAoF,GAAApF,QAAAsD,GAAAtD,QAAA6C;AAAAA,EAAA;AAAAA,IAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAA2D,KAAA3D,UAAAqC,KAAArC,EAAA,EAAA,MAAA6C,KAjCJC,sBAACwD,IAAA,EACS,SAAA,QACG,WAAA,GACG,cAAApE,GAIG,iBAAAE,GAIPuB,UAAAA,GACJ,MAAAtB,GACG,SAAAI,GACM,eAAAE,GAMdE,UAAAA,GAcH,GAAO7C,QAAA2D,GAAA3D,QAAAqC,GAAArC,QAAA6C,GAAA7C,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,SAAAhD,EAAA,EAAA,MAAAiC,KAAAjC,UAAA8C,KAnDTE,4BACEf,UAAAA;AAAAA,IAAAA;AAAAA,IAgBAa;AAAAA,EAAAA,GAkCO,GACN9C,QAAAiC,GAAAjC,QAAA8C,GAAA9C,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA,GApDHgD;AAoDG;AC9GA,MAAMuD,KAAqB;AAAA,EAChCC,SAAS;AAAA,IACP,yBAAyB;AAAA,MACvBC,YAAYA,CAACC,MAAiBA,EAAMC,QAAQC,QAAQC;AAAAA,IAAAA;AAAAA,EACtD;AAEJ;ACNO,SAASC,GAAevD,GAAgC;AAC7D,SAAOA,EAAKwD,OAAO,CAACC,GAAOC,MAClBA,EAAOF,OAAO,CAACG,GAAaC,MAAS;AAC1C,QAAIC,MAAMC,QAAQF,CAAI,GAAG;AACvB,YAAMG,IAAQH,EAAKI,GAAG,EAAE;AACxB,aAAO,OAAOD,KAAU,WAAWJ,IAAcI,IAAQJ;AAAAA,IAC3D;AAEA,WAAOM,OAAOC,QAAQN,CAAI,EAAEJ,OAAO,CAACW,GAAmB,CAACC,GAAKL,CAAK,MAC5DK,MAAQ,SACHD,IAEF,OAAOJ,KAAU,WAAWI,IAAYJ,IAAQI,GACtDR,CAAW;AAAA,EAChB,GAAGF,CAAK,GACP,CAAC;AACN;AAKO,SAASY,GACdrE,GACAyD,GACkB;AAClB,SAAIA,MAAU,IAAUzD,IAEjBA,EAAK8C,IAAKY,CAAAA,MACfA,EAAOZ,IAAKc,CAAAA,MAAS;AACnB,QAAIC,MAAMC,QAAQF,CAAI;AACpB,aAAOA,EAAKd,IAAI,CAACiB,GAAeO,MAC1BA,MAAUV,EAAK9B,SAAS,KAAK,OAAOiC,KAAU,WACxCA,IAAQN,IAAS,MAEpBM,CACR;AAGH,UAAMQ,IAA+C,CAAA;AAErD,eAAW,CAACH,GAAKL,CAAK,KAAKE,OAAOC,QAAQN,CAAI,GAAG;AAC/C,UAAIQ,MAAQ,QAAQ;AAClBG,QAAAA,EAAYH,CAAG,IAAIL;AACnB;AAAA,MACF;AACAQ,MAAAA,EAAYH,CAAG,IACb,OAAOL,KAAU,WAAYA,IAAQN,IAAS,MAAMM;AAAAA,IACxD;AAEA,WAAOQ;AAAAA,EACT,CAAC,CACH;AACF;AC/CO,MAAMC,KAAwB;AAiB9B,SAAAC,GAAAjI,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAA+H,OAAAzH;AAAAA,IAAA0H,mBAAAzH;AAAAA,IAAAN,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE3BkI,IAAAzH,MAAAE,SAAA,KAAAF,GACA0H,IAAAzH,MAAAC,SAAA,KAAAD,GAKA0H,IAAyBC,GAA2B1H,MAAS,GAC7D2H,IAA0BD,GACxB1H,MACF,GACAS,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAeqH,EAA0B,GAC3DC,IAAqBtH,EAAeuH,EAA6B,GACjEC,IAAuBxH,EAAeyH,EAA+B,GACrEC,IAAuB1H,EAAe2H,EAA+B;AAAC,MAAAhI;AAAA,EAAAZ,SAAAE,KAGpEU,IAAAiI,CAAAA,MAAWhI,EAAKE,UAA8Bb,CAAc,GAAC4I,YAAA9I,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAG/D,QAAA8I,IAJwB7H,EACtBL,CACF,KAEmBsH;AAAoC,MAAA7G,GAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAkI,KAAAlI,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAG7CE,IAAAA,MAAA;AAER,IADqBN,EAA6Bb,CAAc,GAAC4I,eAC5CpI,UACnBS,EAAUjB,GAAI;AAAA,MAAA4I,YAAcZ;AAAAA,IAAAA,CAAmB;AAAA,EAChD,GACA1G,IAAA,CAAC0G,GAAmBnH,GAAWb,GAAIiB,CAAS,GAACnB,OAAAkI,GAAAlI,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,GAAArB,OAAAwB,MAAAH,IAAArB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,IALhD+I,EAAU1H,GAKPG,CAA6C;AAAC,MAAAC,GAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAA8I,KAAA9I,EAAA,EAAA,MAAAiI,KAAAjI,EAAA,EAAA,MAAAuI,KAAAvI,UAAAyI,KAGvChH,IAAAA,OACR8G,EAAarI,GAAI;AAAA,IAAAA,IACX6H;AAAAA,IAAqBE,OAAAA;AAAAA,IAAAe,SAEhBF;AAAAA,IAAUG,IACfC;AAAAA,EAAAA,CAKL,GAEM,MAAMT,EAAevI,GAAI6H,EAAqB,IACpDpG,IAAA,CAACzB,GAAI+H,GAAOM,GAAcE,GAAgBK,CAAU,GAAC9I,OAAAE,GAAAF,OAAA8I,GAAA9I,QAAAiI,GAAAjI,QAAAuI,GAAAvI,QAAAyI,GAAAzI,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAbxD+I,EAAUtH,GAaPE,CAAqD;AAAC,MAAAE,GAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAE,KAAAF,UAAA8I,KAAA9I,EAAA,EAAA,MAAA2I,KAG/C9G,IAAAA,MAAA;AACR8G,IAAAA,EAAezI,GAAI6H,IAAuBe,CAAU;AAAA,EAAC,GACpDhH,KAAC5B,GAAI4I,GAAYH,CAAc,GAAC3I,QAAAE,GAAAF,QAAA8I,GAAA9I,QAAA2I,GAAA3I,QAAA6B,GAAA7B,QAAA8B,MAAAD,IAAA7B,EAAA,EAAA,GAAA8B,IAAA9B,EAAA,EAAA,IAFnC+I,EAAUlH,GAEPC,CAAgC;AAAC,MAAAE;AAAA,EAAAhC,EAAA,EAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAA8I,KAAA9I,UAAAmB,KAEHa,IAAAA,MAAA;AAC/B,UAAAmH,IAAsB,CAACL;AACvB,QAAAM,IAAUjB,EAAgBkB;AAE1B,QAAIF,GAAa;AAEf,YAAArI,IAAeC,EAAUb,CAAE;AAI3BmI,MAAAA,EAAiBgB,UAAWvI,GAAMwI;AAGlC,YAAAC,IAAoBxI,EAAUb,CAAE,GAA2BkJ;AAC3DjB,MAAAA,EAAgBkB,UAAWE,GAC3BH,IAAMA;AAAAA,IAAH;AAGLjI,IAAAA,EAAUjB,GAAI;AAAA,MAAA4I,YACAK;AAAAA,MAAaC,KAAAA;AAAAA,MAAAE,WAEdH,IAAA7B,CAAAA,MAAA;AAEL,cAAAkC,IAAezI,EAAUb,CAAE;AAAwB,eAC5C,IAAIuJ,KAAIC,aAAc5I,GAAM6I,QAAU;AAAA,UAAAlF,OACpC;AAAA,UAASmF,uBACO;AAAA,UAACC,uBACD;AAAA,QAAA,CACxB,EAACC,OAAQxC,IAAQ,GAAG;AAAA,MAAC,IAExBe,EAAiBgB;AAAAA,IAAAA,CACtB;AAAA,EAAC,GACHrJ,QAAAe,GAAAf,QAAAE,GAAAF,QAAA8I,GAAA9I,QAAAmB,GAAAnB,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAhCD,QAAAgE,IAAqBhC,GAkCrB+H,IAAqBjB,IAChB3I,GAAM6J,YAAN,yBACA7J,GAAM8J,YAAN,wBAMahI,IAAA9B,GAAM4B,aAANgI;AAAiC,MAAA7H;AAAA,EAAAlC,UAAAK,KAM5C6B,IAAA7B,uBAAS6J,IAAA,CAAA,CAAe,GAAGlK,QAAAK,GAAAL,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAoC;AAAA,EAAApC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAA8I,KAAA9I,EAAA,EAAA,MAAAiC,KAAAjC,UAAAkC,KAR9BE,sBAACR,GAAA,EACM,MAAA,SACO,cAAAK,GACH+B,SAAAA,GACL,IAAAuC,GAAkBC,SACTsC,eAAAA,GAAU,GACnBxI,GAEH4B,UAAAA,GACH,GAAalC,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAA8I,GAAA9I,QAAAiC,GAAAjC,QAAAkC,GAAAlC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,EAAA,MAAAoC,KAAApC,UAAA+J,KAVf1H,IAAA,gBAAAK,EAACyH,GAAA,EAAeJ,OAAAA,GACd3H,UAAAA,GAUF,GAAUpC,QAAAoC,GAAApC,QAAA+J,GAAA/J,QAAAqC,KAAAA,IAAArC,EAAA,EAAA,GAXVqC;AAWU;AAvGP,SAAA6G,GAAA3F,GAAA;AAuCC,QAAA6G,IAAmB7G,GACnByD,IAAcF,GAAesD,CAAU;AAAC,SACjCxC,GAAewC,GAAYpD,CAAK;AAAC;AAzCzC,SAAA4B,GAAAyB,GAAA;AAAA,SAgB4CxJ,EAAK8H;AAAe;AAhBhE,SAAAD,GAAA4B,GAAA;AAAA,SAe4CzJ,EAAK4H;AAAe;AAfhE,SAAAD,GAAA+B,GAAA;AAAA,SAc0C1J,EAAK0H;AAAa;AAd5D,SAAAD,GAAAlF,GAAA;AAAA,SAauCvC,EAAKE;AAAU;AAbtD,SAAAK,GAAAP,GAAA;AAAA,SAYuCA,EAAKM;AAAU;ACrCtD,MAAM/B,KAAS;AAAA,EACpBE,WAAW;AAAA,IACTC,SAAS;AAAA,IACTC,YAAY;AAAA,IACZE,KAAKA,CAAC;AAAA,MAAEG,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,IAAI;AAAA,EAAA;AAAA,EAEpC2G,SAAS;AAAA,IACP,yBAAyB;AAAA,MACvBC,YAAYA,CAACC,MAAiBA,EAAMC,QAAQC,QAAQC;AAAAA,IAAAA;AAAAA,EACtD;AAEJ;ACiBO,SAAA2D,GAAAzK,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAC,IAAAA;AAAAA,IAAAuK,aAAAjK;AAAAA,IAAAkK,kBAAAjK;AAAAA,IAAAkK,gBAAA/J;AAAAA,IAAAT,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAuK,WAAAA;AAAAA,IAAAtK,iBAAAA;AAAAA,EAAAA,IAAAP,GAEzB0K,IAAAjK,MAAAE,SAAA,KAAAF,GACAkK,IAAAjK,MAAAC,SAAA,IAAAD,GACAkK,IAAA/J,MAAAF,SAAA,MAAAE,GAMA8F,IAAcmE,GAAAA,GACd1J,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAeqH,EAA0B;AAAC,MAAAjH;AAAA,EAAArB,SAAAE,KAG/CmB,IAAAkJ,CAAAA,MACM1J,EAAKE,UAAsBb,CAAE,GAC/B4K,QAAN,IACR9K,OAAAE,GAAAF,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAJH,QAAA8K,IAAa7J,EACXC,GAAWG,CAGV,CACH;AAAC,MAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAAAnB,SAAA0G,KAGClF,IAAAA,CAAAwH,GAAA+B,GAAAC,MAAA;AACE,UAAAC,IAAmBC,GACjBlC,GACA;AAAA,MAAA+B,OAAAA;AAAAA,MAAAC,KAAAA;AAAAA,IAAAA,GACA;AAAA,MAAAG,QAAU;AAAA,MAAIC,SAAW;AAAA,MAAIC,SAAW;AAAA,IAAA,GACxC3E,CACF,GACA4E,IAAsBvK,EAA6Bb,CAAU,GAACgE;AAE9D/C,IAAAA,EAAyCjB,GAAI;AAAA,MAAA4K,MACrC9B;AAAAA,MAAOuC,WACFR;AAAAA,MAAKS,SACPR;AAAAA,MAAG9G,QACJ;AAAA,QAAA,GACHoH;AAAAA,QAAa,GACbL;AAAAA,MAAAA;AAAAA,IACL,CACD;AAAA,EAAC,GACHjL,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAA0G,GAAA1G,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAnBH,QAAAyL,IAAyBjK;AAqBxB,MAAAC,GAAAE;AAAA,EAAA3B,SAAAyK,KAAAzK,EAAA,CAAA,MAAA2K,KAAA3K,EAAA,CAAA,MAAA0K,KAAA1K,EAAA,EAAA,MAAAe,KAAAf,UAAAE,KAAAF,EAAA,EAAA,MAAAyL,KAGShK,IAAAA,MAAA;AACR,UAAAiK,IAAsB3K,EAAqBb,CAAE;AAE7C,IAAIwL,GAAaZ,QAGjBW,EACEC,GAAaZ,QAAbL,GACAiB,GAAaH,aAAbb,GACAgB,GAAaF,WAAbb,CACF;AAAA,EAAC,GACAhJ,IAAA,CACD8I,GACAE,GACAD,GACA3J,GACAb,GACAuL,CAAgB,GACjBzL,OAAAyK,GAAAzK,OAAA2K,GAAA3K,OAAA0K,GAAA1K,QAAAe,GAAAf,QAAAE,GAAAF,QAAAyL,GAAAzL,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAlBD+I,EAAUtH,GAWPE,CAOF;AAAC,MAAAE,GAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAe,KAAAf,UAAAE,KAAAF,EAAA,EAAA,MAAAyL,KAGQ5J,IAAAA,MACD,MAAA;AACL,UAAA8J,IAAsB5K,EAAqBb,CAAE;AAC7CuL,IAAAA,EACE,IACAC,GAAaH,aAAb,GACAG,GAAaF,WAAb,GACF;AAAA,EAAC,GAEF1J,KAACf,GAAWb,GAAIuL,CAAgB,GAACzL,QAAAe,GAAAf,QAAAE,GAAAF,QAAAyL,GAAAzL,QAAA6B,GAAA7B,QAAA8B,MAAAD,IAAA7B,EAAA,EAAA,GAAA8B,IAAA9B,EAAA,EAAA,IATpC+I,EAAUlH,GASPC,CAAiC;AAAC,MAAAE;AAAA,EAAAhC,UAAA2K,KAAA3K,EAAA,EAAA,MAAA0K,KAAA1K,EAAA,EAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAE,KAAAF,UAAAyL,KAAAzL,EAAA,EAAA,MAAA8K,KAEhB9I,IAAAA,MAAA;AACnB,UAAA4J,IAAgB,CAACd,GAEjBe,IAAsB9K,EAAqBb,CAAE;AAE7CuL,IAAAA,EACEG,GACAA,IAAWF,GAAaH,aAAbb,IAAX,GACAkB,IAAWF,GAAaF,WAAbb,IAAX,GACF;AAAA,EAAC,GACF3K,QAAA2K,GAAA3K,QAAA0K,GAAA1K,QAAAe,GAAAf,QAAAE,GAAAF,QAAAyL,GAAAzL,QAAA8K,GAAA9K,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAVD,QAAAgE,IAAqBhC;AAUpB,MAAAC;AAAA,EAAAjC,EAAA,EAAA,MAAA2K,KAAA3K,UAAA0K,KAAA1K,EAAA,EAAA,MAAAyL,KAEmBxJ,IAAAA,MAAA;AAClBwJ,IAAAA,EAAiB,IAAMf,GAAkBC,CAAc;AAAA,EAAC,GACzD3K,QAAA2K,GAAA3K,QAAA0K,GAAA1K,QAAAyL,GAAAzL,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAFD,QAAA8L,IAAoB7J;AAEnB,MAAAC;AAAA,EAAAlC,UAAAyL,KAICvJ,IAAA2B,CAAAA,MAAA;AACE,UAAAkI,IAAkBlI,GAKlBmI,IAAcD,EAAShB,OACvBkB,IAAYF,EAASf;AAErB,IAAID,MAAUrK,UAAasK,MAAQtK,UACjC+K,EAAiB,IAAMV,GAAOC,CAAG;AAAA,EAClC,GACFhL,QAAAyL,GAAAzL,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAbH,QAAAkM,IAAuBhK;AAetB,MAAAE,GAAAC;AAAA,EAAArC,EAAA,EAAA,MAAAkM,KAAAlM,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAmB,KAAAnB,UAAA8K,KAGS1I,IAAAA,MAAA;AACR,IAAI0I,KACF3J,EAA6BjB,GAAI;AAAA,MAAAiM,UACrB;AAAA,QAAAC,UACEF;AAAAA,MAAAA;AAAAA,IACZ,CACD;AAAA,EACF,GACA7J,IAAA,CAACnC,GAAI4K,GAAMoB,GAAgB/K,CAAS,GAACnB,QAAAkM,GAAAlM,QAAAE,GAAAF,QAAAmB,GAAAnB,QAAA8K,GAAA9K,QAAAoC,GAAApC,QAAAqC,MAAAD,IAAApC,EAAA,EAAA,GAAAqC,IAAArC,EAAA,EAAA,IARxC+I,EAAU3G,GAQPC,CAAqC;AAExC,QAAAgK,IAAoBlM,GAAMmM,UAAN,eACpBC,IAAqBpM,GAAMqM,WAAN,gBACrBC,IAAmBtM,GAAMuM,SAAN,cACnB3C,IAAqBe,IAAAyB,IAAAF,GAOD5J,IAAAtC,GAAM4B,aAANgI;AAAiC,MAAApH;AAAA,EAAA3C,UAAAK,KAM5CsC,IAAAtC,uBAASsM,IAAA,CAAA,CAAc,GAAG3M,QAAAK,GAAAL,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAyC,KAAAzC,EAAA,EAAA,MAAA2C,KAAA3C,UAAA8K,KAR7BjI,sBAACjB,GAAA,EACM,MAAA,SACO,cAAAa,GACHuB,SAAAA,GACL,IAAA5E,GAAMoH,SACGsE,eAAAA,GAAI,GACbxK,GAEHqC,UAAAA,GACH,GAAa3C,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAAyC,GAAAzC,QAAA2C,GAAA3C,QAAA8K,GAAA9K,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAA6C,KAAA7C,UAAA+J,KAVfjH,IAAA,gBAAAJ,EAACyH,GAAA,EAAeJ,OAAAA,GACdlH,UAAAA,GAUF,GAAU7C,QAAA6C,GAAA7C,QAAA+J,GAAA/J,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,EAAAhD,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAA4K,KAAA5K,EAAA,EAAA,MAAA8L,KAAA9L,EAAA,EAAA,MAAAyM,KAAAzM,UAAA8K,KACT9H,IAAA8H,KACC,gBAAApI,EAACyH,GAAA,EAAesC,OAAAA,GACd,UAAA,gBAAA/J,EAACd,KACM,MAAA,SACO6K,cAAAA,GACHX,SAAAA,GAAW,GAChBxL,GAEHsK,eAAa,gBAAAlI,EAACkK,IAAA,KACjB,EAAA,CACF,GACD5M,QAAAM,GAAAN,QAAA4K,GAAA5K,QAAA8L,GAAA9L,QAAAyM,GAAAzM,QAAA8K,GAAA9K,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA;AAAA,MAAAmD;AAAA,SAAAnD,EAAA,EAAA,MAAA8C,KAAA9C,UAAAgD,KAxBHG,sBAAC0J,IAAA,EAAQ,IAAAzN,GAAME,WACbwD,UAAAA;AAAAA,IAAAA;AAAAA,IAYCE;AAAAA,EAAAA,GAYH,GAAMhD,QAAA8C,GAAA9C,QAAAgD,GAAAhD,QAAAmD,KAAAA,IAAAnD,EAAA,EAAA,GAzBNmD;AAyBM;AAzJH,SAAAmF,GAAAlF,GAAA;AAAA,SAYuCvC,EAAKE;AAAU;AAZtD,SAAAK,GAAAP,GAAA;AAAA,SAWuCA,EAAKM;AAAU;ACzCtD,MAAM2L,KAAsBA,MAAA;AAAA,QAAA9M,IAAAC,EAAA,CAAA;AAAA,MAAAF;AAAA,SAAAC,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KACjCxC,sBAAA,OAAA,EACQ,OAAA,MACC,QAAA,MACC,SAAA,aACH,MAAA,QACC,OAAA,8BAEN,UAAA,gBAAA2C,YACI,GAAA,sDACG,MAAA,gBAAc,GAEvB,GAAM1C,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAXND;AAWM;ACcD,SAAAgN,GAAAhN,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAqB;AAAA,IAAAC,IAAAA;AAAAA,IAAA8M,kBAAAxM;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE1BiN,IAAAxM,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B;AAAC,MAAAX;AAAA,EAAAT,SAAAE,KAE/CO,IAAA2C,CAAAA,MAAWvC,EAAKE,UAA6Bb,CAAa,GAAC+M,WAAAjN,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AADxE,QAAAkN,IAAuBjM,EACrBC,GAAWT,CAA2D,CACxE,GAEAM,IAAkBE,EAAeqH,EAA0B;AAAC,MAAA1H;AAAAuM,EAAAA,GAAA;AAM1D,UAAAjJ,IAAenD,EAA6Bb,CAAU,GAACgE;AACvD,QAAI,CAACA,GAAM;AAAEtD,MAAAA,IAAO;AAAP,YAAAuM;AAAAA,IAAY;AAMzBvM,IAAAA,KAJewG,MAAKC,QAASnD,EAAM+C,MAEjB,IADd/C,EAAM+C,SADK,CAEV/C,EAAM+C,MAAO,GAEL5B,SAAU;AAAA,EAAC;AAR1B,QAAA+H,IAAuBxM;AASJ,MAAAS;AAAA,MAAArB,EAAA,CAAA,MAAAe,KAAAf,SAAAE,GAAA;AAAAmN,IAAAA,GAAA;AAMjB,YAAApI,IAAelE,EAA6Bb,CAAU,GAACgE;AACvD,UAAI,CAACA,GAAM;AAAE7C,QAAAA,IAAO;AAAP,cAAAgM;AAAAA,MAAY;AAMzBhM,MAAAA,KAJe+F,MAAKC,QAASnD,EAAM+C,MAEjB,IADd/C,EAAM+C,SADK,CAEV/C,EAAM+C,MAAO,GAELqG,KAAM9E,EAAuC;AAAA,IAAC;AAAAxI,IAAAA,OAAAe,GAAAf,OAAAE,GAAAF,OAAAqB;AAAAA,EAAA;AAAAA,IAAAA,IAAArB,EAAA,CAAA;AAI7D,QAAAuN,IAZyBlM,KAYS2L,GAClCC,IAAkBC,KAAAK;AAA2C,MAAA/L;AAAA,EAAAxB,EAAA,CAAA,MAAAe,KAAAf,SAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAO3DK,IAAAgM,CAAAA,MAAA;AACE,UAAA5H,IAAe7E,EAA6Bb,CAAU,GAACgE;AAEvD,QAAI,CAACA;AAAM;AAMX,UAAAuJ,KAJerG,MAAKC,QAASnD,EAAM+C,MAEjB,IADd/C,EAAM+C,SADK,CAEV/C,EAAM+C,MAAO,GAEUZ,IAAKqH,CAAAA,MAAA;AAE/B,YAAAC,IAAuBC,GAA+BC;AAI7B,aAElB;AAAA,QAAA,GACFD;AAAAA,QAAC,GACDE,GAAqBN,GANxB,OAAOG,KAAkB,WAAzBA,IAAAI,EAM2C;AAAA,MAAA;AAAA,IAC5C,CACF;AAED5M,IAAAA,EAAUjB,GAAI;AAAA,MAAAgE,QACJ;AAAA,QAAA,GACHA;AAAAA,QAAM+C,QACDwG;AAAAA,MAAAA;AAAAA,IACV,CACD;AAAA,EAAC,GACHzN,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AA9BH,QAAAgO,IAAsBxM;AAgCrB,MAAAC,GAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAuN,KAAAvN,UAAAE,KAAAF,EAAA,EAAA,MAAAmB,KAGSM,IAAAA,MAAA;AACRN,IAAAA,EAAUjB,GAAI;AAAA,MAAA+M,WAAaM;AAAAA,IAAAA,CAA2B;AAAA,EAAC,GACtD5L,KAAC4L,GAA2BrN,GAAIiB,CAAS,GAACnB,OAAAuN,GAAAvN,QAAAE,GAAAF,QAAAmB,GAAAnB,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAF7C+I,EAAUtH,GAEPE,CAA0C;AAAC,MAAAE;AAAA,EAAA7B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAiN,KAAAjN,EAAA,EAAA,MAAAmB,KAAAnB,UAAAgO,KAEbnM,IAAAA,MAAA;AAC/B,UAAAoM,IAAqB,CAAChB;AAEtB9L,IAAAA,EAAUjB,GAAI;AAAA,MAAA+M,WAAagB;AAAAA,IAAAA,CAAc,GACzCD,EAAcC,CAAY;AAAA,EAAC,GAC5BjO,QAAAE,GAAAF,QAAAiN,GAAAjN,QAAAmB,GAAAnB,QAAAgO,GAAAhO,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AALD,QAAAgE,IAAqBnC,GAOrBkI,IAAqBkD,IAChB9M,GAAM+N,aAAN,qBACA/N,GAAMqN,WAAN;AAGL,MAAI,CAACJ;AAAc,WACV;AAOS,QAAAtL,IAAA3B,GAAM4B,aAANgI;AAAiC,MAAA/H;AAAA,EAAAhC,UAAAK,KAM5C2B,IAAA3B,uBAASyM,IAAA,CAAA,CAAmB,GAAG9M,QAAAK,GAAAL,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,EAAAjC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAiN,KAAAjN,EAAA,EAAA,MAAAgC,KAAAhC,UAAA8B,KARlCG,sBAACL,GAAA,EACM,MAAA,SACO,cAAAE,GACHkC,SAAAA,GACL,IAAAuC,GAAkBC,SACTyG,eAAAA,GAAS,GAClB3M,GAEH0B,UAAAA,GACH,GAAahC,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAAiN,GAAAjN,QAAAgC,GAAAhC,QAAA8B,GAAA9B,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,EAAA,MAAAiC,KAAAjC,UAAA+J,KAVf7H,IAAA,gBAAAQ,EAACyH,GAAA,EAAeJ,OAAAA,GACd9H,UAAAA,GAUF,GAAUjC,QAAAiC,GAAAjC,QAAA+J,GAAA/J,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAXVkC;AAWU;AArHP,SAAAsG,GAAAoF,GAAA;AAAA,SAuCwBA,GAA+BC;AAAA;AAvCvD,SAAAvF,GAAAiC,GAAA;AAAA,SAYuC1J,EAAKE;AAAU;AAZtD,SAAAK,GAAAP,GAAA;AAAA,SAOuCA,EAAKM;AAAU;ACvBtD,MAAMgN,KAAyB;AAkB/B,SAAAC,GAAArO,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAC,IAAAA;AAAAA,IAAAmO,eAAAA;AAAAA,IAAApG,OAAAzH;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAG5BkI,IAAAzH,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B,GAC3DmH,IAAqBtH,EAAeqH,EAA6B,GACjEG,IAAuBxH,EAAeuH,EAA+B,GACrEG,IAAuB1H,EAAeyH,EAA+B,GACrE4F,IAAyBrN,EAAe2H,EAAiC;AAAC,MAAAnI;AAAA,EAAAT,SAAAE,KAG7DO,IAAAoI,CAAAA,MAAWhI,EAAKE,UAA+Bb,CAAY,GAACqO,UAAAvO,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAGzE,QAAAuO,IAJsBtN,EACpBC,GAAWT,CAA4D,CACzE,KAEiB;AAAsB,MAAAG;AAAA,EAAAZ,EAAA,CAAA,MAAAuO,KAAAvO,SAAAqO,KAE9BzN,IAAA2N,IAAAF,IAAA,CAAA,GAA6BrO,OAAAuO,GAAAvO,OAAAqO,GAAArO,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AADtC,QAAAwO,IACS5N;AAER,MAAAS,GAAAG;AAAA,EAAAxB,SAAAE,KAAAF,EAAA,CAAA,MAAAuO,KAAAvO,EAAA,CAAA,MAAAwO,KAAAxO,EAAA,CAAA,MAAAiI,KAAAjI,SAAAuI,KAAAvI,EAAA,EAAA,MAAAyI,KAGSpH,IAAAA,OACRkH,EAAarI,GAAI;AAAA,IAAAA,IACXiO;AAAAA,IAAsBlG,OAAAA;AAAAA,IAAAe,SAEjBuF;AAAAA,IAAQtF,IACbC;AAAAA,IAKHuF,QACO;AAAA,MAAAD,aAAAA;AAAAA,IAAAA;AAAAA,EAAc,CACvB,GAEM,MAAM/F,EAAevI,GAAIiO,EAAsB,IACrD3M,IAAA,CAACtB,GAAI+H,GAAOM,GAAcE,GAAgB8F,GAAUC,CAAW,GAACxO,OAAAE,GAAAF,OAAAuO,GAAAvO,OAAAwO,GAAAxO,OAAAiI,GAAAjI,OAAAuI,GAAAvI,QAAAyI,GAAAzI,QAAAqB,GAAArB,QAAAwB,MAAAH,IAAArB,EAAA,EAAA,GAAAwB,IAAAxB,EAAA,EAAA,IAfnE+I,EAAU1H,GAePG,CAAgE;AAAC,MAAAC,GAAAE;AAAA,EAAA3B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAuO,KAAAvO,EAAA,EAAA,MAAAwO,KAAAxO,EAAA,EAAA,MAAA2I,KAAA3I,UAAAsO,KAG1D7M,IAAAA,MAAA;AACRkH,IAAAA,EAAezI,GAAIiO,IAAwBI,CAAQ,GACnDD,EAAiBpO,GAAIiO,IAAwB;AAAA,MAAAK,aAAAA;AAAAA,IAAAA,CAAe;AAAA,EAAC,GAC5D7M,IAAA,CAACzB,GAAIqO,GAAUC,GAAa7F,GAAgB2F,CAAgB,GAACtO,QAAAE,GAAAF,QAAAuO,GAAAvO,QAAAwO,GAAAxO,QAAA2I,GAAA3I,QAAAsO,GAAAtO,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAHhE+I,EAAUtH,GAGPE,CAA6D;AAAC,MAAAE;AAAA,EAAA7B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAuO,KAAAvO,EAAA,EAAA,MAAAqO,KAAArO,UAAAmB,KAEhCU,IAAAA,MAAA;AAC/B,IAAI0M,IAEFpN,EAAUjB,GAAI;AAAA,MAAAqO,UACF;AAAA,MAAKC,aACF,CAAA;AAAA,IAAA,CACd,IAGDrN,EAAUjB,GAAI;AAAA,MAAAqO,UACF;AAAA,MAAIC,aACDH;AAAAA,IAAAA,CACd;AAAA,EACF,GACFrO,QAAAE,GAAAF,QAAAuO,GAAAvO,QAAAqO,GAAArO,QAAAmB,GAAAnB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AAdD,QAAAgE,IAAqBnC;AAiBrB,MAAIwM,EAAahJ,WAAY;AAAC,WACrB;AAGT,QAAA0E,IAAqBwE,IAChBpO,GAAMuO,UAAN,qBACAvO,GAAMwO,QAAN,kBAEL5M,IAAkB5B,GAAM4B,aAANgI;AAAiC,MAAAjI;AAAA,EAAA9B,UAAAK,KAY5CyB,IAAAzB,KAAQ,gBAAAqC,EAACkM,IAAA,EAA0B,UAAA,SAAO,GAAG5O,QAAAK,GAAAL,QAAA8B,KAAAA,IAAA9B,EAAA,EAAA;AAAA,MAAAgC;AAAA,EAAAhC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAA+B,KAAA/B,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAuO,KAAAvO,UAAA8B,KARhDE,sBAACJ,GAAA,EACM,MAAA,SACOG,cAAAA,GACHiC,SAAAA,GACL,IAAAuC,GAAkBC,SACT+H,eAAAA,GAAQ,GACjBjO,GAEHwB,UAAAA,GACH,GAAa9B,QAAAM,GAAAN,QAAA+B,GAAA/B,QAAAgE,GAAAhE,QAAAuO,GAAAvO,QAAA8B,GAAA9B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,SAAAjC,EAAA,EAAA,MAAAgC,KAAAhC,UAAA+J,KAVf9H,IAAA,gBAAAS,EAACyH,GAAA,EAAeJ,OAAAA,GACd/H,UAAAA,GAUF,GAAUhC,QAAAgC,GAAAhC,QAAA+J,GAAA/J,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA,GAXViC;AAWU;AAvFP,SAAAiH,GAAA3F,GAAAkL,GAAA;AA+BC,QAAAnL,IAAemL,GAAMD,eAAP,CAAA;AACd,SAAIlL,EAAK+B,WAAY,IAAU9B,IAExBsL,GAAwBtL,GAA0BD,CAAK;AAAC;AAlChE,SAAAsF,GAAAyB,GAAA;AAAA,SAY8CxJ,EAAKyN;AAAiB;AAZpE,SAAA5F,GAAA4B,GAAA;AAAA,SAW4CzJ,EAAK8H;AAAe;AAXhE,SAAAH,GAAA+B,GAAA;AAAA,SAU4C1J,EAAK4H;AAAe;AAVhE,SAAAH,GAAAlF,GAAA;AAAA,SAS0CvC,EAAK0H;AAAa;AAT5D,SAAAnH,GAAAP,GAAA;AAAA,SAQuCA,EAAKM;AAAU;AAsF7D,SAAS0N,GACPtL,GACAiL,GACkB;AAClB,SAAOjL,EAAK8C,IAAKY,CAAAA,MACfA,EAAO6H,OAAQ3H,CAAAA,MAAS;AACtB,UAAM4H,IAAO5H,EAAK4H;AAClB,WAAO,OAAOA,KAAS,YAAYP,EAAYQ,SAASD,CAAI;AAAA,EAC9D,CAAC,CACH;AACF;AC5HO,MAAME,KAAmB,YAE1BC,KAAiB;AAoBhB,SAAAC,GAAApP,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAC,IAAAA;AAAAA,IAAAkP,UAAAA;AAAAA,IAAAnH,OAAAzH;AAAAA,IAAAL,QAAAA;AAAAA,IAAAkP,gBAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,eAAA9O;AAAAA,EAAAA,IAAAV,GAGvBkI,IAAAzH,MAAAE,SAAA,KAAAF,GAIA+O,IAAA9O,MAAAC,SAAAwO,KAAAzO,GAEA+O,IAAiBpH,GAAyB,IAAI,GAC9CqH,IAA2BrH,GAA6C,IAAI;AAAC,MAAAxH;AAAA,EAAAZ,SAAAE,KAG1CU,IAAAC,CAAAA,MACjCA,EAAKE,UAA0Bb,CAAE,GAACF,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AADpC,QAAA0P,IAAoBzO,EAAeL,CAEnC,GACAoI,IAAgB0G,GAAWC,mBAAX,IAChBC,IAAmBF,GAAWE,cAAX,IACnBC,IAAuBzH,GAAOY,CAAO,GAErC8F,IAAeM,KAAAU,IAEf3O,IAAkBF,EAAeG,EAA0B,GAC3DmH,IAAqBtH,EAAeqH,EAA6B,GACjEG,IAAuBxH,EAAeuH,EAA+B,GACrEG,IAAuB1H,EAAeyH,EAA+B,GACrE4F,IAAyBrN,EAAe2H,EAAiC;AAAC,MAAAvH;AAAA,EAAArB,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAGxEE,IAAA0O,CAAAA,MAAA;AACE5O,IAAAA,EAAUjB,GAAI;AAAA,MAAA0P,YAAcG;AAAAA,IAAAA,CAAM;AAAA,EAAC,GACpC/P,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAHH,QAAAgQ,IAAsB3O;AAKrB,MAAAG,GAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAgJ,KAAAhJ,EAAA,CAAA,MAAA8O,KAAA9O,EAAA,CAAA,MAAAE,KAAAF,SAAAiI,KAAAjI,EAAA,CAAA,MAAAuI,KAAAvI,EAAA,EAAA,MAAA4P,KAAA5P,EAAA,EAAA,MAAAyI,KAGSjH,IAAAA,OACR+G,EAAarI,GAAI;AAAA,IAAAA,IACX+O;AAAAA,IAAgBhH,OAAAA;AAAAA,IAAAe,SAAAA;AAAAA,IAAAC,IAGhB,OAAA1F,GAAAkL,OAAA;AACF,YAAAwB,KAA8BxB,IAAMmB,cAAP;AAGwC,aAAtDd,EAAOvL,GAA0B0M,EAAoB;AAAA,IAGvD;AAAA,IACdxB,QACO;AAAA,MAAAmB,YAAAA;AAAAA,IAAAA;AAAAA,IAAcM,UACZ,CAAC/B,EAAsB;AAAA,EAAA,CAClC,GAEM,MAAM1F,EAAevI,GAAI+O,EAAgB,IAC/CxN,IAAA,CAACvB,GAAI+H,GAAO6G,GAAQvG,GAAcE,GAAgBO,GAAS4G,CAAU,GAAC5P,OAAAgJ,GAAAhJ,OAAA8O,GAAA9O,OAAAE,GAAAF,OAAAiI,GAAAjI,OAAAuI,GAAAvI,QAAA4P,GAAA5P,QAAAyI,GAAAzI,QAAAwB,GAAAxB,QAAAyB,MAAAD,IAAAxB,EAAA,EAAA,GAAAyB,IAAAzB,EAAA,EAAA,IAnBzE+I,EAAUvH,GAmBPC,CAAsE;AAAC,MAAAE,GAAAE;AAAA,EAAA7B,EAAA,EAAA,MAAAgJ,KAAAhJ,UAAAE,KAAAF,EAAA,EAAA,MAAA2I,KAGhEhH,IAAAA,MAAA;AACRgH,IAAAA,EAAezI,GAAI+O,IAAkBjG,CAAO;AAAA,EAAC,GAC5CnH,KAAC3B,GAAI8I,GAASL,CAAc,GAAC3I,QAAAgJ,GAAAhJ,QAAAE,GAAAF,QAAA2I,GAAA3I,QAAA2B,GAAA3B,QAAA6B,MAAAF,IAAA3B,EAAA,EAAA,GAAA6B,IAAA7B,EAAA,EAAA,IAFhC+I,EAAUpH,GAEPE,CAA6B;AAAC,MAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAuP,KAAAvP,UAAAE,KAAAF,EAAA,EAAA,MAAAsO,KAI/BxM,IAAAqO,CAAAA,MAAA;AACE,IAAIV,EAAkBpG,WACpB+G,aAAaX,EAAkBpG,OAAQ,GAEzCoG,EAAkBpG,UAAWgH,WAAW,MAAA;AACtC/B,MAAAA,EAAiBpO,GAAI+O,IAAkB;AAAA,QAAAW,YAAcG;AAAAA,MAAAA,CAAM;AAAA,IAAC,GAC3DR,CAAa;AAAA,EAFU,GAG3BvP,QAAAuP,GAAAvP,QAAAE,GAAAF,QAAAsO,GAAAtO,QAAA8B,KAAAA,IAAA9B,EAAA,EAAA;AARH,QAAAsQ,IAA8BxO;AAU7B,MAAAE,GAAAC;AAAA,EAAAjC,UAAAgJ,KAGShH,IAAAA,MAAA;AAER,IAAIgH,KAAA,CAAY6G,EAAcxG,WAAYmG,EAAQnG,WAChDmG,EAAQnG,QAAQkH,MAAAA,GAGlBV,EAAcxG,UAAWL;AAAAA,EAAH,GACrB/G,IAAA,CAAC+G,CAAO,GAAChJ,QAAAgJ,GAAAhJ,QAAAgC,GAAAhC,QAAAiC,MAAAD,IAAAhC,EAAA,EAAA,GAAAiC,IAAAjC,EAAA,EAAA,IAPZ+I,EAAU/G,GAOPC,CAAS;AAAC,MAAAC,GAAAE;AAAA,EAAApC,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAGHL,IAAAA,MACD,MAAA;AACL,IAAIuN,EAAkBpG,WACpB+G,aAAaX,EAAkBpG,OAAQ;AAAA,EACxC,GAEFjH,IAAA,CAAA,GAAEpC,QAAAkC,GAAAlC,QAAAoC,MAAAF,IAAAlC,EAAA,EAAA,GAAAoC,IAAApC,EAAA,EAAA,IANL+I,EAAU7G,GAMPE,CAAE;AAAC,MAAAC;AAAA,EAAArC,EAAA,EAAA,MAAAsQ,KAAAtQ,UAAAgQ,KAGJ3N,IAAAwB,CAAAA,MAAA;AACE,UAAA2M,KAAiB3M,EAAK4M,OAAOnJ;AAC7B0I,IAAAA,EAAcQ,EAAQ,GACtBF,EAAsBE,EAAQ;AAAA,EAAC,GAChCxQ,QAAAsQ,GAAAtQ,QAAAgQ,GAAAhQ,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AALH,QAAA0Q,IAAqBrO;AAOpB,MAAAI;AAAA,EAAAzC,EAAA,EAAA,MAAAE,KAAAF,UAAAgQ,KAAAhQ,EAAA,EAAA,MAAAsO,KAE+B7L,IAAAA,MAAA;AAC9BuN,IAAAA,EAAc,EAAE,GAChB1B,EAAiBpO,GAAI+O,IAAkB;AAAA,MAAAW,YAAc;AAAA,IAAA,CAAI,GACrDJ,EAAQnG,WACVmG,EAAQnG,QAAQkH,MAAAA;AAAAA,EACjB,GACFvQ,QAAAE,GAAAF,QAAAgQ,GAAAhQ,QAAAsO,GAAAtO,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAND,QAAA2Q,IAAoBlO;AAQpB,MAAI,CAACuG;AAAO,WACH;AAGT,QAAA4H,IAAoBzQ,GAAMyQ,eAAN,aACpBC,IAAuB1Q,GAAM0Q,kBAAN;AAAwC,MAAAlO;AAAA,EAAA3C,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAavDI,sBAACmO,IAAA,EAAwB,UAAA,SACvB,UAAA,gBAAApO,EAACqO,MAAc,GACjB,GAAiB/Q,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAsP,KAAAtP,EAAA,EAAA,MAAA6Q,KAAA7Q,EAAA,EAAA,MAAA2Q,KAAA3Q,UAAA4P,KAEL/M,IAAA+M,sBACXkB,IAAA,EAAwB,UAAA,OACvB,UAAA,gBAAApO,EAACd,GAAA,EACM,MAAA,SACOiP,cAAAA,GACHF,YACJ,MAAA,OAEJrB,UAAAA,KAAa,gBAAA5M,EAACsO,MAAuB,UAAA,QAAA,CAAO,EAAA,CAC/C,EAAA,CACF,IAVY,MAWNhR,QAAAsP,GAAAtP,QAAA6Q,GAAA7Q,QAAA2Q,GAAA3Q,QAAA4P,GAAA5P,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,UAAA6C,KAjBEC,IAAA;AAAA,IAAAmO,gBAERtO;AAAAA,IAEiBuO,cAELrO;AAAAA,EAAAA,GAYf7C,QAAA6C,GAAA7C,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,SAAAhD,EAAA,EAAA,MAAAqP,KAAArP,EAAA,EAAA,MAAA0Q,KAAA1Q,EAAA,EAAA,MAAA4Q,KAAA5Q,EAAA,EAAA,MAAA4P,KAAA5P,UAAA8C,KA1BHE,sBAACmO,IAAA,EACW3B,UAAAA,GACL,MAAA,SACL,WAAA,IACQ,SAAA,UACKoB,aAAAA,GACNhB,OAAAA,GACGc,aACE,YAAA5N,GAkBX,GACGuM,GAAc,GAClBrP,QAAAqP,GAAArP,QAAA0Q,GAAA1Q,QAAA4Q,GAAA5Q,QAAA4P,GAAA5P,QAAA8C,GAAA9C,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA,GA5BFgD;AA4BE;AAnJC,SAAA4F,GAAAC,GAAA;AAAA,SA0B8ChI,EAAKyN;AAAiB;AA1BpE,SAAA5F,GAAA2B,GAAA;AAAA,SAyB4CxJ,EAAK8H;AAAe;AAzBhE,SAAAH,GAAA8B,GAAA;AAAA,SAwB4CzJ,EAAK4H;AAAe;AAxBhE,SAAAH,GAAAiC,GAAA;AAAA,SAuB0C1J,EAAK0H;AAAa;AAvB5D,SAAAnH,GAAAgC,GAAA;AAAA,SAsBuCvC,EAAKM;AAAU;AAqI7D,MAAM2O,KAAoCA,CACxCvM,GACAqM,MACG;AACH,MAAI,CAACA,EAAWwB,KAAAA,EAAQ,QAAOC,QAAQC,QAAQ/N,CAAI;AAEnD,QAAMgO,IAAc3B,EAAW4B,YAAAA;AAE/B,SAAOH,QAAQC,QACb/N,EAAK8C,IAAKY,CAAAA,MACRA,EAAO6H,OAAQ3H,CAAAA,MACbK,OAAOiK,OAAOtK,CAAI,EAAEmG,KACjBhG,CAAAA,MACC,OAAOA,KAAU,YACjBA,EAAMkK,YAAAA,EAAcxC,SAASuC,CAAW,CAC5C,CACF,CACF,CACF;AACF;ACnLO,SAAAG,GAAA3R,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAwB;AAAA,IAAAC,IAAAA;AAAAA,IAAAyR,gBAAAnR;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE7B4R,IAAAnR,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAeqH,EAA0B;AAAC,MAAA7H;AAAA,EAAAT,SAAAE,KAE/CO,IAAA8J,CAAAA,MAAW1J,EAAKE,UAA0Bb,CAAmB,GAACyP,iBAAA3P,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAG3E,QAAA4R,IAJuB3Q,EACrBC,GAAWT,CAA8D,CAC3E,KAEkBkR;AAAgC,MAAA/Q,GAAAS;AAAA,EAAArB,EAAA,CAAA,MAAA2R,KAAA3R,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAGxCP,IAAAA,MAAA;AAER,IADqBG,EAAyBb,CAAmB,GAACyP,oBAC7CjP,UACnBS,EAAUjB,GAAI;AAAA,MAAAyP,iBAAmBgC;AAAAA,IAAAA,CAAgB;AAAA,EAClD,GACAtQ,IAAA,CAACsQ,GAAgB5Q,GAAWb,GAAIiB,CAAS,GAACnB,OAAA2R,GAAA3R,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAY,GAAAZ,OAAAqB,MAAAT,IAAAZ,EAAA,CAAA,GAAAqB,IAAArB,EAAA,CAAA,IAL7C+I,EAAUnI,GAKPS,CAA0C;AAAC,MAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAE,KAAAF,SAAA4R,KAAA5R,EAAA,EAAA,MAAAmB,KAEbK,IAAAA,MAAA;AAC/BL,IAAAA,EAAUjB,GAAI;AAAA,MAAAyP,iBAAmB,CAACiC;AAAAA,IAAAA,CAAW;AAAA,EAAC,GAC/C5R,OAAAE,GAAAF,OAAA4R,GAAA5R,QAAAmB,GAAAnB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAFD,QAAAgE,IAAqBxC,GAIrBuI,IAAqB6H,IAChBzR,GAAMqM,WAAN,mBACArM,GAAMmM,UAAN,iBAELvK,IAAkB5B,GAAM4B,aAANgI;AAAiC,MAAAtI;AAAA,EAAAzB,UAAAK,KAY5CoB,IAAApB,KAAQ,gBAAAqC,EAACqO,IAAA,EAAwB,UAAA,SAAO,GAAG/Q,QAAAK,GAAAL,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAA,MAAA2B;AAAA,EAAA3B,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAA+B,KAAA/B,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAA4R,KAAA5R,UAAAyB,KAR9CE,sBAACC,GAAA,EACM,MAAA,SACOG,cAAAA,GACHiC,SAAAA,GACL,IAAAuC,GAAkBC,SACToL,eAAAA,GAAS,GAClBtR,GAEHmB,UAAAA,GACH,GAAazB,QAAAM,GAAAN,QAAA+B,GAAA/B,QAAAgE,GAAAhE,QAAA4R,GAAA5R,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA6B;AAAA,SAAA7B,EAAA,EAAA,MAAA2B,KAAA3B,UAAA+J,KAVflI,IAAA,gBAAAa,EAACyH,GAAA,EAAeJ,OAAAA,GACdpI,UAAAA,GAUF,GAAU3B,QAAA2B,GAAA3B,QAAA+J,GAAA/J,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAXV6B;AAWU;AA7CP,SAAAyG,GAAAlF,GAAA;AAAA,SAQuCvC,EAAKE;AAAU;AARtD,SAAAK,GAAAP,GAAA;AAAA,SAOuCA,EAAKM;AAAU;AChCtD,MAAM0Q,KAAmBA,MAAA;AAAA,QAAA7R,IAAAC,EAAA,CAAA;AAAA,MAAAF;AAAA,SAAAC,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAC9BxC,sBAAA,OAAA,EAAW,OAAA,8BAAkC,MAAA,QAAe,SAAA,aAC1D,UAAA,gBAAA2C,EAAA,QAAA,EACO,MAAA,gBACI,UAAA,WACP,GAAA,sMACO,UAAA,WAAS,GAEtB,GAAM1C,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAPND;AAOM;ACKD,SAAA+R,GAAA/R,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAA4B;AAAA,IAAA8R,QAAAA;AAAAA,EAAAA,IAAAhS;AAAmC,MAAAS;AAAA,EAAAR,EAAA,CAAA,MAAA+R,EAAA7R,MAQpDM,IAAA;AAAA,IAAAN,IAAM6R,EAAM7R;AAAAA,EAAAA,GAAKF,EAAA,CAAA,IAAA+R,EAAA7R,IAAAF,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAPjC,QAAA;AAAA,IAAAgS,YAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,EAAAA,IAOIC,GAAY9R,CAAiB;AAAC,MAAAC;AAAA,EAAAT,SAAAmS,KAGrB1R,IAAA8R,GAAGC,UAAUC,SAAUN,CAAS,GAACnS,OAAAmS,GAAAnS,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAEnC,QAAAY,IAAAyR,IAAA,MAAA,GACDhR,IAAAgR,IAAA,aAAA;AAAgC,MAAA7Q;AAAA,EAAAxB,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAY,KAAAZ,EAAA,CAAA,MAAAqB,KAAArB,SAAAoS,KAJ5B5Q,IAAA;AAAA,IAAA2Q,WACD1R;AAAAA,IAAiC2R,YAAAA;AAAAA,IAAAM,SAEnC9R;AAAAA,IAAoB+R,QACrBtR;AAAAA,EAAAA,GACTrB,OAAAS,GAAAT,OAAAY,GAAAZ,OAAAqB,GAAArB,OAAAoS,GAAApS,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AALD,QAAAyE,IAAcjD;AAKb,MAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAUOd,IAAA;AAAA,IAAA,mBACiB;AAAA,MAAAmR,SACRxR;AAAAA,MAAoDyR,eAC9C;AAAA,IAAA;AAAA,EACjB,GACD7S,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAA,MAAA2B;AAAA,EAAA3B,EAAA,EAAA,MAAA+R,EAAA3L,SAEDzE,IAAA,gBAAAe,EAACyD,IAAA,EAAc4L,UAAAA,EAAM3L,OAAO,GAAepG,EAAA,EAAA,IAAA+R,EAAA3L,OAAApG,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA6B;AAAA,SAAA7B,EAAA,EAAA,MAAAgS,KAAAhS,EAAA,EAAA,MAAAiS,KAAAjS,EAAA,EAAA,MAAAkS,KAAAlS,EAAA,EAAA,MAAAyE,KAAAzE,UAAA2B,KAd7CE,sBAACgE,IAAA,EACMqM,QACEzN,OAAAA,GAAK,GACRuN,GAAU,GACVC,GACC,MAAA,YACK,UAAA,GACN,IAAAxQ,GAOJE,UAAAA,GACF,GAAW3B,QAAAgS,GAAAhS,QAAAiS,GAAAjS,QAAAkS,GAAAlS,QAAAyE,GAAAzE,QAAA2B,GAAA3B,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAfX6B;AAeW;AAjCR,SAAAT,GAAAsF,GAAA;AAAA,SA2BuB,aAAaA,EAAKC,QAAQC,QAAQkM,IAAK;AAAE;ACAhE,SAAAC,GAAAhT,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAA0S,WAAAA;AAAAA,EAAAA,IAAAjT,GAO3B,CAAA4D,GAAAC,CAAA,IAAgCF,GAA6B,IAAI,GACjEvC,IAAkBF,EAAeG,EAA0B;AAAC,MAAAZ;AAAA,EAAAR,SAAAE,KAE/CM,IAAA4C,CAAAA,MAAWvC,EAAKE,UAA6Bb,CAAW,GAAC+S,SAAAjT,OAAAE,GAAAF,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AADtE,QAAAiT,IAAgBhS,EACdC,GAAWV,CAAyD,CACtE;AAAC,MAAAC;AAAA,EAAAT,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAI2B9B,IAAA;AAAA,IAAAyS,kBACNC;AAAAA,EAAAA,GACnBnT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJH,QAAAoT,IAAgBC,GACdC,GAAUC,EAAa,GACvBD,GAAUE,IAAgB/S,CAEzB,CACH;AAAC,MAAAG;AAAA,EAAAZ,SAAAiT,KAGOrS,IAAAqS,GAAO5M,IAAMiC,EAAqB,KAAlC,CAAA,GAAmCtI,OAAAiT,GAAAjT,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAD3C,QAAAyT,IACQ7S;AAEP,MAAAS;AAAA,EAAArB,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAEgClB,IAAAwC,CAAAA,MAAA;AAC/BA,IAAAA,EAAKC,gBAAAA,GACLF,EAAYC,EAAKE,aAAc;AAAA,EAAC,GACjC/D,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAHD,QAAAgE,IAAqB3C;AAGf,MAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAE0Bf,IAAAA,MAAA;AAC9BoC,IAAAA,EAAY,IAAI;AAAA,EAAC,GAClB5D,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAFD,QAAA0T,IAAoBlS;AAEd,MAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAiT,KAAAjT,SAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAEgBM,IAAAuD,CAAAA,MAAA;AACpB,UAAA;AAAA,MAAA2O,QAAAA;AAAAA,MAAAC,MAAAA;AAAAA,IAAAA,IAAyB/P;AACzB,QAAI,CAAC+P,KAAQD,EAAMzT,OAAQ0T,EAAI1T,MAA3B,CAAmC+S;AAAO;AAC9C,UAAAY,IAAiBZ,EAAOa,UAAWC,OAASC,EAAG9T,OAAQyT,EAAMzT,EAAG,GAChE+T,IAAiBhB,EAAOa,UAAWI,OAASF,EAAG9T,OAAQ0T,EAAI1T,EAAG;AAC9D,QAAI2T,MAAa,MAAMI,MAAa,IAAE;AACpC,YAAAE,IAAmBC,GAAUnB,GAASY,GAAUI,CAAQ;AACxD9S,MAAAA,EAAUjB,GAAI;AAAA,QAAA+S,SAAWkB;AAAAA,MAAAA,CAAY;AAAA,IAAC;AAAA,EACvC,GACFnU,OAAAiT,GAAAjT,OAAAE,GAAAF,OAAAmB,GAAAnB,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AATD,QAAAqU,IAAsB5S;AAYtB,MAAI,CAACwR,KAAWA,EAAO5N,SAAU;AAAC,WACzB;AAGT,QAAA0E,IAAqB5J,GAAMmU,WAAN,iBACrBC,IAAe7O,EAAQ/B,GAOHhC,IAAAxB,GAAM4B,aAANgI,GACGlI,IAAA0S,IAAA,uBAAA7T,QAEAoB,IAAAyS,IAAA,SAAA7T;AAA2B,MAAAsB;AAAA,EAAAhC,UAAAK,KAMzC2B,IAAA3B,KACC,gBAAAqC,EAAC8R,IAAA,EACC,UAAA,gBAAA9R,EAACmP,MAAgB,GACnB,GACD7R,QAAAK,GAAAL,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,EAAAjC,UAAAM,KAAAN,EAAA,EAAA,MAAAuU,KAAAvU,EAAA,EAAA,MAAAgC,KAAAhC,EAAA,EAAA,MAAA2B,KAAA3B,UAAA6B,KAAA7B,EAAA,EAAA,MAAA8B,KAfHG,IAAA,gBAAAS,EAACd,KACM,MAAA,SACO,cAAAD,GACG,iBAAAE,GACD,iBAAA,QACC,iBAAAC,GACNkC,SAAAA,GACIuQ,eAAAA,GACT,IAAAhO,GAAkBC,SAAQ,GAC1BlG,GAEH0B,UAAAA,EAAAA,CAKH,GAAahC,QAAAM,GAAAN,QAAAuU,GAAAvU,QAAAgC,GAAAhC,QAAA2B,GAAA3B,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,EAAA,MAAAiC,KAAAjC,UAAA+J,KAjBf7H,IAAA,gBAAAQ,EAACyH,GAAA,EAAeJ,OAAAA,GACd9H,UAAAA,GAiBF,GAAUjC,QAAAiC,GAAAjC,QAAA+J,GAAA/J,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAoC,GAAAC;AAAA,EAAArC,EAAA,EAAA,MAAAsC,uBAAAC,IAAA,2BAAA,KAWQH,IAAA;AAAA,IAAAoD,UAAY;AAAA,IAAQC,YAAc;AAAA,EAAA,GAC/BpD,IAAA;AAAA,IAAAmD,UAAY;AAAA,IAAKC,YAAc;AAAA,EAAA,GAASzF,QAAAoC,GAAApC,QAAAqC,MAAAD,IAAApC,EAAA,EAAA,GAAAqC,IAAArC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,UAAAiT,KAOtDxQ,IAAAwQ,EAAO5M,IAAKmC,EAEZ,GAACxI,QAAAiT,GAAAjT,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAAyT,KAAAzT,UAAAyC,KANJE,sBAAC8R,IAAA,EACQhB,OAAAA,GACGiB,UAAAA,IAETjS,UAAAA,GAGH,GAAkBzC,QAAAyT,GAAAzT,QAAAyC,GAAAzC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAgT,KAAAhT,EAAA,EAAA,MAAA2D,KAAA3D,EAAA,EAAA,MAAAuU,KAAAvU,UAAA2C,KAhBpBE,sBAACyD,IAAA,EACI,IAAA,sBACO3C,UAAAA,GACJ4Q,SACGb,SAAAA,GACK,cAAAtR,GACG,iBAAAC,GAAwC,GACrD2Q,GAEJrQ,UAAAA,GAQF,GAAO3C,QAAAgT,GAAAhT,QAAA2D,GAAA3D,QAAAuU,GAAAvU,QAAA2C,GAAA3C,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAAqU,KAAArU,UAAAoT,KAAApT,EAAA,EAAA,MAAA6C,KAtBTC,sBAAC6R,IAAA,EACUvB,SAAAA,GACWwB,oBAAAA,IACTP,WAAAA,GAEXxR,UAAAA,EAAAA,CAkBF,GAAa7C,QAAAqU,GAAArU,QAAAoT,GAAApT,QAAA6C,GAAA7C,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,SAAAhD,EAAA,EAAA,MAAAkC,KAAAlC,UAAA8C,KA3CfE,4BACEd,UAAAA;AAAAA,IAAAA;AAAAA,IAmBAY;AAAAA,EAAAA,GAuBa,GACZ9C,QAAAkC,GAAAlC,QAAA8C,GAAA9C,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA,GA5CHgD;AA4CG;AAlGA,SAAAwF,GAAAuJ,GAAA;AAAA,SA6FO,gBAAArP,EAACoP,IAAA,EAA2CC,QAAAA,EAAAA,GAAnBA,EAAM7R,EAAmB;AAAI;AA7F7D,SAAAoI,GAAA0L,GAAA;AAAA,SAqByBA,EAAG9T;AAAG;AArB/B,SAAAkB,GAAAP,GAAA;AAAA,SAQuCA,EAAKM;AAAU;"}
|
package/dist/widgets/bar.js
CHANGED
|
@@ -1,7 +1,188 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { jsxs as p, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { c as b } from "react/compiler-runtime";
|
|
3
|
+
import "react";
|
|
4
|
+
import "echarts";
|
|
5
|
+
import "../widget-store-CB6Trp_0.js";
|
|
6
|
+
import "zustand/shallow";
|
|
7
|
+
import { g as k } from "../options-D9wflre6.js";
|
|
8
|
+
import { m as w } from "../utils-D3-eQyDR.js";
|
|
9
|
+
import { f as v, c as _, a as S, b as L, d as C, e as A, g as T } from "../styles-CCZnY17y.js";
|
|
10
|
+
import { Box as s, Skeleton as o } from "@mui/material";
|
|
11
|
+
import "@mui/icons-material";
|
|
12
|
+
import "react-markdown";
|
|
13
|
+
import { d as g, a as f } from "../exports-Cr43OCul.js";
|
|
14
|
+
import "../lasso-tool-BwRzEW7k.js";
|
|
15
|
+
import "../cjs-D4KH3azB.js";
|
|
16
|
+
import "@dnd-kit/core";
|
|
17
|
+
import "@dnd-kit/sortable";
|
|
18
|
+
import "@dnd-kit/utilities";
|
|
19
|
+
function Z({
|
|
20
|
+
refUI: e
|
|
21
|
+
}) {
|
|
22
|
+
return [{
|
|
23
|
+
...g,
|
|
24
|
+
modifier: () => g.modifier(e)
|
|
25
|
+
}, {
|
|
26
|
+
...f,
|
|
27
|
+
modifier: async (t) => {
|
|
28
|
+
const i = v(t);
|
|
29
|
+
return f.modifier(i);
|
|
30
|
+
}
|
|
31
|
+
}];
|
|
32
|
+
}
|
|
33
|
+
function ee(e) {
|
|
34
|
+
return {
|
|
35
|
+
type: "bar",
|
|
36
|
+
option: w(k(e), I(e))
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function I({
|
|
40
|
+
data: e = [],
|
|
41
|
+
theme: t,
|
|
42
|
+
formatter: i
|
|
43
|
+
}) {
|
|
44
|
+
const m = (e?.length ?? 0) > 1, d = {
|
|
45
|
+
type: "value",
|
|
46
|
+
splitNumber: 1,
|
|
47
|
+
axisLabel: {
|
|
48
|
+
fontSize: t.typography.overlineDelicate.fontSize,
|
|
49
|
+
fontFamily: t.typography.overlineDelicate.fontFamily,
|
|
50
|
+
margin: parseInt(t.spacing(1)),
|
|
51
|
+
show: !0,
|
|
52
|
+
showMaxLabel: !0,
|
|
53
|
+
showMinLabel: !1,
|
|
54
|
+
verticalAlign: "bottom",
|
|
55
|
+
inside: !0
|
|
56
|
+
},
|
|
57
|
+
axisLine: {
|
|
58
|
+
show: !1
|
|
59
|
+
},
|
|
60
|
+
axisTick: {
|
|
61
|
+
show: !1
|
|
62
|
+
},
|
|
63
|
+
splitLine: {
|
|
64
|
+
show: !0,
|
|
65
|
+
lineStyle: {
|
|
66
|
+
color: t.palette.black[4]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
legend: A(m),
|
|
72
|
+
grid: C(m, t),
|
|
73
|
+
xAxis: {
|
|
74
|
+
type: "category",
|
|
75
|
+
axisLine: {
|
|
76
|
+
show: !1
|
|
77
|
+
},
|
|
78
|
+
axisTick: {
|
|
79
|
+
show: !1
|
|
80
|
+
},
|
|
81
|
+
axisLabel: {
|
|
82
|
+
padding: [parseInt(t.spacing(0.5)), 0, 0, 0],
|
|
83
|
+
margin: 0
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
yAxis: L(d, i),
|
|
87
|
+
tooltip: {
|
|
88
|
+
position: S(t),
|
|
89
|
+
formatter: _((n) => {
|
|
90
|
+
const l = n.value, u = n.dimensionNames?.[n.encode?.y?.at(0) ?? 1], c = l[u ?? ""], h = typeof c == "number" && i ? i(c) : c ?? "", x = typeof n.marker == "string" ? n.marker : "", y = n.seriesName ? `${n.seriesName}: ` : "";
|
|
91
|
+
return {
|
|
92
|
+
name: n.name ?? "",
|
|
93
|
+
seriesName: y,
|
|
94
|
+
marker: x,
|
|
95
|
+
value: h
|
|
96
|
+
};
|
|
97
|
+
})
|
|
98
|
+
},
|
|
99
|
+
series: e.map((n, l) => ({
|
|
100
|
+
datasetIndex: l,
|
|
101
|
+
type: "bar",
|
|
102
|
+
barMaxWidth: 100,
|
|
103
|
+
emphasis: {
|
|
104
|
+
focus: "series"
|
|
105
|
+
}
|
|
106
|
+
}))
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const r = {
|
|
110
|
+
skeleton: {
|
|
111
|
+
item: {
|
|
112
|
+
flex: 1,
|
|
113
|
+
maxWidth: ({
|
|
114
|
+
spacing: e
|
|
115
|
+
}) => e(12),
|
|
116
|
+
"& + &": {
|
|
117
|
+
marginLeft: ({
|
|
118
|
+
spacing: e
|
|
119
|
+
}) => e(1)
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
graph: {
|
|
123
|
+
...T.graph,
|
|
124
|
+
grid: {
|
|
125
|
+
display: "flex",
|
|
126
|
+
justifyContent: "space-between",
|
|
127
|
+
flex: "1 1 auto",
|
|
128
|
+
alignItems: "flex-end",
|
|
129
|
+
width: "100%"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
function te() {
|
|
135
|
+
const e = b(2);
|
|
136
|
+
let t;
|
|
137
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.grid, children: [
|
|
138
|
+
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
|
|
139
|
+
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
|
|
140
|
+
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
|
|
141
|
+
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
|
|
142
|
+
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
|
|
143
|
+
] }), e[0] = t) : t = e[0];
|
|
144
|
+
let i;
|
|
145
|
+
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.container, children: [
|
|
146
|
+
t,
|
|
147
|
+
/* @__PURE__ */ a(s, { sx: {
|
|
148
|
+
display: "flex",
|
|
149
|
+
alignItems: "center",
|
|
150
|
+
gap: D,
|
|
151
|
+
height: F
|
|
152
|
+
}, children: Array(2).fill(0).map(N) })
|
|
153
|
+
] }), e[1] = i) : i = e[1], i;
|
|
154
|
+
}
|
|
155
|
+
function N(e, t) {
|
|
156
|
+
return /* @__PURE__ */ p(s, { sx: {
|
|
157
|
+
display: "flex",
|
|
158
|
+
alignItems: "center",
|
|
159
|
+
gap: j
|
|
160
|
+
}, children: [
|
|
161
|
+
/* @__PURE__ */ a(o, { variant: "circular", width: 8, height: 8 }),
|
|
162
|
+
/* @__PURE__ */ a(o, { width: 48, height: 8 })
|
|
163
|
+
] }, t);
|
|
164
|
+
}
|
|
165
|
+
function j(e) {
|
|
166
|
+
const {
|
|
167
|
+
spacing: t
|
|
168
|
+
} = e;
|
|
169
|
+
return t(1.5);
|
|
170
|
+
}
|
|
171
|
+
function F(e) {
|
|
172
|
+
const {
|
|
173
|
+
spacing: t
|
|
174
|
+
} = e;
|
|
175
|
+
return t(5);
|
|
176
|
+
}
|
|
177
|
+
function D(e) {
|
|
178
|
+
const {
|
|
179
|
+
spacing: t
|
|
180
|
+
} = e;
|
|
181
|
+
return t(2);
|
|
182
|
+
}
|
|
3
183
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
184
|
+
te as BarSkeleton,
|
|
185
|
+
ee as barConfig,
|
|
186
|
+
Z as barDownloadConfig
|
|
6
187
|
};
|
|
7
188
|
//# sourceMappingURL=bar.js.map
|
package/dist/widgets/bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
1
|
+
{"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n applyYAxisFormatter,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n inside: true,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","yAxis","splitNumber","axisLabel","fontSize","typography","overlineDelicate","fontFamily","margin","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","inside","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","xAxis","padding","applyYAxisFormatter","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
|