@carto/ps-react-ui 5.0.0-widgets.4 → 5.0.0-widgets.6
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/note-Clng2ej6.js +124 -0
- package/dist/note-Clng2ej6.js.map +1 -0
- 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/echart/types.d.ts +1 -0
- package/dist/types/widgets/index.d.ts +2 -0
- package/dist/types/widgets/stores/types.d.ts +0 -75
- package/dist/types/widgets/subheader/index.d.ts +2 -2
- package/dist/types/widgets/subheader/subheader.d.ts +2 -2
- package/dist/types/widgets/subheader/types.d.ts +1 -1
- package/dist/types/widgets/table/hooks/use-pagination.d.ts +1 -7
- package/dist/types/widgets/table/hooks/use-selection.d.ts +0 -2
- package/dist/types/widgets/table/hooks/use-sort.d.ts +1 -7
- package/dist/types/widgets/table/types.d.ts +16 -5
- package/dist/widget-store-Dd7_sWZT.js +132 -0
- package/dist/widget-store-Dd7_sWZT.js.map +1 -0
- package/dist/widgets/actions.js +23 -22
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +8 -7
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +135 -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 +19 -18
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +54 -53
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/markdown.js +1 -1
- package/dist/widgets/no-data.js +1 -1
- package/dist/widgets/note.js +2 -121
- package/dist/widgets/note.js.map +1 -1
- package/dist/widgets/pie.js +8 -7
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +2 -2
- package/dist/widgets/root.js +1 -1
- package/dist/widgets/scatterplot.js +8 -7
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/skeleton-loader.js +1 -1
- package/dist/widgets/spread.js +20 -19
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +1 -1
- package/dist/widgets/subheader.js +5 -5
- package/dist/widgets/subheader.js.map +1 -1
- package/dist/widgets/table.js +499 -488
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +8 -7
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/wrapper.js +1 -1
- package/dist/widgets.js +6 -4
- package/dist/widgets.js.map +1 -1
- 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 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":"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"}
|
package/dist/widgets/bar.js
CHANGED
|
@@ -2,20 +2,21 @@ 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";
|
|
9
9
|
import { f as h, c as d, b as u, a as x, d as y } from "../styles-dOu_pRNb.js";
|
|
10
10
|
import { Box as a, Skeleton as o } from "@mui/material";
|
|
11
11
|
import "@mui/icons-material";
|
|
12
|
+
import "react-markdown";
|
|
12
13
|
import { d as l, a as p } from "../exports-Cr43OCul.js";
|
|
13
14
|
import "../lasso-tool-CYn3ivf-.js";
|
|
14
15
|
import "../cjs-D9ro6BXv.js";
|
|
15
16
|
import "@dnd-kit/core";
|
|
16
17
|
import "@dnd-kit/sortable";
|
|
17
18
|
import "@dnd-kit/utilities";
|
|
18
|
-
function
|
|
19
|
+
function $({
|
|
19
20
|
refUI: e
|
|
20
21
|
}) {
|
|
21
22
|
return [{
|
|
@@ -29,7 +30,7 @@ function E({
|
|
|
29
30
|
}
|
|
30
31
|
}];
|
|
31
32
|
}
|
|
32
|
-
function
|
|
33
|
+
function q(e) {
|
|
33
34
|
return {
|
|
34
35
|
type: "bar",
|
|
35
36
|
option: f(g(e), b(e))
|
|
@@ -135,7 +136,7 @@ const r = {
|
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
};
|
|
138
|
-
function
|
|
139
|
+
function H() {
|
|
139
140
|
const e = m(2);
|
|
140
141
|
let t;
|
|
141
142
|
e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.grid, children: [
|
|
@@ -185,8 +186,8 @@ function S(e) {
|
|
|
185
186
|
return t(2);
|
|
186
187
|
}
|
|
187
188
|
export {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
H as BarSkeleton,
|
|
190
|
+
q as barConfig,
|
|
191
|
+
$ as barDownloadConfig
|
|
191
192
|
};
|
|
192
193
|
//# sourceMappingURL=bar.js.map
|
package/dist/widgets/bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../root/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({ data = [], theme }: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: {\n type: 'value',\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n // itemStyle: {\n // color(params) {\n // const color =\n // getColorBySchema({\n // colorSchema: config?.colorSchema,\n // value: params.value as ColorSchemaValue,\n // }) ?? params.color!\n\n // if (!selected?.length) {\n // return color\n // }\n\n // if (selected.map(String).includes(params.name)) {\n // return color\n // }\n\n // return theme.palette.black[25]\n // },\n // },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","hasLegend","length","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","splitNumber","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","series","map","_","index","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","item","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../root/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({ data = [], theme }: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: {\n type: 'value',\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n // itemStyle: {\n // color(params) {\n // const color =\n // getColorBySchema({\n // colorSchema: config?.colorSchema,\n // value: params.value as ColorSchemaValue,\n // }) ?? params.color!\n\n // if (!selected?.length) {\n // return color\n // }\n\n // if (selected.map(String).includes(params.name)) {\n // return color\n // }\n\n // return theme.palette.black[25]\n // },\n // },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","hasLegend","length","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","splitNumber","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","series","map","_","index","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","item","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
|