@carto/ps-react-ui 5.0.0-widgets.5 → 5.0.0-widgets.7
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/{error-DGzuzmn1.js → error-G3sy6lw3.js} +2 -2
- package/dist/{error-DGzuzmn1.js.map → error-G3sy6lw3.js.map} +1 -1
- package/dist/{no-data-BBAoT1vK.js → no-data-DfkC_Kc_.js} +2 -2
- package/dist/{no-data-BBAoT1vK.js.map → no-data-DfkC_Kc_.js.map} +1 -1
- package/dist/{row-C_m1ovHv.js → row-B9hTUitn.js} +2 -2
- package/dist/{row-C_m1ovHv.js.map → row-B9hTUitn.js.map} +1 -1
- package/dist/{series-6xp-KQ0S.js → series-DojKkd_o.js} +3 -3
- package/dist/{series-6xp-KQ0S.js.map → series-DojKkd_o.js.map} +1 -1
- package/dist/types/widgets/category/config.d.ts +1 -0
- package/dist/types/widgets/category/types.d.ts +1 -0
- package/dist/types/widgets/root/utils.d.ts +1 -1
- package/dist/types/widgets/stores/types.d.ts +0 -75
- package/dist/types/widgets/table/config.d.ts +7 -1
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +2 -16
- package/dist/types/widgets/table/hooks/use-selection.d.ts +0 -2
- package/dist/types/widgets/table/hooks/use-sort.d.ts +3 -10
- package/dist/types/widgets/table/index.d.ts +1 -1
- package/dist/types/widgets/table/types.d.ts +14 -19
- package/dist/widget-store-Dd7_sWZT.js +132 -0
- package/dist/widget-store-Dd7_sWZT.js.map +1 -0
- package/dist/widgets/actions.js +51 -51
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +1 -1
- package/dist/widgets/category.js +134 -128
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +1 -1
- package/dist/widgets/error.js +1 -1
- package/dist/widgets/formula.js +3 -3
- package/dist/widgets/histogram.js +1 -1
- package/dist/widgets/markdown.js +1 -1
- package/dist/widgets/no-data.js +1 -1
- package/dist/widgets/pie.js +1 -1
- package/dist/widgets/range.js +2 -2
- package/dist/widgets/root.js +1 -1
- package/dist/widgets/root.js.map +1 -1
- package/dist/widgets/scatterplot.js +1 -1
- package/dist/widgets/skeleton-loader.js +1 -1
- package/dist/widgets/spread.js +3 -3
- package/dist/widgets/stores.js +1 -1
- package/dist/widgets/table.js +535 -537
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +1 -1
- package/dist/widgets/wrapper.js +1 -1
- package/dist/widgets.js +3 -3
- package/package.json +1 -1
- package/dist/widget-store-DNyVElxd.js +0 -190
- package/dist/widget-store-DNyVElxd.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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 return Object.values(item).reduce((itemTotal: number, value) => {\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 const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\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 } 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 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 setWidget(id, { isRelative: newIsRelative })\n }, [isRelative, setWidget, id])\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 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 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 const storeLockedItems = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.lockedItems),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(() => storeLockedItems ?? [], [storeLockedItems])\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 if (!searchTextFromConfig) return data\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","Object","values","itemTotal","value","toRelativeData","transformed","key","entries","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","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","Array","isArray","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","storeIsLocked","state_5","lockedItems","storeLockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","useRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","current","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","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,EAAWN,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,OAAAC,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,EAAWN,CAAoC,CAAC,GAE5E,CAAA4C,GAAAC,CAAA,IAA0CC,GAAS,EAAK,GACxD,CAAAC,GAAAC,CAAA,IAAgCF,GAA6B,IAAI;AAAC,MAAArC;AAAA,EAAArB,EAAA,CAAA,MAAAsC,OAAAC,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,OAAAC,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,OAAAC,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,MAAO,KAAKX,EAAYW,GAAG7B,CAAM,GAEzCA,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,MAC1BC,OAAOC,OAAOF,CAAI,EAAEJ,OAAO,CAACO,GAAmBC,MAC7C,OAAOA,KAAU,WAAWD,IAAYC,IAAQD,GACtDJ,CAAW,GACbF,CAAK,GACP,CAAC;AACN;AAKO,SAASQ,GACdjE,GACAyD,GACkB;AAClB,SAAIA,MAAU,IAAUzD,IAEjBA,EAAK8C,IAAKY,CAAAA,MACfA,EAAOZ,IAAKc,CAAAA,MAAS;AACnB,UAAMM,IAA+C,CAAA;AAErD,eAAW,CAACC,GAAKH,CAAK,KAAKH,OAAOO,QAAQR,CAAI;AAC5CM,MAAAA,EAAYC,CAAG,IACb,OAAOH,KAAU,WAAYA,IAAQP,IAAS,MAAMO;AAGxD,WAAOE;AAAAA,EACT,CAAC,CACH;AACF;AC1BO,MAAMG,KAAwB;AAiB9B,SAAAC,GAAA9H,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAA4H,OAAAtH;AAAAA,IAAAuH,mBAAAtH;AAAAA,IAAAN,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE3B+H,IAAAtH,MAAAE,SAAA,KAAAF,GACAuH,IAAAtH,MAAAC,SAAA,KAAAD,GAKAU,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAe+G,EAA0B,GAC3DC,IAAqBhH,EAAeiH,EAA6B,GACjEC,IAAuBlH,EAAemH,EAA+B,GACrEC,IAAuBpH,EAAeqH,EAA+B;AAAC,MAAA1H;AAAA,EAAAZ,SAAAE,KAGpEU,IAAA2H,CAAAA,MAAW1H,EAAKE,UAA8Bb,CAAc,GAACsI,YAAAxI,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAG/D,QAAAwI,IAJwBvH,EACtBL,CACF,KAEmBmH;AAAoC,MAAA1G,GAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAA+H,KAAA/H,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAG7CE,IAAAA,MAAA;AAER,IADqBN,EAA6Bb,CAAc,GAACsI,eAC5C9H,UACnBS,EAAUjB,GAAI;AAAA,MAAAsI,YAAcT;AAAAA,IAAAA,CAAmB;AAAA,EAChD,GACAvG,IAAA,CAACuG,GAAmBhH,GAAWb,GAAIiB,CAAS,GAACnB,OAAA+H,GAAA/H,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,GAAArB,OAAAwB,MAAAH,IAAArB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,IALhDyI,EAAUpH,GAKPG,CAA6C;AAAC,MAAAC,GAAAE;AAAA,EAAA3B,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAAwI,KAAAxI,EAAA,EAAA,MAAA8H,KAAA9H,EAAA,EAAA,MAAAiI,KAAAjI,UAAAmI,KAGvC1G,IAAAA,OACRwG,EAAa/H,GAAI;AAAA,IAAAA,IACX0H;AAAAA,IAAqBE,OAAAA;AAAAA,IAAAY,SAEhBF;AAAAA,IAAUG,IACfC;AAAAA,EAAAA,CAKL,GAEM,MAAMT,EAAejI,GAAI0H,EAAqB,IACpDjG,IAAA,CAACzB,GAAI4H,GAAOG,GAAcE,GAAgBK,CAAU,GAACxI,OAAAE,GAAAF,OAAAwI,GAAAxI,QAAA8H,GAAA9H,QAAAiI,GAAAjI,QAAAmI,GAAAnI,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAbxDyI,EAAUhH,GAaPE,CAAqD;AAAC,MAAAE,GAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAE,KAAAF,UAAAwI,KAAAxI,EAAA,EAAA,MAAAqI,KAG/CxG,IAAAA,MAAA;AACRwG,IAAAA,EAAenI,GAAI0H,IAAuBY,CAAU;AAAA,EAAC,GACpD1G,KAAC5B,GAAIsI,GAAYH,CAAc,GAACrI,QAAAE,GAAAF,QAAAwI,GAAAxI,QAAAqI,GAAArI,QAAA6B,GAAA7B,QAAA8B,MAAAD,IAAA7B,EAAA,EAAA,GAAA8B,IAAA9B,EAAA,EAAA,IAFnCyI,EAAU5G,GAEPC,CAAgC;AAAC,MAAAE;AAAA,EAAAhC,EAAA,EAAA,MAAAE,KAAAF,UAAAwI,KAAAxI,EAAA,EAAA,MAAAmB,KAEHa,IAAAA,MAAA;AAE/Bb,IAAAA,EAAUjB,GAAI;AAAA,MAAAsI,YADQ,CAACA;AAAAA,IACKK,CAAe;AAAA,EAAC,GAC7C7I,QAAAE,GAAAF,QAAAwI,GAAAxI,QAAAmB,GAAAnB,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAHD,QAAAgE,IAAqBhC,GAKrB8G,IAAqBN,IAChBrI,GAAM4I,YAAN,yBACA5I,GAAM6I,YAAN,wBAMa/G,IAAA9B,GAAM4B,aAAN+G;AAAiC,MAAA5G;AAAA,EAAAlC,UAAAK,KAM5C6B,IAAA7B,uBAAS4I,IAAA,CAAA,CAAe,GAAGjJ,QAAAK,GAAAL,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAoC;AAAA,EAAApC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAwI,KAAAxI,EAAA,EAAA,MAAAiC,KAAAjC,UAAAkC,KAR9BE,sBAACR,GAAA,EACM,MAAA,SACO,cAAAK,GACH+B,SAAAA,GACL,IAAAuC,GAAkBC,SACTgC,eAAAA,GAAU,GACnBlI,GAEH4B,UAAAA,GACH,GAAalC,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAAwI,GAAAxI,QAAAiC,GAAAjC,QAAAkC,GAAAlC,QAAAoC,KAAAA,IAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,EAAA,MAAAoC,KAAApC,UAAA8I,KAVfzG,IAAA,gBAAAK,EAACwG,IAAA,EAAeJ,OAAAA,GACd1G,UAAAA,GAUF,GAAUpC,QAAAoC,GAAApC,QAAA8I,GAAA9I,QAAAqC,KAAAA,IAAArC,EAAA,EAAA,GAXVqC;AAWU;AAtEP,SAAAuG,GAAArF,GAAA;AAmCC,QAAA4F,IAAmB5F,GACnByD,IAAcF,GAAeqC,CAAU;AAAC,SACjC3B,GAAe2B,GAAYnC,CAAK;AAAC;AArCzC,SAAAsB,GAAAc,GAAA;AAAA,SAY4CvI,EAAKwH;AAAe;AAZhE,SAAAD,GAAAiB,GAAA;AAAA,SAW4CxI,EAAKsH;AAAe;AAXhE,SAAAD,GAAAoB,GAAA;AAAA,SAU0CzI,EAAKoH;AAAa;AAV5D,SAAAD,GAAA5E,GAAA;AAAA,SASuCvC,EAAKE;AAAU;AATtD,SAAAK,GAAAP,GAAA;AAAA,SAQuCA,EAAKM;AAAU;ACjCtD,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,SAAA0C,GAAAxJ,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAC,IAAAA;AAAAA,IAAAsJ,aAAAhJ;AAAAA,IAAAiJ,kBAAAhJ;AAAAA,IAAAiJ,gBAAA9I;AAAAA,IAAAT,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAsJ,WAAAA;AAAAA,IAAArJ,iBAAAA;AAAAA,EAAAA,IAAAP,GAEzByJ,IAAAhJ,MAAAE,SAAA,KAAAF,GACAiJ,IAAAhJ,MAAAC,SAAA,IAAAD,GACAiJ,IAAA9I,MAAAF,SAAA,MAAAE,GAMA8F,IAAckD,GAAAA,GACdzI,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAe+G,EAA0B;AAAC,MAAA3G;AAAA,EAAArB,SAAAE,KAG/CmB,IAAAiI,CAAAA,MACMzI,EAAKE,UAAsBb,CAAE,GAC/B2J,QAAN,IACR7J,OAAAE,GAAAF,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAJH,QAAA6J,IAAa5I,EACXC,EAAWG,CAGV,CACH;AAAC,MAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAAAnB,SAAA0G,KAGClF,IAAAA,CAAAkH,GAAAoB,GAAAC,MAAA;AACE,UAAAC,IAAmBC,GACjBvB,GACA;AAAA,MAAAoB,OAAAA;AAAAA,MAAAC,KAAAA;AAAAA,IAAAA,GACA;AAAA,MAAAG,QAAU;AAAA,MAAIC,SAAW;AAAA,MAAIC,SAAW;AAAA,IAAA,GACxC1D,CACF,GACA2D,IAAsBtJ,EAA6Bb,CAAU,GAACgE;AAE9D/C,IAAAA,EAAyCjB,GAAI;AAAA,MAAA2J,MACrCnB;AAAAA,MAAO4B,WACFR;AAAAA,MAAKS,SACPR;AAAAA,MAAG7F,QACJ;AAAA,QAAA,GACHmG;AAAAA,QAAa,GACbL;AAAAA,MAAAA;AAAAA,IACL,CACD;AAAA,EAAC,GACHhK,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAA0G,GAAA1G,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAnBH,QAAAwK,IAAyBhJ;AAqBxB,MAAAC,GAAAE;AAAA,EAAA3B,SAAAwJ,KAAAxJ,EAAA,CAAA,MAAA0J,KAAA1J,EAAA,CAAA,MAAAyJ,KAAAzJ,EAAA,EAAA,MAAAe,KAAAf,UAAAE,KAAAF,EAAA,EAAA,MAAAwK,KAGS/I,IAAAA,MAAA;AACR,UAAAgJ,IAAsB1J,EAAqBb,CAAE;AAE7C,IAAIuK,GAAaZ,QAGjBW,EACEC,GAAaZ,QAAbL,GACAiB,GAAaH,aAAbb,GACAgB,GAAaF,WAAbb,CACF;AAAA,EAAC,GACA/H,IAAA,CACD6H,GACAE,GACAD,GACA1I,GACAb,GACAsK,CAAgB,GACjBxK,OAAAwJ,GAAAxJ,OAAA0J,GAAA1J,OAAAyJ,GAAAzJ,QAAAe,GAAAf,QAAAE,GAAAF,QAAAwK,GAAAxK,QAAAyB,GAAAzB,QAAA2B,MAAAF,IAAAzB,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA,IAlBDyI,EAAUhH,GAWPE,CAOF;AAAC,MAAAE,GAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAe,KAAAf,UAAAE,KAAAF,EAAA,EAAA,MAAAwK,KAGQ3I,IAAAA,MACD,MAAA;AACL,UAAA6I,IAAsB3J,EAAqBb,CAAE;AAC7CsK,IAAAA,EACE,IACAC,GAAaH,aAAb,GACAG,GAAaF,WAAb,GACF;AAAA,EAAC,GAEFzI,KAACf,GAAWb,GAAIsK,CAAgB,GAACxK,QAAAe,GAAAf,QAAAE,GAAAF,QAAAwK,GAAAxK,QAAA6B,GAAA7B,QAAA8B,MAAAD,IAAA7B,EAAA,EAAA,GAAA8B,IAAA9B,EAAA,EAAA,IATpCyI,EAAU5G,GASPC,CAAiC;AAAC,MAAAE;AAAA,EAAAhC,UAAA0J,KAAA1J,EAAA,EAAA,MAAAyJ,KAAAzJ,EAAA,EAAA,MAAAe,KAAAf,EAAA,EAAA,MAAAE,KAAAF,UAAAwK,KAAAxK,EAAA,EAAA,MAAA6J,KAEhB7H,IAAAA,MAAA;AACnB,UAAA2I,IAAgB,CAACd,GAEjBe,IAAsB7J,EAAqBb,CAAE;AAE7CsK,IAAAA,EACEG,GACAA,IAAWF,GAAaH,aAAbb,IAAX,GACAkB,IAAWF,GAAaF,WAAbb,IAAX,GACF;AAAA,EAAC,GACF1J,QAAA0J,GAAA1J,QAAAyJ,GAAAzJ,QAAAe,GAAAf,QAAAE,GAAAF,QAAAwK,GAAAxK,QAAA6J,GAAA7J,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAVD,QAAAgE,IAAqBhC;AAUpB,MAAAC;AAAA,EAAAjC,EAAA,EAAA,MAAA0J,KAAA1J,UAAAyJ,KAAAzJ,EAAA,EAAA,MAAAwK,KAEmBvI,IAAAA,MAAA;AAClBuI,IAAAA,EAAiB,IAAMf,GAAkBC,CAAc;AAAA,EAAC,GACzD1J,QAAA0J,GAAA1J,QAAAyJ,GAAAzJ,QAAAwK,GAAAxK,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAFD,QAAA6K,IAAoB5I;AAEnB,MAAAC;AAAA,EAAAlC,UAAAwK,KAICtI,IAAA2B,CAAAA,MAAA;AACE,UAAAiH,IAAkBjH,GAKlBkH,IAAcD,EAAShB,OACvBkB,IAAYF,EAASf;AAErB,IAAID,MAAUpJ,UAAaqJ,MAAQrJ,UACjC8J,EAAiB,IAAMV,GAAOC,CAAG;AAAA,EAClC,GACF/J,QAAAwK,GAAAxK,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAbH,QAAAiL,IAAuB/I;AAetB,MAAAE,GAAAC;AAAA,EAAArC,EAAA,EAAA,MAAAiL,KAAAjL,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAmB,KAAAnB,UAAA6J,KAGSzH,IAAAA,MAAA;AACR,IAAIyH,KACF1I,EAA6BjB,GAAI;AAAA,MAAAgL,UACrB;AAAA,QAAAC,UACEF;AAAAA,MAAAA;AAAAA,IACZ,CACD;AAAA,EACF,GACA5I,IAAA,CAACnC,GAAI2J,GAAMoB,GAAgB9J,CAAS,GAACnB,QAAAiL,GAAAjL,QAAAE,GAAAF,QAAAmB,GAAAnB,QAAA6J,GAAA7J,QAAAoC,GAAApC,QAAAqC,MAAAD,IAAApC,EAAA,EAAA,GAAAqC,IAAArC,EAAA,EAAA,IARxCyI,EAAUrG,GAQPC,CAAqC;AAExC,QAAA+I,IAAoBjL,GAAMkL,UAAN,eACpBC,IAAqBnL,GAAMoL,WAAN,gBACrBC,IAAmBrL,GAAMsL,SAAN,cACnB3C,IAAqBe,IAAAyB,IAAAF,GAOD3I,IAAAtC,GAAM4B,aAAN+G;AAAiC,MAAAnG;AAAA,EAAA3C,UAAAK,KAM5CsC,IAAAtC,uBAASqL,IAAA,CAAA,CAAc,GAAG1L,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,UAAA6J,KAR7BhH,sBAACjB,GAAA,EACM,MAAA,SACO,cAAAa,GACHuB,SAAAA,GACL,IAAA5E,GAAMoH,SACGqD,eAAAA,GAAI,GACbvJ,GAEHqC,UAAAA,GACH,GAAa3C,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAAyC,GAAAzC,QAAA2C,GAAA3C,QAAA6J,GAAA7J,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAA6C,KAAA7C,UAAA8I,KAVfhG,IAAA,gBAAAJ,EAACwG,IAAA,EAAeJ,OAAAA,GACdjG,UAAAA,GAUF,GAAU7C,QAAA6C,GAAA7C,QAAA8I,GAAA9I,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,EAAAhD,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAA2J,KAAA3J,EAAA,EAAA,MAAA6K,KAAA7K,EAAA,EAAA,MAAAwL,KAAAxL,UAAA6J,KACT7G,IAAA6G,KACC,gBAAAnH,EAACwG,IAAA,EAAesC,OAAAA,GACd,UAAA,gBAAA9I,EAACd,KACM,MAAA,SACO4J,cAAAA,GACHX,SAAAA,GAAW,GAChBvK,GAEHqJ,eAAa,gBAAAjH,EAACiJ,IAAA,KACjB,EAAA,CACF,GACD3L,QAAAM,GAAAN,QAAA2J,GAAA3J,QAAA6K,GAAA7K,QAAAwL,GAAAxL,QAAA6J,GAAA7J,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA;AAAA,MAAAmD;AAAA,SAAAnD,EAAA,EAAA,MAAA8C,KAAA9C,UAAAgD,KAxBHG,sBAACyI,IAAA,EAAQ,IAAAxM,GAAME,WACbwD,UAAAA;AAAAA,IAAAA;AAAAA,IAYCE;AAAAA,EAAAA,GAYH,GAAMhD,QAAA8C,GAAA9C,QAAAgD,GAAAhD,QAAAmD,KAAAA,IAAAnD,EAAA,EAAA,GAzBNmD;AAyBM;AAzJH,SAAA6E,GAAA5E,GAAA;AAAA,SAYuCvC,EAAKE;AAAU;AAZtD,SAAAK,GAAAP,GAAA;AAAA,SAWuCA,EAAKM;AAAU;ACzCtD,MAAM0K,KAAsBA,MAAA;AAAA,QAAA7L,IAAAC,EAAA,CAAA;AAAA,MAAAF;AAAA,SAAAC,EAAA,CAAA,MAAAsC,OAAAC,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,SAAA+L,GAAA/L,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAqB;AAAA,IAAAC,IAAAA;AAAAA,IAAA6L,kBAAAvL;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE1BgM,IAAAvL,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B;AAAC,MAAAX;AAAA,EAAAT,SAAAE,KAE/CO,IAAA2C,CAAAA,MAAWvC,EAAKE,UAA6Bb,CAAa,GAAC8L,WAAAhM,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AADxE,QAAAiM,IAAuBhL,EACrBC,EAAWT,CAA2D,CACxE,GAEAM,IAAkBE,EAAe+G,EAA0B;AAAC,MAAApH;AAAA,MAAAZ,EAAA,CAAA,MAAAe,KAAAf,SAAAE,GAAA;AAAAgM,IAAAA,GAAA;AAM1D,YAAAhI,IAAenD,EAA6Bb,CAAU,GAACgE;AACvD,UAAI,CAACA,GAAM;AAAEtD,QAAAA,IAAO;AAAP,cAAAsL;AAAAA,MAAY;AAMzBtL,MAAAA,KAJeuL,MAAKC,QAASlI,EAAM+C,MAEjB,IADd/C,EAAM+C,SADK,CAEV/C,EAAM+C,MAAO,GAELoF,KAAMnE,EAAuC;AAAA,IAAC;AAAAlI,IAAAA,OAAAe,GAAAf,OAAAE,GAAAF,OAAAY;AAAAA,EAAA;AAAAA,IAAAA,IAAAZ,EAAA,CAAA;AAI7D,QAAAsM,IAZyB1L,KAYSmL,GAClCC,IAAkBC,KAAAK;AAA2C,MAAAjL;AAAA,EAAArB,EAAA,CAAA,MAAAe,KAAAf,SAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAO3DE,IAAAkL,CAAAA,MAAA;AACE,UAAAtH,IAAelE,EAA6Bb,CAAU,GAACgE;AAEvD,QAAI,CAACA;AAAM;AAMX,UAAAsI,KAJeL,MAAKC,QAASlI,EAAM+C,MAEjB,IADd/C,EAAM+C,SADK,CAEV/C,EAAM+C,MAAO,GAEUZ,IAAKoG,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;AAED3L,IAAAA,EAAUjB,GAAI;AAAA,MAAAgE,QACJ;AAAA,QAAA,GACHA;AAAAA,QAAM+C,QACDuF;AAAAA,MAAAA;AAAAA,IACV,CACD;AAAA,EAAC,GACHxM,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AA9BH,QAAA+M,IAAsB1L;AAgCrB,MAAAG,GAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAsM,KAAAtM,UAAAE,KAAAF,EAAA,EAAA,MAAAmB,KAGSK,IAAAA,MAAA;AACRL,IAAAA,EAAUjB,GAAI;AAAA,MAAA8L,WAAaM;AAAAA,IAAAA,CAA2B;AAAA,EAAC,GACtD7K,KAAC6K,GAA2BpM,GAAIiB,CAAS,GAACnB,OAAAsM,GAAAtM,QAAAE,GAAAF,QAAAmB,GAAAnB,QAAAwB,GAAAxB,QAAAyB,MAAAD,IAAAxB,EAAA,EAAA,GAAAyB,IAAAzB,EAAA,EAAA,IAF7CyI,EAAUjH,GAEPC,CAA0C;AAAC,MAAAE;AAAA,EAAA3B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAgM,KAAAhM,EAAA,EAAA,MAAAmB,KAAAnB,UAAA+M,KAEbpL,IAAAA,MAAA;AAC/B,UAAAqL,IAAqB,CAAChB;AAEtB7K,IAAAA,EAAUjB,GAAI;AAAA,MAAA8L,WAAagB;AAAAA,IAAAA,CAAc,GACzCD,EAAcC,CAAY;AAAA,EAAC,GAC5BhN,QAAAE,GAAAF,QAAAgM,GAAAhM,QAAAmB,GAAAnB,QAAA+M,GAAA/M,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AALD,QAAAgE,IAAqBrC,GAOrBmH,IAAqBkD,IAChB7L,GAAM8M,aAAN,qBACA9M,GAAMoM,WAAN,mBAMa1K,IAAA1B,GAAM4B,aAAN+G;AAAiC,MAAAhH;AAAA,EAAA9B,UAAAK,KAM5CyB,IAAAzB,uBAASwL,IAAA,CAAA,CAAmB,GAAG7L,QAAAK,GAAAL,QAAA8B,KAAAA,IAAA9B,EAAA,EAAA;AAAA,MAAAgC;AAAA,EAAAhC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAgM,KAAAhM,EAAA,EAAA,MAAA6B,KAAA7B,UAAA8B,KARlCE,sBAACJ,GAAA,EACM,MAAA,SACO,cAAAC,GACHmC,SAAAA,GACL,IAAAuC,GAAkBC,SACTwF,eAAAA,GAAS,GAClB1L,GAEHwB,UAAAA,GACH,GAAa9B,QAAAM,GAAAN,QAAAgE,GAAAhE,QAAAgM,GAAAhM,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,SAAAjC,EAAA,EAAA,MAAAgC,KAAAhC,UAAA8I,KAVf7G,IAAA,gBAAAS,EAACwG,IAAA,EAAeJ,OAAAA,GACd9G,UAAAA,GAUF,GAAUhC,QAAAgC,GAAAhC,QAAA8I,GAAA9I,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA,GAXViC;AAWU;AAlGP,SAAAiG,GAAAyE,GAAA;AAAA,SAyBwBA,GAA+BC;AAAA;AAzBvD,SAAA5E,GAAAsB,GAAA;AAAA,SAYuCzI,EAAKE;AAAU;AAZtD,SAAAK,GAAAP,GAAA;AAAA,SAOuCA,EAAKM;AAAU;ACvBtD,MAAM+L,KAAyB;AAkB/B,SAAAC,GAAApN,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAC,IAAAA;AAAAA,IAAAkN,eAAAA;AAAAA,IAAAtF,OAAAtH;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAG5B+H,IAAAtH,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B,GAC3D6G,IAAqBhH,EAAe+G,EAA6B,GACjEG,IAAuBlH,EAAeiH,EAA+B,GACrEG,IAAuBpH,EAAemH,EAA+B,GACrEiF,IAAyBpM,EAAeqH,EAAiC;AAAC,MAAA7H;AAAA,EAAAT,SAAAE,KAG7DO,IAAA8H,CAAAA,MAAW1H,EAAKE,UAA+Bb,CAAY,GAACoN,UAAAtN,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AADzE,QAAAuN,IAAsBtM,EACpBC,EAAWT,CAA4D,CACzE;AAAC,MAAAG;AAAA,EAAAZ,SAAAE,KAEYU,IAAA4M,CAAAA,MAAW3M,EAAKE,UAA+Bb,CAAe,GAACuN,aAAAzN,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAD5E,QAAA0N,IAAyBzM,EACvBC,EAAWN,CAA+D,CAC5E,GAEA0M,IAAiBC,KAAA;AAAsB,MAAAlM;AAAA,EAAArB,SAAA0N,KACLrM,IAAAqM,KAAA,CAAA,GAAsB1N,OAAA0N,GAAA1N,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAAxD,QAAAyN,IAAkCpM;AAA2C,MAAAG,GAAAC;AAAA,EAAAzB,SAAAE,KAAAF,EAAA,CAAA,MAAAsN,KAAAtN,EAAA,CAAA,MAAAyN,KAAAzN,EAAA,CAAA,MAAA8H,KAAA9H,UAAAiI,KAAAjI,EAAA,EAAA,MAAAmI,KAGnE3G,IAAAA,OACRyG,EAAa/H,GAAI;AAAA,IAAAA,IACXgN;AAAAA,IAAsBpF,OAAAA;AAAAA,IAAAY,SAEjB4E;AAAAA,IAAQ3E,IACbC;AAAAA,IAKH+E,QACO;AAAA,MAAAF,aAAAA;AAAAA,IAAAA;AAAAA,EAAc,CACvB,GAEM,MAAMtF,EAAejI,GAAIgN,EAAsB,IACrDzL,IAAA,CAACvB,GAAI4H,GAAOG,GAAcE,GAAgBmF,GAAUG,CAAW,GAACzN,OAAAE,GAAAF,OAAAsN,GAAAtN,OAAAyN,GAAAzN,OAAA8H,GAAA9H,QAAAiI,GAAAjI,QAAAmI,GAAAnI,QAAAwB,GAAAxB,QAAAyB,MAAAD,IAAAxB,EAAA,EAAA,GAAAyB,IAAAzB,EAAA,EAAA,IAfnEyI,EAAUjH,GAePC,CAAgE;AAAC,MAAAE,GAAAE;AAAA,EAAA7B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAAyN,KAAAzN,EAAA,EAAA,MAAAqI,KAAArI,UAAAqN,KAG1D1L,IAAAA,MAAA;AACR0G,IAAAA,EAAenI,GAAIgN,IAAwBI,CAAQ,GACnDD,EAAiBnN,GAAIgN,IAAwB;AAAA,MAAAO,aAAAA;AAAAA,IAAAA,CAAe;AAAA,EAAC,GAC5D5L,IAAA,CAAC3B,GAAIoN,GAAUG,GAAapF,GAAgBgF,CAAgB,GAACrN,QAAAE,GAAAF,QAAAsN,GAAAtN,QAAAyN,GAAAzN,QAAAqI,GAAArI,QAAAqN,GAAArN,QAAA2B,GAAA3B,QAAA6B,MAAAF,IAAA3B,EAAA,EAAA,GAAA6B,IAAA7B,EAAA,EAAA,IAHhEyI,EAAU9G,GAGPE,CAA6D;AAAC,MAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAE,KAAAF,EAAA,EAAA,MAAAsN,KAAAtN,EAAA,EAAA,MAAAoN,KAAApN,UAAAmB,KAEhCW,IAAAA,MAAA;AAC/B,IAAIwL,IAEFnM,EAAUjB,GAAI;AAAA,MAAAoN,UACF;AAAA,MAAKG,aACF,CAAA;AAAA,IAAA,CACd,IAGDtM,EAAUjB,GAAI;AAAA,MAAAoN,UACF;AAAA,MAAIG,aACDL;AAAAA,IAAAA,CACd;AAAA,EACF,GACFpN,QAAAE,GAAAF,QAAAsN,GAAAtN,QAAAoN,GAAApN,QAAAmB,GAAAnB,QAAA8B,KAAAA,IAAA9B,EAAA,EAAA;AAdD,QAAAgE,IAAqBlC;AAiBrB,MAAIsL,EAAa/H,WAAY;AAAC,WACrB;AAGT,QAAAyD,IAAqBwE,IAChBnN,GAAMyN,UAAN,qBACAzN,GAAM0N,QAAN,kBAEL9L,IAAkB5B,GAAM4B,aAAN+G;AAAiC,MAAA9G;AAAA,EAAAhC,UAAAK,KAY5C2B,IAAA3B,KAAQ,gBAAAqC,EAACoL,IAAA,EAA0B,UAAA,SAAO,GAAG9N,QAAAK,GAAAL,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,EAAAjC,EAAA,EAAA,MAAAM,KAAAN,EAAA,EAAA,MAAA+B,KAAA/B,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAsN,KAAAtN,UAAAgC,KARhDC,sBAACL,GAAA,EACM,MAAA,SACOG,cAAAA,GACHiC,SAAAA,GACL,IAAAuC,GAAkBC,SACT8G,eAAAA,GAAQ,GACjBhN,GAEH0B,UAAAA,GACH,GAAahC,QAAAM,GAAAN,QAAA+B,GAAA/B,QAAAgE,GAAAhE,QAAAsN,GAAAtN,QAAAgC,GAAAhC,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAAA,MAAAkC;AAAA,SAAAlC,EAAA,EAAA,MAAAiC,KAAAjC,UAAA8I,KAVf5G,IAAA,gBAAAQ,EAACwG,IAAA,EAAeJ,OAAAA,GACd7G,UAAAA,GAUF,GAAUjC,QAAAiC,GAAAjC,QAAA8I,GAAA9I,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA,GAXVkC;AAWU;AAvFP,SAAA0G,GAAArF,GAAAoK,GAAA;AA+BC,QAAArK,IAAeqK,GAAMF,eAAP,CAAA;AACd,SAAInK,EAAK+B,WAAY,IAAU9B,IAExBwK,GAAwBxK,GAA0BD,CAAK;AAAC;AAlChE,SAAAgF,GAAAc,GAAA;AAAA,SAY8CvI,EAAKwM;AAAiB;AAZpE,SAAAjF,GAAAiB,GAAA;AAAA,SAW4CxI,EAAKwH;AAAe;AAXhE,SAAAH,GAAAoB,GAAA;AAAA,SAU4CzI,EAAKsH;AAAe;AAVhE,SAAAH,GAAA5E,GAAA;AAAA,SAS0CvC,EAAKoH;AAAa;AAT5D,SAAA7G,GAAAP,GAAA;AAAA,SAQuCA,EAAKM;AAAU;AAsF7D,SAAS4M,GACPxK,GACAkK,GACkB;AAClB,SAAOlK,EAAK8C,IAAKY,CAAAA,MACfA,EAAO+G,OAAQ7G,CAAAA,MAAS;AACtB,UAAM8G,IAAO9G,EAAK8G;AAClB,WAAO,OAAOA,KAAS,YAAYR,EAAYS,SAASD,CAAI;AAAA,EAC9D,CAAC,CACH;AACF;AC5HO,MAAME,KAAmB,YAE1BC,KAAiB;AAoBhB,SAAAC,GAAAtO,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAC,IAAAA;AAAAA,IAAAoO,UAAAA;AAAAA,IAAAxG,OAAAtH;AAAAA,IAAAL,QAAAA;AAAAA,IAAAoO,gBAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,eAAAhO;AAAAA,EAAAA,IAAAV,GAGvB+H,IAAAtH,MAAAE,SAAA,KAAAF,GAIAiO,IAAAhO,MAAAC,SAAA0N,KAAA3N,GAEAiO,IAAiBC,GAAyB,IAAI,GAC9CC,IAA2BD,GAA6C,IAAI;AAAC,MAAA/N;AAAA,EAAAZ,SAAAE,KAG1CU,IAAAC,CAAAA,MACjCA,EAAKE,UAA0Bb,CAAE,GAACF,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AADpC,QAAA6O,IAAoB5N,EAAeL,CAEnC,GACA8H,IAAgBmG,GAAWC,mBAAX,IAChBC,IAAmBF,GAAWE,cAAX,IACnBC,IAAuBL,GAAOjG,CAAO,GAErCsF,IAAeM,KAAAW,IAEf9N,IAAkBF,EAAeG,EAA0B,GAC3D6G,IAAqBhH,EAAe+G,EAA6B,GACjEG,IAAuBlH,EAAeiH,EAA+B,GACrEG,IAAuBpH,EAAemH,EAA+B,GACrEiF,IAAyBpM,EAAeqH,EAAiC;AAAC,MAAAjH;AAAA,EAAArB,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAGxEE,IAAA6N,CAAAA,MAAA;AACE/N,IAAAA,EAAUjB,GAAI;AAAA,MAAA6O,YAAcG;AAAAA,IAAAA,CAAM;AAAA,EAAC,GACpClP,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAHH,QAAAmP,IAAsB9N;AAKrB,MAAAG,GAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAA0I,KAAA1I,EAAA,CAAA,MAAAgO,KAAAhO,EAAA,CAAA,MAAAE,KAAAF,SAAA8H,KAAA9H,EAAA,CAAA,MAAAiI,KAAAjI,EAAA,EAAA,MAAA+O,KAAA/O,EAAA,EAAA,MAAAmI,KAGS3G,IAAAA,OACRyG,EAAa/H,GAAI;AAAA,IAAAA,IACXiO;AAAAA,IAAgBrG,OAAAA;AAAAA,IAAAY,SAAAA;AAAAA,IAAAC,IAGhB,OAAApF,GAAAoK,OAAA;AACF,YAAAyB,KAA8BzB,IAAMoB,cAAP;AAC7B,aAAKK,KAGUpB,EAAOzK,GAA0B6L,EAAoB,IAHlC7L;AAAAA,IAMrB;AAAA,IACdoK,QACO;AAAA,MAAAoB,YAAAA;AAAAA,IAAAA;AAAAA,IAAcM,UACZ,CAACnC,EAAsB;AAAA,EAAA,CAClC,GAEM,MAAM/E,EAAejI,GAAIiO,EAAgB,IAC/C1M,IAAA,CAACvB,GAAI4H,GAAOkG,GAAQ/F,GAAcE,GAAgBO,GAASqG,CAAU,GAAC/O,OAAA0I,GAAA1I,OAAAgO,GAAAhO,OAAAE,GAAAF,OAAA8H,GAAA9H,OAAAiI,GAAAjI,QAAA+O,GAAA/O,QAAAmI,GAAAnI,QAAAwB,GAAAxB,QAAAyB,MAAAD,IAAAxB,EAAA,EAAA,GAAAyB,IAAAzB,EAAA,EAAA,IApBzEyI,EAAUjH,GAoBPC,CAAsE;AAAC,MAAAE,GAAAE;AAAA,EAAA7B,EAAA,EAAA,MAAA0I,KAAA1I,UAAAE,KAAAF,EAAA,EAAA,MAAAqI,KAGhE1G,IAAAA,MAAA;AACR0G,IAAAA,EAAenI,GAAIiO,IAAkBzF,CAAO;AAAA,EAAC,GAC5C7G,KAAC3B,GAAIwI,GAASL,CAAc,GAACrI,QAAA0I,GAAA1I,QAAAE,GAAAF,QAAAqI,GAAArI,QAAA2B,GAAA3B,QAAA6B,MAAAF,IAAA3B,EAAA,EAAA,GAAA6B,IAAA7B,EAAA,EAAA,IAFhCyI,EAAU9G,GAEPE,CAA6B;AAAC,MAAAC;AAAA,EAAA9B,EAAA,EAAA,MAAAyO,KAAAzO,UAAAE,KAAAF,EAAA,EAAA,MAAAqN,KAI/BvL,IAAAwN,CAAAA,MAAA;AACE,IAAIV,EAAkBW,WACpBC,aAAaZ,EAAkBW,OAAQ,GAEzCX,EAAkBW,UAAWE,WAAW,MAAA;AACtCpC,MAAAA,EAAiBnN,GAAIiO,IAAkB;AAAA,QAAAY,YAAcG;AAAAA,MAAAA,CAAM;AAAA,IAAC,GAC3DT,CAAa;AAAA,EAFU,GAG3BzO,QAAAyO,GAAAzO,QAAAE,GAAAF,QAAAqN,GAAArN,QAAA8B,KAAAA,IAAA9B,EAAA,EAAA;AARH,QAAA0P,IAA8B5N;AAU7B,MAAAE,GAAAC;AAAA,EAAAjC,UAAA0I,KAGS1G,IAAAA,MAAA;AAER,IAAI0G,KAAA,CAAYsG,EAAcO,WAAYb,EAAQa,WAChDb,EAAQa,QAAQI,MAAAA,GAGlBX,EAAcO,UAAW7G;AAAAA,EAAH,GACrBzG,IAAA,CAACyG,CAAO,GAAC1I,QAAA0I,GAAA1I,QAAAgC,GAAAhC,QAAAiC,MAAAD,IAAAhC,EAAA,EAAA,GAAAiC,IAAAjC,EAAA,EAAA,IAPZyI,EAAUzG,GAOPC,CAAS;AAAC,MAAAC,GAAAE;AAAA,EAAApC,EAAA,EAAA,MAAAsC,OAAAC,IAAA,2BAAA,KAGHL,IAAAA,MACD,MAAA;AACL,IAAI0M,EAAkBW,WACpBC,aAAaZ,EAAkBW,OAAQ;AAAA,EACxC,GAEFnN,IAAA,CAAA,GAAEpC,QAAAkC,GAAAlC,QAAAoC,MAAAF,IAAAlC,EAAA,EAAA,GAAAoC,IAAApC,EAAA,EAAA,IANLyI,EAAUvG,GAMPE,CAAE;AAAC,MAAAC;AAAA,EAAArC,EAAA,EAAA,MAAA0P,KAAA1P,UAAAmP,KAGJ9M,IAAAwB,CAAAA,MAAA;AACE,UAAA+L,KAAiB/L,EAAKgM,OAAOtI;AAC7B4H,IAAAA,EAAcS,EAAQ,GACtBF,EAAsBE,EAAQ;AAAA,EAAC,GAChC5P,QAAA0P,GAAA1P,QAAAmP,GAAAnP,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AALH,QAAA8P,IAAqBzN;AAOpB,MAAAI;AAAA,EAAAzC,EAAA,EAAA,MAAAE,KAAAF,UAAAmP,KAAAnP,EAAA,EAAA,MAAAqN,KAE+B5K,IAAAA,MAAA;AAC9B0M,IAAAA,EAAc,EAAE,GAChB9B,EAAiBnN,GAAIiO,IAAkB;AAAA,MAAAY,YAAc;AAAA,IAAA,CAAI,GACrDL,EAAQa,WACVb,EAAQa,QAAQI,MAAAA;AAAAA,EACjB,GACF3P,QAAAE,GAAAF,QAAAmP,GAAAnP,QAAAqN,GAAArN,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAND,QAAA+P,IAAoBtN;AAQpB,MAAI,CAACiG;AAAO,WACH;AAGT,QAAAsH,IAAoB7P,GAAM6P,eAAN,aACpBC,IAAuB9P,GAAM8P,kBAAN;AAAwC,MAAAtN;AAAA,EAAA3C,EAAA,EAAA,MAAAsC,OAAAC,IAAA,2BAAA,KAavDI,sBAACuN,IAAA,EAAwB,UAAA,SACvB,UAAA,gBAAAxN,EAACyN,MAAc,GACjB,GAAiBnQ,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAwO,KAAAxO,EAAA,EAAA,MAAAiQ,KAAAjQ,EAAA,EAAA,MAAA+P,KAAA/P,UAAA+O,KAELlM,IAAAkM,sBACXmB,IAAA,EAAwB,UAAA,OACvB,UAAA,gBAAAxN,EAACd,GAAA,EACM,MAAA,SACOqO,cAAAA,GACHF,YACJ,MAAA,OAEJvB,UAAAA,KAAa,gBAAA9L,EAAC0N,MAAuB,UAAA,QAAA,CAAO,EAAA,CAC/C,EAAA,CACF,IAVY,MAWNpQ,QAAAwO,GAAAxO,QAAAiQ,GAAAjQ,QAAA+P,GAAA/P,QAAA+O,GAAA/O,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,UAAA6C,KAjBEC,IAAA;AAAA,IAAAuN,gBAER1N;AAAAA,IAEiB2N,cAELzN;AAAAA,EAAAA,GAYf7C,QAAA6C,GAAA7C,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAAgD;AAAA,SAAAhD,EAAA,EAAA,MAAAuO,KAAAvO,EAAA,EAAA,MAAA8P,KAAA9P,EAAA,EAAA,MAAAgQ,KAAAhQ,EAAA,EAAA,MAAA+O,KAAA/O,UAAA8C,KA1BHE,sBAACuN,IAAA,EACW7B,UAAAA,GACL,MAAA,SACL,WAAA,IACQ,SAAA,UACKsB,aAAAA,GACNjB,OAAAA,GACGe,aACE,YAAAhN,GAkBX,GACGyL,GAAc,GAClBvO,QAAAuO,GAAAvO,QAAA8P,GAAA9P,QAAAgQ,GAAAhQ,QAAA+O,GAAA/O,QAAA8C,GAAA9C,QAAAgD,KAAAA,IAAAhD,EAAA,EAAA,GA5BFgD;AA4BE;AApJC,SAAAsF,GAAAC,GAAA;AAAA,SA0B8C1H,EAAKwM;AAAiB;AA1BpE,SAAAjF,GAAAgB,GAAA;AAAA,SAyB4CvI,EAAKwH;AAAe;AAzBhE,SAAAH,GAAAmB,GAAA;AAAA,SAwB4CxI,EAAKsH;AAAe;AAxBhE,SAAAH,GAAAsB,GAAA;AAAA,SAuB0CzI,EAAKoH;AAAa;AAvB5D,SAAA7G,GAAAgC,GAAA;AAAA,SAsBuCvC,EAAKM;AAAU;AAsI7D,MAAM8N,KAAoCA,CACxC1L,GACAwL,MACG;AACH,MAAI,CAACA,EAAWyB,KAAAA,EAAQ,QAAOC,QAAQC,QAAQnN,CAAI;AAEnD,QAAMoN,IAAc5B,EAAW6B,YAAAA;AAE/B,SAAOH,QAAQC,QACbnN,EAAK8C,IAAKY,CAAAA,MACRA,EAAO+G,OAAQ7G,CAAAA,MACbC,OAAOC,OAAOF,CAAI,EAAEkF,KACjB9E,CAAAA,MACC,OAAOA,KAAU,YACjBA,EAAMqJ,YAAAA,EAAc1C,SAASyC,CAAW,CAC5C,CACF,CACF,CACF;AACF;ACpLO,SAAAE,GAAA9Q,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAwB;AAAA,IAAAC,IAAAA;AAAAA,IAAA4Q,gBAAAtQ;AAAAA,IAAAL,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,EAAAA,IAAAP,GAE7B+Q,IAAAtQ,MAAAE,SAAA,KAAAF,GAKAW,IAAkBF,EAAeG,EAA0B,GAC3DL,IAAkBE,EAAe+G,EAA0B;AAAC,MAAAvH;AAAA,EAAAT,SAAAE,KAE/CO,IAAA6I,CAAAA,MAAWzI,EAAKE,UAA0Bb,CAAmB,GAAC4O,iBAAA9O,OAAAE,GAAAF,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAG3E,QAAA+Q,IAJuB9P,EACrBC,EAAWT,CAA8D,CAC3E,KAEkBqQ;AAAgC,MAAAlQ,GAAAS;AAAA,EAAArB,EAAA,CAAA,MAAA8Q,KAAA9Q,EAAA,CAAA,MAAAe,KAAAf,EAAA,CAAA,MAAAE,KAAAF,SAAAmB,KAGxCP,IAAAA,MAAA;AAER,IADqBG,EAAyBb,CAAmB,GAAC4O,oBAC7CpO,UACnBS,EAAUjB,GAAI;AAAA,MAAA4O,iBAAmBgC;AAAAA,IAAAA,CAAgB;AAAA,EAClD,GACAzP,IAAA,CAACyP,GAAgB/P,GAAWb,GAAIiB,CAAS,GAACnB,OAAA8Q,GAAA9Q,OAAAe,GAAAf,OAAAE,GAAAF,OAAAmB,GAAAnB,OAAAY,GAAAZ,OAAAqB,MAAAT,IAAAZ,EAAA,CAAA,GAAAqB,IAAArB,EAAA,CAAA,IAL7CyI,EAAU7H,GAKPS,CAA0C;AAAC,MAAAG;AAAA,EAAAxB,EAAA,CAAA,MAAAE,KAAAF,SAAA+Q,KAAA/Q,EAAA,EAAA,MAAAmB,KAEbK,IAAAA,MAAA;AAC/BL,IAAAA,EAAUjB,GAAI;AAAA,MAAA4O,iBAAmB,CAACiC;AAAAA,IAAAA,CAAW;AAAA,EAAC,GAC/C/Q,OAAAE,GAAAF,OAAA+Q,GAAA/Q,QAAAmB,GAAAnB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAFD,QAAAgE,IAAqBxC,GAIrBsH,IAAqBiI,IAChB5Q,GAAMoL,WAAN,mBACApL,GAAMkL,UAAN,iBAELtJ,IAAkB5B,GAAM4B,aAAN+G;AAAiC,MAAArH;AAAA,EAAAzB,UAAAK,KAY5CoB,IAAApB,KAAQ,gBAAAqC,EAACyN,IAAA,EAAwB,UAAA,SAAO,GAAGnQ,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,MAAA+Q,KAAA/Q,UAAAyB,KAR9CE,sBAACC,GAAA,EACM,MAAA,SACOG,cAAAA,GACHiC,SAAAA,GACL,IAAAuC,GAAkBC,SACTuK,eAAAA,GAAS,GAClBzQ,GAEHmB,UAAAA,GACH,GAAazB,QAAAM,GAAAN,QAAA+B,GAAA/B,QAAAgE,GAAAhE,QAAA+Q,GAAA/Q,QAAAyB,GAAAzB,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA6B;AAAA,SAAA7B,EAAA,EAAA,MAAA2B,KAAA3B,UAAA8I,KAVfjH,IAAA,gBAAAa,EAACwG,IAAA,EAAeJ,OAAAA,GACdnH,UAAAA,GAUF,GAAU3B,QAAA2B,GAAA3B,QAAA8I,GAAA9I,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAXV6B;AAWU;AA7CP,SAAAmG,GAAA5E,GAAA;AAAA,SAQuCvC,EAAKE;AAAU;AARtD,SAAAK,GAAAP,GAAA;AAAA,SAOuCA,EAAKM;AAAU;AChCtD,MAAM6P,KAAmBA,MAAA;AAAA,QAAAhR,IAAAC,EAAA,CAAA;AAAA,MAAAF;AAAA,SAAAC,EAAA,CAAA,MAAAsC,OAAAC,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,SAAAkR,GAAAlR,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAA4B;AAAA,IAAAiR,QAAAA;AAAAA,EAAAA,IAAAnR;AAAmC,MAAAS;AAAA,EAAAR,EAAA,CAAA,MAAAkR,EAAAhR,MAQpDM,IAAA;AAAA,IAAAN,IAAMgR,EAAMhR;AAAAA,EAAAA,GAAKF,EAAA,CAAA,IAAAkR,EAAAhR,IAAAF,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAPjC,QAAA;AAAA,IAAAmR,YAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,EAAAA,IAOIC,GAAYjR,CAAiB;AAAC,MAAAC;AAAA,EAAAT,SAAAsR,KAGrB7Q,IAAAiR,GAAGC,UAAUC,SAAUN,CAAS,GAACtR,OAAAsR,GAAAtR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAEnC,QAAAY,IAAA4Q,IAAA,MAAA,GACDnQ,IAAAmQ,IAAA,aAAA;AAAgC,MAAAhQ;AAAA,EAAAxB,EAAA,CAAA,MAAAS,KAAAT,EAAA,CAAA,MAAAY,KAAAZ,EAAA,CAAA,MAAAqB,KAAArB,SAAAuR,KAJ5B/P,IAAA;AAAA,IAAA8P,WACD7Q;AAAAA,IAAiC8Q,YAAAA;AAAAA,IAAAM,SAEnCjR;AAAAA,IAAoBkR,QACrBzQ;AAAAA,EAAAA,GACTrB,OAAAS,GAAAT,OAAAY,GAAAZ,OAAAqB,GAAArB,OAAAuR,GAAAvR,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AALD,QAAAyE,IAAcjD;AAKb,MAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAsC,OAAAC,IAAA,2BAAA,KAUOd,IAAA;AAAA,IAAA,mBACiB;AAAA,MAAAsQ,SACR3Q;AAAAA,MAAoD4Q,eAC9C;AAAA,IAAA;AAAA,EACjB,GACDhS,OAAAyB,KAAAA,IAAAzB,EAAA,CAAA;AAAA,MAAA2B;AAAA,EAAA3B,EAAA,EAAA,MAAAkR,EAAA9K,SAEDzE,IAAA,gBAAAe,EAACyD,IAAA,EAAc+K,UAAAA,EAAM9K,OAAO,GAAepG,EAAA,EAAA,IAAAkR,EAAA9K,OAAApG,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA;AAAA,MAAA6B;AAAA,SAAA7B,EAAA,EAAA,MAAAmR,KAAAnR,EAAA,EAAA,MAAAoR,KAAApR,EAAA,EAAA,MAAAqR,KAAArR,EAAA,EAAA,MAAAyE,KAAAzE,UAAA2B,KAd7CE,sBAACgE,IAAA,EACMwL,QACE5M,OAAAA,GAAK,GACR0M,GAAU,GACVC,GACC,MAAA,YACK,UAAA,GACN,IAAA3P,GAOJE,UAAAA,GACF,GAAW3B,QAAAmR,GAAAnR,QAAAoR,GAAApR,QAAAqR,GAAArR,QAAAyE,GAAAzE,QAAA2B,GAAA3B,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAfX6B;AAeW;AAjCR,SAAAT,GAAAsF,GAAA;AAAA,SA2BuB,aAAaA,EAAKC,QAAQC,QAAQqL,IAAK;AAAE;ACAhE,SAAAC,GAAAnS,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,QAAAA;AAAAA,IAAAE,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAA6R,WAAAA;AAAAA,EAAAA,IAAApS,GAO3B,CAAA4D,GAAAC,CAAA,IAAgCF,GAA6B,IAAI,GACjEvC,IAAkBF,EAAeG,EAA0B;AAAC,MAAAZ;AAAA,EAAAR,SAAAE,KAE/CM,IAAA4C,CAAAA,MAAWvC,EAAKE,UAA6Bb,CAAW,GAACkS,SAAApS,OAAAE,GAAAF,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AADtE,QAAAoS,IAAgBnR,EACdC,EAAWV,CAAyD,CACtE;AAAC,MAAAC;AAAA,EAAAT,EAAA,CAAA,MAAAsC,OAAAC,IAAA,2BAAA,KAI2B9B,IAAA;AAAA,IAAA4R,kBACNC;AAAAA,EAAAA,GACnBtS,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAJH,QAAAuS,IAAgBC,GACdC,GAAUC,EAAa,GACvBD,GAAUE,IAAgBlS,CAEzB,CACH;AAAC,MAAAG;AAAA,EAAAZ,SAAAoS,KAGOxR,IAAAwR,GAAO/L,IAAM2B,EAAqB,KAAlC,CAAA,GAAmChI,OAAAoS,GAAApS,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAD3C,QAAA4S,IACQhS;AAEP,MAAAS;AAAA,EAAArB,EAAA,CAAA,MAAAsC,OAAAC,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,OAAAC,IAAA,2BAAA,KAE0Bf,IAAAA,MAAA;AAC9BoC,IAAAA,EAAY,IAAI;AAAA,EAAC,GAClB5D,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAFD,QAAA6S,IAAoBrR;AAEd,MAAAC;AAAA,EAAAzB,EAAA,CAAA,MAAAoS,KAAApS,SAAAE,KAAAF,EAAA,CAAA,MAAAmB,KAEgBM,IAAAuD,CAAAA,MAAA;AACpB,UAAA;AAAA,MAAA8N,QAAAA;AAAAA,MAAAC,MAAAA;AAAAA,IAAAA,IAAyBlP;AACzB,QAAI,CAACkP,KAAQD,EAAM5S,OAAQ6S,EAAI7S,MAA3B,CAAmCkS;AAAO;AAC9C,UAAAY,IAAiBZ,EAAOa,UAAWC,OAASC,EAAGjT,OAAQ4S,EAAM5S,EAAG,GAChEkT,IAAiBhB,EAAOa,UAAWI,OAASF,EAAGjT,OAAQ6S,EAAI7S,EAAG;AAC9D,QAAI8S,MAAa,MAAMI,MAAa,IAAE;AACpC,YAAAE,IAAmBC,GAAUnB,GAASY,GAAUI,CAAQ;AACxDjS,MAAAA,EAAUjB,GAAI;AAAA,QAAAkS,SAAWkB;AAAAA,MAAAA,CAAY;AAAA,IAAC;AAAA,EACvC,GACFtT,OAAAoS,GAAApS,OAAAE,GAAAF,OAAAmB,GAAAnB,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AATD,QAAAwT,IAAsB/R;AAYtB,MAAI,CAAC2Q,KAAWA,EAAO/M,SAAU;AAAC,WACzB;AAGT,QAAAyD,IAAqB3I,GAAMsT,WAAN,iBACrBC,IAAehO,EAAQ/B,GAOHhC,IAAAxB,GAAM4B,aAAN+G,GACGjH,IAAA6R,IAAA,uBAAAhT,QAEAoB,IAAA4R,IAAA,SAAAhT;AAA2B,MAAAsB;AAAA,EAAAhC,UAAAK,KAMzC2B,IAAA3B,KACC,gBAAAqC,EAACiR,IAAA,EACC,UAAA,gBAAAjR,EAACsO,MAAgB,GACnB,GACDhR,QAAAK,GAAAL,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAA,EAAAjC,UAAAM,KAAAN,EAAA,EAAA,MAAA0T,KAAA1T,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,GACI0P,eAAAA,GACT,IAAAnN,GAAkBC,SAAQ,GAC1BlG,GAEH0B,UAAAA,EAAAA,CAKH,GAAahC,QAAAM,GAAAN,QAAA0T,GAAA1T,QAAAgC,GAAAhC,QAAA2B,GAAA3B,QAAA6B,GAAA7B,QAAA8B,GAAA9B,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAAA,MAAAkC;AAAA,EAAAlC,EAAA,EAAA,MAAAiC,KAAAjC,UAAA8I,KAjBf5G,IAAA,gBAAAQ,EAACwG,IAAA,EAAeJ,OAAAA,GACd7G,UAAAA,GAiBF,GAAUjC,QAAAiC,GAAAjC,QAAA8I,GAAA9I,QAAAkC,KAAAA,IAAAlC,EAAA,EAAA;AAAA,MAAAoC,GAAAC;AAAA,EAAArC,EAAA,EAAA,MAAAsC,OAAAC,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,UAAAoS,KAOtD3P,IAAA2P,EAAO/L,IAAK6B,EAEZ,GAAClI,QAAAoS,GAAApS,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAA4S,KAAA5S,UAAAyC,KANJE,sBAACiR,IAAA,EACQhB,OAAAA,GACGiB,UAAAA,IAETpR,UAAAA,GAGH,GAAkBzC,QAAA4S,GAAA5S,QAAAyC,GAAAzC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAmS,KAAAnS,EAAA,EAAA,MAAA2D,KAAA3D,EAAA,EAAA,MAAA0T,KAAA1T,UAAA2C,KAhBpBE,sBAACyD,IAAA,EACI,IAAA,sBACO3C,UAAAA,GACJ+P,SACGb,SAAAA,GACK,cAAAzQ,GACG,iBAAAC,GAAwC,GACrD8P,GAEJxP,UAAAA,GAQF,GAAO3C,QAAAmS,GAAAnS,QAAA2D,GAAA3D,QAAA0T,GAAA1T,QAAA2C,GAAA3C,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,EAAA,MAAAwT,KAAAxT,UAAAuS,KAAAvS,EAAA,EAAA,MAAA6C,KAtBTC,sBAACgR,IAAA,EACUvB,SAAAA,GACWwB,oBAAAA,IACTP,WAAAA,GAEX3Q,UAAAA,EAAAA,CAkBF,GAAa7C,QAAAwT,GAAAxT,QAAAuS,GAAAvS,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,SAAAkF,GAAAgJ,GAAA;AAAA,SA6FO,gBAAAxO,EAACuO,IAAA,EAA2CC,QAAAA,EAAAA,GAAnBA,EAAMhR,EAAmB;AAAI;AA7F7D,SAAA8H,GAAAmL,GAAA;AAAA,SAqByBA,EAAGjT;AAAG;AArB/B,SAAAkB,GAAAP,GAAA;AAAA,SAQuCA,EAAKM;AAAU;"}
|
|
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 return Object.values(item).reduce((itemTotal: number, value) => {\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 const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\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 } 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 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 setWidget(id, { isRelative: newIsRelative })\n }, [isRelative, setWidget, id])\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 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 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 const storeLockedItems = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.lockedItems),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(() => storeLockedItems ?? [], [storeLockedItems])\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","Object","values","itemTotal","value","toRelativeData","transformed","key","entries","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","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","Array","isArray","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","storeIsLocked","state_5","lockedItems","storeLockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","useRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","current","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","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":"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"}
|
package/dist/widgets/bar.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs as s, jsx as n } from "react/jsx-runtime";
|
|
|
2
2
|
import { c as m } from "react/compiler-runtime";
|
|
3
3
|
import "react";
|
|
4
4
|
import "echarts";
|
|
5
|
-
import "../widget-store-
|
|
5
|
+
import "../widget-store-Dd7_sWZT.js";
|
|
6
6
|
import "zustand/shallow";
|
|
7
7
|
import { g } from "../options-D9wflre6.js";
|
|
8
8
|
import { m as f } from "../utils-Dv5Z47UQ.js";
|