componentes-sinco 1.0.26 → 1.0.27
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/index.cjs +2155 -949
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +112 -14
- package/dist/index.d.ts +112 -14
- package/dist/index.js +2101 -900
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/create-KZGO2OZA.svg +0 -18
- package/dist/empty-3NEKE7WO.svg +0 -13
- package/dist/error-RUCZUXDN.svg +0 -5
- package/dist/search-OKSCVF2W.svg +0 -12
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Components/Drawer/SCDrawer.tsx","../src/Components/Textfield/SCTextField.tsx","../src/Components/Textfield/Helpers/validateIcon.tsx","../src/Components/Textfield/Helpers/validateKeyDown.tsx","../src/Components/Textfield/Helpers/validateOnBlur.tsx","../src/Components/ToastNotification/SCToastNotification.tsx","../src/Components/ToastNotification/useProgress.ts","../src/Components/TextArea/Helpers/validateIcon.tsx","../src/Components/TextArea/SCTextArea.tsx","../src/Components/SCSelect.tsx","../src/Components/SCAutocomplete.tsx","../src/Components/SCDateRange.tsx","../src/Components/Drawer/Helpers/Utils.tsx","../src/Components/Drawer/Helpers/validateInput.tsx","../src/Components/FooterAction/FooterAction.tsx","../src/Components/Modal/Helpers/Data.tsx","../src/Components/Modal/Helpers/Utils.tsx","../src/Components/Modal/SCModal.tsx","../src/generales/capitalize.tsx","../src/Components/MultiSelect/MultiSelect.tsx","../src/Components/MultiSelect/helpers/useHandlers.tsx","../src/Components/MultiSelect/helpers/Utils.tsx","../src/Components/MultiSelect/helpers/useFilteredItems.tsx","../src/Components/PageHeader/PageHeader.tsx","../src/Components/SCCalendarSwipeable.tsx","../src/Components/SCDataGrid.tsx","../src/Components/EmptyState/EmptyState.tsx","../src/Components/SCDialog.tsx","../src/Components/SCMenu.tsx","../src/Components/Hooks/useWindowDimensions.ts","../src/Components/SCTabs.tsx","../src/Components/Calendario/Calendar.tsx","../src/Components/Calendario/CalendarToolbar.tsx","../src/Components/Calendario/Views/MonthView.tsx","../src/Components/Calendario/Utils.tsx","../src/Components/Calendario/Event.tsx","../src/Components/Calendario/Views/WeekView.tsx","../src/Components/Calendario/Views/DayView.tsx","../src/Theme/index.ts","../src/Theme/components.ts","../src/Theme/palette.ts","../src/Theme/breakpoints.ts","../src/Theme/mixins.ts","../src/Theme/module.ts","../src/Theme/typography.ts","../src/Theme/shadows.ts","../src/Theme/theme.ts"],"sourcesContent":["//React\r\nimport React from 'react';\r\n// MUI material\r\nimport { Box, Drawer, Typography, IconButton, Button, Stack, Chip } from \"@mui/material\";\r\n// Iconons\r\nimport Grid from '@mui/material/Grid2';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n// componentes personalizados\r\nimport { SCTextField } from '../Textfield';\r\nimport { SCToastNotification, ToastBaseProperties } from '../ToastNotification';\r\nimport { SCTextArea } from '../TextArea';\r\nimport { SCSelect } from '../SCSelect';\r\nimport { SCAutocomplete } from '../SCAutocomplete';\r\nimport { SCDateRange } from '../SCDateRange';\r\n// Validaciones del componente\r\nimport { DrawerProps, getIcon, validateInputs } from './Helpers';\r\n\r\nexport function SCDrawer<T>({\r\n //informativas\r\n title,\r\n arrayElements = [],\r\n actions,\r\n buttonDrawer,\r\n //Apariencia\r\n colorTitle,\r\n anchor = \"left\",\r\n width,\r\n //Funcionales\r\n open,\r\n}: DrawerProps<T>) {\r\n // Hooks\r\n const [drawerOpen, setDrawerOpen] = React.useState(open);\r\n const [toast, setToast] = React.useState<ToastBaseProperties | null>(null);\r\n // Manejo de pertura y cierre del Drawer\r\n const handleDrawerClose = () => {\r\n setDrawerOpen(false);\r\n };\r\n const toggleDrawer = (newOpen: boolean) => () => {\r\n setDrawerOpen(newOpen);\r\n };\r\n // Icono del botón del Drawer\r\n const ButtonIcon = getIcon(buttonDrawer?.icon);\r\n // Despliegue del notificacion\r\n const setToastWithDelay = (toastContent: ToastBaseProperties) => {\r\n setToast(null);\r\n setTimeout(() => {\r\n setToast(toastContent);\r\n }, 10);\r\n };\r\n // Validación de los inputs\r\n const inputValidation = () => validateInputs(arrayElements, setToastWithDelay, handleDrawerClose);\r\n\r\n const clean = () => {\r\n arrayElements.forEach((element, index) => {\r\n if (\r\n element.setState ||\r\n (React.isValidElement(element?.component) && (element.component.props as any)?.setState)\r\n ) {\r\n if ((element.type === \"textField\" ||\r\n (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name === \"SCtextField\"))\r\n || (element.type === \"textArea\" ||\r\n (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name === \"SCtextArea\"))\r\n ) {\r\n element.setState!=undefined?element.setState(\"\"):null;\r\n (React.isValidElement(element?.component) && (element.component.props as any)?.setState) && element?.component?.props?.setState(\"\");\r\n } else if (\r\n element.type === \"dateRange\" ||\r\n (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name === \"SCDateRange\")\r\n ) {\r\n element.setState!=undefined?element.setState([null, null]):null;\r\n (React.isValidElement(element?.component) && typeof (element.component.props as any)?.setState === \"function\") && (element.component.props as any).setState([null, null]);\r\n } else {\r\n if ((element.type == \"autocomplete\" ||\r\n (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name === \"SCAutocomplete\"))\r\n || (element.typeFormat == \"multiselect\" ||\r\n (React.isValidElement(element?.component) && element.component.props && (element?.component?.props as any).typeFormat == \"multiselect\"))\r\n ) {\r\n element.setState!=undefined?element.setState({ hiddenValue: [], textValue: [] }):null;\r\n (React.isValidElement(element?.component) && typeof (element.component.props as any)?.setState === \"function\") && (element.component.props as any).setState({ hiddenValue: [], textValue: [] });\r\n } else {\r\n element.setState!=undefined?element.setState({ hiddenValue: \"-1\", textValue: \"\" }):null;\r\n (React.isValidElement(element?.component) && typeof (element.component.props as any)?.setState === \"function\") && (element.component.props as any).setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Acciones por defecto\r\n const actionsA = actions == false ? false : actions != undefined ? actions : [{ text: \"Aplicar filtros\", fn: inputValidation }, { text: \"Limpiar filtros\", fn: clean }];\r\n\r\n return (\r\n <>\r\n {toast && <SCToastNotification {...toast} />}\r\n {buttonDrawer?.type == 'chip' ?\r\n <Chip\r\n onClick={toggleDrawer(true)}\r\n color={buttonDrawer?.color}\r\n variant={buttonDrawer?.variant == 'contained' ? 'filled' : 'outlined'}\r\n label={buttonDrawer?.text ?? \"\"}\r\n icon={buttonDrawer?.iconPosition === 'left' && ButtonIcon ? <ButtonIcon fontSize='small' /> : undefined}\r\n deleteIcon={buttonDrawer?.iconPosition === 'right' && ButtonIcon ? <ButtonIcon fontSize='small' /> : undefined}\r\n {...(buttonDrawer?.iconPosition === 'right' && ButtonIcon ? { onDelete: () => { } } : {})}\r\n sx={{\r\n \"& .MuiChip-icon\": {\r\n color: 'inherit'\r\n },\r\n textTransform: \"capitalize\"\r\n }}\r\n />\r\n :\r\n <Button\r\n data-testid=\"test-buttonDrawer\"\r\n sx={{ textTransform: \"capitalize\" }}\r\n color={buttonDrawer?.color}\r\n onClick={toggleDrawer(true)}\r\n size=\"small\"\r\n variant={buttonDrawer?.variant != undefined ? buttonDrawer?.variant : \"text\"}\r\n startIcon={\r\n (buttonDrawer?.iconPosition === 'left' || !buttonDrawer?.iconPosition) && ButtonIcon\r\n ? <ButtonIcon fontSize='small' />\r\n : null\r\n }\r\n endIcon={\r\n buttonDrawer?.iconPosition === 'right' && ButtonIcon\r\n ? <ButtonIcon fontSize='small' />\r\n : null\r\n }\r\n >\r\n {buttonDrawer?.text ?? \"\"}\r\n </Button>\r\n }\r\n <Drawer\r\n open={drawerOpen}\r\n onClose={toggleDrawer(false)}\r\n anchor={anchor ?? \"left\"}\r\n sx={{\r\n \"& .MuiDrawer-paper\": {\r\n width: width ?? \"450px\",\r\n boxSizing: \"border-box\",\r\n borderRadius: anchor !== \"right\" ? \"0px 4px 4px 0px\" : \"4px 0px 0px 4px\",\r\n },\r\n }}\r\n >\r\n <Stack flexDirection=\"column\" height=\"100%\">\r\n <Grid container sx={{ backgroundColor: \"primary.50\", alignItems: \"center\", height: \"42px\", textAlign: \"left\", padding: \"8px 12px\", justifyContent: \"space-between\", alignContent: \"center\" }}>\r\n <Typography variant=\"h6\" color={colorTitle || \"text.primary\"} >\r\n {title ?? \"Personaliza tu búsqueda\"}\r\n </Typography>\r\n <IconButton onClick={handleDrawerClose}>\r\n <CloseIcon data-testid=\"test-button-close\" sx={{ color: \"text.primary\" }} />\r\n </IconButton>\r\n </Grid>\r\n <Stack alignItems=\"flex-start\" height=\"100%\" gap=\"16px\" flex={1} overflow=\"auto\" padding=\"16px\">\r\n {arrayElements?.map((arrayElement, index) => (\r\n <Box\r\n key={`Stack_${arrayElement.type ?? \"\"} ${arrayElement.label ?? \"\"}${index}`}\r\n sx={{ width: \"100%\" }}\r\n >\r\n {arrayElement.component ? (\r\n <Stack direction=\"row\" alignItems=\"left\" gap={1}>\r\n {arrayElement.component}\r\n </Stack>\r\n ) : arrayElement.type === \"textField\" ? (\r\n <SCTextField\r\n title={arrayElement.title}\r\n iconTitle={arrayElement.iconTitle}\r\n infoTitle={arrayElement.infoTitle}\r\n label={arrayElement.label}\r\n placeholder={arrayElement.placeholder}\r\n infoElement={arrayElement.infoElement}\r\n iconInputStart={arrayElement.iconInputStart}\r\n iconInputEnd={arrayElement.iconInputEnd}\r\n maxLength={arrayElement.maxLength}\r\n variant={arrayElement.variant}\r\n format={arrayElement.format}\r\n disabled={arrayElement.disabled}\r\n required={arrayElement.required}\r\n size={arrayElement.size}\r\n width={arrayElement.width}\r\n color={arrayElement.color}\r\n background={arrayElement.background}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n onChange={arrayElement.onChange}\r\n onBlur={arrayElement.onBlur}\r\n onKeyDown={arrayElement.onKeyDown}\r\n />\r\n ) : arrayElement.type === \"textArea\" ? (\r\n <SCTextArea\r\n title={arrayElement.title}\r\n iconTitle={arrayElement.iconTitle}\r\n infoTitle={arrayElement.infoTitle}\r\n label={arrayElement.label}\r\n placeholder={arrayElement.placeholder}\r\n maxLength={arrayElement.maxLength}\r\n variant={arrayElement.variant}\r\n disabled={arrayElement.disabled}\r\n required={arrayElement.required}\r\n width={arrayElement.width}\r\n rows={arrayElement.rows}\r\n background={arrayElement.background}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n onBlur={arrayElement.onBlur}\r\n />\r\n ) : arrayElement.type === \"autocomplete\" ? (\r\n <SCAutocomplete\r\n label={arrayElement.label}\r\n data={arrayElement.data ?? []}\r\n columnGroup={arrayElement.columnGroup}\r\n getItemValue={arrayElement.getItemValue ?? (() => ({ text: '', value: '' }))}\r\n typeFormat={arrayElement.typeFormat}\r\n checkMassive={arrayElement.checkMassive}\r\n deleteType={arrayElement.deleteType}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n fnAplicar={arrayElement.fnAplicar}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n inputChange={arrayElement.inputChange}\r\n />\r\n ) : arrayElement.type === \"select\" ? (\r\n <SCSelect\r\n label={arrayElement.label}\r\n data={arrayElement.data ?? []}\r\n getItemValue={arrayElement.getItemValue ?? (() => ({ text: '', value: '' }))}\r\n width={arrayElement.width}\r\n size={arrayElement.size}\r\n variant={arrayElement.variant}\r\n deleteType={arrayElement.deleteType}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n fnAplicar={arrayElement.fnAplicar}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n />\r\n ) : arrayElement.type === \"dateRange\" ? (\r\n <SCDateRange\r\n labelDateInitial={arrayElement.labelDateInitial}\r\n labelDateFinal={arrayElement.labelDateFinal}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n state={arrayElement.state || []}\r\n setState={arrayElement.setState}\r\n />\r\n ) : null}\r\n </Box>\r\n ))}\r\n </Stack>\r\n {actionsA != undefined && actionsA != false ? (\r\n Array.isArray(actionsA) && actionsA?.length > 0 ?\r\n <Grid\r\n sx={{ borderTop: 1, borderColor: \"#1018403B\" }}\r\n container\r\n gap={2}\r\n padding=\"8px 12px\"\r\n height=\"42px\"\r\n alignItems=\"center\"\r\n justifyContent={actionsA.length > 1 ? \"space-between\" : !anchor && anchor != \"right\" ? \"flex-end\" : \"flex-start\"}\r\n flexDirection={anchor != \"right\" ? \"row-reverse\" : \"row\"}\r\n >\r\n {actionsA.map((btn, index) => (\r\n <Button\r\n key={index}\r\n variant={index === 0 || actionsA.length < 2 ? \"contained\" : \"text\"}\r\n color=\"primary\"\r\n onClick={btn.fn}\r\n disabled={btn.disabled || false}\r\n size=\"small\"\r\n >\r\n {btn.text}\r\n </Button>\r\n ))}\r\n </Grid>\r\n : \"\"\r\n ) : \"\"}\r\n </Stack>\r\n </Drawer >\r\n </>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport { FormControl, IconButton, InputAdornment, InputLabel, OutlinedInput, FilledInput, Popover, Input, Box, Typography, SvgIcon, Tooltip } from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid2\";\r\n\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport { Visibility, VisibilityOff, InfoOutlined } from \"@mui/icons-material\";\r\n\r\nimport { SCTextFieldProps } from \"./Model\";\r\nimport '../../App.css';\r\nimport { getIconComponent, getIconValidation, validateKeyDown, validateOnBlurField } from \"./Helpers\";\r\n\r\nexport const SCTextField = ({\r\n //informativas\r\n title,\r\n iconTitle,\r\n infoTitle,\r\n label = \"\",\r\n placeholder = \"\",\r\n\r\n infoElement,\r\n iconInputStart,\r\n iconInputEnd,\r\n\r\n maxLength,\r\n //Apariencia\r\n variant = \"outlined\",\r\n format,\r\n disabled,\r\n required,\r\n size,\r\n width = \"100%\",\r\n color,\r\n background,\r\n //Funcionales\r\n setState,\r\n state,\r\n onChange,\r\n onBlur,\r\n onKeyDown,\r\n}: SCTextFieldProps) => {\r\n\r\n\r\n const inputComponents = {\r\n outlined: OutlinedInput,\r\n filled: FilledInput,\r\n standard: Input,\r\n };\r\n const InputComponent = inputComponents[variant] || OutlinedInput;\r\n\r\n let IconInputStartValidation: string | undefined;\r\n let IconInputEndValidation: string | undefined;\r\n let IconInputStart: React.ElementType | undefined;\r\n let IconInputEnd: React.ElementType | undefined;\r\n let IconTitle: React.ElementType | undefined;\r\n\r\n\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [error, setError] = useState(false);\r\n const [anchorInfoTitle, setAnchorInfoTitle] = useState<HTMLElement | null>(null);\r\n const openInfoTitle = Boolean(anchorInfoTitle);\r\n const [anchorInfoElement, setAnchorInfoElement] = useState<HTMLElement | null>(null);\r\n const openInfoElement = Boolean(anchorInfoElement);\r\n\r\n\r\n useEffect(() => {\r\n if (error) {\r\n setTimeout(() => {\r\n setError(false);\r\n }, 1000);\r\n }\r\n }, [error]);\r\n // INICIO REFACTORIZADO\r\n if (iconInputStart) {\r\n IconInputStartValidation = getIconValidation(iconInputStart);\r\n IconInputStart = getIconComponent(iconInputStart);\r\n }\r\n\r\n if (iconInputEnd) {\r\n IconInputEndValidation = getIconValidation(iconInputEnd);\r\n IconInputEnd = getIconComponent(iconInputEnd);\r\n }\r\n\r\n if (iconTitle) {\r\n IconTitle = getIconComponent(iconTitle);\r\n }\r\n\r\n const handleClickShowPassword = () => setShowPassword((show) => !show);\r\n const handleMouseDownPassword = (\r\n event: React.MouseEvent<HTMLButtonElement>\r\n ) => {\r\n event.preventDefault();\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n validateKeyDown(event, format);\r\n if (onKeyDown) onKeyDown(event);\r\n };\r\n // Fin Refactorizado\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n let valueMax = maxLength ? maxLength + 1 : 50;\r\n\r\n if (event.target.value.length < valueMax) {\r\n if (setState) {\r\n setState(event.target.value);\r\n }\r\n if (onChange) {\r\n onChange(event);\r\n }\r\n }\r\n };\r\n\r\n const handleBlur = validateOnBlurField({ state, required, setError, onBlur });\r\n\r\n // const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\r\n // const error = !value.trim() && required ? true : false;\r\n // setError(error ? true : false);\r\n\r\n // if (onBlur) {\r\n // onBlur(event);\r\n // }\r\n // };\r\n\r\n const handleOpenInfoTitle = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoTitle(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoTitle = () => {\r\n setAnchorInfoTitle(null);\r\n };\r\n\r\n const handleOpenInfoElement = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoElement(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoElement = () => {\r\n setAnchorInfoElement(null);\r\n };\r\n\r\n return (\r\n <Box sx={{ width: width }}>\r\n <Grid container alignItems=\"center\" mb={1.25} gap={0.5}>\r\n {iconTitle && IconTitle ? (\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} />\r\n ) : (\r\n \"\"\r\n )}\r\n {title ? (\r\n <Typography mx={0.5} variant=\"subtitle2\" color=\"text.secondary\">\r\n {title}\r\n </Typography>\r\n ) : (\r\n \"\"\r\n )}\r\n {infoTitle ? (\r\n <>\r\n {infoTitle.component === \"popover\" ?\r\n (<>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoTitle(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoTitle()}\r\n />\r\n <Popover\r\n sx={{\r\n pointerEvents: \"none\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n }}\r\n open={openInfoTitle}\r\n anchorEl={anchorInfoTitle}\r\n onClose={handleCloseInfoTitle}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography p={2}>{infoTitle.text}</Typography>\r\n </Popover>\r\n </>)\r\n :\r\n (<Tooltip title={infoTitle.text} data-testid=\"test-infoTitle\" placement=\"bottom-start\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>)\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )\r\n }\r\n </Grid>\r\n <Grid container sx={{ flexWrap: \"nowrap\", alignItems: \"center\" }}>\r\n <FormControl\r\n color={color}\r\n fullWidth={true}\r\n size={size ? size : \"medium\"}\r\n variant={variant}\r\n sx={{ background: background || \"transparent\", borderRadius: \"4px\", }}\r\n >\r\n <InputLabel\r\n data-testid=\"test-label\"\r\n htmlFor=\"\"\r\n required={required && label !== \"\" ? true : false}\r\n error={error}\r\n disabled={disabled || false}\r\n >\r\n {label ? label : \"\"}\r\n </InputLabel>\r\n <InputComponent\r\n size={size ? size : \"medium\"}\r\n fullWidth\r\n value={state}\r\n error={error}\r\n id={label?.replace(/\\s+/g, \"\")}\r\n disabled={disabled ?? false}\r\n onKeyDown={handleKeyDown}\r\n onChange={handleInputChange}\r\n onBlur={handleBlur}\r\n inputProps={{ maxLength: maxLength ? maxLength : 50 }}\r\n type={\r\n !showPassword && format === \"password\"\r\n ? \"password\"\r\n : (format || \"text\").toUpperCase() === \"INT\" ||\r\n (format || \"text\").toUpperCase() === \"DECIMAL\"\r\n ? \"number\"\r\n : \"text\"\r\n }\r\n className={format === \"password\" && !showPassword ? \"\" : \"\"}\r\n placeholder={placeholder}\r\n startAdornment={\r\n iconInputStart ? (\r\n <InputAdornment position=\"start\">\r\n {IconInputStartValidation === \"text\" ? (\r\n iconInputStart\r\n ) : IconInputStart ? (\r\n <IconInputStart fontSize=\"small\" />\r\n ) : null}\r\n </InputAdornment>\r\n ) : (\r\n \"\"\r\n )\r\n }\r\n endAdornment={\r\n <InputAdornment position=\"end\">\r\n {format === \"password\" ? (\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={handleClickShowPassword}\r\n onMouseDown={handleMouseDownPassword}\r\n edge=\"end\"\r\n >\r\n {showPassword ? <VisibilityOff /> : <Visibility />}\r\n </IconButton>\r\n ) : iconInputEnd === undefined && infoElement !== undefined ? (\r\n <>\r\n {infoElement.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n data-testid=\"test-infoElement\"\r\n sx={{ ml: 0.5 }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n component=\"svg\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoElement(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoElement()}\r\n />\r\n <Popover\r\n sx={{\r\n pointerEvents: \"none\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n }}\r\n open={openInfoElement}\r\n anchorEl={anchorInfoElement}\r\n onClose={handleCloseInfoElement}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography data-testid=\"test-popover-text\" p={2}>{infoElement.text}</Typography>\r\n </Popover>\r\n </>\r\n :\r\n\r\n <Tooltip title={infoElement.text} placement=\"bottom-end\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n }\r\n </>\r\n ) : iconInputEnd !== undefined ? (\r\n IconInputEndValidation === \"text\" ? (\r\n iconInputEnd\r\n ) : IconInputEnd ? (\r\n <IconInputEnd fontSize=\"small\" />\r\n ) : null\r\n ) : (\r\n \"\"\r\n )}\r\n </InputAdornment >\r\n }\r\n label={\r\n label\r\n ? label + (format === \"password\" && !showPassword ? \"\" : \"\")\r\n : \"\"\r\n }\r\n autoComplete={format === \"password\" ? \"new-password\" : \"off\"}\r\n />\r\n </FormControl >\r\n {(iconInputEnd !== undefined || format === \"password\") &&\r\n infoElement ? (\r\n <>\r\n {infoElement.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n data-testid=\"test-infoElement\"\r\n component={\"svg\"}\r\n sx={{ marginLeft: \"4px\" }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) => handleOpenInfoElement(event as any)}\r\n onMouseLeave={handleCloseInfoElement}\r\n />\r\n <Popover\r\n // data-testid=\"test-infoElement\"\r\n sx={{ pointerEvents: \"none\" }}\r\n open={openInfoElement}\r\n anchorEl={anchorInfoElement}\r\n onClose={handleCloseInfoElement}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography data-testid=\"test-popover-text\" p={2}>{infoElement.text}</Typography>\r\n </Popover>\r\n </>\r\n :\r\n <Tooltip title={infoElement.text} placement=\"bottom-end\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n sx={{ marginLeft: \"4px\" }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )}\r\n </Grid >\r\n </Box >\r\n );\r\n};\r\n\r\n","import * as Muicon from \"@mui/icons-material\";\r\nimport React, {ElementType} from \"react\";\r\n\r\nexport function getIconComponent(name: string | ElementType): ElementType | undefined {\r\n if (typeof name !== \"string\") return name;\r\n return name in Muicon ? Muicon[name as keyof typeof Muicon] : undefined;\r\n}\r\n\r\nexport function getIconValidation(name: string | any): \"icon\" | \"text\" {\r\n if (typeof name !== \"string\") {\r\n return name?.type ? \"icon\" : \"text\";\r\n }\r\n return name in Muicon ? \"icon\" : \"text\";\r\n}\r\n\r\n","export function validateKeyDown(event: React.KeyboardEvent<HTMLInputElement>, format?: string): void {\r\n const key = event.key;\r\n const target = event.target as HTMLInputElement;\r\n\r\n if (format === \"int\" && !/^[0-9]$/.test(key)) {\r\n event.preventDefault();\r\n }\r\n\r\n if (format === \"decimal\" && ((target.value === \"\" && key === \".\") || key === \"-\" || key === \"+\")) {\r\n event.preventDefault();\r\n }\r\n\r\n if (target.type === \"text\") {\r\n const regex = /^[a-zA-ZáéíóúÁÉÍÓÚñÑ0-9\\s_\\-.,@]+$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { FocusEvent } from \"react\";\r\n\r\ntype HandleBlurProps = {\r\n state: string;\r\n required?: boolean;\r\n setError: (val: boolean) => void;\r\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\r\n};\r\n\r\nexport const validateOnBlurField = ({\r\n state,\r\n required = false,\r\n setError,\r\n onBlur,\r\n}: HandleBlurProps) => (event: FocusEvent<HTMLInputElement>) => {\r\n const isError = !state.trim() && required;\r\n setError(isError);\r\n\r\n if (onBlur) {\r\n onBlur(event);\r\n }\r\n};\r\n\r\n\r\n\r\n// import { Popover, Tooltip, Typography } from \"@mui/material\";\r\n// import { InfoOutlined } from \"@mui/icons-material\";\r\n// import React, { useState } from \"react\";\r\n\r\n// interface InfoIconProps {\r\n// text: string;\r\n// placement?: \"bottom-start\" | \"bottom-end\";\r\n// component: \"tooltip\" | \"popover\";\r\n// }\r\n\r\n// export const InfoIcon = ({ text, component, placement = \"bottom-start\" }: InfoIconProps) => {\r\n// const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\r\n// const open = Boolean(anchorEl);\r\n\r\n// const handleOpen = (event: React.MouseEvent<SVGSVGElement>) => {\r\n// setAnchorEl(event.target as HTMLElement);\r\n// };\r\n\r\n// const handleClose = () => {\r\n// setAnchorEl(null);\r\n// };\r\n\r\n// return component === \"popover\" ? (\r\n// <>\r\n// <InfoOutlined onMouseEnter={handleOpen} onMouseLeave={handleClose} fontSize=\"small\" color=\"action\" />\r\n// <Popover\r\n// sx={{ pointerEvents: \"none\" }}\r\n// open={open}\r\n// anchorEl={anchorEl}\r\n// onClose={handleClose}\r\n// anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n// transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n// disableRestoreFocus\r\n// >\r\n// <Typography p={2}>{text}</Typography>\r\n// </Popover>\r\n// </>\r\n// ) : (\r\n// <Tooltip title={text} placement={placement}>\r\n// <InfoOutlined fontSize=\"small\" color=\"action\" />\r\n// </Tooltip>\r\n// );\r\n// };\r\n","import React, { ReactElement, useEffect, useState } from 'react';\r\nimport { Stack, LinearProgress, Divider, Box, Typography, IconButton, Button, } from '@mui/material';\r\nimport { Close, InfoRounded, CheckCircleRounded, WarningRounded, ErrorRounded, KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\r\nimport { useProgress } from './useProgress';\r\nimport { ToastBaseProperties, ToastType } from './Model';\r\n\r\nexport const SCToastNotification = (toast: ToastBaseProperties) => {\r\n\r\n const [stateOptions, setStateOptions] = useState(true);\r\n const [stateToast, setStateToast] = useState(true);\r\n const timeProgress = toast.time || 10;\r\n const { progress } = useProgress(timeProgress);\r\n\r\n const toastColorConfig: ToastType = toast.type || 'info';\r\n\r\n const toastIconOption: Record<ToastType, ReactElement> = {\r\n success: <CheckCircleRounded color='success' />,\r\n error: <ErrorRounded color='error' />,\r\n warning: <WarningRounded color='warning' />,\r\n info: <InfoRounded color='info' />,\r\n };\r\n\r\n const acciones = [...(toast.actions || [{ text: \"Action\", fn: () => { alert(\"\") } }, { text: \"Consultar\", fn: () => { } }])];\r\n const ToastIconConfig = toastIconOption[toast.type!];\r\n\r\n const closeToast = () => {\r\n setStateToast(false);\r\n };\r\n\r\n const toggleToastOptions = () => {\r\n setStateOptions((prevShowOptions) => !prevShowOptions);\r\n };\r\n\r\n useEffect(() => {\r\n progress >= 100 && setStateToast(false);\r\n }, [progress]);\r\n\r\n return (\r\n <>\r\n {stateToast && (\r\n <Stack\r\n position={'fixed'}\r\n zIndex={1400}\r\n right={16}\r\n top={16}\r\n width={370}\r\n sx={{\r\n boxShadow: (theme) => theme.shadows[8],\r\n }}\r\n >\r\n <Box\r\n padding={1.5}\r\n gap={1.5}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n sx={{\r\n backgroundColor: {\r\n success: 'success.50',\r\n error: 'error.50',\r\n warning: 'warning.50',\r\n info: 'info.50',\r\n }[toastColorConfig],\r\n }}\r\n >\r\n <Stack\r\n p={1}\r\n gap={1}\r\n borderRadius={50}\r\n bgcolor={{\r\n success: 'success.100',\r\n error: 'error.100',\r\n warning: 'warning.100',\r\n info: 'info.100',\r\n }[toast.type ?? 'info']\r\n }\r\n >\r\n <Stack>\r\n {ToastIconConfig}\r\n </Stack>\r\n </Stack>\r\n <Divider orientation=\"vertical\" flexItem />\r\n <Stack width={285}>\r\n <Stack\r\n justifyContent=\"space-between\"\r\n flexDirection=\"row\"\r\n alignItems=\"center\"\r\n >\r\n <Typography variant=\"subtitle2\" color=\"text.primary\">\r\n {toast.title}\r\n </Typography>\r\n <IconButton\r\n size=\"small\"\r\n data-testid=\"close-icon\"\r\n onClick={closeToast}\r\n >\r\n <Close fontSize=\"small\" />\r\n </IconButton>\r\n </Stack>\r\n <Stack gap={0.5}>\r\n <Typography color=\"text.primary\" variant=\"body2\">\r\n {toast.subtitle}\r\n </Typography>\r\n {!stateOptions && toast.listITems && toast.listITems.length > 0 && (\r\n <Stack>\r\n {toast.listITems.map((element, i) => (\r\n <Typography variant=\"caption\" key={i}>\r\n • {element}\r\n </Typography>\r\n ))}\r\n </Stack>\r\n )}\r\n </Stack>\r\n <Stack justifyContent=\"flex-end\" flexDirection=\"row\" gap={.5}>\r\n {toast.actions && toast.actions.length > 0 && (\r\n <Stack flexDirection=\"row\" gap={.5}>\r\n {toast.actions.map((button, index) => (\r\n <Button\r\n key={index}\r\n color={\r\n toast.type === \"info\"\r\n ? \"info\"\r\n : toast.type === \"success\"\r\n ? \"success\"\r\n : toast.type === \"error\"\r\n ? \"error\"\r\n : \"warning\"\r\n\r\n }\r\n variant=\"text\"\r\n onClick={button.fn}\r\n disabled={button.disabled || false}\r\n size=\"small\"\r\n >\r\n {button.text.charAt(0).toUpperCase() + button.text.slice(1).toLowerCase()}\r\n </Button>\r\n ))}\r\n </Stack>\r\n )}\r\n {toast.seeMore && (\r\n <Button\r\n onClick={toggleToastOptions}\r\n size=\"small\"\r\n variant=\"text\"\r\n color={toastColorConfig}\r\n >\r\n {stateOptions ? 'Ver más' : 'Ver menos'}\r\n {stateOptions ? <KeyboardArrowDown /> : <KeyboardArrowUp />}\r\n </Button>\r\n )}\r\n </Stack>\r\n </Stack>\r\n </Box>\r\n <LinearProgress\r\n sx={{\r\n '.MuiLinearProgress-bar': {\r\n transition: '0.1s linear !important',\r\n transform: 'scaleX(-1)',\r\n },\r\n }}\r\n color={toastColorConfig}\r\n variant=\"determinate\"\r\n value={100 - progress}\r\n />\r\n </Stack>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useProgress = (timeProgress: number, lote?: number) => {\r\n const [progress, setProgress] = useState(0);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n }\r\n if (lote) {\r\n const nextProgress = prev + lote;\r\n return nextProgress <= 100 ? nextProgress : 100;\r\n } else {\r\n return prev + 1;\r\n }\r\n });\r\n }, timeProgress * 10);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [timeProgress, lote]);\r\n return {\r\n progress: progress,\r\n };\r\n};\r\n\r\n\r\nexport const ToastProgress = (timeProgress: number) => {\r\n const [progress, setProgress] = useState<number>(100);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setProgress((prev) => {\r\n if (prev <= 0) { clearInterval(interval) }\r\n return prev - 1\r\n });\r\n }, (timeProgress * 10));\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [timeProgress]);\r\n return {\r\n progressToast: progress\r\n }\r\n}\r\n\r\n","import * as MuiIcons from \"@mui/icons-material\";\r\nimport { ComponentType } from \"react\";\r\n\r\nexport function getIcon(name?: string): ComponentType | null {\r\n if (!name || !(name in MuiIcons)) {\r\n return null;\r\n }\r\n return MuiIcons[name as keyof typeof MuiIcons];\r\n}\r\n\r\n","// React\r\nimport React, { useEffect, useState } from 'react';\r\n// MUI Material\r\nimport { Typography, Stack, TextField, Box, Popover, Tooltip, SvgIcon, Grid } from \"@mui/material\";\r\n// Iconos MUI Material\r\nimport { InfoOutlined } from '@mui/icons-material';\r\n// Funciones del componente\r\nimport { getIcon, SCTextAreaProps } from './Helpers';\r\n\r\nexport const SCTextArea = ({\r\n //informativas\r\n title,\r\n iconTitle,\r\n infoTitle,\r\n label = \"\",\r\n placeholder,\r\n maxLength = 200,\r\n //apariencia\r\n variant,\r\n disabled,\r\n required,\r\n width = \"100%\",\r\n rows = 3,\r\n colorTitle,\r\n background,\r\n //funcionales\r\n setState,\r\n state,\r\n onBlur,\r\n}: SCTextAreaProps) => {\r\n\r\n /*states*/\r\n const [helperCount, setHelperCount] = useState<number>(0);\r\n const [stateError, setStateError] = useState<boolean>(false);\r\n const [anchorInfoTitle, setAnchorInfoTitle] = React.useState<null | HTMLElement>(null);\r\n const openInfoTitle = Boolean(anchorInfoTitle);\r\n\r\n /*Efeccts*/\r\n useEffect(() => {\r\n setHelperCount(state?.length);\r\n }, [state]);\r\n\r\n /*Funciones y eventos*/\r\n const IconTitle = getIcon(iconTitle);\r\n const handleBlur = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n if (required && state.trim() === '') {\r\n setStateError(true);\r\n setTimeout(() => {\r\n setStateError(false);\r\n }, 1000);\r\n return;\r\n }\r\n if (onBlur) {\r\n onBlur(event);\r\n }\r\n };\r\n\r\n const handleOpenInfoTitle = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoTitle(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoTitle = () => {\r\n setAnchorInfoTitle(null);\r\n };\r\n\r\n return (\r\n <>\r\n <Box sx={{ width: width }}>\r\n <Grid container sx={{ alignItems: \"center\" }} gap={0.5}>\r\n {iconTitle && IconTitle && (\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} />\r\n )}\r\n {title &&\r\n <Typography color={colorTitle || \"text.secondary\"} variant='subtitle2' >\r\n {title}\r\n </Typography>}\r\n {infoTitle ? (\r\n <>\r\n {infoTitle.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n color='action'\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoTitle(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoTitle()}\r\n />\r\n <Popover\r\n sx={{ pointerEvents: \"none\" }}\r\n open={openInfoTitle}\r\n anchorEl={anchorInfoTitle}\r\n onClose={handleCloseInfoTitle}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography sx={{ p: 2 }}>\r\n {infoTitle.text}\r\n </Typography>\r\n </Popover>\r\n </>\r\n :\r\n <Tooltip title={infoTitle.text} placement=\"bottom-start\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )}\r\n </Grid>\r\n <Stack>\r\n <TextField\r\n required={required}\r\n placeholder={placeholder}\r\n error={stateError}\r\n variant={variant}\r\n sx={{ mt: \"10px\", background: background || \"transparent\", borderRadius: \"4px\" }}\r\n id=\"outlined-multiline-static\"\r\n label={label}\r\n multiline\r\n disabled={disabled}\r\n rows={rows}\r\n value={state}\r\n onBlur={handleBlur}\r\n onChange={(e) => {\r\n if (setState) {\r\n setState(e.target.value.substring(0, maxLength));\r\n }\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n </Stack>\r\n <Stack>\r\n <Typography\r\n variant='caption'\r\n color='text.secondary'\r\n mr={1}\r\n mt={1}\r\n align=\"right\"\r\n >\r\n {helperCount + \"/\" + maxLength}\r\n </Typography>\r\n </Stack>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useEffect } from 'react';\r\n//MATERIAL\r\nimport { InputLabel, FormControl, InputAdornment, MenuItem, TextField, Typography, SvgIcon, ListItemIcon, ListItemText, Divider, FormControlLabel, IconButton, Box, Button } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\r\n//IMAGENES E ICONOS\r\nimport { Search, Clear } from \"@mui/icons-material\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport '../App.css';\r\n\r\n//MODELO\r\ninterface SCSelectProps<T> {\r\n label?: string;\r\n data: T[];\r\n getItemValue: (item: T) => { icon?: any; text: string; value: string};\r\n width?: string;\r\n size?: \"small\" | \"medium\";\r\n variant?: \"outlined\" | \"filled\" | \"standard\";\r\n deleteType?: \"button\" | \"icon\";\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n fnAplicar?: () => void | React.ReactNode;\r\n setState: React.Dispatch<React.SetStateAction<any>>;\r\n state: { hiddenValue: string; textValue: string };\r\n}\r\n\r\nexport function SCSelect<T>({\r\n label = \"\",\r\n data,\r\n getItemValue,\r\n width = \"100%\",\r\n size = \"small\",\r\n variant = \"outlined\",\r\n deleteType = \"button\",\r\n required,\r\n disabled,\r\n background,\r\n fnAplicar,\r\n setState,\r\n state,\r\n}: SCSelectProps<T>) {\r\n //CONSTANTES\r\n const labelContent = `<span style=\"color: red;\">* </span>` + label;\r\n //STATES\r\n const [prevData, setPrevData] = React.useState(data);\r\n const [error, setError] = React.useState(false);\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (error) {\r\n setTimeout(() => {\r\n setError(false);\r\n }, 1000);\r\n }\r\n }, [error]);\r\n useEffect(() => {\r\n let dataChangeValidation = JSON.stringify(prevData) === JSON.stringify(data)\r\n if (dataChangeValidation == false) {\r\n setState({ hiddenValue: \"\", textValue: \"\" });\r\n setPrevData(data);\r\n }\r\n }, [data])\r\n\r\n //FUNCIONES O EVENTOS\r\n data.map(function (option: any, index, array) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n })\r\n\r\n const handleBlur = () => {\r\n const currentValue = Array.isArray(state.hiddenValue) ? state.hiddenValue[0] : state.hiddenValue;\r\n const isError = !currentValue && !!required;\r\n setError(Boolean(isError));\r\n };\r\n\r\n const handleChange = (event: SelectChangeEvent) => {\r\n const selectedValue = event.target.value;\r\n if (selectedValue) {\r\n // Encontrar el objeto correspondiente por su valor único\r\n const selectedOption = data.find(item => getItemValue(item).value === selectedValue);\r\n if (selectedOption) {\r\n const itemValue = getItemValue(selectedOption);\r\n setState({\r\n hiddenValue: itemValue.value,\r\n textValue: itemValue.text,\r\n });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {data && (\r\n <Box sx={{ width: width }}>\r\n <FormControl\r\n fullWidth={true}\r\n size={size ? size : \"medium\"}\r\n variant={variant}\r\n >\r\n <InputLabel\r\n error={error}\r\n >\r\n {required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n </InputLabel>\r\n <Select\r\n value={Array.isArray(state.hiddenValue) ? state.hiddenValue[0] || '' : state.hiddenValue != '-1' ? state.hiddenValue : ''}\r\n label={required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n variant={variant}\r\n disabled={disabled || false}\r\n error={error}\r\n MenuProps={{\r\n PaperProps: {\r\n sx: {\r\n left: '0px !important',\r\n },\r\n },\r\n sx: {\r\n '& .MuiPaper-root': {\r\n left: '0px !important',\r\n },\r\n },\r\n }}\r\n >\r\n {data.map((option, index) => {\r\n return (\r\n <MenuItem key={index} value={getItemValue(option).value}>\r\n {getItemValue(option).icon != undefined ?\r\n <ListItemIcon sx={{ minWidth: \"10px !important\" }}>\r\n <SvgIcon fontSize=\"small\" color=\"action\" component={getItemValue(option).icon} />\r\n </ListItemIcon> : \"\"\r\n }\r\n <ListItemText primary={getItemValue(option).text} color=\"text.primary\" />\r\n \r\n </MenuItem>\r\n )\r\n })}\r\n </Select>\r\n </FormControl>\r\n </Box>\r\n )}\r\n </>\r\n );\r\n}","//REACT\r\nimport React, { useEffect } from 'react';\r\n//MATERIAL\r\nimport { Autocomplete, Checkbox, InputAdornment, MenuItem, TextField, Typography, SvgIcon, ListItemIcon, ListItemText, Divider, FormControlLabel, IconButton, Chip, Box, Button } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\n//IMAGENES E ICONOS\r\nimport { Search, Clear } from \"@mui/icons-material\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport { Global, css } from '@emotion/react';\r\n\r\n// MODELO\r\ninterface SCAutocompleteProps<T> {\r\n label?: string;\r\n data: T[];\r\n columnGroup?: string;\r\n getItemValue: (item: T) => { icon?: any; text: string; value: string, component?: any };\r\n typeFormat?: \"normal\" | \"multiselect\";\r\n checkMassive?: boolean;\r\n deleteType?: \"button\" | \"icon\";\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n fnAplicar?: () => void | React.ReactNode;\r\n setState: React.Dispatch<React.SetStateAction<any>>;\r\n state: { hiddenValue: string | string[]; textValue: string | string[] };\r\n inputChange?: (value: string) => void;\r\n maxCheck?: number; // Nuevo parámetro opcional para limitar el número de selecciones\r\n}\r\n\r\n// ESTILOS GLOBALES con Emotion\r\n/*\r\nconst globalStyles = css`\r\n .MuiAutocomplete-tag {\r\n max-width: 120px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n .MuiAutocomplete-inputRoot {\r\n flex-wrap: nowrap !important;\r\n overflow-x: auto;\r\n padding: 6px 14px 6px 10px !important;\r\n }\r\n`;\r\n*/\r\nexport function SCAutocomplete<T>({\r\n label = \"\",\r\n data,\r\n columnGroup,\r\n getItemValue,\r\n typeFormat = \"normal\",\r\n checkMassive = false,\r\n deleteType = \"button\",\r\n fnAplicar,\r\n required,\r\n disabled,\r\n background,\r\n setState,\r\n state,\r\n inputChange,\r\n maxCheck, // Agregar el parámetro maxCheck\r\n}: SCAutocompleteProps<T>) {\r\n\r\n // CONSTANTES\r\n const labelContent = `<span style=\"color: red;\">* </span>` + label;\r\n // VARIABLES\r\n let group = \"\";\r\n let isSelected = false\r\n // STATES\r\n const [selectedOptions, setSelectedOptions] = React.useState<T[]>([]);\r\n const [prevData, setPrevData] = React.useState(data);\r\n const [originalData, setOriginalData] = React.useState(data);\r\n const [inputValue, setInputValue] = React.useState(\"\");\r\n const [isUserTyping, setIsUserTyping] = React.useState(false);\r\n\r\n // USEEFFECT\r\n useEffect(() => {\r\n const dataChangeValidation = JSON.stringify(prevData) === JSON.stringify(data);\r\n \r\n if (!dataChangeValidation && !isUserTyping) {\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setSelectedOptions([]);\r\n setOriginalData(data);\r\n } else if (!isUserTyping) {\r\n setOriginalData(data);\r\n }\r\n setPrevData(data);\r\n }, [data, isUserTyping])\r\n\r\n useEffect(() => {\r\n if (typeFormat == \"multiselect\") {\r\n if (state.hiddenValue != \"-1\" && Array.isArray(state.hiddenValue)) {\r\n const newSelectedOptions = originalData.filter((item) =>\r\n state.hiddenValue.includes(getItemValue(item).value)\r\n );\r\n setSelectedOptions(newSelectedOptions);\r\n }\r\n }\r\n }, [state.hiddenValue, originalData, typeFormat]);\r\n\r\n\r\n useEffect(() => {\r\n if (inputValue === \"\") {\r\n setIsUserTyping(false);\r\n }\r\n }, [inputValue]);\r\n\r\n // FUNCIONES O EVENTOS\r\n data.map(function (option: any) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n })\r\n\r\n const cleanOptions = (event: any) => {\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setSelectedOptions([])\r\n setInputValue(\"\");\r\n setIsUserTyping(false);\r\n }\r\n\r\n const handleCheckAll = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (event.target.checked) {\r\n const itemsToSelect = maxCheck ? data.slice(0, maxCheck) : data;\r\n \r\n setSelectedOptions(itemsToSelect);\r\n setState({\r\n hiddenValue: itemsToSelect.map(item => getItemValue(item).value),\r\n textValue: itemsToSelect.map(item => getItemValue(item).text),\r\n });\r\n } else {\r\n setSelectedOptions([]);\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setInputValue(\"\");\r\n setIsUserTyping(false);\r\n }\r\n };\r\n const allSelected = data.length > 0 && selectedOptions.length === data.length;\r\n\r\n const handleChange = (event: any, value: any) => {\r\n if (typeFormat === \"multiselect\") {\r\n if (maxCheck && value.length > maxCheck) {\r\n value = value.slice(0, maxCheck);\r\n }\r\n \r\n const ids = value.map((v: T) => getItemValue ? getItemValue(v).value : \"\");\r\n const texts = value.map((v: T) => getItemValue ? getItemValue(v).text : \"\");\r\n setSelectedOptions(value);\r\n setState({\r\n hiddenValue: ids,\r\n textValue: texts,\r\n });\r\n } else {\r\n setState({\r\n hiddenValue: getItemValue(value).value,\r\n textValue: getItemValue(value).text,\r\n });\r\n }\r\n };\r\n\r\n const selectedValue =\r\n typeFormat === \"multiselect\"\r\n ? selectedOptions \r\n : originalData.find(\r\n (item) =>\r\n getItemValue(item).value === state.hiddenValue\r\n ) || null;\r\n\r\n\r\n return (\r\n <>\r\n {/*<Global styles={globalStyles} />*/}\r\n {data && (\r\n <Autocomplete\r\n multiple={typeFormat === \"multiselect\"}\r\n clearOnEscape\r\n disabled={disabled}\r\n options={data}\r\n isOptionEqualToValue={(option, value) => getItemValue(option).value === getItemValue(value).value}\r\n onInputChange={(event, value) => {\r\n setInputValue(value);\r\n setIsUserTyping(value.length > 0); // Marcar como escribiendo si hay texto\r\n if (inputChange) {\r\n inputChange(value);\r\n }\r\n }}\r\n onChange={handleChange}\r\n getOptionLabel={(option: T) => getItemValue(option).text}\r\n value={selectedValue}\r\n sx={{\r\n background: background || \"transparent\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n }}\r\n limitTags={2}\r\n renderTags={(value, getTagProps) => {\r\n const limit = 2;\r\n return (\r\n <>\r\n {value.slice(0, limit).map((option, index) => {\r\n const { key, ...chipProps } = getTagProps({ index });\r\n return (\r\n <Chip\r\n key={key}\r\n color=\"default\"\r\n size=\"small\"\r\n variant=\"filled\"\r\n label={getItemValue(option).text}\r\n {...chipProps}\r\n style={{ maxWidth: 120, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}\r\n />\r\n );\r\n })}\r\n {value.length > limit && (\r\n <Box sx={{ ml: 0.5, fontSize: 13, color: \"#666\", display: \"flex\", alignItems: \"center\" }}>\r\n {`+${value.length - limit}`}\r\n </Box>\r\n )}\r\n </>\r\n );\r\n }}\r\n renderOption={(props, option) => {\r\n const { key, ...optionProps } = props;\r\n let isValid\r\n let isDisabled = false;\r\n\r\n if (typeFormat == \"multiselect\") {\r\n isSelected = selectedOptions.some(\r\n (selected) => getItemValue(selected).value === getItemValue(option).value\r\n );\r\n \r\n // Deshabilitar opción SOLO si:\r\n // 1. Se alcanzó el límite máximo Y\r\n // 2. La opción NO está seleccionada (permitir deseleccionar)\r\n if (maxCheck && selectedOptions.length >= maxCheck && !isSelected) {\r\n isDisabled = true;\r\n }\r\n }\r\n if (columnGroup) {\r\n isValid = group == (option as Record<string, any>)[columnGroup];\r\n group = (option as Record<string, any>)[columnGroup];\r\n }\r\n\r\n return (\r\n <>\r\n <React.Fragment key={key}>\r\n {columnGroup ? !isValid ? <Typography color=\"text.secondary\" sx={{ margin: \"7px 16px !important\", fontSize: \"13px !important\" }}>{(option as Record<string, any>)[columnGroup]}</Typography> : \"\" : \"\"}\r\n <MenuItem \r\n {...optionProps} \r\n disabled={isDisabled}\r\n style={{ \r\n background: typeFormat != \"multiselect\" ? state.hiddenValue == getItemValue(option).value ? \"#dfe6ec\" : 'white' : 'white', \r\n padding: \"7px 16px\",\r\n opacity: isDisabled ? 0.5 : 1\r\n }}\r\n >\r\n {typeFormat != \"multiselect\" && getItemValue(option).icon != undefined ? <ListItemIcon sx={{ minWidth: \"10px !important\" }}><SvgIcon fontSize=\"small\" color=\"action\" component={getItemValue(option).icon} /></ListItemIcon> : \"\"}\r\n {typeFormat == \"multiselect\" ? \r\n <Checkbox \r\n checked={isSelected} \r\n disabled={isDisabled}\r\n value={getItemValue(option).text} \r\n color=\"primary\" \r\n /> \r\n : \"\"}\r\n <ListItemText primary={getItemValue(option).text} color=\"text.primary\" />\r\n {getItemValue(option).component != undefined ?\r\n getItemValue(option).component\r\n : \"\"\r\n }\r\n </MenuItem>\r\n </React.Fragment>\r\n </>\r\n );\r\n }}\r\n\r\n renderInput={(params) => (\r\n <>\r\n <TextField\r\n {...params}\r\n label={required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n placeholder={selectedOptions.length == 0 ? \"Búsqueda\" : \"\"}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n <>\r\n {deleteType == \"icon\" && (state.hiddenValue.toString() != '-1' && state.hiddenValue.toString() != '') ?\r\n <IconButton size=\"small\" onClick={cleanOptions} sx={{ marginLeft: \"auto\", textAlign: \"right\", padding: \"0px\" }}>\r\n <Clear fontSize=\"small\" />\r\n </IconButton>\r\n : \"\"}\r\n <InputAdornment style={{ zIndex: 1, position: \"relative\" }} position=\"end\">\r\n <Search fontSize=\"small\" color=\"action\" style={{ cursor: \"pointer\" }} />\r\n </InputAdornment>\r\n </>\r\n ),\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n slotProps={{\r\n listbox: {\r\n component: React.forwardRef(function ListboxComponent(props: any, ref: React.Ref<HTMLDivElement>) {\r\n return (\r\n <>\r\n <Box\r\n ref={ref}\r\n {...props}\r\n sx={{\r\n position: \"relative\",\r\n paddingBottom: \"56px\",\r\n backgroundColor: \"white\",\r\n ...props.sx,\r\n }}\r\n >\r\n {checkMassive && typeFormat == \"multiselect\" ?\r\n <>\r\n <FormControlLabel control={<Checkbox checked={allSelected} indeterminate={selectedOptions.length > 0 && selectedOptions.length < data.length} onChange={handleCheckAll} color=\"primary\" />} label=\"Todos los items\" sx={{ marginLeft: \"0px !important\", marginRight: \"0px !important\", padding: \"7px 16px\" }} />\r\n <Divider />\r\n </>\r\n : \"\"}\r\n {props.children}\r\n {deleteType == \"button\" || fnAplicar ?\r\n <Grid container\r\n sx={{\r\n position: \"sticky\",\r\n bottom: -8,\r\n left: 0,\r\n width: \"100%\",\r\n backgroundColor: \"grey.50\",\r\n padding: \"8px 16px\",\r\n textAlign: \"left\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n {deleteType == \"button\" ?\r\n <Button variant=\"text\" color=\"primary\" size=\"small\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n cleanOptions(event);\r\n }}\r\n >\r\n Limpiar\r\n </Button>\r\n : \"\"}\r\n {fnAplicar &&\r\n <Button variant=\"contained\" color=\"primary\" size=\"small\"\r\n onClick={fnAplicar}\r\n >\r\n Aplicar\r\n </Button>\r\n }\r\n </Grid>\r\n : \"\"}\r\n </Box>\r\n\r\n </>\r\n );\r\n })\r\n }\r\n }}\r\n />\r\n )}\r\n </>\r\n );\r\n}\r\n","//REACT\r\nimport React from 'react';\r\n//MATERIAL\r\nimport { Box, Typography, InputAdornment } from '@mui/material';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\r\nimport { MultiInputDateRangeField } from '@mui/x-date-pickers-pro/MultiInputDateRangeField';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport 'dayjs/locale/es';\r\nimport { LicenseInfo } from \"@mui/x-license-pro\";\r\n//IMAGENES E ICONOS\r\nimport EventIcon from '@mui/icons-material/Event';\r\n\r\n\r\ninterface SCDateRangeProps {\r\n labelDateInitial?: string;\r\n labelDateFinal?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n state: [Dayjs | null, Dayjs | null];\r\n setState: React.Dispatch<React.SetStateAction<[Dayjs | null, Dayjs | null]>>;\r\n}\r\n\r\nexport const SCDateRange= ({\r\n labelDateInitial = \"Fecha inicial\",\r\n labelDateFinal = \"Fecha final\",\r\n required = false,\r\n disabled = false,\r\n background = \"transparent\",\r\n state,\r\n setState,\r\n}: SCDateRangeProps) => {\r\n LicenseInfo.setLicenseKey(\r\n \"77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI=\"\r\n );\r\n //CONSTANTES\r\n // Validar si los campos requeridos están completos\r\n const isStartEmpty = required && !state[0];\r\n const isEndEmpty = required && !state[1];\r\n const hasError = isStartEmpty || isEndEmpty;\r\n\r\n const handleDateChange = (newValue: any) => {\r\n // Convertir los valores a Dayjs si son Date, o mantener null\r\n const convertedValue: [Dayjs | null, Dayjs | null] = [\r\n newValue[0] ? dayjs(newValue[0]) : null,\r\n newValue[1] ? dayjs(newValue[1]) : null\r\n ];\r\n setState(convertedValue);\r\n };\r\n\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale=\"es\">\r\n <Box sx={{ width: '100%' }}>\r\n <DateRangePicker\r\n value={state}\r\n onChange={handleDateChange}\r\n disabled={disabled}\r\n slots={{\r\n field: MultiInputDateRangeField\r\n }}\r\n slotProps={{\r\n field: {\r\n slotProps: {\r\n textField: ({ position }: { position: 'start' | 'end' }) => ({\r\n label: position === 'start' ? labelDateInitial : labelDateFinal,\r\n size: 'small' as const,\r\n variant: 'outlined' as const,\r\n required: required,\r\n error: position === 'start' ? isStartEmpty : isEndEmpty,\r\n InputProps: {\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <EventIcon\r\n color={hasError ? \"error\" : \"action\"}\r\n fontSize=\"small\"\r\n />\r\n </InputAdornment>\r\n ),\r\n },\r\n sx: {\r\n mr: position === 'start' ? 1 : 0,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: background === \"transparent\" ? \"transparent\" : background\r\n },\r\n '& .MuiInputLabel-asterisk': {\r\n color: 'error.main'\r\n },\r\n background: background ?? \"transparent\"\r\n }\r\n }),\r\n }\r\n } as any\r\n }}\r\n sx={{\r\n display: 'flex',\r\n gap: 1,\r\n width: '100%',\r\n }}\r\n />\r\n </Box>\r\n </LocalizationProvider>\r\n );\r\n};\r\n","import * as Muicon from \"@mui/icons-material\";\r\n\r\nexport const getIcon = (iconName?: string | false) => {\r\n if (iconName && iconName in Muicon) {\r\n return Muicon[iconName as keyof typeof Muicon];\r\n } \r\n return null;\r\n};\r\n\r\n\r\n\r\n\r\n","import { ToastBaseProperties } from \"../../ToastNotification\";\r\n\r\nexport const validateInputs = (\r\n arrayElements: any[],\r\n onError: (toast: ToastBaseProperties) => void,\r\n onSuccess: () => void\r\n) => {\r\n let requiredValues = 0;\r\n let filledValues = 0;\r\n\r\n for (let i = 0; i < arrayElements.length; i++) {\r\n if (arrayElements[i].component === undefined) {\r\n if (arrayElements[i].required) {\r\n requiredValues++;\r\n }\r\n if (arrayElements[i].required && arrayElements[i].state?.trim() !== \"\") {\r\n filledValues++;\r\n }\r\n }\r\n }\r\n\r\n if (requiredValues === filledValues) {\r\n onSuccess();\r\n } else {\r\n onError({\r\n type: \"error\",\r\n title: \"Algunos campos son requeridos\",\r\n time: 10,\r\n });\r\n }\r\n};","import React from 'react';\r\nimport { AppBar, Toolbar, Box, Typography } from '@mui/material';\r\nimport { FooterActionsProperties } from './Model';\r\n\r\nexport const FooterAction = ({\r\n leftContent,\r\n rightContent,\r\n label,\r\n variant,\r\n}: FooterActionsProperties) => {\r\n return (\r\n <AppBar\r\n color=\"inherit\"\r\n sx={{ position: variant == 'float' ? 'relative' : 'fixed', left: 0, right: 'auto', width: \"100%\", top: 'auto', bottom: 0 }}\r\n >\r\n <Toolbar\r\n id=\"footer-toolbar\"\r\n sx={{ gap: 1.5, minHeight: '50px !important' }}\r\n >\r\n {leftContent}\r\n\r\n <Box flexGrow={1} />\r\n\r\n {label && (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n {rightContent}\r\n </Toolbar>\r\n </AppBar>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Info, Warning } from \"@mui/icons-material\";\r\n\r\nexport const modalStateConfig = {\r\n info: {\r\n color: 'info',\r\n defaultDescription: 'Se [sincronizarán] los datos trabajados en modo offline y se [subirán] a los servidores.',\r\n icon: <Info color=\"info\" fontSize=\"medium\" />,\r\n },\r\n delete: {\r\n color: 'delete',\r\n defaultDescription: '[Elemento específico] [dejará de existir en todos los lugares donde esté en uso]. Esta acción es irreversible.',\r\n icon: <Info color=\"error\" fontSize=\"medium\" />,\r\n },\r\n warning: {\r\n color: 'warning',\r\n defaultDescription: 'Se descartará la [creación] y los cambios se perderán.',\r\n icon: <Warning color=\"warning\" fontSize=\"medium\" />,\r\n },\r\n};\r\n\r\n","import * as MuiIcons from '@mui/icons-material';\r\nimport { FilterListOutlined } from '@mui/icons-material';\r\n\r\nexport const getIconComponent = (iconName?: string): React.ElementType => {\r\n return iconName && MuiIcons[iconName as keyof typeof MuiIcons]\r\n ? MuiIcons[iconName as keyof typeof MuiIcons]\r\n : FilterListOutlined;\r\n};\r\n\r\nexport const getModalColor = (state: string): string => {\r\n const colors: Record<string, string> = {\r\n info: 'info.100',\r\n delete: 'error.100',\r\n warning: 'warning.100',\r\n };\r\n return colors[state] ?? 'warning.100';\r\n};\r\n\r\nexport const getButtonColor = (state: string): 'inherit' | 'info' | 'error' | 'warning' => {\r\n const colorMap: Record<string, 'info' | 'error' | 'warning'> = {\r\n info: 'info',\r\n delete: 'error',\r\n warning: 'warning',\r\n };\r\n return colorMap[state] ?? 'info';\r\n};\r\n\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { Modal, Box, Typography, IconButton, Button, Stack } from '@mui/material';\r\nimport { Close } from '@mui/icons-material';\r\nimport { getButtonColor, getIconComponent, getModalColor, ModalProps, modalStateConfig } from './Helpers';\r\nimport { capitalize } from '../../generales';\r\n\r\nexport const SCModal = ({\r\n buttonModal,\r\n state = 'info',\r\n open,\r\n title,\r\n description,\r\n action,\r\n}: ModalProps) => {\r\n\r\n const [openModal, setOpenModal] = useState(open ?? false);\r\n\r\n useEffect(() => {\r\n if (open !== undefined) {\r\n setOpenModal(open);\r\n }\r\n }, [open]);\r\n\r\n const Icon = useMemo(() => getIconComponent(buttonModal?.icon), [buttonModal?.icon]);\r\n\r\n const handleClose = useCallback(() => setOpenModal(false), []);\r\n\r\n const toggleModal = (newOpen: boolean) => () => setOpenModal(newOpen);\r\n\r\n const prevAction = useMemo(() => (\r\n action ?? [{ text: 'Cancelar', fn: handleClose }, { text: 'Consultar', fn: () => { } }]),\r\n [action, handleClose]\r\n );\r\n\r\n const { icon, defaultDescription } = modalStateConfig[state];\r\n\r\n return (\r\n <>\r\n <Button\r\n data-testid=\"test-buttonModal\"\r\n color={buttonModal?.color ?? 'primary'}\r\n onClick={toggleModal(true)}\r\n variant={buttonModal?.variant ?? 'text'}\r\n size={buttonModal?.size ?? 'small'}\r\n startIcon={buttonModal?.iconPosition === 'left' && <Icon />}\r\n endIcon={buttonModal?.iconPosition === 'right' && <Icon />}\r\n >\r\n {capitalize(buttonModal?.text ?? 'filtrar')}\r\n </Button>\r\n\r\n <Modal open={openModal} onClose={toggleModal(false)} sx={{ boxShadow: 8 }}>\r\n <Box\r\n sx={{\r\n position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', width: 400, bgcolor: 'background.paper', borderRadius: 1, boxShadow: 24\r\n }}\r\n >\r\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\">\r\n <Stack direction=\"row\" alignItems=\"center\" p={1} gap={1.5}>\r\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" borderRadius=\"50%\" height={36} width={36} bgcolor={getModalColor(state)} >\r\n {icon}\r\n </Box>\r\n <Typography variant=\"h6\" color=\"text.primary\">\r\n {title}\r\n </Typography>\r\n </Stack>\r\n <IconButton onClick={toggleModal(false)} data-testid=\"test-buttonClose\">\r\n <Close color=\"action\" />\r\n </IconButton>\r\n </Stack>\r\n\r\n <Stack py={1} px={3} gap={1.5}>\r\n <Typography variant=\"body1\">\r\n {description || defaultDescription}\r\n </Typography>\r\n </Stack>\r\n\r\n {action && (\r\n <Stack id=\"Action\" direction=\"row\" gap={1} p={1} justifyContent=\"end\" bgcolor={\"grey.50\"} sx={{ borderRadius: 1 }}\r\n >\r\n <Button\r\n color=\"inherit\"\r\n variant={'text'}\r\n onClick={handleClose}\r\n size=\"small\"\r\n >\r\n {capitalize(\"cancelar\")}\r\n </Button>\r\n <Button\r\n data-testid='test-aceptar'\r\n color={getButtonColor(state)}\r\n variant={'contained'}\r\n onClick={action[0]?.fn}\r\n disabled={false}\r\n size=\"small\"\r\n >\r\n {capitalize(action[0].text)}\r\n </Button>\r\n </Stack>\r\n )}\r\n </Box>\r\n </Modal>\r\n </>\r\n );\r\n};","export function capitalize(text: string): string { return text.charAt(0).toUpperCase() + text.slice(1) }","import React, { useEffect, useMemo } from \"react\";\r\nimport { Button, Checkbox, FormControl, InputAdornment, ListItemIcon, MenuItem, Popover, Stack, TextField } from \"@mui/material\";\r\nimport { SearchOutlined } from \"@mui/icons-material\";\r\nimport { getIconMultiSelect, MultiSelectProps, useFilteredItems, useMultiSelectHandlers } from \"./helpers\";\r\nimport { capitalize } from \"../../generales\";\r\n\r\nexport function MultiSelect<T>({\r\n textButton,\r\n button,\r\n items,\r\n topPanel,\r\n actions,\r\n dense = false,\r\n open,\r\n selectAll = false,\r\n getItemLabel }: MultiSelectProps<T>) {\r\n const {\r\n anchorEl,\r\n open: openMultiselect,\r\n selectedItems,\r\n filterValue,\r\n setSelectedItems,\r\n handleOpen,\r\n handleClose,\r\n handleFilterChange,\r\n handleCheckboxToggle,\r\n setOpen } = useMultiSelectHandlers<T>();\r\n\r\n useEffect(() => {\r\n if (open !== undefined) {\r\n setOpen(open);\r\n }\r\n }, [open, setOpen]);\r\n\r\n useEffect(() => {\r\n setSelectedItems([]);\r\n }, [items, setSelectedItems]);\r\n\r\n const { filteredItems, sortedItems } = useFilteredItems(items, filterValue, getItemLabel, selectedItems);\r\n\r\n const Icon = useMemo(() => getIconMultiSelect(button?.icon ?? \"FilterListOutlined\"), [button?.icon]);\r\n\r\n const handleSelectAll = () => {\r\n const allSelected = selectedItems.length === filteredItems.length;\r\n setSelectedItems(allSelected ? [] : filteredItems);\r\n };\r\n\r\n const allSelected =\r\n filteredItems.length > 0 &&\r\n selectedItems.length === filteredItems.length;\r\n\r\n const resolvedActions = actions ?? [\r\n { text: \"Limpiar\", fn: handleClose },\r\n { text: \"Aplicar\", fn: () => { } },\r\n ];\r\n\r\n return (\r\n <>\r\n <Button\r\n test-id=\"multiselect-button\"\r\n color={button?.color ?? \"primary\"}\r\n onClick={handleOpen}\r\n variant={button?.variant ?? \"text\"}\r\n size=\"small\"\r\n startIcon={button?.iconPosition === \"left\" || !button?.iconPosition ? <Icon /> : null}\r\n endIcon={button?.iconPosition === \"right\" ? <Icon /> : null}\r\n >\r\n {capitalize(textButton ?? \"MultiSelect\")}\r\n </Button>\r\n\r\n <Popover\r\n elevation={8}\r\n anchorEl={anchorEl}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n open={openMultiselect}\r\n onClose={() => setOpen(false)}\r\n >\r\n <Stack minWidth=\"320px\" data-testid=\"multiselect-container\" bgcolor=\"white\" boxShadow={3} borderRadius={1}>\r\n <Stack py={1} px={2}>\r\n {topPanel ?? (\r\n <FormControl fullWidth size=\"small\">\r\n <TextField\r\n data-testid=\"multiselect-input\"\r\n fullWidth\r\n size=\"small\"\r\n variant=\"outlined\"\r\n placeholder=\"Buscar\"\r\n value={filterValue}\r\n onChange={handleFilterChange}\r\n slotProps={{\r\n input: {\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <SearchOutlined fontSize=\"small\" />\r\n </InputAdornment>\r\n ),\r\n },\r\n }}\r\n />\r\n </FormControl>\r\n )}\r\n </Stack>\r\n\r\n <Stack maxHeight=\"300px\" overflow=\"auto\">\r\n {selectAll && (\r\n <MenuItem dense={dense} onClick={handleSelectAll}>\r\n <ListItemIcon>\r\n <Checkbox checked={allSelected} color=\"primary\" />\r\n </ListItemIcon>\r\n Todos los items\r\n </MenuItem>\r\n )}\r\n {sortedItems.length > 0 ? (\r\n sortedItems.map((item) => (\r\n <MenuItem\r\n key={getItemLabel(item)}\r\n dense={dense}\r\n onClick={() => handleCheckboxToggle(item)}\r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={selectedItems.includes(item)}\r\n color=\"primary\"\r\n />\r\n </ListItemIcon>\r\n {getItemLabel(item)}\r\n </MenuItem>\r\n ))\r\n ) : (\r\n <MenuItem disabled>No se encontraron resultados</MenuItem>\r\n )}\r\n </Stack>\r\n\r\n <Stack direction=\"row\" gap={1} p={1} justifyContent=\"space-between\" bgcolor=\"grey.50\">\r\n {resolvedActions.map((button, index) => (\r\n <Button\r\n key={index}\r\n variant={index === 0 || resolvedActions.length < 2 ? \"text\" : \"contained\"}\r\n onClick={button.fn}\r\n disabled={button.disabled ?? false}\r\n size=\"small\"\r\n >\r\n {capitalize(button.text)}\r\n </Button>\r\n ))}\r\n </Stack>\r\n </Stack>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n","import { useCallback, useState } from \"react\";\r\n\r\nexport function useMultiSelectHandlers<T>() {\r\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const [selectedItems, setSelectedItems] = useState<T[]>([]);\r\n const [filterValue, setFilterValue] = useState(\"\");\r\n\r\n const handleOpen = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(e.currentTarget);\r\n setOpen(true);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setAnchorEl(null);\r\n setOpen(false);\r\n }, []);\r\n\r\n const handleFilterChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setFilterValue(e.target.value);\r\n },\r\n []\r\n );\r\n\r\n const handleCheckboxToggle = useCallback((item: T) => {\r\n setSelectedItems((prev) =>\r\n prev.includes(item) ? prev.filter((i) => i !== item) : [...prev, item]\r\n );\r\n }, []);\r\n\r\n return {\r\n anchorEl,\r\n open,\r\n selectedItems,\r\n filterValue,\r\n setSelectedItems,\r\n handleOpen,\r\n handleClose,\r\n handleFilterChange,\r\n handleCheckboxToggle,\r\n setOpen,\r\n };\r\n}","import * as MuiIcons from \"@mui/icons-material\";\r\nimport { FilterListOutlined } from \"@mui/icons-material\";\r\n\r\nexport function getIconMultiSelect(name: string) {\r\n return name in MuiIcons\r\n ? MuiIcons[name as keyof typeof MuiIcons]\r\n : FilterListOutlined;\r\n}\r\n","import { useMemo } from \"react\";\r\n\r\nexport function useFilteredItems<T>(\r\n items: T[],\r\n filterValue: string,\r\n getItemLabel: (item: T) => string,\r\n selectedItems: T[]\r\n) {\r\n const filteredItems = useMemo(\r\n () =>\r\n items.filter((item) =>\r\n getItemLabel(item).toLowerCase().includes(filterValue.toLowerCase())\r\n ),\r\n [items, filterValue, getItemLabel]\r\n );\r\n\r\n const sortedItems = useMemo(() => {\r\n return [\r\n ...filteredItems.filter((item) => selectedItems.includes(item)),\r\n ...filteredItems.filter((item) => !selectedItems.includes(item)),\r\n ];\r\n }, [filteredItems, selectedItems]);\r\n\r\n return { filteredItems, sortedItems };\r\n}\r\n","import React from \"react\";\r\nimport { Stack, Typography } from \"@mui/material\";\r\nimport { PageheaderProperties } from \"./Model\";\r\n\r\nexport const PageHeader = ({\r\n title,\r\n subtitle,\r\n actions,\r\n buttonBack,\r\n fixed,\r\n shadow = true,\r\n}: PageheaderProperties) => {\r\n return (\r\n <Stack data-testid=\"main-container\" justifyContent={\"center\"} height={48} position={fixed ? \"fixed\" : \"relative\"} width={fixed ? \"100%\" : \"inherit\"} bgcolor=\"background.paper\" zIndex={10}\r\n sx={{ boxShadow: shadow ? (theme) => theme.shadows[1] : \"none\" }} >\r\n <Stack data-testid=\"page-header-content\" height={40} px={3} pl={buttonBack ? 1 : 3} direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" >\r\n <Stack id=\"left-section\" direction=\"row\" alignItems=\"center\" gap={1}>\r\n {buttonBack}\r\n <Stack id=\"text-section\" gap={0.5}>\r\n <Typography data-testid=\"page-header-title\" variant=\"h6\" color=\"text.primary\">\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography data-testid=\"page-header-subtitle\" variant=\"caption\" color=\"text.primary\">\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Stack>\r\n </Stack>\r\n\r\n {actions && (\r\n <Stack id=\"right-actions\" direction=\"row\" alignItems=\"center\" gap={1}>\r\n {actions}\r\n </Stack>\r\n )}\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { Button, Typography, IconButton, Box } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\r\nimport { es } from 'date-fns/locale';\r\nimport { format, startOfWeek, endOfWeek, addDays, isSameDay } from 'date-fns';\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';\r\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';\r\n\r\ninterface SCCalendarSwipeableProps {\r\n //apariencia\r\n background?: string;\r\n //funcionales\r\n setState: React.Dispatch<React.SetStateAction<string>>;\r\n state: string | any;\r\n}\r\n\r\nexport const SCCalendarSwipeable = ({\r\n //informativas\r\n //apariencia\r\n background,\r\n //funcionales\r\n setState,\r\n state,\r\n}: SCCalendarSwipeableProps) => {\r\n //VARIABLES\r\n let convertFecha\r\n //STATES\r\n const [fecha, setFecha] = useState(new Date());\r\n const [fechaSeleccionada, setFechaSeleccionada] = useState();\r\n const [stateVal, setstateVal] = React.useState(new Date());\r\n const [openCalendar, setOpenCalendar] = React.useState(false);\r\n //CONSTANTES\r\n const hoy = new Date();\r\n const inicioSemana = startOfWeek(fecha, { weekStartsOn: 0 }); // Domingo como inicio de semana\r\n const diasSemana = Array.from({ length: 7 }, (_, i) => addDays(inicioSemana, i));\r\n //USEEFFECT\r\n React.useEffect(() => {\r\n if (fecha != null) {\r\n handleConvertFecha(fecha)\r\n }\r\n }, [fecha]);\r\n //FUNCIONES O EVENTOS\r\n const handleConvertFecha = (fecha: any) => {\r\n if (fecha) {\r\n let day = (fecha.getDate() < 10 ? \"0\" : \"\") + fecha.getDate();\r\n let month = (fecha.getMonth() + 1 < 10 ? \"0\" : \"\") + (fecha.getMonth() + 1);\r\n let year = fecha.getFullYear();\r\n convertFecha = day + \"/\" + month + \"/\" + year;\r\n setState(convertFecha)\r\n setFecha(fecha)\r\n }\r\n };\r\n\r\n const toggleCalendar = (newOpen: any) => () => {\r\n setOpenCalendar(newOpen);\r\n };\r\n\r\n const locale = {\r\n ...es,\r\n // options: {\r\n // weekStartsOn: 0, // 0 para domingo, 1 para lunes, etc.\r\n // },\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={locale} >\r\n {openCalendar == false ? (\r\n <Box data-testid=\"calendar-mobile\" sx={{ width: \"100%\", background: background ? background : \"white\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", maxWidth: \"320px\", background: \"transparent\" }}>\r\n <Grid container gap={0.5} sx={{\r\n justifyContent: \"space-between\", padding: \"12px 0px\", background: \"transparent\"\r\n }}>\r\n {diasSemana.map((dia) => (\r\n <Grid sx={{ width: \"36px\" }} key={dia.toString()}>\r\n <Box sx={{ width: \"36px\", height: \"40px\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\r\n <Typography sx={{ fontSize: \"12px !important\", color: \"#10184099\" }}>{format(dia, 'EEEE', { locale: es }).charAt(0).toUpperCase()}</Typography>\r\n </Box>\r\n <Box\r\n onClick={() => setFecha(dia)}\r\n sx={{\r\n padding: '10px',\r\n textAlign: 'center',\r\n backgroundColor: isSameDay(dia, fecha) ? '#2063a0' : 'transparent',\r\n cursor: 'pointer',\r\n borderRadius: '50%',\r\n //border: '1px solid lightgray',\r\n position: 'relative',\r\n //width: '36px',\r\n //height: '36px',\r\n }}\r\n >\r\n <Typography sx={{ fontSize: \"12px !important\", color: isSameDay(dia, fecha) ? 'white' : \"#101840DE\" }}>{format(dia, 'd')}</Typography>\r\n </Box>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"open-calendar-button\" onClick={toggleCalendar(true)}>\r\n <KeyboardDoubleArrowDownIcon />\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box sx={{ width: \"100%\", background: \"white\" }}>\r\n <StaticDatePicker\r\n orientation=\"landscape\"\r\n openTo=\"day\"\r\n value={fecha}\r\n slotProps={{ toolbar: { hidden: true }, actionBar: { actions: [] } }} // Oculta la barra de herramientas\r\n //slotProps={{ actionBar: { actions: [] } }} // Oculta los botones de Cancelar y Aceptar\r\n sx={{ fontSize: \"12px !important\", height: \"300px !important\", background: background ? background : \"white\", \"& .MuiDayCalendar-header\": { justifyContent: \"space-between\" }, \"& .MuiDayCalendar-weekContainer\": { justifyContent: \"space-between\" }, \"& .MuiPickersCalendarHeader-root\": { paddingLeft: \"0px\", paddingRight: \"0px\", color: \"#10184099\" }, \"& .MuiPickersDay-root\": { fontSize: \"12px !important\" }, \"& .MuiDayCalendar-weekDayLabel\": { fontSize: \"12px !important\" }, }}\r\n onChange={(newValue: Date | any) => setFecha(newValue)}\r\n />\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"close-calendar-button\" onClick={toggleCalendar(false)}>\r\n <KeyboardDoubleArrowUpIcon />\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n )}\r\n </LocalizationProvider>\r\n </>\r\n );\r\n};","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { DataGridPro, GridColDef, useGridApiRef, GridRowParams, GridRowSelectionModel, GridRowId } from '@mui/x-data-grid-pro';\r\nimport { LicenseInfo } from \"@mui/x-license-pro\";\r\n//IMAGENES E ICONOS\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\r\nimport { useTheme } from '@mui/material/styles';\r\n\r\n\r\ninterface SCDataGridInitialProps {\r\n //informativas\r\n data: any;\r\n columns: any;\r\n groupColumns?: any; \r\n //apariencia\r\n rowsTable?: number; \r\n checkboxSelection?: boolean;\r\n width?: string | number;\r\n maxHeight?: number;\r\n density?: \"compact\" | \"standard\" | \"comfortable\"; \r\n}\r\n\r\nexport const SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelection, width, maxHeight, density }: SCDataGridInitialProps) => {\r\n LicenseInfo.setLicenseKey(\r\n \"77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI=\"\r\n );\r\n\r\n //CONSTANTES\r\n const theme = useTheme();\r\n const apiRef = useGridApiRef();\r\n const isRowSelectable = (params: GridRowParams) => params.row.bloqueoChecked == false ? false : true;\r\n\r\n function generateRandomId() {\r\n return Math.floor(Math.random() * 1000000); // Genera un número aleatorio entre 0 y 999999\r\n }\r\n\r\n const getTreeDataPaths = (row: any) => {\r\n return [\r\n row[groupColumns[0].split(\"[\")[1].split(\"]\")[0].trim()],\r\n ...(groupColumns.length > 2 ? [row[groupColumns[1].split(\"[\")[1].split(\"]\")[0].trim()]] : []),\r\n `${row[groupColumns[groupColumns.length - 1].split(\"[\")[1].split(\"]\")[0].trim()].toString()}/${generateRandomId()}`\r\n ];\r\n }\r\n\r\n const groupingColDefs: GridColDef = {\r\n field: 'grouping',\r\n headerName: groupColumns!=undefined?groupColumns[groupColumns.length - 1].split(\"[\").length == 2 ? groupColumns[groupColumns.length - 1].split(\"[\")[0].trim() : 'Agrupador':'',\r\n renderCell: (params: any) => {\r\n let label = params.value.toString().includes(\"/\") ? params.value.split(\"/\")[0].toString() : params.value.toString();\r\n \r\n const maxDepth = groupColumns ? groupColumns.length - 2 : 0; \r\n \r\n if (groupColumns != undefined) {\r\n if (params.rowNode.depth === 0) {\r\n const textBegin = groupColumns[0] ? groupColumns[0].split(\"[\")[0].trim() : \"\";\r\n const textEnd = groupColumns[0] ? groupColumns[0].split(\"]\")[1].trim() : \"\";\r\n const labelGrouping1 = `${textBegin} ${label} ${textEnd}`\r\n const fieldGrouping1 = groupColumns[0].split(\"[\")[1].split(\"]\")[0].trim()\r\n const fieldGrouping2 = groupColumns[1].split(\"[\")[1].split(\"]\")[0].trim()\r\n const subgroup1 = arrayRows\r\n .filter(r =>\r\n r[fieldGrouping1].toString() === label)\r\n .map(r =>\r\n r[fieldGrouping2]);\r\n const groupedDataLength1 = subgroup1.filter((valor, indiceActual, arreglo) => arreglo.indexOf(valor) === indiceActual);\r\n label = `${labelGrouping1} (${groupedDataLength1.length})`;\r\n } else if (groupColumns.length > 2 && params.rowNode.depth === 1) {\r\n const labelGrouping1 = params.api.getRowNode(params.rowNode.parent)?.groupingKey;\r\n const textBegin = groupColumns[1] ? groupColumns[1].split(\"[\")[0] : \"\";\r\n const textEnd = groupColumns[1] ? groupColumns[1].split(\"]\")[1].trim() : \"\";\r\n const labelGrouping2 = `${textBegin} ${label} ${textEnd}`\r\n const fieldGrouping1 = groupColumns[0].split(\"[\")[1].split(\"]\")[0].trim()\r\n const fieldGrouping2 = groupColumns[1].split(\"[\")[1].split(\"]\")[0].trim()\r\n const groupedDataLength2 = arrayRows.filter(\r\n r => r[fieldGrouping1] === labelGrouping1 && r[fieldGrouping2] === label\r\n ).length;\r\n label = `${labelGrouping2} (${groupedDataLength2})`;\r\n } else {\r\n label = label\r\n }\r\n }\r\n return (\r\n <div\r\n style={{\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n color: \"#101840DE\",\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: params.rowNode.depth == 0 ? \"5px\" : params.rowNode.depth == 1 ? \"15px\" : \"25px\",\r\n backgroundColor: params.rowNode.type === 'group' \r\n ? (theme.palette.grey as any)[100 + (maxDepth - params.rowNode.depth) * 100]\r\n : \"#FFFFFF\",\r\n fontWeight: params.rowNode.type == \"group\" ? '400' : '300',\r\n }}\r\n >\r\n {params.rowNode.type === 'group' && (\r\n <span\r\n style={{\r\n cursor: 'pointer',\r\n marginRight: 8,\r\n userSelect: 'none',\r\n }}\r\n onClick={e => {\r\n e.stopPropagation();\r\n params.api.setRowChildrenExpansion(params.id, !params.rowNode.childrenExpanded);\r\n }}\r\n >\r\n {params.rowNode.childrenExpanded ? <KeyboardArrowUpIcon fontSize='small' color=\"action\" /> : <KeyboardArrowDownIcon fontSize='small' color=\"action\" />}\r\n </span>\r\n )}\r\n {label}\r\n </div>\r\n );\r\n },\r\n colSpan: (params: any) => {\r\n const value = String(params);\r\n const fieldGrouping1 = groupColumns[0].split(\"[\")[1].split(\"]\")[0].trim()\r\n const fieldGrouping2 = groupColumns.length > 2 ? groupColumns[1].split(\"[\")[1].split(\"]\")[0].trim() : undefined\r\n // const fieldGrouping3 = groupColumns[groupColumns.length - 1].split(\"[\")[1].split(\"]\")[0].trim()\r\n let agrupado1 = false;\r\n let agrupado2 = false;\r\n\r\n // Verificar si value es igual al valor del agrupador1\r\n if (fieldGrouping1 != undefined) {\r\n agrupado1 = arrayRows.some(row =>\r\n String(row[fieldGrouping1]) === value\r\n );\r\n }\r\n\r\n // Verificar si value es igual al valor del agrupador2\r\n if (fieldGrouping2 != undefined) {\r\n agrupado2 = arrayRows.some(row =>\r\n String(row[fieldGrouping2]) === value\r\n );\r\n }\r\n\r\n if (agrupado1 || agrupado2) {\r\n return columns.length + 1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n };\r\n\r\n //VARIABLES\r\n let validationTreeData = groupColumns ? true : false;\r\n let validationCheckboxSelection = checkboxSelection || false;\r\n let styleDensity = density || 'compact';\r\n let styleTopContainerHeight = styleDensity === \"compact\" ? \"26px\" : styleDensity === \"standard\" ? \"38px\" : styleDensity === \"comfortable\" ? \"60px\" : \"27px\";\r\n let styleRowHeight = density == \"compact\" ? 32 : density == \"standard\" ? 28 : density == \"comfortable\" ? 36 : 32\r\n let rows = rowsTable ? rowsTable : validationTreeData != false ? parseInt(data.length.toString()) : data.length < 10 ? parseInt(data.length.toString()) : 10;\r\n let validationGroupingColDef = groupingColDefs || {};\r\n\r\n //STATES\r\n const [groupDataLenght, setGroupDataLengh] = useState<number>(0);\r\n type DataItem = { [key: string]: any };\r\n const [pageSize, setPageSize] = useState<number>(rows);\r\n const [arrayRows, setArrayRows] = useState<DataItem[]>([]);\r\n const [selectionModel, setSelectionModel] = useState<GridRowId[]>([]);\r\n\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (data?.length > 0) {\r\n dataConvertRows(data, undefined);\r\n }\r\n }, [data]);\r\n\r\n //FUNCIONES O EVENTOS\r\n const dataConvertRows = (data: any, columnId: any) => {\r\n let dataConvert: DataItem[] = [];\r\n if (data?.length > 0) {\r\n const dataKeys = Object.keys(data[0]);\r\n data.map((item: any) => {\r\n const newKeys: { [key: string]: any } = {};\r\n let i = 0;\r\n let id = dataConvert.length + 1;\r\n for (i = 0; i < dataKeys.length; i++) {\r\n newKeys[dataKeys[i]] = item[dataKeys[i]];\r\n }\r\n newKeys.id = columnId ? item[columnId] : id;\r\n dataConvert = [...dataConvert, newKeys];\r\n });\r\n }\r\n setArrayRows(dataConvert);\r\n };\r\n\r\n const handleSelectionChange = (newSelection: GridRowSelectionModel) => {\r\n if (groupDataLenght > 0 && validationTreeData == true) {\r\n let numberGrouped = 0\r\n let idsRowSelectBefore = [];\r\n let idRowSelect: GridRowId[] = [];\r\n for (let i = 0; i < newSelection.length; i++) {\r\n if (typeof newSelection[i] === \"string\") {\r\n if ((newSelection[i] as string).includes(\"auto-generated-row-null\")) {\r\n numberGrouped = i\r\n }\r\n } else {\r\n idsRowSelectBefore.push(newSelection[i]);\r\n }\r\n }\r\n\r\n arrayRows.forEach((array: any) => {\r\n if (typeof newSelection[numberGrouped] === \"string\") {\r\n if ((newSelection[numberGrouped] as string).includes(array.name)) {\r\n idRowSelect.push(array.id);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (idRowSelect !== null) {\r\n const soloEnArr1 = idsRowSelectBefore.filter(elemento => !idRowSelect.includes(elemento));\r\n const hasCommonElements = idsRowSelectBefore.some(element => idRowSelect.includes(element));\r\n if (hasCommonElements == true) {\r\n setSelectionModel([...soloEnArr1]); // Convierte a array mutable\r\n } else {\r\n setSelectionModel([...idsRowSelectBefore, ...idRowSelect]); \r\n }\r\n }\r\n\r\n } else {\r\n setSelectionModel([...newSelection]);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {data && (\r\n <>\r\n <div style={{width: width || '100%',maxHeight: maxHeight ? `${maxHeight}px` : 'none',}}>\r\n <DataGridPro\r\n apiRef={apiRef}\r\n rowHeight={styleRowHeight}\r\n rows={arrayRows}\r\n columns={columns}\r\n density={styleDensity}\r\n treeData={validationTreeData}\r\n getTreeDataPath={validationTreeData == true ? getTreeDataPaths : undefined}\r\n groupingColDef={validationTreeData == true ? validationGroupingColDef : undefined}\r\n pagination\r\n initialState={{\r\n pagination: { paginationModel: { pageSize: rows } }\r\n }}\r\n //pageSizeOptions={[rows, rows*2, rows*3]}// si desea que se muestre el texto: filas por pagina en el footer del paginador\r\n checkboxSelection={validationCheckboxSelection} //permite seleccionar de forma masiva las filas de toda la tabla, si se quita no muestra los check en cada fila\r\n // checkboxSelectionVisibleOnly//permite seleccionar de forma masiva todas las filas solo de las que se muestran en la paginacion\r\n rowSelectionModel={selectionModel}\r\n onRowSelectionModelChange={(newSelection) => handleSelectionChange(newSelection)}\r\n isRowSelectable={isRowSelectable}\r\n //keepNonExistentRowsSelected={false} // Mantener filas no existentes seleccionadas.Útil cuando se utiliza la paginación del lado del servidor y las selecciones de fila deben conservarse al cambiar de página\r\n disableRowSelectionOnClick // Deshabilitar selección de filas en el check al hacer clic en la celda\r\n hideFooter={validationTreeData == true ? true : false}\r\n localeText={{\r\n noRowsLabel: 'No hay filas',\r\n columnMenuLabel: 'Menú de columna',\r\n footerTotalRows: 'Filas Totales:',\r\n footerRowSelected: count => `${count.toLocaleString()} fila(s) seleccionada(s)`, // Ejemplo de traducción dinámica\r\n MuiTablePagination: {\r\n labelRowsPerPage: 'Filas por página:',\r\n labelDisplayedRows: ({ from, to, count }) => `${from}–${to} de ${count !== -1 ? count : `más de ${to}`}`,\r\n },\r\n }}\r\n sx={{\r\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\r\n //overflow: 'auto',\r\n '& .MuiDataGrid-filler': {\r\n display: 'none !important',\r\n },\r\n \"& .MuiDataGrid-footerContainer\": {\r\n minHeight: \"26px !important\",\r\n height: \"26px !important\",\r\n },\r\n \"& .MuiTablePagination-toolbar\": {\r\n minHeight: \"25px !important\",\r\n height: \"25px !important\",\r\n },\r\n \"& .MuiTablePagination-actions .MuiIconButton-root\": {\r\n padding: \"0px !important\",\r\n },\r\n\r\n '&.MuiDataGrid-root': {\r\n [`--DataGrid-topContainerHeight`]: `${styleTopContainerHeight} !important`,\r\n },\r\n\r\n \"MuiDataGrid-root .MuiDataGrid-virtualScrollerContent .MuiDataGrid-row\": {\r\n \"--height\": \"0px !important\",\r\n \"minHeight\": \"0px !important\",\r\n \"maxHeight\": \"0px !important\",\r\n },\r\n '& .MuiDataGrid-cell': {\r\n padding: '0 !important',\r\n background: \"white\",\r\n },\r\n }}\r\n />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n )\r\n};\r\n\r\n// Memoizar el componente para evitar re-renderizados innecesarios\r\nexport const SCDataGrid = React.memo(SCDataGridInitial, (prevProps, nextProps) => {\r\n // Comparación personalizada para evitar re-renders cuando las props son iguales\r\n const isEqual = (\r\n prevProps.data === nextProps.data &&\r\n prevProps.columns === nextProps.columns &&\r\n prevProps.groupColumns === nextProps.groupColumns &&\r\n prevProps.rowsTable === nextProps.rowsTable &&\r\n prevProps.checkboxSelection === nextProps.checkboxSelection &&\r\n prevProps.width === nextProps.width &&\r\n prevProps.maxHeight === nextProps.maxHeight &&\r\n prevProps.density === nextProps.density \r\n );\r\n return isEqual;\r\n});","// React\r\nimport React, { ReactNode } from 'react';\r\n// Mui Material\r\nimport { Button, Stack, Typography } from '@mui/material';\r\n// Images\r\nimport create from '../../assets/ImgEmptyState/create.svg';\r\nimport error from '../../assets/ImgEmptyState/error.svg';\r\nimport empty from '../../assets/ImgEmptyState/empty.svg';\r\nimport search from '../../assets/ImgEmptyState/search.svg';\r\nimport { capitalize, ReplyPalette } from '../../generales';\r\n\r\n// Types\r\nexport type EmptyStateStates = 'create' | 'error' | 'noResult' | 'search';\r\nexport type EmptyStateSize = 'small' | 'large';\r\n\r\n// Props del componente\r\nexport interface EmptyStateProperties {\r\n icon?: ReactNode;\r\n state?: EmptyStateStates;\r\n size?: EmptyStateSize;\r\n title: string;\r\n subtitle?: string;\r\n actions?: { icon?: string; text?: string; color?: ReplyPalette; variant?: 'text' | 'outlined' | 'contained'; iconPosition?: 'left' | 'right'; size?: \"small\" | \"medium\" | \"large\", onClick?: () => void }[];\r\n containerHeight?: string;\r\n}\r\n// Map de imágenes por estado\r\nconst EmptyStateImageUrls: Record<EmptyStateStates, string> = {\r\n create: create,\r\n error: error,\r\n noResult: empty,\r\n search: search,\r\n};\r\n// Config Icon\r\nconst DefaultIcon = ({\r\n state = 'create',\r\n size = 'large',\r\n}: {\r\n state: EmptyStateStates;\r\n size: EmptyStateSize;\r\n}) => {\r\n const imageUrl = EmptyStateImageUrls[state];\r\n\r\n const iconSize: React.CSSProperties =\r\n size === 'small' ? { width: '40px', height: '40px' } : { width: '60px', height: '60px' };\r\n return <img src={imageUrl} alt={state} style={iconSize} />;\r\n};\r\n\r\n// Component\r\nexport const EmptyState = ({\r\n state = 'create',\r\n size = 'large',\r\n title,\r\n subtitle,\r\n actions,\r\n containerHeight = '100vh',\r\n icon = <DefaultIcon state={state} size={size} />,\r\n}: EmptyStateProperties) => {\r\n\r\n // Condicionales de Ttpografía por tamaño\r\n const titleVariant = size === 'small' ? 'subtitle2' : 'h6';\r\n const subtitleVariant = size === 'small' ? 'caption' : 'body1';\r\n\r\n return (\r\n <Stack\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n spacing={2}\r\n height={containerHeight}\r\n data-testid=\"empty-state-container\"\r\n >\r\n {icon && <Stack>{icon}</Stack>}\r\n\r\n <Stack gap={0.5}>\r\n <Typography color=\"text.primary\" variant={titleVariant} textAlign=\"center\">\r\n {title}\r\n </Typography>\r\n\r\n {subtitle && (\r\n <Typography\r\n variant={subtitleVariant}\r\n textAlign=\"center\"\r\n color=\"text.secondary\"\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n {actions && actions?.length > 0 && (\r\n <Stack\r\n direction=\"row\"\r\n spacing={2}\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n >\r\n {actions.map((action, index) => (\r\n <Button\r\n key={index}\r\n color={action.color ?? 'primary'}\r\n variant={action.variant ?? 'text'}\r\n size={action.size ?? 'small'}\r\n startIcon={\r\n action.icon && action.iconPosition === 'left'\r\n ? <img src={action.icon} alt=\"icon\" />\r\n : undefined\r\n }\r\n endIcon={\r\n action.icon && action.iconPosition === 'right'\r\n ? <img src={action.icon} alt=\"icon\" />\r\n : undefined\r\n }\r\n onClick={action.onClick}\r\n >\r\n {capitalize(action.text ?? 'action')}\r\n </Button>\r\n ))}\r\n </Stack>\r\n )}\r\n {/* {actions && (\r\n <Stack\r\n direction=\"row\"\r\n spacing={2}\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n >\r\n {\r\n <Button\r\n color={actions?.color ?? 'primary'}\r\n variant={actions?.variant ?? 'text'}\r\n size={actions?.size ?? 'small'}\r\n startIcon={actions?.icon && actions.iconPosition === 'left' ? <img src={actions.icon} alt=\"icon\" /> : undefined}\r\n endIcon={actions?.icon && actions.iconPosition === 'right' ? <img src={actions.icon} alt=\"icon\" /> : undefined}\r\n onClick={actions?.onClick}\r\n >\r\n {capitalize(actions?.text ?? 'action')}\r\n </Button>\r\n }\r\n\r\n </Stack>\r\n )} */}\r\n </Stack>\r\n </Stack>\r\n );\r\n};","//REACT\r\nimport React, { useEffect, useState } from \"react\";\r\n//MATERIAL\r\nimport { Button, Typography, Modal, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Tooltip, Box, SvgIcon } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport { ReplyPalette } from \"../stories/Generales/types\";\r\n//IMAGENES E ICONOS\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Action {\r\n //informativas\r\n text?: string;\r\n fn?: () => void;\r\n icon?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n disabled?: boolean;\r\n color?: ReplyPalette\r\n}\r\n\r\ninterface SCDialogProps {\r\n //informativas\r\n title?: string;\r\n iconTitle?: React.ReactNode | React.ReactElement | keyof typeof Muicon;\r\n subtitle?: string;\r\n content?: any;\r\n actions?: Action[];\r\n buttonDialog?: { icon?: string; text?: string; color?: ReplyPalette; tooltip?: string; variant?: 'text' | 'outlined' | 'contained'; iconPosition?: 'left' | 'right' | undefined; };\r\n //apariencia\r\n disableClose?: boolean;\r\n dividers?: boolean;\r\n widthContent?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';\r\n heightContent?: string;\r\n background?: string;\r\n //funcionales\r\n setShow?: React.Dispatch<React.SetStateAction<boolean>>;\r\n show?: boolean | any;\r\n}\r\n\r\nexport const SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, disableClose, dividers, widthContent, heightContent, background, setShow, show }: SCDialogProps) => {\r\n //VARIABLES\r\n let i = 0;\r\n let iconTitleValidation = \"\"\r\n let IconTitle: any;\r\n let ButtonIcon: any;\r\n //STATE\r\n const [open, setOpen] = useState(show);\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (show) {\r\n handleOpen();\r\n }\r\n else {\r\n handleClose();\r\n }\r\n }, [show]);\r\n //FUNCIONES O EVENTOS\r\n if (buttonDialog?.icon != undefined) {\r\n if (Muicon[buttonDialog?.icon as keyof typeof Muicon] == undefined) {\r\n ButtonIcon = buttonDialog?.icon as any;\r\n } else {\r\n ButtonIcon = Muicon[buttonDialog?.icon as keyof typeof Muicon]\r\n }\r\n }\r\n\r\n\r\n actions?.map(function (option: Action, index, array) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n });\r\n\r\n if (iconTitle) {\r\n if (Muicon[iconTitle as keyof typeof Muicon] == undefined) {\r\n if (iconTitle && React.isValidElement(iconTitle) && iconTitle.type == undefined) {\r\n iconTitleValidation = \"image\"\r\n IconTitle = iconTitle\r\n } else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = iconTitle\r\n }\r\n } else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = Muicon[iconTitle as keyof typeof Muicon]\r\n }\r\n }\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n if (setShow) {\r\n setShow(true);\r\n }\r\n };\r\n\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n if (setShow) {\r\n setShow(false);\r\n }\r\n };\r\n\r\n //PROPS\r\n const dialogActions = actions ?? [{ text: \"Cerrar\", fn: handleClose }];\r\n content = content ?? { component: <Box> Aqui va el contenido </Box> };\r\n\r\n return (\r\n <div>\r\n {buttonDialog ?\r\n <>\r\n {buttonDialog.text != undefined ?\r\n <Tooltip placement=\"bottom-start\" title={buttonDialog.tooltip != undefined ? buttonDialog.tooltip : \"\"} slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <Button size=\"small\" color={buttonDialog.color != undefined ? buttonDialog.color : \"primary\"} variant={buttonDialog?.variant != undefined ? buttonDialog?.variant : \"text\"} startIcon={buttonDialog?.iconPosition != undefined ? buttonDialog?.iconPosition == 'left' ? <ButtonIcon color={buttonDialog.color != undefined ? buttonDialog.color : \"primary\"} /> : \"\" : \"\"} endIcon={buttonDialog?.iconPosition != undefined ? buttonDialog?.iconPosition == 'right' ? <ButtonIcon color={buttonDialog.color != undefined ? buttonDialog.color : \"primary\"} /> : \"\" : \"\"} onClick={handleOpen}> {buttonDialog?.text != undefined ? buttonDialog.text : \"\"} </Button>\r\n </Tooltip>\r\n :\r\n <IconButton style={{ cursor: \"pointer\" }} onClick={handleOpen}>\r\n <SvgIcon fontSize=\"small\" color={buttonDialog?.color != undefined ? buttonDialog?.color : \"action\"} component={ButtonIcon} />\r\n </IconButton>\r\n }\r\n\r\n </>\r\n : \"\"\r\n }\r\n <Modal open={open || false} onClose={handleClose}>\r\n <Dialog\r\n data-testid=\"dialog-element\"\r\n open={open || false}\r\n onClose={disableClose ? undefined : handleClose}\r\n maxWidth={\"xl\"}\r\n sx={{\r\n width: \"100% !important\",\r\n \"& .MuiBackdrop-root\": {\r\n backdropFilter: \"blur(0px) !important\"\r\n },\r\n }}\r\n >\r\n {title && (\r\n <DialogTitle sx={{ m: 0, padding: \"8px 16px 8px 16px\" }} data-testid=\"dialog-icon-title\">\r\n <Grid container size={12} sx={{ justifyContent: \"space-between\", flexWrap: \"nowrap\" }}>\r\n <Grid container size={11} sx={{ alignItems: \"center\" }}>\r\n {iconTitle ?\r\n iconTitleValidation == \"image\" ?\r\n <Box sx={{ marginRight: \"16px\", width: \"44px\", height: \"44px\", borderRadius: \"1px\" }} >\r\n <img src={IconTitle} width=\"44px\" height=\"44px\"></img>\r\n </Box>\r\n :\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} sx={{ marginRight: \"16px\" }} />\r\n : \"\"}\r\n <Grid>\r\n <Typography color=\"text.primary\" variant=\"h6\" gutterBottom>\r\n {title ? title : \"\"}\r\n </Typography>\r\n <Typography color=\"text.secondary\" variant=\"body2\" gutterBottom>\r\n {subtitle\r\n ? subtitle\r\n : \"\"}\r\n </Typography>\r\n </Grid>\r\n </Grid>\r\n {disableClose != true ?\r\n <IconButton data-testid=\"close-dialog-button\" onClick={handleClose} size=\"small\" color=\"default\" sx={{ height: 22, width: 22 }} >\r\n <CloseIcon />\r\n </IconButton>\r\n : \"\"}\r\n </Grid>\r\n </DialogTitle>\r\n )}\r\n <DialogContent\r\n data-testid=\"dialog-content\"\r\n dividers={dividers ? dividers : false}\r\n sx={{\r\n m: 0,\r\n padding: \"12px 16px 8px 16px\",\r\n background: background ? background : \"white\",\r\n height: !heightContent ? { xs: \"60vh\", sm: \"70vh\", md: \"508px\" } : heightContent,\r\n width: (() => {\r\n switch (widthContent) {\r\n case \"extra-small\":\r\n return { xs: \"48vw\", md: \"33vw\" };\r\n case 'small':\r\n return { xs: \"54vw\", md: \"39vw\" };\r\n case 'medium':\r\n return { xs: \"64vw\", md: \"56vw\" };\r\n case 'large':\r\n return { xs: \"74vw\", md: \"78vw\" };\r\n case 'extra-large':\r\n return { xs: \"84vw\", md: \"93vw\" };\r\n default:\r\n return { xs: \"64vw\", md: \"56vw\" };\r\n }\r\n })\r\n }}\r\n >\r\n {content.url ? (\r\n <iframe\r\n style={{ border: \"none\", minWidth: \"100%\", minHeight: \"100%\" }}\r\n id=\"inlineFrameExample\"\r\n title=\"Inline Frame Example\"\r\n src={content.url}\r\n ></iframe>\r\n ) : (\r\n content.component\r\n )}\r\n </DialogContent>\r\n {dialogActions.length > 0 ?\r\n <DialogActions sx={{ gap: 1, m: 0, padding: \"12px 16px 12px 16px\", justifyContent: dialogActions.length >= 3 ? \"space-between\" : \"flex-end\" }}>\r\n {dialogActions.length >= 3 ? (\r\n <>\r\n <Button\r\n variant=\"text\"\r\n color={dialogActions[0].color || \"primary\"}\r\n size=\"small\"\r\n onClick={dialogActions[0].fn}\r\n disabled={dialogActions[0].disabled || false}\r\n startIcon={dialogActions[0].icon ? <SvgIcon fontSize=\"small\" component={dialogActions[0].icon} /> : undefined}\r\n >\r\n {dialogActions[0].text}\r\n </Button>\r\n \r\n <Box sx={{ display: \"flex\", gap: 1 }}>\r\n {dialogActions.slice(1).map((boton, index) => {\r\n return (\r\n <Button\r\n key={index + 1}\r\n variant={index === dialogActions.length - 2 ? \"contained\" : \"text\"} // Último botón contained, resto text\r\n color={boton.color || \"primary\"}\r\n size=\"small\"\r\n onClick={boton.fn}\r\n disabled={boton.disabled || false}\r\n startIcon={boton.icon ? <SvgIcon fontSize=\"small\" component={boton.icon} /> : undefined}\r\n >\r\n {boton.text}\r\n </Button>\r\n );\r\n })}\r\n </Box>\r\n </>\r\n ) : (\r\n dialogActions.map((boton, index) => {\r\n return (\r\n <Button\r\n key={index}\r\n variant={index === dialogActions.length - 1 ? \"contained\" : \"text\"}\r\n color={boton.color || \"primary\"}\r\n size=\"small\"\r\n onClick={boton.fn}\r\n disabled={boton.disabled || false}\r\n startIcon={boton.icon ? <SvgIcon fontSize=\"small\" component={boton.icon} /> : undefined}\r\n >\r\n {boton.text}\r\n </Button>\r\n );\r\n })\r\n )}\r\n </DialogActions>\r\n : \"\"}\r\n </Dialog>\r\n </Modal>\r\n </div>\r\n );\r\n};\r\n","//REACT\r\nimport React from \"react\";\r\n//MATERIAL\r\nimport { Box, Typography, Paper, Divider, MenuList, MenuItem, ListItemIcon, SvgIcon } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\n//HOOKS\r\nimport useWindowDimensions from \"./Hooks/useWindowDimensions\";\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Option {\r\n //informativas\r\n name?: string;\r\n iconLeft?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n iconRight?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n //apariencia\r\n divider?: boolean;\r\n //funcionales\r\n page: React.ReactNode | React.ReactElement;\r\n}\r\n\r\ninterface SCMenuProps {\r\n //informativas\r\n header?: any;\r\n options: Option[];\r\n defaultOption?: string;\r\n //apariencia\r\n disable?: boolean;\r\n widthMenu?: string;\r\n heightMenu?: string;\r\n widthPage?: string;\r\n}\r\n\r\nexport const SCMenu = ({ header, options, defaultOption, disable, widthMenu, heightMenu, widthPage }: SCMenuProps) => {\r\n //Constantes\r\n const { height, width } = useWindowDimensions();\r\n const menuSize = widthMenu ? parseInt(widthMenu) : 284;\r\n const pageSize = widthPage ? parseInt(widthPage) : width - menuSize;\r\n const widthContainer = menuSize + pageSize;\r\n //Variables\r\n let heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;\r\n //States\r\n const [selectedIndex, setSelectedIndex] = React.useState(\"1\");\r\n const [value, setValue] = React.useState(\"1\");\r\n //useEffect\r\n React.useEffect(() => {\r\n heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;\r\n }, [height]);\r\n\r\n React.useEffect(() => {\r\n if (defaultOption) {\r\n handleClickMenusItem(event, undefined);\r\n }\r\n }, [defaultOption]);\r\n //funciones o eventos\r\n options.map(function (option: Option, index, array) {\r\n if (option?.iconLeft) {\r\n if (option?.iconLeft.type == undefined) {\r\n option.iconLeft = Muicon[option?.iconLeft as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n\r\n if (option?.iconRight) {\r\n if (option?.iconRight.type == undefined) {\r\n option.iconRight = Muicon[option?.iconRight as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n });\r\n\r\n const handleClickMenusItem = (event: any, index: any) => {\r\n if (defaultOption && index == undefined) {\r\n setSelectedIndex(defaultOption);\r\n setValue(defaultOption);\r\n } else if (index != undefined) {\r\n setSelectedIndex(String(index + 1));\r\n setValue(String(index + 1));\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <Grid container sx={{ height: heightContainer, width: widthContainer, flexDirection: \"column\" }}>\r\n <Paper data-testid='menu-content' sx={{ width: menuSize, height: heightContainer, overflow: 'auto' }}>\r\n {header && (\r\n header.component\r\n )}\r\n <MenuList sx={{ height: options.length * 45, padding: \"8px 0px\" }}>\r\n {options.map((option, index) => (\r\n <>\r\n <MenuItem\r\n disabled={disable == true ? true : false}\r\n key={index}\r\n selected={String(index + 1) === selectedIndex}\r\n onClick={(event) => handleClickMenusItem(event, index)}\r\n >\r\n {option.iconLeft ?\r\n <ListItemIcon sx={{ color: String(index + 1) === selectedIndex ? \"primary\" : \"active\" }}>\r\n <SvgIcon fontSize=\"small\" color={String(index + 1) === selectedIndex ? \"primary\" : \"action\"} component={option.iconLeft} />\r\n </ListItemIcon>\r\n : \"\"}\r\n <Grid container size={12} sx={{ maxWidth: 220, flexWrap: \"noWrap\", alignItems: \"center\" }}>\r\n <Typography noWrap variant=\"caption\" color={String(index + 1) === selectedIndex ? \"primary\" : \"active\"}>{option.name}</Typography>\r\n {option.iconRight ?\r\n <ListItemIcon sx={{ minWidth: \"0px !important\", color: String(index + 1) === selectedIndex ? \"primary\" : \"active\" }}>\r\n <SvgIcon fontSize=\"small\" color={String(index + 1) === selectedIndex ? \"primary\" : \"action\"} component={option.iconRight} />\r\n </ListItemIcon>\r\n : \"\"}\r\n </Grid>\r\n </MenuItem>\r\n {\r\n option.divider == true ?\r\n <Divider />\r\n : \"\"\r\n }\r\n </>\r\n ))}\r\n </MenuList>\r\n </Paper>\r\n <Grid container>\r\n {options.map((option, index) => (\r\n option.page ?\r\n String(index + 1) == value ? (\r\n <Box data-testid='menu-page-content' sx={{ padding: \"16px\", width: pageSize, height: heightContainer }} key={index}>\r\n {option.page}\r\n </Box>\r\n ) : \"\"\r\n : (<Typography color=\"error\">No se ha configurado el componente a visualizar</Typography>)\r\n ))}\r\n </Grid>\r\n </Grid>\r\n </>\r\n )\r\n};","import { useState, useEffect } from 'react';\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n return {\r\n width,\r\n height\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}","//REACT\r\nimport React, { Children, useEffect } from \"react\";\r\n//MATERIAL\r\nimport { Button, Typography, Box, SvgIcon, Tab, Tabs, Badge } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\n//COMPONENTES\r\nimport { SCToastNotification } from '../Components/ToastNotification/SCToastNotification';\r\nimport { ToastBaseProperties } from '../Components/ToastNotification';\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Option {\r\n //informativas\r\n name?: string;\r\n iconOrBadge: string | number | null | undefined | any | React.ReactNode | React.ReactElement | React.ElementType;\r\n //apariencia\r\n disabled?: boolean;\r\n //funcionales\r\n page: React.ReactNode | React.ReactElement;\r\n}\r\n\r\ninterface SCTabsProps {\r\n //informativas \r\n options: Option[];\r\n defaultOption?: string;\r\n typeIcon?: \"badge\" | \"icon\";\r\n //apariencia\r\n background?: string;\r\n iconPosition?: \"top\" | \"bottom\" | \"start\" | \"end\";\r\n colorTab?: \"secondary\" | \"primary\";\r\n orientation?: \"horizontal\" | \"vertical\";\r\n variant?: \"standard\" | \"fullWidth\" | \"scrollable\";\r\n scrollButtons?: boolean;\r\n //funcionales\r\n children?: any;\r\n}\r\n\r\nexport const SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colorTab, orientation, variant, scrollButtons, children }: SCTabsProps) => {\r\n //CONSTANTES\r\n const [toast, setToast] = React.useState<ToastBaseProperties | null>(null);\r\n //VARIABLES\r\n let i = 0;\r\n let j = 0;\r\n let k = 0;\r\n let l = 0;\r\n let validateTypeIcon = true;\r\n //STATES\r\n const [value, setValue] = React.useState(\"1\");\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (defaultOption) {\r\n handleChange(event, undefined);\r\n }\r\n }, [defaultOption]);\r\n //FUNCIONES O EVENTOS\r\n options.map(function (option) {\r\n const optionsLength = options.length;\r\n if (option?.iconOrBadge) {\r\n if (typeIcon == \"icon\") {\r\n if (option?.iconOrBadge in Muicon == true) {\r\n validateTypeIcon = true;\r\n option.iconOrBadge = Muicon[option?.iconOrBadge as keyof typeof Muicon]\r\n } else {\r\n validateTypeIcon = false;\r\n setTimeout(() => {\r\n setToast({\r\n type: \"error\",\r\n title: \"Componente SCTabs\",\r\n subtitle: \"En Option todos los iconOrBadge deben ser iconos de MUI, por favor verificar.\",\r\n time: 50,\r\n });\r\n }, 10);\r\n return;\r\n }\r\n } else if (typeIcon == \"badge\") {\r\n if (option?.iconOrBadge in Muicon == false) {\r\n validateTypeIcon = true;\r\n option\r\n } else {\r\n validateTypeIcon = false;\r\n setTimeout(() => {\r\n setToast({\r\n type: \"error\",\r\n title: \"Componente SCTabs\",\r\n subtitle: \"En Option todos los iconOrBadge deben ser numeros para el badge, por favor verificar.\",\r\n time: 10,\r\n });\r\n }, 10);\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n\r\n const handleChange = (event: any, newValue: any) => {\r\n if (defaultOption && newValue == undefined) {\r\n setValue(defaultOption);\r\n } else if (newValue != undefined) {\r\n setValue(newValue);\r\n }\r\n };\r\n\r\n\r\n\r\n return (\r\n <>\r\n\r\n {validateTypeIcon == true ?\r\n <Box sx={{ height: orientation == \"vertical\" ? '100%' : \"auto\", display: 'flex', flexDirection: orientation == \"vertical\" ? \"row\" : \"column\" }} id=\"tabsitos\">\r\n <TabContext value={value}>\r\n <Tabs\r\n data-testid='tab-container'\r\n value={value}\r\n onChange={handleChange}\r\n variant={variant ? orientation == \"vertical\" && variant == \"fullWidth\" ? \"standard\" : variant : \"standard\"}\r\n scrollButtons={scrollButtons == false ? false : true}\r\n visibleScrollbar={scrollButtons == false ? true : false}\r\n textColor={colorTab}\r\n indicatorColor={colorTab}\r\n orientation={orientation || \"horizontal\"}\r\n sx={{ borderBottom: orientation == \"vertical\" ? 0 : 1, borderRight: orientation == \"vertical\" ? 1 : 0, borderColor: 'divider', background: background || \"\" }}\r\n >\r\n {options.map((option) => (\r\n <Tab\r\n data-testid='tab-item'\r\n value={String((i = i + 1))}\r\n key={(j = j + 1)}\r\n label={option.name || \"\"}\r\n disabled={option.disabled || false}\r\n iconPosition={iconPosition || \"end\"}\r\n icon={typeIcon == \"badge\" ?\r\n <Badge\r\n sx={{\r\n width: \"20px\", height: \"20px\",\r\n \"& .MuiBadge-badge\": {\r\n top: \"10px\", right: \"10px\",\r\n },\r\n }}\r\n variant=\"standard\"\r\n badgeContent={option.iconOrBadge}\r\n color={value == String(i) ? colorTab ? colorTab : \"primary\" : \"default\"}\r\n />\r\n : typeIcon == \"icon\" ?\r\n <SvgIcon fontSize=\"small\" component={option.iconOrBadge} color={value == String(i) ? colorTab ? colorTab : \"primary\" : \"action\"} sx={{ width: \"20px\", height: \"20px\" }} />\r\n : \"\"\r\n }\r\n sx={{ \"& .MuiTab-icon\": { margin: \"0px !important\", }, padding: \"10px 16px\", gap: \"4px\" }}\r\n />\r\n ))}\r\n </Tabs>\r\n {children}\r\n {options.map((option) => (\r\n <TabPanel\r\n key={(k = k + 1)}\r\n value={String((l = l + 1))}\r\n sx={{ padding: \"16px\" }}\r\n >\r\n {option.page ? (\r\n option.page\r\n ) : (\r\n <Typography>No se ha configurado el componente a visualizar </Typography>\r\n )}\r\n </TabPanel>\r\n ))}\r\n </TabContext>\r\n </Box>\r\n :\r\n <Box sx={{ height: \"200px\" }}>\r\n\r\n {toast && <SCToastNotification data-testid='error-tab-message' {...toast} />}\r\n </Box>\r\n }\r\n </>\r\n );\r\n};","// Calendar.tsx\r\nimport React, { useState } from 'react';\r\nimport { Box } from '@mui/material';\r\nimport dayjs from 'dayjs';\r\nimport { CalendarToolbar } from './CalendarToolbar';\r\nimport { MonthView } from './Views/MonthView';\r\nimport { WeekView } from './Views/WeekView';\r\nimport { DayView } from './Views/DayView';\r\nimport { CalendarProps, CalendarView } from './Types';\r\n\r\nexport const Calendar: React.FC<CalendarProps> = ({\r\n events,\r\n onDayClick,\r\n onMoreClick,\r\n onEventClick, \r\n view: initialView = 'month',\r\n onViewChange,\r\n toolbar,\r\n}) => {\r\n const [view, setView] = useState<CalendarView>(initialView);\r\n const [currentDate, setCurrentDate] = useState(dayjs());\r\n\r\n const handleViewChange = (newView: CalendarView) => {\r\n setView(newView);\r\n onViewChange?.(newView);\r\n };\r\n\r\n const handleNavigate = (action: 'PREV' | 'NEXT' | 'TODAY') => {\r\n let newDate = currentDate;\r\n const unit = view === 'month' ? 'month' : 'day';\r\n\r\n if (action === 'PREV') newDate = currentDate.subtract(1, unit);\r\n else if (action === 'NEXT') newDate = currentDate.add(1, unit);\r\n else if (action === 'TODAY') newDate = dayjs();\r\n\r\n setCurrentDate(newDate);\r\n };\r\n\r\n return (\r\n <Box>\r\n <CalendarToolbar\r\n labelDate={currentDate}\r\n view={view}\r\n onView={handleViewChange}\r\n onNavigate={handleNavigate}\r\n >\r\n {toolbar}\r\n </CalendarToolbar>\r\n\r\n {view === 'month' && (\r\n <MonthView\r\n events={events}\r\n onDayClick={onDayClick}\r\n onMoreClick={onMoreClick}\r\n onEventClick={onEventClick} \r\n currentDate={currentDate}\r\n />\r\n )}\r\n\r\n {view === 'week' && (\r\n <WeekView\r\n events={events}\r\n currentDate={currentDate}\r\n onDayClick={onDayClick}\r\n onMoreClick={onMoreClick}\r\n onEventClick={onEventClick} \r\n />\r\n )}\r\n\r\n {view === 'day' && (\r\n <DayView\r\n events={events}\r\n currentDate={currentDate}\r\n onEventClick={onEventClick} \r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n","// React\r\nimport React, { useState } from 'react';\r\n// MUI Material\r\nimport { ChevronLeft, ChevronRight, KeyboardArrowDown, LightModeOutlined } from '@mui/icons-material';\r\nimport { Box, Chip, IconButton, Menu, MenuItem, Stack, Typography } from '@mui/material';\r\n// Local types\r\nimport { CalendarView } from './Types';\r\n// Day.js\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport 'dayjs/locale/es';\r\ndayjs.locale('es');\r\n\r\n// Interfaces - Types\r\ninterface CalendarToolbarProps {\r\n labelDate: Dayjs;\r\n view: CalendarView;\r\n onView: (view: CalendarView) => void;\r\n onNavigate: (action: 'TODAY' | 'PREV' | 'NEXT') => void;\r\n children?: React.ReactNode;\r\n}\r\n// CalendarToolbar Component\r\nexport const CalendarToolbar: React.FC<CalendarToolbarProps> = ({\r\n labelDate,\r\n view,\r\n onView,\r\n onNavigate,\r\n children,\r\n}) => {\r\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleViewChange = (newView: CalendarView) => {\r\n onView(newView);\r\n handleMenuClose();\r\n };\r\n\r\n const getFormattedDate = () => {\r\n if (view === 'month') {\r\n return labelDate.format('MMMM YYYY');\r\n }\r\n if (view === 'week') {\r\n return `${labelDate.startOf('week').add(1, 'day').format('DD MMM')} - ${labelDate.endOf('week').format('DD MMM YYYY')}`;\r\n }\r\n return labelDate.format(' DD MMMM YYYY');\r\n };\r\n\r\n return (\r\n\r\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={.5} px={1} py={.5}>\r\n <Box>\r\n <Chip\r\n label=\"Hoy\"\r\n icon={<LightModeOutlined fontSize=\"small\" />}\r\n color=\"primary\"\r\n onClick={() => onNavigate('TODAY')}\r\n />\r\n </Box>\r\n\r\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\r\n <IconButton aria-label=\"Anterior\" onClick={() => onNavigate('PREV')} size=\"small\" color=\"primary\">\r\n <ChevronLeft fontSize=\"small\" />\r\n </IconButton>\r\n <IconButton aria-label=\"Siguiente\" onClick={() => onNavigate('NEXT')} size=\"small\" color=\"primary\">\r\n <ChevronRight fontSize=\"small\" />\r\n </IconButton>\r\n <Typography variant=\"h6\" color=\"primary\" data-testid=\"currentDate\">\r\n {getFormattedDate()}\r\n </Typography>\r\n <IconButton onClick={handleMenuOpen} size=\"small\" color=\"primary\" aria-label=\"Cambiar vista\">\r\n <KeyboardArrowDown fontSize=\"small\" />\r\n </IconButton>\r\n <Menu\r\n anchorEl={anchorEl}\r\n open={open}\r\n onClose={handleMenuClose}\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\r\n >\r\n <MenuItem onClick={() => handleViewChange('month')}>Mes</MenuItem>\r\n <MenuItem onClick={() => handleViewChange('week')}>Semana</MenuItem>\r\n <MenuItem onClick={() => handleViewChange('day')}>Día</MenuItem>\r\n </Menu>\r\n </Stack>\r\n\r\n {/* Children alineados a la derecha si existen */}\r\n {children ? <Box>{children}</Box> : <Box width=\"24px\" />} {/* Placeholder si no hay children */}\r\n </Stack>\r\n\r\n );\r\n};\r\n","// React\r\nimport React from 'react';\r\n// MUI\r\nimport { Box, Typography, IconButton, Paper, Tooltip, Stack, Divider } from '@mui/material';\r\nimport AddIcon from '@mui/icons-material/Add';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\n// Utils\r\nimport { getMonthDays, isToday, stateColors } from '../Utils';\r\nimport { CalendarProps } from '../Types';\r\nimport { CalendarEventCard } from '../Event';\r\nimport { SCDrawer } from '../../Drawer';\r\n\r\ndayjs.extend(localeData);\r\ndayjs.extend(isBetween);\r\n\r\ninterface Props extends Pick<CalendarProps, 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick'> {\r\n currentDate: dayjs.Dayjs;\r\n}\r\n\r\nexport const MonthView = ({ events, onDayClick, onMoreClick, currentDate, onEventClick }: Props) => {\r\n const days = getMonthDays(currentDate);\r\n const weekDays = Array.from({ length: 7 }, (_, i) => dayjs().day(i));\r\n\r\n\r\n // Estado para el drawer\r\n const [openDrawer, setOpenDrawer] = React.useState(false);\r\n const [selectedDay, setSelectedDay] = React.useState<dayjs.Dayjs | null>(null);\r\n const [selectedEvents, setSelectedEvents] = React.useState<typeof events>([]);\r\n\r\n return (\r\n <Box width=\"100%\" sx={{ overflowX: 'auto' }}>\r\n <Box minWidth=\"1050px\">\r\n {/* Encabezado de días */}\r\n <Box display=\"grid\" gridTemplateColumns=\"repeat(7, minmax(150px, 1fr))\" gap={0.5} mb={1}>\r\n {weekDays.map((day) => (\r\n <Box key={day.day()} textAlign=\"center\" py={0.5}>\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {day.format('dddd')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Grilla de días */}\r\n <Box display=\"grid\" gridTemplateColumns=\"repeat(7, minmax(150px, 1fr))\" gap={0.5}>\r\n {days.map((day) => {\r\n const dayEvents = events.filter((e) =>\r\n day.isBetween(e.start.startOf('day'), e.end.endOf('day'), null, '[]')\r\n );\r\n const isCurrentMonth = day.month() === currentDate.month();\r\n\r\n return (\r\n <Paper\r\n key={day.toString()}\r\n onClick={() => onDayClick?.(day)}\r\n sx={{\r\n minHeight: 120,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n boxShadow: 'none',\r\n bgcolor: isCurrentMonth ? 'grey.50' : 'background.default',\r\n cursor: 'pointer',\r\n '&:hover': { bgcolor: 'primary.50' },\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <Box p={1} flexShrink={0}>\r\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"flex-start\">\r\n <Box\r\n sx={{\r\n width: 24,\r\n height: 24,\r\n borderRadius: '50%',\r\n backgroundColor: isToday(day) ? 'primary.main' : undefined,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: isToday(day) ? 'white' : 'text.secondary' }}\r\n >\r\n {day.date()}\r\n </Typography>\r\n </Box>\r\n\r\n {dayEvents.length > 2 && (\r\n <Tooltip title=\"Más eventos\">\r\n <IconButton\r\n color=\"primary\"\r\n size=\"small\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onMoreClick?.(day, dayEvents);\r\n setSelectedDay(day);\r\n setSelectedEvents(dayEvents);\r\n }}\r\n >\r\n <AddIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {/* Eventos */}\r\n <Box display=\"flex\" flexDirection=\"column\" gap={0.5} p={1} pt={0} overflow=\"hidden\">\r\n {dayEvents.slice(0, 2).map((event) => (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {dayEvents.length > 2 && (\r\n <Stack justifyContent=\"flex-end\" px={1} pb={0.5} onClick={(e) => e.stopPropagation()} >\r\n <SCDrawer\r\n width='350px'\r\n title={day.format('DD [de] MMMM YYYY')}\r\n open={openDrawer}\r\n buttonDrawer={{ text: `+ ${dayEvents.length}` }}\r\n anchor='right'\r\n actions={false}\r\n arrayElements={[{\r\n component: (() => {\r\n const [first, ...rest] = dayEvents;\r\n\r\n return (\r\n <Box display=\"flex\" width=\"100%\" flexDirection=\"column\" height=\"100%\" pr={1.5}>\r\n <Typography width={\"100%\"} color=\"text.secondary\"> Proximo evento </Typography>\r\n {first && (\r\n <Box p={1} pb={1} width={\"100%\"} >\r\n <CalendarEventCard\r\n event={first}\r\n color={stateColors[first.state]}\r\n onClick={() => onEventClick?.(first, day)}\r\n sx={{\r\n whiteSpace: 'normal',\r\n '& .MuiTypography-root': {\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n }\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n <Divider flexItem sx={{ width: \"100%\" }} />\r\n <Typography width={\"100%\"} py={1} color=\"text.secondary\"> Eventos restantes </Typography>\r\n\r\n {/* Scroll de eventos restantes */}\r\n <Box\r\n width=\"100%\"\r\n height=\"100%\"\r\n flex={1}\r\n overflow=\"auto\"\r\n p={1}\r\n pt={1}\r\n display=\"flex\"\r\n flexDirection=\"column\"\r\n gap={1.5}\r\n >\r\n {rest.map((event) => (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n sx={{\r\n whiteSpace: 'normal',\r\n '& .MuiTypography-root': {\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n })()\r\n }]}\r\n />\r\n\r\n\r\n\r\n </Stack>\r\n )\r\n }\r\n </Paper>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n </Box >\r\n );\r\n};\r\n\r\n","import dayjs, { Dayjs } from 'dayjs';\r\n// Funcion para obotener los días del mes\r\nexport function getMonthDays(date: Dayjs) {\r\n const start = date.startOf('month').day(0); \r\n const end = date.endOf('month').day(6); \r\n\r\n const days: Dayjs[] = [];\r\n let current = start;\r\n\r\n while (current.isBefore(end) || current.isSame(end, 'day')) {\r\n days.push(current);\r\n current = current.add(1, 'day');\r\n }\r\n\r\n return days;\r\n}\r\n// Funcion para obtener al dia actual\r\nexport const isToday = (date: dayjs.Dayjs) => {\r\n return date.isSame(dayjs(), 'day');\r\n};\r\n// Definición de colores por estado\r\nexport const stateColors: Record<string, string> = {\r\n Asignada: 'warning.main',\r\n Finalizado: \"primary.main\",\r\n Vencida: 'error.main',\r\n EnProgreso: 'success.main',\r\n};\r\n\r\n\r\n","import React from 'react';\r\nimport { Box, Stack, Typography, Theme, Divider } from '@mui/material';\r\nimport { CalendarEvent } from './Types';\r\nimport { capitalize } from '../../generales';\r\n\r\ninterface Props {\r\n event: CalendarEvent;\r\n color?: string;\r\n sx?: object;\r\n onClick?: (event: CalendarEvent) => void; \r\n}\r\n\r\nexport const CalendarEventCard: React.FC<Props> = ({ event, color, sx, onClick }) => {\r\n return (\r\n <Stack\r\n direction=\"row\"\r\n padding={0.5}\r\n borderRadius={0.5}\r\n alignItems=\"flex-start\"\r\n minHeight=\"20px\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onClick?.(event); \r\n }}\r\n sx={(theme: Theme) => ({\r\n backgroundColor: theme.palette.common.white,\r\n boxShadow: theme.shadows[2],\r\n color: theme.palette.text.secondary,\r\n overflow: 'hidden',\r\n cursor: onClick ? 'pointer' : 'default', \r\n ...sx,\r\n })}\r\n >\r\n <Divider\r\n orientation=\"vertical\"\r\n flexItem\r\n sx={{\r\n width: '2px',\r\n backgroundColor: color ?? 'primary.main',\r\n borderRadius: '2px',\r\n }}\r\n />\r\n\r\n <Box\r\n px={1}\r\n py={0.5}\r\n flex=\"1\"\r\n minWidth={0}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n >\r\n <Typography\r\n color=\"text.primary\"\r\n variant=\"caption\"\r\n noWrap\r\n sx={{\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {capitalize(event.title)}\r\n </Typography>\r\n </Box>\r\n </Stack>\r\n );\r\n};\r\n\r\n","// React\r\nimport React from 'react';\r\n// MUI Material\r\nimport { Box, Typography } from '@mui/material';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\n// Utils, Types and Components\r\nimport { stateColors } from '../Utils';\r\nimport { CalendarEvent, CalendarProps } from '../Types';\r\nimport { CalendarEventCard } from '../Event';\r\n\r\ndayjs.extend(localeData);\r\n// interfaces\r\ninterface Props extends Pick<CalendarProps, 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick'> {\r\n currentDate: dayjs.Dayjs;\r\n}\r\n// Week view\r\nexport const WeekView: React.FC<Props> = ({ events, currentDate, onDayClick, onEventClick }) => {\r\n const startOfWeek = currentDate.startOf('week');\r\n const days = Array.from({ length: 7 }, (_, i) => startOfWeek.add(i, 'day'));\r\n const hours = Array.from({ length: 24 }, (_, i) => i);\r\n\r\n // Función para definir tipo de borde por hora\r\n const getCellBorderType = (cellHour: number, dayEvents: typeof events) => {\r\n for (const event of dayEvents) {\r\n const start = event.start.hour() + event.start.minute() / 60;\r\n const end = event.end.hour() + event.end.minute() / 60;\r\n\r\n const cellStart = cellHour;\r\n const cellEnd = cellHour + 1;\r\n\r\n if (cellEnd > start && cellStart < end) {\r\n if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01)\r\n return 'full';\r\n if (Math.abs(cellStart - start) < 0.01) return 'start'; // Celda donde inicia\r\n if (Math.abs(cellEnd - end) < 0.01) return 'end'; // Celda donde termina\r\n return 'middle'; // Está en medio\r\n }\r\n }\r\n return 'none';\r\n };\r\n\r\n return (\r\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\r\n\r\n {/* Header de días */}\r\n <Box display=\"flex\" bgcolor=\"background.default\">\r\n <Box width={45} bgcolor=\"background.default\" />\r\n {days.map((day) => (\r\n <Box\r\n key={day.toString()}\r\n height={40}\r\n flex={1}\r\n pl={0.5}\r\n textAlign=\"center\"\r\n display=\"flex\"\r\n flexDirection=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"flex-start\"\r\n >\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {day.format('dddd')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Grid de horas y eventos */}\r\n <Box display=\"flex\" flex={1}>\r\n {/* Columna de las horas */}\r\n <Box width={45} bgcolor=\"background.default\">\r\n {hours.map((h) => (\r\n <Box\r\n key={h}\r\n height={60}\r\n textAlign=\"right\"\r\n pr={1}\r\n borderTop=\"1px solid\"\r\n borderColor=\"divider\"\r\n >\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {dayjs().hour(h).format('h A')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Columnas de días */}\r\n {days.map((day) => {\r\n const dayEvents = events.filter((event) =>\r\n day.isBetween(event.start.startOf('day'), event.end.endOf('day'), null, '[]')\r\n );\r\n\r\n return (\r\n <Box\r\n key={day.toString()}\r\n flex={1}\r\n borderLeft=\"1px solid\"\r\n borderColor=\"divider\"\r\n position=\"relative\"\r\n data-testid={`week-day-column-${day.format('YYYY-MM-DD')}`}\r\n onClick={() => onDayClick?.(day)}\r\n >\r\n {/* Celdas horarias con lógica de borde */}\r\n {hours.map((hourIdx) => {\r\n const borderType = getCellBorderType(hourIdx, dayEvents);\r\n\r\n return (\r\n <Box\r\n key={hourIdx}\r\n height={60}\r\n borderTop=\"1px solid\"\r\n borderColor={\r\n borderType === 'start' || borderType === 'full' || borderType === 'none'\r\n ? 'divider'\r\n : 'transparent'\r\n }\r\n borderBottom={\r\n borderType === 'end' || borderType === 'full'\r\n ? '1px solid divider'\r\n : undefined\r\n }\r\n />\r\n );\r\n })}\r\n\r\n\r\n {/* Renderizado de eventos */}\r\n {dayEvents.map((event) => {\r\n const eventStart = day.isSame(event.start, 'day')\r\n ? event.start\r\n : day.startOf('day').hour(0).minute(0);\r\n\r\n const eventEnd = day.isSame(event.end, 'day')\r\n ? event.end\r\n : day.endOf('day').hour(23).minute(59);\r\n\r\n const startMinutes = eventStart.hour() * 60 + eventStart.minute();\r\n const durationMinutes = eventEnd.diff(eventStart, 'minute');\r\n\r\n\r\n\r\n return (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n sx={{\r\n position: 'absolute',\r\n top: `${startMinutes + 15}px`,\r\n left: 4,\r\n right: 4,\r\n cursor: 'pointer',\r\n height: \"auto\"\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n","// React\r\nimport React from 'react';\r\n// MUI Material\r\nimport { Box, Typography } from '@mui/material';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\n// Utils, Types and Components\r\nimport { CalendarEvent, CalendarProps } from '../Types';\r\nimport { stateColors } from '../Utils';\r\nimport { CalendarEventCard } from '../Event';\r\n\r\n// Interfaces\r\ninterface Props extends Pick<CalendarProps, 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick'> {\r\n currentDate: dayjs.Dayjs;\r\n}\r\n// Array para mostrar las 24 hrs del día\r\nconst hours = Array.from({ length: 24 }, (_, i) => i);\r\n\r\n// Day view\r\nexport const DayView: React.FC<Props> = ({ events, currentDate, onEventClick }) => {\r\n // Función para saber si la hora está dentro de un evento\r\n const getCellBorderType = (cellHour: number, dayEvents: CalendarEvent[]) => {\r\n for (const event of dayEvents) {\r\n const start = event.start.hour() + event.start.minute() / 60;\r\n const end = event.end.hour() + event.end.minute() / 60;\r\n\r\n const cellStart = cellHour;\r\n const cellEnd = cellHour + 1;\r\n\r\n if (cellEnd > start && cellStart < end) {\r\n if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01)\r\n return 'full';\r\n if (Math.abs(cellStart - start) < 0.01) return 'start';\r\n if (Math.abs(cellEnd - end) < 0.01) return 'end';\r\n return 'middle';\r\n }\r\n }\r\n return 'none';\r\n };\r\n\r\n const dayEvents = events.filter((event) =>\r\n currentDate.isBetween(event.start.startOf('day'), event.end.endOf('day'), null, '[]')\r\n );\r\n\r\n return (\r\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\r\n\r\n {/* Header */}\r\n <Box display=\"flex\" borderBottom=\"1px solid\" borderColor=\"primary.main\" bgcolor=\"background.paper\">\r\n <Box width={47} bgcolor=\"background.default\" borderBottom=\"1px solid\" borderColor=\"transparent\" />\r\n <Box\r\n flex={1}\r\n display=\"flex\"\r\n flexDirection=\"column\"\r\n textAlign=\"start\"\r\n gap={0.5}\r\n py={1}\r\n bgcolor=\"primary.50\"\r\n >\r\n <Typography variant=\"h6\" color=\"text.secondary\">\r\n {currentDate.format('D')}\r\n </Typography>\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {currentDate.format('dddd')}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n\r\n {/* Grid de horas */}\r\n <Box display=\"flex\" flex={1}>\r\n <Box width={47} bgcolor=\"background.default\">\r\n {hours.map((h) => (\r\n <Box\r\n key={h}\r\n height={60}\r\n textAlign=\"right\"\r\n pr={1}\r\n borderTop=\"1px solid\"\r\n borderRight=\"1px solid\"\r\n borderColor=\"divider\"\r\n >\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {dayjs().hour(h).format('h A')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Contenedor del día */}\r\n <Box flex={1} position=\"relative\">\r\n {hours.map((hourIdx) => {\r\n const borderType = getCellBorderType(hourIdx, dayEvents);\r\n\r\n return (\r\n <Box\r\n key={hourIdx}\r\n height={60}\r\n borderTop=\"1px solid\"\r\n borderColor={\r\n borderType === 'start' ||\r\n borderType === 'full' ||\r\n borderType === 'none'\r\n ? 'divider'\r\n : 'transparent'\r\n }\r\n borderBottom={\r\n borderType === 'end' || borderType === 'full'\r\n ? '1px solid divider'\r\n : undefined\r\n }\r\n />\r\n );\r\n })}\r\n\r\n {/* Renderizado de eventos */}\r\n {dayEvents.map((event) => {\r\n const eventStart = currentDate.isSame(event.start, 'day')\r\n ? event.start\r\n : currentDate.startOf('day').hour(0).minute(0);\r\n\r\n const eventEnd = currentDate.isSame(event.end, 'day')\r\n ? event.end\r\n : currentDate.endOf('day').hour(23).minute(59);\r\n\r\n const startMinutes = eventStart.hour() * 60 + eventStart.minute();\r\n const durationMinutes = eventEnd.diff(eventStart, 'minute');\r\n\r\n return (\r\n <CalendarEventCard\r\n key={`${event.id}-${currentDate.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event)}\r\n sx={{\r\n position: 'absolute',\r\n top: `${startMinutes + 15}px`,\r\n left: 4,\r\n right: 4,\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n","import { createTheme } from '@mui/material/styles';\r\nimport { ERPTheme, ADPROTheme, ADCTheme } from './theme';\r\n\r\nexport const SincoTheme = createTheme({\r\n ...ERPTheme\r\n})\r\n\r\nexport let AdproSincoTheme = createTheme({\r\n ...ADPROTheme\r\n})\r\n\r\nexport let ADCSincoTheme = createTheme({\r\n ...ADCTheme\r\n})\r\n","import React from \"react\";\r\nimport type { } from \"@mui/x-data-grid/themeAugmentation\";\r\nimport { Components, Theme } from \"@mui/material\";\r\nimport {\r\n InfoRounded,\r\n CheckCircleRounded,\r\n WarningRounded,\r\n ErrorRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nexport const components: Components<Theme> = {\r\n MuiSelect: {\r\n styleOverrides: {\r\n outlined: {\r\n paddingBlock: \"13px\"\r\n },\r\n iconStandard: {\r\n \"&.MuiSelect-iconStandard.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .4em)\",\r\n }\r\n },\r\n iconFilled: {\r\n \"&.MuiSelect-iconFilled.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .15em)\",\r\n }\r\n },\r\n iconOutlined: {\r\n \"&.MuiSelect-iconOutlined.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .35em)\",\r\n }\r\n },\r\n icon: {\r\n width: 16,\r\n height: 16,\r\n },\r\n root: {\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n letterSpacing: \"0.15px\",\r\n lineHeight: \"19px\",\r\n },\r\n },\r\n },\r\n MuiSpeedDialIcon: {\r\n styleOverrides: {\r\n icon: {\r\n height: 24,\r\n width: 24,\r\n },\r\n },\r\n },\r\n MuiSpeedDialAction: {\r\n styleOverrides: {\r\n fab: {\r\n height: 40,\r\n width: 40,\r\n },\r\n },\r\n },\r\n MuiBadge: {\r\n styleOverrides: {\r\n badge: {\r\n fontSize: \"11px\",\r\n fontWeight: 400,\r\n lineHeight: \"11px\",\r\n letterSpacing: \".14px\"\r\n }\r\n }\r\n },\r\n MuiSpeedDial: {\r\n styleOverrides: {\r\n fab: {\r\n height: 56,\r\n width: 56,\r\n },\r\n },\r\n },\r\n MuiAccordion: {\r\n styleOverrides: {\r\n root: {\r\n \".MuiButtonBase-root.MuiAccordionSummary-root\": {\r\n minHeight: 44,\r\n height: 44,\r\n },\r\n },\r\n },\r\n },\r\n MuiTabs: {\r\n styleOverrides: {\r\n root: {\r\n minHeight: 40,\r\n },\r\n },\r\n },\r\n MuiTab: {\r\n styleOverrides: {\r\n labelIcon: {\r\n paddingBlock: 10,\r\n },\r\n root: {\r\n textTransform: \"none\",\r\n minHeight: 40,\r\n },\r\n },\r\n },\r\n MuiDataGrid: {\r\n defaultProps: {\r\n density: \"compact\",\r\n },\r\n styleOverrides: {\r\n columnHeader: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n columnSeparator: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n iconButtonContainer: {\r\n fontSize: 16,\r\n },\r\n columnHeaderDraggableContainer: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n\r\n columnHeaderTitle: {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 500,\r\n fontSize: 13,\r\n lineHeight: 1.5,\r\n letterSpacing: 0.17,\r\n\r\n },\r\n\r\n row: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"22px\",\r\n minHeight: \"22px !important\",\r\n maxHeight: \"22px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"28px\",\r\n minHeight: \"28px !important\",\r\n maxHeight: \"28px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"48px\",\r\n minHeight: \"48px !important\",\r\n maxHeight: \"48px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n\r\n cell: {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 300,\r\n fontSize: 12,\r\n lineHeight: 1.5,\r\n letterSpacing: 0.17,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"22px\",\r\n minHeight: \"22px !important\",\r\n maxHeight: \"22px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"28px\",\r\n minHeight: \"28px !important\",\r\n maxHeight: \"28px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"48px\",\r\n minHeight: \"48px !important\",\r\n maxHeight: \"48px !important\",\r\n },\r\n },\r\n ],\r\n // COMPONENTES DENTRO DE CELDAS\r\n \".MuiButtonBase-root\": {\r\n lineHeight: 0,\r\n textTransform: \"capitalize\",\r\n },\r\n // CELDA ENFOCADA\r\n \".MuiDataGrid-cell\": {\r\n \"&:focus\": {\r\n outline: \"transparent\",\r\n borderWidth: 0,\r\n },\r\n },\r\n },\r\n // BOTOM MENU EN LAS CABECERA DE CADA COLUMNA\r\n menuIconButton: {\r\n svg: {\r\n fontSize: \"16px\",\r\n },\r\n },\r\n menu: {\r\n svg: {\r\n fontSize: \"16px !important\",\r\n },\r\n \".MuiMenuItem-root\": {\r\n minHeight: \"28px\",\r\n height: \"28px\",\r\n },\r\n },\r\n pinnedRows: {\r\n borderTop: \"1px solid rgba(228, 236, 244, 1)\",\r\n },\r\n root: {\r\n\r\n // FONT-SIZE DE CELDA EN MODO EDICION\r\n \".MuiInputBase-root\": {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 300,\r\n fontSize: 12,\r\n letterSpacing: 0.17,\r\n borderRadius: \"0px\",\r\n },\r\n // CELDA FOCUS\r\n \".Mui-focused, .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0px !important\",\r\n },\r\n // TAMAÑO PEQUEÑO\r\n \"&.MuiDataGrid-root--densityCompact\": {\r\n \".MuiSvgIcon-root\": {\r\n fontSize: 16,\r\n },\r\n \".MuiDataGrid-cellCheckbox\": {\r\n \".MuiButtonBase-root\": {\r\n padding: 4,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n MuiRating: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n sizeSmall: {\r\n fontSize: 18,\r\n },\r\n sizeMedium: {\r\n fontSize: 24,\r\n },\r\n sizeLarge: {\r\n fontSize: 30,\r\n },\r\n },\r\n },\r\n MuiDrawer: {\r\n styleOverrides: {\r\n root: {\r\n boxShadow:\r\n \"0px 3px 1px -2px rgba(24, 39, 75, 0.20), 0px 2px 2px 0px rgba(24, 39, 75, 0.14), 0px 1px 5px 0px rgba(24, 39, 75, 0.12)\",\r\n },\r\n },\r\n },\r\n MuiTooltip: {\r\n styleOverrides: {\r\n tooltip: {\r\n backgroundColor: \"#424242\",\r\n },\r\n },\r\n },\r\n MuiDialog: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n boxShadow: \"0px 11px 15px -7px rgba(24, 39, 75, 0.2), 0px 24px 38px 3px rgba(24, 39, 75, 0.14), 0px 9px 46px 8px rgba(24, 39, 75, 0.12)\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"#00000047\",\r\n },\r\n }),\r\n },\r\n },\r\n MuiBackdrop: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: \"transparent\",\r\n }\r\n }\r\n },\r\n MuiDialogTitle: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px !important\",\r\n },\r\n },\r\n },\r\n MuiDialogContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px !important\",\r\n },\r\n },\r\n },\r\n MuiDialogActions: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"12px 16px !important\",\r\n },\r\n },\r\n },\r\n\r\n MuiCheckbox: {\r\n variants: [\r\n {\r\n props: { size: \"large\" },\r\n style: {\r\n padding: 9,\r\n \"& .MuiSvgIcon-fontSizeLarge\": {\r\n height: 24,\r\n width: 24,\r\n fontSize: 24,\r\n },\r\n },\r\n },\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n padding: 3,\r\n },\r\n },\r\n {\r\n props: { size: \"medium\" },\r\n style: {\r\n padding: 4,\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiToggleButton: {\r\n styleOverrides: {\r\n sizeSmall: {\r\n height: 32,\r\n },\r\n sizeMedium: {\r\n height: 38,\r\n },\r\n sizeLarge: {\r\n height: 48,\r\n },\r\n },\r\n },\r\n MuiChip: {\r\n defaultProps: {\r\n size: \"small\",\r\n variant: \"standard\",\r\n color: \"default\",\r\n },\r\n styleOverrides: {\r\n icon: {\r\n opacity: \"70%\",\r\n },\r\n deleteIconSmall: {\r\n height: 16,\r\n width: 16,\r\n },\r\n deleteIconMedium: {\r\n height: 20,\r\n width: 20,\r\n },\r\n sizeSmall: {\r\n height: 16,\r\n },\r\n sizeMedium: {\r\n height: 20,\r\n },\r\n avatarSmall: {\r\n height: 14,\r\n width: 14,\r\n },\r\n avatarMedium: {\r\n height: 18,\r\n width: 18,\r\n },\r\n iconColorPrimary: ({ theme }) => ({\r\n color: theme.palette.primary.main,\r\n }),\r\n colorDefault: ({ theme }) => ({\r\n backgroundColor: theme.palette.default.main,\r\n color: theme.palette.default.contrastText,\r\n }),\r\n deleteIcon: ({ theme }) => ({\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n color: theme.palette.background.paper,\r\n opacity: \"50%\",\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", },\r\n style: {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\",\r\n \":hover\": {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\",\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.action.active,\r\n opacity: \"54%\",\r\n \":hover\": {\r\n color: theme.palette.action.active,\r\n opacity: \"54%\",\r\n }\r\n }\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\"\r\n },\r\n },\r\n ]\r\n }),\r\n\r\n avatar: ({ theme }) => ({\r\n lineHeight: 1.8,\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n backgroundColor: theme.palette.background.paper,\r\n opacity: \"70%\",\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.primary.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.error.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.success.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.info.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.warning.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[400],\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n ],\r\n }),\r\n label: ({ theme }) => ({\r\n ...theme.typography.caption,\r\n }),\r\n root: ({ theme }) => ({\r\n height: \"inherit\",\r\n borderRadius: 4,\r\n variants: [\r\n {\r\n props: { variant: \"outlined\", color: \"default\" },\r\n style: {\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n backgroundColor: \"transparent \",\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.default.main\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.default.main,\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.default.dark\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[50],\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.grey[100],\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[50],\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.grey[100],\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", avatar: true },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"primary\" },\r\n style: {\r\n backgroundColor: theme.palette.chipPrimary.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipPrimary.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"secondary\" },\r\n style: {\r\n backgroundColor: theme.palette.chipSecondary.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipSecondary.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.chipInfo.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipInfo.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.chipError.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipError.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.chipSuccess.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipSuccess.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.chipWarning.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipWarning.dark,\r\n },\r\n },\r\n },\r\n ],\r\n }),\r\n },\r\n },\r\n MuiAvatar: {\r\n styleOverrides: {\r\n root: {\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n },\r\n },\r\n },\r\n MuiAlert: {\r\n defaultProps: {\r\n iconMapping: {\r\n success: React.createElement(CheckCircleRounded),\r\n error: React.createElement(ErrorRounded),\r\n warning: React.createElement(WarningRounded),\r\n info: React.createElement(InfoRounded),\r\n },\r\n },\r\n\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n color: \"#fff\",\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n padding: \"7px 12px 7px 12px\",\r\n },\r\n },\r\n ],\r\n styleOverrides: {\r\n\r\n message: ({ theme }) => ({\r\n padding: \"0px 4px\",\r\n minWidth: 0,\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n color: theme.palette.text.primary\r\n }\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.text.primary\r\n }\r\n },\r\n\r\n ]\r\n }),\r\n icon: ({ theme }) => ({\r\n padding: \"4px\",\r\n marginRight: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: 100,\r\n variants: [\r\n {\r\n props: { variant: \"standard\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.success[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.error[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.info[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.warning[100],\r\n },\r\n },\r\n ]\r\n\r\n }),\r\n action: ({ theme }) => ({\r\n display: \"flex\",\r\n gap: 1.5,\r\n padding: \"0px\",\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n color: theme.palette.action.active\r\n }\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.action.active\r\n }\r\n }\r\n ]\r\n }),\r\n\r\n root: {\r\n padding: \"8px 12px 8px 12px\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1.5,\r\n minWidth: \"296px\",\r\n },\r\n },\r\n },\r\n MuiAlertTitle: {\r\n defaultProps: {\r\n variant: \"subtitle2\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n marginBottom: 0,\r\n marginTop: 2.5\r\n },\r\n }\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n fontFamily: \"Roboto\",\r\n textTransform: \"unset\",\r\n fontWeightLight: 300,\r\n fontSize: \"13px\",\r\n lineHeight: \"normal\",\r\n \"@media(max-width: 885px)\": {\r\n fontSize: 14,\r\n },\r\n },\r\n startIcon: {\r\n marginLeft: 2,\r\n },\r\n endIcon: {\r\n marginRight: 2,\r\n },\r\n sizeSmall: {\r\n height: 26,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \".MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n \".MuiSvgIcon-fontSizeLarge\": {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 32,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \".MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n \".MuiSvgIcon-fontSizeLarge\": {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 38,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \"&.MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n },\r\n },\r\n },\r\n MuiButtonGroup: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiFab: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n circular: {\r\n boxShadow:\r\n \"0px 1px 18px 0px rgba(24, 39, 75, 0.12), 0px 6px 10px 0px rgba(24, 39, 75, 0.14), 0px 3px 5px -1px rgba(24, 39, 75, 0.20)\",\r\n sizeSmall: {\r\n height: 36,\r\n width: 36,\r\n svg: {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 48,\r\n width: 48,\r\n svg: {\r\n height: 22,\r\n width: 22,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 56,\r\n width: 56,\r\n svg: {\r\n height: 24,\r\n width: 24,\r\n },\r\n },\r\n },\r\n extended: {\r\n gap: 1,\r\n boxShadow:\r\n \" 0px 1px 18px 0px rgba(24, 39, 75, 0.12), 0px 6px 10px 0px rgba(24, 39, 75, 0.14), 0px 3px 5px -1px rgba(24, 39, 75, 0.20)\",\r\n sizeSmall: {\r\n height: 32,\r\n svg: {\r\n height: 20,\r\n width: 20,\r\n marginRight: 4,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 38,\r\n svg: {\r\n height: 22,\r\n width: 22,\r\n marginRight: 4,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 48,\r\n svg: {\r\n height: 24,\r\n width: 24,\r\n marginRight: 4,\r\n },\r\n },\r\n },\r\n root: {\r\n textTransform: \"capitalize\",\r\n },\r\n },\r\n },\r\n\r\n MuiFormControl: {\r\n defaultProps: {\r\n size: \"small\",\r\n margin: \"none\",\r\n },\r\n },\r\n MuiFormHelperText: {\r\n defaultProps: {\r\n margin: \"dense\",\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n fontSizeLarge: {\r\n width: 35,\r\n height: 35,\r\n fontSize: 35,\r\n },\r\n fontSizeMedium: {\r\n width: 20,\r\n height: 20,\r\n fontSize: 20,\r\n },\r\n fontSizeSmall: {\r\n width: 16,\r\n height: 16,\r\n fontSize: 16,\r\n },\r\n },\r\n },\r\n MuiIconButton: {\r\n defaultProps: {\r\n color: \"inherit\"\r\n },\r\n styleOverrides: {\r\n sizeSmall: {\r\n padding: 3,\r\n },\r\n sizeMedium: {\r\n padding: 8,\r\n },\r\n sizeLarge: {\r\n padding: 12,\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n defaultProps: {\r\n margin: \"none\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n \"&.MuiInput-underline\": {\r\n marginTop: 9,\r\n },\r\n \".MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\r\n paddingBlock: 6.51,\r\n },\r\n \".MuiOutlinedInput-input\": {\r\n paddingBlock: 14,\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n notchedOutline: {\r\n borderColor: \"rgba(16, 24, 64, 0.23)\",\r\n },\r\n },\r\n },\r\n\r\n MuiAutocomplete: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n \"&.MuiAutocomplete-root .MuiOutlinedInput-root\": {\r\n padding: \"6px 14px 6px 10px !important\",\r\n },\r\n \"& .MuiAutocomplete-endAdornment\": {\r\n top: \"calc(50% - 12px)\",\r\n transform: \"none\",\r\n },\r\n \"&.MuiAutocomplete-root .MuiOutlinedInput-root.MuiInputBase-sizeSmall\":\r\n {\r\n paddingBlock: 3.5,\r\n paddingRight: 14,\r\n \".MuiIconButton-sizeSmall .MuiAutocomplete-popupIndicator\": {\r\n padding: 5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n asterisk: ({ theme }) => ({\r\n color: theme.palette.error.main,\r\n }),\r\n root: {\r\n display: \"flex\",\r\n gap: \".2rem\",\r\n flexDirection: \"row-reverse\",\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n letterSpacing: \"0.15px\",\r\n },\r\n filled: {\r\n \"&.MuiInputLabel-filled.MuiInputLabel-sizeSmall:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(12px,15px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-filled.MuiInputLabel-sizeMedium:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(12px,19px) scale(1)\",\r\n },\r\n },\r\n standard: {\r\n \"&.MuiInputLabel-standard.MuiInputLabel-sizeSmall:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(0, 14px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-standard.MuiInputLabel-sizeMedium:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(0, 16px) scale(1)\",\r\n },\r\n\r\n },\r\n outlined: {\r\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall \": {\r\n transform: \"translate(14px,8px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-outlined \": {\r\n transform: \"translate(14px, 14px) scale(1)\",\r\n\r\n \"&.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -7px) scale(0.75)\",\r\n },\r\n },\r\n },\r\n },\r\n defaultProps: {\r\n margin: \"dense\",\r\n },\r\n },\r\n MuiCard: {\r\n styleOverrides: {\r\n root: {\r\n overflow: \"initial\",\r\n boxShadow:\r\n \"0px 2px 1px -2px rgba(24, 39, 75, 0.20), 0px 1px 1px -1px rgba(24, 39, 75, 0.14), 0px 1px 3px 0px rgba(24, 39, 75, 0.12)\",\r\n },\r\n },\r\n },\r\n MuiCardHeader: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px \",\r\n },\r\n },\r\n },\r\n MuiCardContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px \",\r\n },\r\n },\r\n },\r\n MuiCardActions: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px\",\r\n },\r\n },\r\n },\r\n MuiRadio: {\r\n variants: [\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n padding: 3,\r\n },\r\n },\r\n {\r\n props: { size: \"medium\" },\r\n style: {\r\n padding: 4,\r\n },\r\n },\r\n {\r\n props: { size: \"large\" },\r\n style: {\r\n padding: 9,\r\n \"& .MuiSvgIcon-fontSizeLarge\": {\r\n width: 24,\r\n height: 24,\r\n fontSize: 24,\r\n },\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiSwitch: {\r\n variants: [\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n height: 22,\r\n \".MuiSwitch-switchBase\": {\r\n padding: 3,\r\n },\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiTextField: {\r\n defaultProps: {\r\n size: \"small\",\r\n margin: \"none\",\r\n },\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n \".MuiInputBase-input.MuiInputBase-inputSizeSmall\": {\r\n padding: 1.5,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n MuiList: {\r\n defaultProps: {\r\n dense: false,\r\n },\r\n styleOverrides: {\r\n padding: {\r\n \".MuiListItem-padding\": {\r\n paddingBlock: 1,\r\n },\r\n },\r\n dense: {\r\n \".MuiListItem-dense\": {\r\n padding: \"0.25px 0px 0.25px 16px\",\r\n },\r\n },\r\n },\r\n },\r\n MuiListItemButton: {\r\n styleOverrides: {\r\n dense: {\r\n padding: \"4px 16px 4px 16px \",\r\n },\r\n root: {\r\n padding: \"8.21px 16px\",\r\n \".MuiListItemText-multiline\": {\r\n marginBlock: \"4px\",\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n dense: {\r\n height: 30,\r\n minHeight: 30,\r\n \".MuiListItemText-root > .MuiTypography-root\": {\r\n lineHeight: \"14.3px\",\r\n letterSpacing: 0.15,\r\n },\r\n },\r\n root: {\r\n padding: \"7px 16px 7px 16px\",\r\n \".MuiMenuList-root\": {\r\n height: 34,\r\n minHeight: 34,\r\n },\r\n \".MuiListItemText-root > .MuiTypography-root\": {\r\n lineHeight: \"20px\",\r\n letterSpacing: 0.17,\r\n },\r\n \".MuiListItemIcon-root\": {\r\n minWidth: 32,\r\n },\r\n },\r\n },\r\n },\r\n MuiTableBody: {\r\n styleOverrides: {\r\n root: {\r\n \".MuiTableCell-body.MuiTableCell-sizeMedium\": {\r\n padding: \"16px !important\",\r\n },\r\n },\r\n },\r\n },\r\n MuiTableCell: {\r\n styleOverrides: {\r\n sizeMedium: {\r\n padding: 13,\r\n },\r\n },\r\n },\r\n MuiTable: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n minWidth: 630,\r\n },\r\n },\r\n },\r\n};","import { PaletteOptions } from \"@mui/material\";\r\n\r\n\r\nexport const BasicPalette: Partial<PaletteOptions> = {\r\n default: {\r\n main: \"#E4E5E7\",\r\n dark: \"#D1D3D7\",\r\n light: \"#F2F2F3\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipInfo: {\r\n main: \"#C0E8FC\",\r\n dark: \"#9CD8FA\",\r\n light: \"#E0F4FE\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipWarning: {\r\n main: \"#FCE4C0\",\r\n dark: \"#FAD19C\",\r\n light: \"#F3F2F0\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipError: {\r\n main: \"#FCD4D4\",\r\n dark: \"#F4B9B9\",\r\n light: \"#FEEAEA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSuccess: {\r\n main: \"#DDF8C3\",\r\n dark: \"#C8F3A2\",\r\n light: \"#EFFCE2\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n error: {\r\n 50: \"#F9E8E8\",\r\n 100: \"#F1C7C7\",\r\n 200: \"#E8A1A1\",\r\n 300: \"#DF7B7B\",\r\n light: \"#D85F5F\",\r\n main: \"#D14343\",\r\n 600: \"#CC3D3D\",\r\n 700: \"#C63434\",\r\n 800: \"#C02C2C\",\r\n dark: \"#B51E1E\",\r\n A100: \"#FFECEC\",\r\n A200: \"#FFB9B9\",\r\n A400: \"#FF8686\",\r\n A700: \"#FF6D6D\",\r\n contrastText: \"#ffffff\",\r\n },\r\n warning: {\r\n 50: \"#FFF0E0\",\r\n 100: \"#FEDAB3\",\r\n 200: \"#FDC280\",\r\n 300: \"#FCAA4D\",\r\n light: \"#FC9726\",\r\n main: \"#FB8500\",\r\n 600: \"#FA7D00\",\r\n 700: \"#FA7200\",\r\n 800: \"#F96800\",\r\n dark: \"#F85500\",\r\n A100: \"#FFFFFF\",\r\n A200: \"#FFF1EB\",\r\n A400: \"#FFCCB8\",\r\n A700: \"#FFBA9F\",\r\n contrastText: \"#ffffff\",\r\n },\r\n info: {\r\n 50: \"#E6F3F8\",\r\n 100: \"#C0E2EE\",\r\n 200: \"#96CFE2\",\r\n 300: \"#6CBCD6\",\r\n light: \"#4DADCE\",\r\n main: \"#2D9FC5\",\r\n 600: \"#2897BF\",\r\n 700: \"#228DB8\",\r\n 800: \"#1C83B0\",\r\n dark: \"#1172A3\",\r\n A100: \"#D4EFFF\",\r\n A200: \"#A1DCFF\",\r\n A400: \"#6ECAFF\",\r\n A700: \"#54C1FF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n success: {\r\n 50: \"#F2F9E7\",\r\n 100: \"#DDEFC4\",\r\n 200: \"#C7E49D\",\r\n 300: \"#B1D975\",\r\n light: \"#A0D158\",\r\n main: \"#8FC93A\",\r\n 600: \"#87C334\",\r\n 700: \"#7CBC2C\",\r\n 800: \"#72B525\",\r\n dark: \"#60A918\",\r\n A100: \"#EDFFDE\",\r\n A200: \"#D2FFAB\",\r\n A400: \"#B6FF78\",\r\n A700: \"#A9FF5E\",\r\n contrastText: \"#ffffff\",\r\n },\r\n grey: {\r\n 50: \"#FBFBFB\",\r\n 100: \"#F5F5F6\",\r\n 200: \"#EAEBEC\",\r\n 300: \"#DCDEE0\",\r\n 400: \"#CED1D4\",\r\n 500: \"#C4C7CA\",\r\n 600: \"#B9BDC1\",\r\n 700: \"#B2B7BB\",\r\n 800: \"#AAAEB3\",\r\n 900: \"#A2A6AB\",\r\n A100: \"#FFFFFF\",\r\n A200: \"#FFFFFF\",\r\n A400: \"#D4EAFF\",\r\n A700: \"#BBDDFF\",\r\n },\r\n text: {\r\n primary: \"#101840de\",\r\n secondary: \"#10184099\",\r\n disabled: \"#10184061\",\r\n },\r\n action: {\r\n active: \"#1018408a\",\r\n hover: \"#1018400a\",\r\n selected: \"#10184014\",\r\n disabled: \"#10184042\",\r\n disabledBackground: \"#1018401f\",\r\n focus: \"#1018401f\",\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#fff\",\r\n },\r\n common: {\r\n black: \"#000\",\r\n white: \"#fff\",\r\n },\r\n divider: \"#0000001f\",\r\n};\r\n\r\nexport const paletteERP: PaletteOptions = {\r\n primary: {\r\n 50: \"#E4ECF4\",\r\n 100: \"#BCD0E3\",\r\n 200: \"#8FB1D0\",\r\n 300: \"#6392BD\",\r\n light: \"#417AAE\",\r\n main: \"#2063A0\",\r\n 600: \"#1C5B98\",\r\n 700: \"#18518E\",\r\n 800: \"#134784\",\r\n dark: \"#0B3573\",\r\n A100: \"#A5C5FF\",\r\n A200: \"#72A4FF\",\r\n A400: \"#3F83FF\",\r\n A700: \"#2572FF\",\r\n contrastText: \"#ffffff\",\r\n\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#C4E1F5\",\r\n dark: \"#A2CDEE\",\r\n light: \"#E2F0FA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#C4F6FD\",\r\n dark: \"#A8F1FB\",\r\n light: \"#E0FBFE\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n\r\nexport const paletteADPRO: PaletteOptions = {\r\n primary: {\r\n 50: \"#F8FAFB\",\r\n 100: \"#E6EFF0\",\r\n 200: \"#D2E3E4\",\r\n 300: \"#82C6CB\",\r\n light: \"#2B9DA7\",\r\n main: \"#058C97\",\r\n 600: \"#04848F\",\r\n 700: \"#047984\",\r\n 800: \"#036F7A\",\r\n dark: \"#015C69\",\r\n A100: \"#98F0FF\",\r\n A200: \"#65E9FF\",\r\n A400: \"#32E1FF\",\r\n A700: \"#32E1FF\",\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#CEE7E9\",\r\n dark: \"#B2D9DC\",\r\n light: \"#E3F1F2\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#C4F6FD\",\r\n dark: \"#A8F1FB\",\r\n light: \"#E0FBFE\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n\r\nexport const paletteADC: PaletteOptions = {\r\n primary: {\r\n 50: \"#F8FAFB\",\r\n 100: \"#E6EFF0\",\r\n 200: \"#D2E3E4\",\r\n 300: \"#82C6CB\",\r\n light: \"#2B9DA7\",\r\n main: \"#058C97\",\r\n 600: \"#04848F\",\r\n 700: \"#047984\",\r\n 800: \"#036F7A\",\r\n dark: \"#015C69\",\r\n A100: \"#98F0FF\",\r\n A200: \"#65E9FF\",\r\n A400: \"#32E1FF\",\r\n A700: \"#32E1FF\",\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#D4D8F7\",\r\n dark: \"#B2B9F0\",\r\n light: \"#E5E8FA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#E0E0E0\",\r\n dark: \"#D1D1D1\",\r\n light: \"#EBEBEB\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n","import { Breakpoints } from '@mui/material';\r\nimport { createBreakpoints } from '@mui/system';\r\n\r\nexport const breakpoints: Breakpoints = createBreakpoints({\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 960,\r\n lg: 1280,\r\n xl: 1920,\r\n },\r\n});\r\n","import { Mixins } from '@mui/material';\r\nimport { breakpoints } from './breakpoints';\r\n\r\nexport const mixins: Mixins = {\r\n toolbar: {\r\n minHeight: 48,\r\n [breakpoints.down('md')]: {\r\n minHeight: 52\r\n }\r\n }\r\n};","\r\nimport \"@mui/material/Typography\";\r\nimport \"@mui/material/Radio\";\r\nimport '@mui/material/Chip';\r\nimport \"@mui/material/Checkbox\";\r\nimport \"@mui/material/styles\";\r\n\r\ndeclare module '@mui/material/styles' {\r\n interface TypographyVariants {\r\n body3: React.CSSProperties;\r\n }\r\n\r\n interface TypographyVariantsOptions {\r\n body3?: React.CSSProperties;\r\n }\r\n}\r\ndeclare module '@mui/material/Typography' {\r\n interface TypographyPropsVariantOverrides {\r\n body3: true;\r\n }\r\n\r\n}\r\ndeclare module \"@mui/material/Radio\" {\r\n interface RadioPropsSizeOverrides {\r\n large: true;\r\n }\r\n}\r\ndeclare module \"@mui/material/Checkbox\" {\r\n interface CheckboxPropsSizeOverrides {\r\n large: true;\r\n }\r\n}\r\n\r\n// Augment the palette to include the ChipColors\r\ndeclare module '@mui/material/styles' {\r\n interface Palette {\r\n default: Palette['primary'];\r\n chipPrimary: Palette['primary'];\r\n chipSecondary: Palette['secondary'];\r\n chipInfo: Palette['info'];\r\n chipWarning: Palette['warning'];\r\n chipError: Palette['error'];\r\n chipSuccess: Palette['success'];\r\n }\r\n\r\n\r\n interface PaletteOptions {\r\n default?: Palette['primary'];\r\n chipPrimary?: Palette['primary'];\r\n chipSecondary?: Palette['secondary'];\r\n chipInfo?: Palette['info'];\r\n chipWarning?: Palette['warning'];\r\n chipError?: PaletteOptions['error'];\r\n chipSuccess?: PaletteOptions['success'];\r\n }\r\n}\r\n// extiende la paleta de los chips agregando las nuevas variantes\r\ndeclare module '@mui/material/Chip' {\r\n interface ChipPropsVariantOverrides {\r\n standard: true;\r\n }\r\n interface ChipPropsColorOverrides {\r\n default: true,\r\n chipPrimary: true,\r\n chipSecondary: true,\r\n chipInfo: true,\r\n chipWarning: true;\r\n chipError: true;\r\n chipSuccess: true;\r\n }\r\n}\r\n\r\ndeclare module \"@mui/material/styles\" {\r\n interface PaletteColor {\r\n 50?: string;\r\n 100?: string;\r\n 200?: string;\r\n 300?: string;\r\n 600?: string;\r\n 700?: string;\r\n 800?: string;\r\n }\r\n}\r\n","import { TypographyOptions } from '@mui/material/styles/createTypography';\r\nimport { breakpoints } from './breakpoints';\r\nimport \"./module\"\r\nexport const typography: TypographyOptions = {\r\n fontSize: 13,\r\n body1: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 15,\r\n },\r\n },\r\n body2: {\r\n fontFamily: 'Roboto',\r\n fontSize: 13,\r\n fontWeight: 400,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.17px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 14,\r\n },\r\n },\r\n body3: {\r\n fontFamily: 'Roboto',\r\n fontWeight: 300,\r\n fontSize: 12,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.17px\",\r\n [breakpoints.down('md')]: {\r\n fontSize: 11,\r\n },\r\n },\r\n subtitle1: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14,\r\n fontWeight: 500,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 15,\r\n },\r\n },\r\n subtitle2: {\r\n fontFamily: 'Roboto',\r\n fontSize: 13,\r\n fontWeight: 500,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.1px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 14,\r\n },\r\n },\r\n caption: {\r\n fontFamily: 'Roboto',\r\n fontSize: 11,\r\n fontWeight: 400,\r\n lineHeight: \"14px\",\r\n letterSpacing: \"0.4px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 12,\r\n },\r\n },\r\n overline: {\r\n fontFamily: 'Roboto',\r\n fontSize: 11,\r\n fontWeight: 400,\r\n lineHeight: \"24px\",\r\n letterSpacing: \"1px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 12,\r\n },\r\n },\r\n h6: {\r\n fontFamily: 'Nunito',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 17,\r\n },\r\n },\r\n h5: {\r\n fontFamily: 'Nunito',\r\n fontSize: 18,\r\n fontWeight: 600,\r\n letterSpacing: 0,\r\n lineHeight: \"24px\",\r\n },\r\n h4: {\r\n fontFamily: 'Nunito',\r\n fontSize: 22,\r\n fontWeight: 600,\r\n lineHeight: \"24px\",\r\n letterSpacing: \"0.25px\",\r\n },\r\n h3: {\r\n fontFamily: 'Nunito',\r\n fontSize: 28,\r\n fontWeight: 500,\r\n lineHeight: \"32px\",\r\n letterSpacing: 0,\r\n },\r\n h2: {\r\n fontFamily: 'Nunito',\r\n fontSize: 32,\r\n fontWeight: 400,\r\n lineHeight: \"40px\",\r\n letterSpacing: -0.5,\r\n },\r\n h1: {\r\n fontFamily: 'Nunito',\r\n fontSize: 40,\r\n fontWeight: 300,\r\n letterSpacing: -1.5,\r\n lineHeight: \"48px\",\r\n },\r\n};\r\n","import { Shadows } from '@mui/material/styles/shadows';\r\nexport const shadows: Shadows = [\r\n \"none\",\r\n \"0px 1px 3px rgba(24, 39, 75, 0.12), 0px 1px 1px -1px rgba(24, 39, 75, 0.14), 0px 2px 1px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 1px 5px rgba(24, 39, 75, 0.12), 0px 2px 2px rgba(24, 39, 75, 0.14), 0px 3px 1px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 1px 8px rgba(24, 39, 75, 0.12), 0px 3px 4px rgba(24, 39, 75, 0.14), 0px 3px 3px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 2px 4px -1px rgba(24, 39, 75, 0.2), 0px 4px 5px rgba(24, 39, 75, 0.14), 0px 1px 10px rgba(24, 39, 75, 0.12)\",\r\n \"0px 3px 5px -1px rgba(24, 39, 75, 0.2), 0px 5px 8px rgba(24, 39, 75, 0.14), 0px 1px 14px rgba(24, 39, 75, 0.12)\",\r\n \"0px 3px 5px -1px rgba(24, 39, 75, 0.2), 0px 6px 10px rgba(24, 39, 75, 0.14), 0px 1px 18px rgba(24, 39, 75, 0.12)\",\r\n \"0px 4px 5px -2px rgba(24, 39, 75, 0.2), 0px 7px 10px 1px rgba(24, 39, 75, 0.14), 0px 2px 16px 1px rgba(24, 39, 75, 0.12)\",\r\n \"0px 5px 5px -3px rgba(24, 39, 75, 0.2), 0px 8px 10px 1px rgba(24, 39, 75, 0.14), 0px 3px 14px 2px rgba(24, 39, 75, 0.12)\",\r\n \"0px 5px 6px -3px rgba(24, 39, 75, 0.2), 0px 9px 12px 1px rgba(24, 39, 75, 0.14), 0px 3px 16px 2px rgba(24, 39, 75, 0.12)\",\r\n \"0px 6px 6px -3px rgba(24, 39, 75, 0.2), 0px 10px 14px 1px rgba(24, 39, 75, 0.14), 0px 4px 18px 3px rgba(24, 39, 75, 0.12)\",\r\n \"0px 6px 7px -4px rgba(24, 39, 75, 0.2), 0px 11px 15px 1px rgba(24, 39, 75, 0.14), 0px 4px 20px 3px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 8px -4px rgba(24, 39, 75, 0.2), 0px 12px 17px 2px rgba(24, 39, 75, 0.14), 0px 5px 22px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 8px -4px rgba(24, 39, 75, 0.2), 0px 13px 19px 2px rgba(24, 39, 75, 0.14), 0px 5px 24px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 9px -4px rgba(24, 39, 75, 0.2), 0px 14px 21px 2px rgba(24, 39, 75, 0.14), 0px 5px 26px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 9px -5px rgba(24, 39, 75, 0.2), 0px 15px 22px 2px rgba(24, 39, 75, 0.14), 0px 6px 28px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 10px -5px rgba(24, 39, 75, 0.2), 0px 16px 24px 2px rgba(24, 39, 75, 0.14), 0px 6px 30px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 11px -5px rgba(24, 39, 75, 0.2), 0px 17px 26px 2px rgba(24, 39, 75, 0.14), 0px 6px 32px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 9px 11px -5px rgba(24, 39, 75, 0.2), 0px 18px 28px 2px rgba(24, 39, 75, 0.14), 0px 7px 34px 6px rgba(24, 39, 75, 0.12)\",\r\n \"0px 9px 12px -6px rgba(24, 39, 75, 0.2), 0px 19px 29px 2px rgba(24, 39, 75, 0.14), 0px 7px 36px 6px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 13px -6px rgba(24, 39, 75, 0.2), 0px 20px 31px 3px rgba(24, 39, 75, 0.14), 0px 8px 38px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 13px -6px rgba(24, 39, 75, 0.2), 0px 21px 33px 3px rgba(24, 39, 75, 0.14), 0px 8px 40px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 14px -6px rgba(24, 39, 75, 0.2), 0px 22px 35px 3px rgba(24, 39, 75, 0.14), 0px 8px 42px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 11px 14px -7px rgba(24, 39, 75, 0.2), 0px 23px 36px 3px rgba(24, 39, 75, 0.14), 0px 9px 44px 8px rgba(24, 39, 75, 0.12)\",\r\n \"0px 11px 15px -7px rgba(24, 39, 75, 0.2), 0px 24px 38px 3px rgba(24, 39, 75, 0.14), 0px 9px 46px 8px rgba(24, 39, 75, 0.12)\",\r\n]","import { ThemeOptions } from \"@mui/material/styles\";\r\nimport { components } from \"./components\";\r\nimport { paletteERP, paletteADPRO, paletteADC } from \"./palette\";\r\nimport { mixins } from \"./mixins\";\r\nimport { breakpoints } from \"./breakpoints\";\r\nimport { typography } from \"./typography\";\r\nimport { shadows } from \"./shadows\";\r\n\r\n\r\n// Opcion 2\r\n\r\nconst BasicTheme: Partial<ThemeOptions> = {\r\n components,\r\n typography,\r\n spacing: 8,\r\n mixins,\r\n breakpoints,\r\n shadows,\r\n}\r\n\r\nexport const ERPTheme: ThemeOptions = {\r\n palette: paletteERP,\r\n ...BasicTheme\r\n}\r\n\r\nexport const ADPROTheme: ThemeOptions = {\r\n palette: paletteADPRO,\r\n ...BasicTheme\r\n}\r\n\r\nexport const ADCTheme: ThemeOptions = {\r\n palette: paletteADC,\r\n ...BasicTheme\r\n}\r\n\r\n\r\n// END Opcion 2\r\n\r\n\r\n\r\n"],"mappings":"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","names":["React","Box","Typography","IconButton","Button","Stack","Chip","Grid","event","format","event","format","event","React","useEffect","useState","Box","Typography","IconButton","useEffect","useState","useState","React","useEffect","Box","Typography","IconButton","React","useEffect","useState","Typography","Stack","Box","Popover","Tooltip","SvgIcon","Grid","InfoOutlined","useState","React","useEffect","event","Box","Grid","SvgIcon","Typography","InfoOutlined","Popover","Tooltip","Stack","React","useEffect","InputLabel","FormControl","SvgIcon","Box","Muicon","React","useEffect","Muicon","event","Box","FormControl","InputLabel","SvgIcon","React","useEffect","InputAdornment","MenuItem","TextField","Typography","SvgIcon","ListItemIcon","ListItemText","Divider","FormControlLabel","IconButton","Box","Button","Grid","Muicon","React","useEffect","Muicon","event","Box","Typography","MenuItem","ListItemIcon","SvgIcon","ListItemText","TextField","IconButton","InputAdornment","FormControlLabel","Divider","Grid","Button","React","Box","InputAdornment","Muicon","getIcon","React","getIcon","_a","_b","Chip","Button","Stack","Grid","Typography","IconButton","Box","React","Box","Typography","React","MuiIcons","getIconComponent","React","useEffect","useState","Box","Typography","IconButton","Button","Stack","Close","useState","useEffect","getIconComponent","React","Button","Box","Stack","Typography","IconButton","Close","React","useEffect","useMemo","Button","Checkbox","FormControl","InputAdornment","ListItemIcon","MenuItem","Popover","Stack","TextField","useCallback","useState","MuiIcons","FilterListOutlined","useMemo","useEffect","useMemo","_a","allSelected","React","Button","Popover","Stack","FormControl","TextField","InputAdornment","MenuItem","ListItemIcon","Checkbox","button","React","Stack","Typography","React","useState","Typography","IconButton","Box","Grid","LocalizationProvider","useState","React","fecha","LocalizationProvider","Box","Grid","Typography","IconButton","React","useEffect","useState","LicenseInfo","data","React","Button","Stack","Typography","React","Stack","Typography","Button","React","useEffect","useState","Button","Typography","Modal","IconButton","Tooltip","Box","SvgIcon","Grid","CloseIcon","Muicon","React","Box","Typography","Divider","MenuItem","ListItemIcon","SvgIcon","Grid","useState","useEffect","Muicon","React","event","Grid","MenuItem","ListItemIcon","SvgIcon","Typography","Divider","Box","React","useEffect","Typography","Box","SvgIcon","Muicon","React","useEffect","Muicon","event","Box","SvgIcon","Typography","React","useState","Box","dayjs","React","useState","KeyboardArrowDown","Box","Chip","IconButton","MenuItem","Stack","Typography","dayjs","event","React","Box","Typography","IconButton","Paper","Tooltip","Stack","Divider","dayjs","dayjs","React","Box","Stack","Typography","Divider","event","React","Stack","Divider","Box","Typography","dayjs","React","Box","Typography","Paper","Tooltip","IconButton","event","Stack","Divider","React","Box","Typography","dayjs","localeData","dayjs","localeData","startOfWeek","hours","event","React","Box","Typography","React","Box","Typography","dayjs","dayEvents","event","React","Box","Typography","dayjs","useState","dayjs","React","Box","React","InfoRounded","CheckCircleRounded","WarningRounded","ErrorRounded","React","CheckCircleRounded","ErrorRounded","WarningRounded","InfoRounded"]}
|
|
1
|
+
{"version":3,"sources":["../src/Components/Adjuntar/Adjuntar.tsx","../src/Components/ToastNotification/SCToastNotification.tsx","../src/Components/ToastNotification/useProgress.ts","../src/Components/Modal/Helpers/Data.tsx","../src/Components/Modal/Helpers/Utils.tsx","../src/Components/Modal/SCModal.tsx","../src/generales/capitalize.tsx","../src/Components/Drawer/SCDrawer.tsx","../src/Components/Textfield/SCTextField.tsx","../src/Components/Textfield/Helpers/validateIcon.tsx","../src/Components/Textfield/Helpers/validateKeyDown.tsx","../src/Components/Textfield/Helpers/validateOnBlur.tsx","../src/Components/TextArea/Helpers/validateIcon.tsx","../src/Components/TextArea/SCTextArea.tsx","../src/Components/SCSelect.tsx","../src/Components/SCAutocomplete.tsx","../src/Components/SCDateRange.tsx","../src/Components/Drawer/Helpers/Utils.tsx","../src/Components/Drawer/Helpers/validateInput.tsx","../src/Components/Drawer/Helpers/validateTypeElement.tsx","../src/Components/FooterAction/FooterAction.tsx","../src/Components/MultiSelect/MultiSelect.tsx","../src/Components/MultiSelect/helpers/useHandlers.tsx","../src/Components/MultiSelect/helpers/Utils.tsx","../src/Components/MultiSelect/helpers/useFilteredItems.tsx","../src/Components/PageHeader/PageHeader.tsx","../src/Components/SCCalendarSwipeable.tsx","../src/Components/SCDataGrid.tsx","../src/Components/EmptyState/EmptyState.tsx","../src/assets/ImgEmptyState/create.tsx","../src/assets/ImgEmptyState/empty.tsx","../src/assets/ImgEmptyState/error.tsx","../src/assets/ImgEmptyState/search.tsx","../src/Components/SCDialog.tsx","../src/Components/SCListContent.tsx","../src/Components/SCMenu.tsx","../src/Components/Hooks/useWindowDimensions.ts","../src/Components/SCTabs.tsx","../src/Components/Calendario/Calendar.tsx","../src/Components/Calendario/CalendarToolbar.tsx","../src/Components/Calendario/Views/MonthView.tsx","../src/Components/Calendario/Utils.tsx","../src/Components/Calendario/Event.tsx","../src/assets/LogoCalendario.tsx","../src/Components/Calendario/Views/WeekView.tsx","../src/Components/Calendario/Views/DayView.tsx","../src/Components/SCTime.tsx","../src/Components/SCCard.tsx","../src/Components/SCActivityCalendar.tsx","../src/Theme/index.ts","../src/Theme/components.ts","../src/Theme/palette.ts","../src/Theme/breakpoints.ts","../src/Theme/mixins.ts","../src/Theme/module.ts","../src/Theme/typography.ts","../src/Theme/shadows.ts","../src/Theme/theme.ts"],"sourcesContent":["// React\r\nimport React, { useEffect, useRef, useState } from 'react';\r\n// MUI Material\r\nimport { Box, Button, CircularProgress, IconButton, Stack, Tooltip, Typography, SxProps } from '@mui/material';\r\n// MUI Icons\r\nimport { CloudUploadOutlined, AttachFileOutlined, DeleteOutline, UploadFileOutlined, FileDownload } from '@mui/icons-material';\r\n// Local imports\r\nimport { SCToastNotification, ToastBaseProperties } from '../ToastNotification';\r\n// Interfaces and Types\r\nimport { SCModal } from '../Modal';\r\nimport { AdjuntarProps, UploadedFile } from './Model';\r\n\r\nexport const Attachment = ({\r\n sx,\r\n compact,\r\n error,\r\n maxSize = 400,\r\n fileAccepted = '',\r\n onLoading,\r\n onChange,\r\n downloadAction,\r\n deleteAction,\r\n initialFiles = [],\r\n}: AdjuntarProps<any>) => {\r\n const [files, setFiles] = useState<UploadedFile[]>([]);\r\n const [fileToDelete, setFileToDelete] = useState<UploadedFile | null>(null);\r\n\r\n const [toast, setToast] = useState<ToastBaseProperties | null>(null);\r\n const [openModal, setOpenModal] = useState(false);\r\n const [isDragFile, setIsDragFile] = useState(false);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (initialFiles && initialFiles.length > 0) {\r\n setFiles(initialFiles);\r\n }\r\n }, []);\r\n\r\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragFile(false);\r\n const filesDropped = event.dataTransfer.files;\r\n if (filesDropped && filesDropped.length > 0) {\r\n const fakeEvent = {\r\n target: { files: filesDropped },\r\n } as unknown as React.ChangeEvent<HTMLInputElement>;\r\n handleUpload(fakeEvent);\r\n }\r\n };\r\n\r\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragFile(true);\r\n };\r\n\r\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragFile(false);\r\n };\r\n\r\n const handleUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newFiles = event.target.files;\r\n if (!newFiles) return;\r\n\r\n const nuevosArchivos: UploadedFile[] = [];\r\n const archivosValidos: File[] = [];\r\n\r\n Array.from(newFiles).forEach((file) => {\r\n const isDuplicatedFile = files.findIndex(\r\n (e) => e.name === file.name && e.size === file.size\r\n );\r\n const sizeMB = file.size / (1024 * 1024);\r\n\r\n if (isDuplicatedFile !== -1) {\r\n setToast({\r\n type: 'error',\r\n title: 'Archivo duplicado',\r\n listITems: ['No se permiten archivos duplicados.'],\r\n seeMore: true,\r\n time: 10,\r\n });\r\n return;\r\n }\r\n\r\n if (sizeMB > maxSize) {\r\n nuevosArchivos.push({\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n progress: 0,\r\n uploadError: true,\r\n });\r\n setToast({\r\n type: 'error',\r\n title: 'Carga fallida',\r\n seeMore: true,\r\n listITems: [`El archivo supera el límite de ${maxSize}MB.`],\r\n time: 10,\r\n });\r\n return;\r\n }\r\n\r\n if (\r\n fileAccepted &&\r\n !file.name.match(\r\n new RegExp(\r\n `(${fileAccepted.replace(/\\./g, '\\\\.').replace(/,/g, '|')})$`,\r\n 'i'\r\n )\r\n )\r\n ) {\r\n setToast({\r\n type: 'error',\r\n title: 'Tipo de archivo no permitido',\r\n listITems: [`El archivo ${file.name} no es un tipo permitido.`],\r\n seeMore: true,\r\n time: 10,\r\n });\r\n return;\r\n }\r\n\r\n nuevosArchivos.push({\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n progress: 0,\r\n uploadError: false,\r\n });\r\n archivosValidos.push(file);\r\n });\r\n\r\n if (nuevosArchivos.length > 0) {\r\n setFiles((prev) => {\r\n const actualizados = [...prev, ...nuevosArchivos];\r\n onChange?.([\r\n ...archivosValidos,\r\n ...prev.map((f) => new File([], f.name, { type: f.type })),\r\n ]);\r\n return actualizados;\r\n });\r\n }\r\n\r\n event.target.value = '';\r\n };\r\n\r\n const deleteFiles = (nameFile: string) => {\r\n setFiles((prev) => {\r\n const filtered = prev.filter((e) => e.name !== nameFile);\r\n onChange?.(\r\n filtered.map((f) => new File([], f.name, { type: f.type }))\r\n );\r\n return filtered;\r\n });\r\n };\r\n\r\n return (\r\n <Stack spacing={2}>\r\n {toast && <SCToastNotification {...toast} />}\r\n <input\r\n type=\"file\"\r\n multiple\r\n hidden\r\n ref={inputRef}\r\n onChange={handleUpload}\r\n />\r\n\r\n <Stack\r\n id=\"ZonaAdjuntos\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n bgcolor=\"transparent\"\r\n padding={compact ? '12px 16px' : '16px 24px'}\r\n height={compact ? '56px' : '100%'}\r\n flexDirection={compact ? 'row' : 'column'}\r\n gap={1}\r\n borderRadius={1}\r\n onClick={() => inputRef.current?.click()}\r\n onDrop={handleDrop}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n sx={{\r\n border: error\r\n ? (theme) => `1px solid ${theme.palette.error.main}`\r\n : (theme) => `1px dashed ${theme.palette.grey[500]}`,\r\n cursor: 'pointer',\r\n ':hover': {\r\n backgroundColor: error ? 'error.50' : 'action.hover',\r\n },\r\n ...sx,\r\n }}\r\n >\r\n {onLoading ? (\r\n <Box\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n width=\"100%\"\r\n height=\"450px\"\r\n >\r\n <CircularProgress\r\n sx={{ width: '60px', height: '60px' }}\r\n variant=\"indeterminate\"\r\n />\r\n </Box>\r\n ) : (\r\n <>\r\n <Box\r\n display=\"flex\"\r\n bgcolor={error ? 'error.50' : 'primary.50'}\r\n borderRadius=\"100%\"\r\n p={1}\r\n >\r\n <CloudUploadOutlined\r\n color={error ? 'error' : 'primary'}\r\n fontSize=\"medium\"\r\n />\r\n </Box>\r\n <Stack\r\n width=\"100%\"\r\n flexDirection={compact ? 'row' : 'column'}\r\n alignItems=\"center\"\r\n justifyContent={compact ? 'space-between' : 'center'}\r\n gap={1}\r\n >\r\n <Stack\r\n flexDirection=\"column\"\r\n alignItems={compact ? 'start' : 'center'}\r\n gap={0.5}\r\n >\r\n <Typography variant=\"body2\" color=\"text.primary\">\r\n Arrastrar o adjuntar archivos\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n color={error ? 'error' : 'text.secondary'}\r\n whiteSpace={'nowrap'}\r\n overflow=\"hidden\"\r\n textOverflow=\"ellipsis\"\r\n maxWidth={'450px'}\r\n >\r\n {error\r\n ? `${fileAccepted || 'DOCX, XML, PNG, JPG'} • Archivo no soportado`\r\n : `${fileAccepted || 'DOCX, XML, PNG, JPG'} • Max. ${maxSize}MB`}\r\n </Typography>\r\n </Stack>\r\n\r\n <Button\r\n variant=\"text\"\r\n color=\"primary\"\r\n size=\"small\"\r\n startIcon={\r\n <AttachFileOutlined color=\"primary\" fontSize=\"small\" />\r\n }\r\n >\r\n Adjuntar\r\n </Button>\r\n </Stack>\r\n </>\r\n )}\r\n </Stack>\r\n\r\n {files.length > 0 && (\r\n <Stack\r\n id=\"ContenedorArchivosAdjuntos\"\r\n width=\"100%\"\r\n sx={{\r\n overflowY: 'auto',\r\n ...(files.length > 5 && {\r\n maxHeight: 250,\r\n }),\r\n }}\r\n spacing={1}\r\n >\r\n {files.map((file) => (\r\n <Stack\r\n height={46}\r\n key={file.name + (file.uploadError ? '_error' : '')}\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent=\"space-between\"\r\n gap={2}\r\n padding={1}\r\n borderRadius={1}\r\n sx={{\r\n backgroundColor: file.uploadError ? 'error.50' : 'transparent',\r\n ':hover': {\r\n backgroundColor: file.uploadError\r\n ? 'error.100'\r\n : 'primary.50',\r\n },\r\n }}\r\n >\r\n <Stack direction=\"row\" alignItems=\"center\" gap={1} width=\"100%\">\r\n <UploadFileOutlined\r\n color={file.uploadError ? 'error' : 'primary'}\r\n fontSize=\"small\"\r\n />\r\n <Stack width=\"100%\">\r\n <Typography\r\n variant=\"body2\"\r\n color=\"text.primary\"\r\n whiteSpace={'nowrap'}\r\n overflow=\"hidden\"\r\n textOverflow=\"ellipsis\"\r\n maxWidth={'310px'}\r\n >\r\n {file.name}\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n color={file.uploadError ? 'error' : 'text.secondary'}\r\n >\r\n {file.uploadError && file.size / (1024 * 1024) > maxSize\r\n ? 'Archivo superó el límite • Carga fallida'\r\n : file.uploadError\r\n ? 'Archivo duplicado o inválido • Carga fallida'\r\n : `${(file.size / (1024 * 1024)).toFixed(2)}MB • ${file.type}`}\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n <Tooltip title=\"Descargar\">\r\n <IconButton size=\"small\" onClick={() => downloadAction?.(file.name)}>\r\n <FileDownload fontSize=\"small\" color=\"action\" />\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip title=\"Eliminar\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => {\r\n setFileToDelete(file);\r\n setOpenModal(true);\r\n }}\r\n >\r\n <DeleteOutline fontSize=\"small\" color=\"action\" />\r\n </IconButton>\r\n </Tooltip>\r\n </Stack>\r\n ))}\r\n </Stack>\r\n )}\r\n <SCModal\r\n state=\"delete\"\r\n open={openModal}\r\n setOpen={setOpenModal}\r\n title=\"Eliminar archivo\"\r\n description={`¿Estás seguro que deseas eliminar \"${fileToDelete?.name}\"?`}\r\n action={[\r\n {\r\n text: 'Eliminar',\r\n fn: async () => {\r\n if (fileToDelete) {\r\n try {\r\n if (deleteAction) {\r\n await deleteAction(fileToDelete.name);\r\n }\r\n deleteFiles(fileToDelete.name);\r\n setToast({\r\n title: 'Archivo eliminado',\r\n type: 'success',\r\n time: 2,\r\n });\r\n } catch (error) {\r\n setToast({\r\n title: 'Error al eliminar archivo',\r\n type: 'error',\r\n time: 2,\r\n });\r\n } finally {\r\n setFileToDelete(null);\r\n setOpenModal(false);\r\n }\r\n }\r\n },\r\n },\r\n ]}\r\n />\r\n\r\n </Stack>\r\n );\r\n};\r\n","import React, { ReactElement, useEffect, useState } from 'react';\r\nimport { Stack, LinearProgress, Divider, Box, Typography, IconButton, Button, } from '@mui/material';\r\nimport { Close, InfoRounded, CheckCircleRounded, WarningRounded, ErrorRounded, KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\r\nimport { useProgress } from './useProgress';\r\nimport { ToastBaseProperties, ToastType } from './Model';\r\n\r\nexport const SCToastNotification = (toast: ToastBaseProperties) => {\r\n\r\n const [stateOptions, setStateOptions] = useState(true);\r\n const [stateToast, setStateToast] = useState(true);\r\n const timeProgress = toast.time || 10;\r\n const { progress } = useProgress(timeProgress);\r\n\r\n const toastColorConfig: ToastType = toast.type || 'info';\r\n\r\n const toastIconOption: Record<ToastType, ReactElement> = {\r\n success: <CheckCircleRounded color='success' />,\r\n error: <ErrorRounded color='error' />,\r\n warning: <WarningRounded color='warning' />,\r\n info: <InfoRounded color='info' />,\r\n };\r\n\r\n const acciones = [...(toast.actions || [{ text: \"Action\", fn: () => { alert(\"\") } }, { text: \"Consultar\", fn: () => { } }])];\r\n const ToastIconConfig = toastIconOption[toast.type!];\r\n\r\n const closeToast = () => {\r\n setStateToast(false);\r\n };\r\n\r\n const toggleToastOptions = () => {\r\n setStateOptions((prevShowOptions) => !prevShowOptions);\r\n };\r\n\r\n useEffect(() => {\r\n progress >= 100 && setStateToast(false);\r\n }, [progress]);\r\n\r\n return (\r\n <>\r\n {stateToast && (\r\n <Stack\r\n position={'fixed'}\r\n zIndex={1400}\r\n right={16}\r\n top={16}\r\n width={370}\r\n sx={{\r\n boxShadow: (theme) => theme.shadows[8],\r\n }}\r\n >\r\n <Box\r\n padding={1.5}\r\n gap={1.5}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n sx={{\r\n backgroundColor: {\r\n success: 'success.50',\r\n error: 'error.50',\r\n warning: 'warning.50',\r\n info: 'info.50',\r\n }[toastColorConfig],\r\n }}\r\n >\r\n <Stack\r\n p={1}\r\n gap={1}\r\n borderRadius={50}\r\n bgcolor={{\r\n success: 'success.100',\r\n error: 'error.100',\r\n warning: 'warning.100',\r\n info: 'info.100',\r\n }[toast.type ?? 'info']\r\n }\r\n >\r\n <Stack>\r\n {ToastIconConfig}\r\n </Stack>\r\n </Stack>\r\n <Divider orientation=\"vertical\" flexItem />\r\n <Stack width={285}>\r\n <Stack\r\n justifyContent=\"space-between\"\r\n flexDirection=\"row\"\r\n alignItems=\"center\"\r\n >\r\n <Typography variant=\"subtitle2\" color=\"text.primary\">\r\n {toast.title}\r\n </Typography>\r\n <IconButton\r\n size=\"small\"\r\n data-testid=\"close-icon\"\r\n onClick={closeToast}\r\n >\r\n <Close fontSize=\"small\" />\r\n </IconButton>\r\n </Stack>\r\n <Stack gap={0.5}>\r\n <Typography color=\"text.primary\" variant=\"body2\">\r\n {toast.subtitle}\r\n </Typography>\r\n {!stateOptions && toast.listITems && toast.listITems.length > 0 && (\r\n <Stack>\r\n {toast.listITems.map((element, i) => (\r\n <Typography variant=\"caption\" key={i}>\r\n • {element}\r\n </Typography>\r\n ))}\r\n </Stack>\r\n )}\r\n </Stack>\r\n <Stack justifyContent=\"flex-end\" flexDirection=\"row\" gap={.5}>\r\n {toast.actions && toast.actions.length > 0 && (\r\n <Stack flexDirection=\"row\" gap={.5}>\r\n {toast.actions.map((button, index) => (\r\n <Button\r\n key={index}\r\n color={\r\n toast.type === \"info\"\r\n ? \"info\"\r\n : toast.type === \"success\"\r\n ? \"success\"\r\n : toast.type === \"error\"\r\n ? \"error\"\r\n : \"warning\"\r\n\r\n }\r\n variant=\"text\"\r\n onClick={button.fn}\r\n disabled={button.disabled || false}\r\n size=\"small\"\r\n >\r\n {button.text.charAt(0).toUpperCase() + button.text.slice(1).toLowerCase()}\r\n </Button>\r\n ))}\r\n </Stack>\r\n )}\r\n {toast.seeMore && (\r\n <Button\r\n onClick={toggleToastOptions}\r\n size=\"small\"\r\n variant=\"text\"\r\n color={toastColorConfig}\r\n >\r\n {stateOptions ? 'Ver más' : 'Ver menos'}\r\n {stateOptions ? <KeyboardArrowDown /> : <KeyboardArrowUp />}\r\n </Button>\r\n )}\r\n </Stack>\r\n </Stack>\r\n </Box>\r\n <LinearProgress\r\n sx={{\r\n '.MuiLinearProgress-bar': {\r\n transition: '0.1s linear !important',\r\n transform: 'scaleX(-1)',\r\n },\r\n }}\r\n color={toastColorConfig}\r\n variant=\"determinate\"\r\n value={100 - progress}\r\n />\r\n </Stack>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useProgress = (timeProgress: number, lote?: number) => {\r\n const [progress, setProgress] = useState(0);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n }\r\n if (lote) {\r\n const nextProgress = prev + lote;\r\n return nextProgress <= 100 ? nextProgress : 100;\r\n } else {\r\n return prev + 1;\r\n }\r\n });\r\n }, timeProgress * 10);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [timeProgress, lote]);\r\n return {\r\n progress: progress,\r\n };\r\n};\r\n\r\n\r\nexport const ToastProgress = (timeProgress: number) => {\r\n const [progress, setProgress] = useState<number>(100);\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setProgress((prev) => {\r\n if (prev <= 0) { clearInterval(interval) }\r\n return prev - 1\r\n });\r\n }, (timeProgress * 10));\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [timeProgress]);\r\n return {\r\n progressToast: progress\r\n }\r\n}\r\n\r\n","import React from \"react\";\r\nimport { Info, Warning } from \"@mui/icons-material\";\r\n\r\nexport const modalStateConfig = {\r\n info: {\r\n color: 'info',\r\n defaultDescription: 'Se [sincronizarán] los datos trabajados en modo offline y se [subirán] a los servidores.',\r\n icon: <Info color=\"info\" fontSize=\"medium\" />,\r\n },\r\n delete: {\r\n color: 'delete',\r\n defaultDescription: '[Elemento específico] [dejará de existir en todos los lugares donde esté en uso]. Esta acción es irreversible.',\r\n icon: <Info color=\"error\" fontSize=\"medium\" />,\r\n },\r\n warning: {\r\n color: 'warning',\r\n defaultDescription: 'Se descartará la [creación] y los cambios se perderán.',\r\n icon: <Warning color=\"warning\" fontSize=\"medium\" />,\r\n },\r\n};\r\n\r\n","import * as MuiIcons from '@mui/icons-material';\r\nimport { FilterListOutlined } from '@mui/icons-material';\r\n\r\nexport const getIconComponent = (iconName?: string): React.ElementType => {\r\n return iconName && MuiIcons[iconName as keyof typeof MuiIcons]\r\n ? MuiIcons[iconName as keyof typeof MuiIcons]\r\n : FilterListOutlined;\r\n};\r\n\r\nexport const getModalColor = (state: string): string => {\r\n const colors: Record<string, string> = {\r\n info: 'info.100',\r\n delete: 'error.100',\r\n warning: 'warning.100',\r\n };\r\n return colors[state] ?? 'warning.100';\r\n};\r\n\r\nexport const getButtonColor = (state: string): 'inherit' | 'info' | 'error' | 'warning' => {\r\n const colorMap: Record<string, 'info' | 'error' | 'warning'> = {\r\n info: 'info',\r\n delete: 'error',\r\n warning: 'warning',\r\n };\r\n return colorMap[state] ?? 'info';\r\n};\r\n\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { Modal, Box, Typography, IconButton, Button, Stack } from '@mui/material';\r\nimport { Close } from '@mui/icons-material';\r\nimport { getButtonColor, getIconComponent, getModalColor, ModalProps, modalStateConfig } from './Helpers';\r\nimport { capitalize } from '../../generales';\r\n\r\nexport const SCModal = ({\r\n buttonModal,\r\n state = 'info',\r\n open,\r\n setOpen,\r\n title,\r\n description,\r\n action,\r\n}: ModalProps & { setOpen?: React.Dispatch<React.SetStateAction<boolean>> }) => {\r\n\r\n const [internalOpen, setInternalOpen] = useState(open ?? false);\r\n\r\n const isControlled = Boolean(setOpen);\r\n const modalOpen = isControlled ? open ?? false : internalOpen;\r\n const setModalOpen = isControlled ? setOpen! : setInternalOpen;\r\n\r\n const handleToggle = useCallback(() => setModalOpen(prev => !prev), [setModalOpen]);\r\n const handleClose = useCallback(() => setModalOpen(false), [setModalOpen]);\r\n\r\n const Icon = useMemo(() => getIconComponent(buttonModal?.icon), [buttonModal?.icon]);\r\n\r\n const prevAction = useMemo(\r\n () => action ?? [\r\n { text: 'Cancelar', fn: handleClose },\r\n { text: 'Consultar', fn: () => { } }\r\n ],\r\n [action, handleClose]\r\n );\r\n\r\n const { icon, defaultDescription } = modalStateConfig[state];\r\n\r\n return (\r\n <>\r\n\r\n {/* <Button\r\n data-testid=\"test-buttonModal\"\r\n color={buttonModal?.color ?? 'primary'}\r\n onClick={handleToggle}\r\n variant={buttonModal?.variant ?? 'text'}\r\n size={buttonModal?.size ?? 'small'}\r\n startIcon={buttonModal?.iconPosition === 'left' && <Icon />}\r\n endIcon={buttonModal?.iconPosition === 'right' && <Icon />}\r\n >\r\n {capitalize(buttonModal?.text ?? 'filtrar')}\r\n </Button> */}\r\n {buttonModal && (\r\n <Button\r\n data-testid=\"test-buttonModal\"\r\n color={buttonModal?.color ?? 'primary'}\r\n onClick={handleToggle}\r\n variant={buttonModal?.variant ?? 'text'}\r\n size={buttonModal?.size ?? 'small'}\r\n startIcon={buttonModal?.iconPosition === 'left' && <Icon />}\r\n endIcon={buttonModal?.iconPosition === 'right' && <Icon />}\r\n >\r\n {capitalize(buttonModal?.text ?? 'filtrar')}\r\n </Button>\r\n )}\r\n\r\n <Modal open={modalOpen} onClose={handleClose} sx={{ boxShadow: 8 }}>\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: 400,\r\n bgcolor: 'background.paper',\r\n borderRadius: 1,\r\n boxShadow: 24\r\n }}\r\n >\r\n {/* Header */}\r\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\">\r\n <Stack direction=\"row\" alignItems=\"center\" p={1} gap={1.5}>\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n borderRadius=\"50%\"\r\n height={36}\r\n width={36}\r\n bgcolor={getModalColor(state)}\r\n >\r\n {icon}\r\n </Box>\r\n <Typography variant=\"h6\" color=\"text.primary\">\r\n {title}\r\n </Typography>\r\n </Stack>\r\n <IconButton onClick={handleClose} data-testid=\"test-buttonClose\">\r\n <Close color=\"action\" />\r\n </IconButton>\r\n </Stack>\r\n\r\n {/* Body */}\r\n <Stack py={1} px={3} gap={1.5}>\r\n <Typography variant=\"body1\">\r\n {description || defaultDescription}\r\n </Typography>\r\n </Stack>\r\n\r\n {/* Footer */}\r\n {action && (\r\n <Stack\r\n id=\"Action\"\r\n direction=\"row\"\r\n gap={1}\r\n p={1}\r\n justifyContent=\"end\"\r\n bgcolor={\"grey.50\"}\r\n sx={{ borderRadius: 1 }}\r\n >\r\n <Button\r\n color=\"inherit\"\r\n variant={'text'}\r\n onClick={handleClose}\r\n size=\"small\"\r\n >\r\n {capitalize(\"cancelar\")}\r\n </Button>\r\n <Button\r\n data-testid='test-aceptar'\r\n color={getButtonColor(state)}\r\n variant={'contained'}\r\n onClick={action[0]?.fn}\r\n disabled={false}\r\n size=\"small\"\r\n >\r\n {capitalize(action[0].text)}\r\n </Button>\r\n </Stack>\r\n )}\r\n </Box>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n","export function capitalize(text: string): string { return text.charAt(0).toUpperCase() + text.slice(1) }","//React\r\nimport React, { useEffect, useRef, useMemo, useCallback } from 'react'\r\n// MUI material\r\nimport { Box, Drawer, Typography, IconButton, Button, Stack, Chip } from \"@mui/material\";\r\n// Iconons\r\nimport Grid from '@mui/material/Grid2';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\r\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\r\n// componentes personalizados\r\nimport { SCTextField } from '../Textfield';\r\nimport { SCToastNotification, ToastBaseProperties } from '../ToastNotification';\r\nimport { SCTextArea } from '../TextArea';\r\nimport { SCSelect } from '../SCSelect';\r\nimport { SCAutocomplete } from '../SCAutocomplete';\r\nimport { SCDateRange } from '../SCDateRange';\r\n// Validaciones del componente\r\nimport { DrawerProps, getIcon, validateInputs, validateTypeElements } from './Helpers';\r\nimport { set } from 'date-fns';\r\nimport { de } from 'date-fns/locale';\r\n\r\nexport function SCDrawer<T>({\r\n //informativas\r\n title,\r\n arrayElements = [],\r\n actions,\r\n buttonDrawer,\r\n //Apariencia\r\n colorTitle,\r\n anchor = \"left\",\r\n width,\r\n //Funcionales\r\n open,\r\n setOpen,\r\n chipFilters,\r\n}: DrawerProps<T>) {\r\n //CONSTANTE\r\n const scrollRef = useRef<HTMLDivElement>(null);\r\n\r\n // Hooks\r\n const [drawerOpen, setDrawerOpen] = React.useState(open);\r\n const [toast, setToast] = React.useState<ToastBaseProperties | null>(null);\r\n const [stateChipFilters, setChipFilters] = React.useState(false);\r\n const [textFilters, setTextFilters] = React.useState<{ value: any; arrayElement: any }[]>([]);\r\n\r\n useEffect(() => {\r\n if (chipFilters != undefined) {\r\n if (chipFilters.length > 0) {\r\n setTextFilters([]);\r\n inputValidation();\r\n }\r\n }\r\n }, [chipFilters]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n toggleDrawer(true);\r\n }\r\n else {\r\n handleDrawerClose();\r\n }\r\n }, [open]);\r\n\r\n // Manejo de pertura y cierre del Drawer\r\n const handleDrawerClose = () => {\r\n setDrawerOpen(false);\r\n if (setOpen) {\r\n setOpen(false);\r\n }\r\n };\r\n const toggleDrawer = (newOpen: boolean) => () => {\r\n setDrawerOpen(newOpen);\r\n if (setOpen) {\r\n setOpen(true);\r\n }\r\n };\r\n // Icono del botón del Drawer\r\n const ButtonIcon = getIcon(buttonDrawer?.icon);\r\n // Despliegue del notificacion\r\n const setToastWithDelay = (toastContent: ToastBaseProperties) => {\r\n setToast(null);\r\n setTimeout(() => {\r\n setToast(toastContent);\r\n }, 10);\r\n };\r\n\r\n const inputValidation = () => {\r\n if (chipFilters != undefined && chipFilters.length > 0) {\r\n\r\n if (chipFilters && chipFilters.length > 0) {\r\n arrayElements.forEach(arrayElement => {\r\n const { validation, element: typeElement } = validateTypeElements(arrayElement);\r\n\r\n let currentValue: string = \"\";\r\n\r\n if (validation === \"dateRange\") {\r\n if (typeElement.state && typeElement.state[0] && typeElement.state[1]) {\r\n currentValue = `${typeElement.state[0]?.format('DD/MM/YYYY')} - ${typeElement.state[1]?.format('DD/MM/YYYY')}`;\r\n }\r\n } else {\r\n currentValue = typeElement.state?.textValue !== undefined\r\n ? String(typeElement.state.textValue).trim()\r\n : String(typeElement.state).trim();\r\n }\r\n\r\n // Comparar con los valores en chipFilters\r\n chipFilters.forEach(chipFilter => {\r\n const chipValue = String(chipFilter).trim();\r\n\r\n // Si coinciden los valores, agregar al chip\r\n if (currentValue === chipValue && currentValue !== \"\" && currentValue !== \",\") {\r\n setTextFilters(prevFilters => {\r\n const newFilter = { value: currentValue, arrayElement: typeElement };\r\n \r\n // Verificar si ya existe un filtro con el mismo label\r\n const existingFilterIndex = prevFilters.findIndex(filter => \r\n filter.arrayElement.label === arrayElement.label\r\n );\r\n \r\n if (existingFilterIndex !== -1) {\r\n // Si existe, actualizar el valor del filtro existente\r\n const updatedFilters = [...prevFilters];\r\n updatedFilters[existingFilterIndex] = newFilter;\r\n return updatedFilters;\r\n } else {\r\n // Si no existe, agregarlo como nuevo filtro\r\n return [...prevFilters, newFilter];\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n const newFiltersToAdd: { value: any; arrayElement: any }[] = [];\r\n\r\n for (let i = 0; i < arrayElements.length; i++) {\r\n const element = arrayElements[i];\r\n const { validation, element: typeElement } = validateTypeElements(element);\r\n const textValue = typeElement.state?.textValue !== undefined ? String(typeElement.state?.textValue) : String(typeElement.state);\r\n\r\n if (textValue.trim() !== \"\" && textValue.trim() !== \",\") {\r\n let newFilter;\r\n switch (validation) {\r\n case \"dateRange\":\r\n const values = `${typeElement.state[0]?.format('DD/MM/YYYY')} - ${typeElement.state[1]?.format('DD/MM/YYYY')}`\r\n newFilter = { value: values, arrayElement: typeElement };\r\n break;\r\n default:\r\n newFilter = { value: textValue, arrayElement: typeElement };\r\n break;\r\n }\r\n\r\n // Agregar a la lista temporal si no existe\r\n const existingFilterByLabel = newFiltersToAdd.find(filter => \r\n filter.arrayElement.label === element.label\r\n );\r\n \r\n if (existingFilterByLabel) {\r\n // Si ya existe un filtro con el mismo label, actualizar su valor\r\n existingFilterByLabel.value = newFilter.value;\r\n existingFilterByLabel.arrayElement = newFilter.arrayElement;\r\n } else {\r\n // Si no existe, agregarlo como nuevo\r\n newFiltersToAdd.push(newFilter);\r\n }\r\n }\r\n }\r\n\r\n // Actualizar textFilters una sola vez con todos los filtros nuevos\r\n setTextFilters(prevFilters => {\r\n let updatedFilters = [...prevFilters];\r\n \r\n newFiltersToAdd.forEach(newFilter => {\r\n const existingFilterIndex = updatedFilters.findIndex(filter => \r\n filter.arrayElement.label === newFilter.arrayElement.label\r\n );\r\n \r\n if (existingFilterIndex !== -1) {\r\n // Si existe, actualizar el valor del filtro existente\r\n updatedFilters[existingFilterIndex] = newFilter;\r\n } else {\r\n // Si no existe, agregarlo como nuevo filtro\r\n updatedFilters.push(newFilter);\r\n }\r\n });\r\n \r\n return updatedFilters;\r\n });\r\n\r\n validateInputs(arrayElements, setToastWithDelay, handleDrawerClose, setChipFilters, setTextFilters);\r\n }\r\n\r\n }\r\n\r\n const resetElementByType = (originalElement: any, validation: string, typeElement: any) => {\r\n let defaultValue;\r\n\r\n switch (validation) {\r\n case \"textField\":\r\n case \"textArea\":\r\n defaultValue = \"\";\r\n break;\r\n case \"dateRange\":\r\n defaultValue = [null, null];\r\n break;\r\n case \"multiselect\":\r\n defaultValue = { hiddenValue: [], textValue: [] };\r\n break;\r\n default:\r\n defaultValue = { hiddenValue: \"-1\", textValue: \"\" };\r\n }\r\n\r\n if (typeElement.setState) {\r\n typeElement.setState(defaultValue);\r\n }\r\n };\r\n\r\n const cleanFilters = () => {\r\n arrayElements.forEach((element) => {\r\n const { validation, element: typeElement } = validateTypeElements(element);\r\n if (typeElement.setState) {\r\n resetElementByType(element, validation, typeElement);\r\n }\r\n });\r\n setTextFilters([]);\r\n }\r\n\r\n const deleteFilter = (element: any) => {\r\n const { validation, element: typeElement } = validateTypeElements(element);\r\n if (typeElement.setState && shouldShowChips == true) {\r\n resetElementByType(element, validation, typeElement);\r\n\r\n setTextFilters(prevFilters =>\r\n prevFilters.filter(filter => filter.arrayElement.label !== element.label)\r\n );\r\n }\r\n }\r\n\r\n const scroll = (offset: any) => {\r\n if (scrollRef.current) {\r\n scrollRef.current.scrollLeft += offset;\r\n }\r\n };\r\n\r\n // Función para validar si hay chips para mostrar\r\n const hasActiveFilters = () => {\r\n return arrayElements.some(arrayElement => {\r\n const { validation, element: typeElement } = validateTypeElements(arrayElement);\r\n\r\n // Verificar según el tipo de estado\r\n if (typeElement.state.textValue !== undefined) {\r\n return String(typeElement.state.textValue).trim() !== \"\";\r\n } else if (validation === 'dateRange') {\r\n return typeElement.state &&\r\n typeElement.state[0] !== null &&\r\n typeElement.state[1] !== null;\r\n } else {\r\n return String(typeElement.state).trim() !== '' &&\r\n String(typeElement.state).trim() !== ',';\r\n }\r\n });\r\n }; \r\n\r\n // Condición combinada para mostrar chips\r\n const shouldShowChips = chipFilters != undefined && chipFilters.length > 0 ? true : (stateChipFilters === true && hasActiveFilters());\r\n\r\n\r\n // Acciones por defecto\r\n const actionsA = actions == false ? false : actions != undefined ? actions : [{ text: \"Aplicar filtros\", fn: inputValidation }, { text: \"Limpiar filtros\", fn: cleanFilters }];\r\n\r\n return (\r\n <>\r\n {toast && <SCToastNotification {...toast} />}\r\n <Grid container justifyContent=\"flex-start\" flexWrap=\"nowrap\" alignItems=\"center\" sx={{ width: \"100%\" }}>\r\n {shouldShowChips &&\r\n <Box display=\"flex\" alignItems=\"center\" sx={{ maxWidth: \"78%\" }}>\r\n <IconButton onClick={() => scroll(-150)} size='small'>\r\n <ArrowBackIosIcon fontSize='small' />\r\n </IconButton>\r\n <Box\r\n ref={scrollRef}\r\n gap={0.3}\r\n sx={{\r\n display: 'flex',\r\n overflowX: 'auto',\r\n scrollBehavior: 'smooth',\r\n '&::-webkit-scrollbar': { display: 'none' },\r\n }}\r\n >\r\n {textFilters?.map((chipData, index) => (\r\n <Chip\r\n key={index}\r\n label={chipData.value}\r\n {...(chipData.arrayElement.required == false || chipData.arrayElement.required == undefined) ? { onDelete: () => deleteFilter(chipData.arrayElement) } : {}}\r\n color=\"default\"\r\n variant='filled'\r\n size=\"small\"\r\n sx={{\r\n flexShrink: 0, \r\n minWidth: \"auto\", \r\n }}\r\n />\r\n ))}\r\n </Box>\r\n <IconButton onClick={() => scroll(150)} size='small'>\r\n <ArrowForwardIosIcon fontSize='small' />\r\n </IconButton>\r\n </Box>\r\n }\r\n {buttonDrawer?.type == 'chip' ?\r\n <Chip\r\n onClick={toggleDrawer(true)}\r\n color={buttonDrawer?.color}\r\n variant={buttonDrawer?.variant == 'contained' ? 'filled' : 'outlined'}\r\n label={buttonDrawer?.text ?? \"\"}\r\n icon={buttonDrawer?.iconPosition === 'left' && ButtonIcon ? <ButtonIcon fontSize='small' /> : undefined}\r\n deleteIcon={buttonDrawer?.iconPosition === 'right' && ButtonIcon ? <ButtonIcon fontSize='small' /> : undefined}\r\n {...(buttonDrawer?.iconPosition === 'right' && ButtonIcon ? { onDelete: () => { } } : {})}\r\n sx={{\r\n \"& .MuiChip-icon\": {\r\n color: 'inherit'\r\n },\r\n textTransform: \"capitalize\"\r\n }}\r\n />\r\n :\r\n <Button\r\n data-testid=\"test-buttonDrawer\"\r\n sx={{ textTransform: \"capitalize\" }}\r\n color={buttonDrawer?.color}\r\n onClick={toggleDrawer(true)}\r\n size=\"small\"\r\n variant={buttonDrawer?.variant != undefined ? buttonDrawer?.variant : \"text\"}\r\n startIcon={\r\n (buttonDrawer?.iconPosition === 'left' || !buttonDrawer?.iconPosition) && ButtonIcon\r\n ? <ButtonIcon fontSize='small' />\r\n : null\r\n }\r\n endIcon={\r\n buttonDrawer?.iconPosition === 'right' && ButtonIcon\r\n ? <ButtonIcon fontSize='small' />\r\n : null\r\n }\r\n >\r\n {buttonDrawer?.text ?? \"\"}\r\n </Button>\r\n }\r\n </Grid>\r\n <Drawer\r\n open={drawerOpen}\r\n onClose={toggleDrawer(false)}\r\n anchor={anchor ?? \"left\"}\r\n sx={{\r\n \"& .MuiDrawer-paper\": {\r\n width: width ?? \"450px\",\r\n boxSizing: \"border-box\",\r\n borderRadius: anchor !== \"right\" ? \"0px 4px 4px 0px\" : \"4px 0px 0px 4px\",\r\n },\r\n }}\r\n >\r\n <Stack flexDirection=\"column\" height=\"100%\">\r\n <Grid container sx={{ backgroundColor: \"primary.50\", alignItems: \"center\", height: \"42px\", textAlign: \"left\", padding: \"8px 12px\", justifyContent: \"space-between\", alignContent: \"center\" }}>\r\n <Typography variant=\"h6\" color={colorTitle || \"text.primary\"} >\r\n {title ?? \"Personaliza tu búsqueda\"}\r\n </Typography>\r\n <IconButton onClick={handleDrawerClose}>\r\n <CloseIcon data-testid=\"test-button-close\" sx={{ color: \"text.primary\" }} />\r\n </IconButton>\r\n </Grid>\r\n <Stack alignItems=\"flex-start\" height=\"100%\" gap=\"16px\" flex={1} overflow=\"auto\" padding=\"16px\">\r\n {arrayElements?.map((arrayElement, index) => (\r\n <Box\r\n key={`Stack_${arrayElement.type ?? \"\"} ${arrayElement.label ?? \"\"}${index}`}\r\n sx={{ width: \"100%\" }}\r\n >\r\n {arrayElement.component ? (\r\n <Stack direction=\"row\" alignItems=\"left\" gap={1}>\r\n {arrayElement.component}\r\n </Stack>\r\n ) : arrayElement.type === \"textField\" ? (\r\n <SCTextField\r\n title={arrayElement.title}\r\n iconTitle={arrayElement.iconTitle}\r\n infoTitle={arrayElement.infoTitle}\r\n label={arrayElement.label}\r\n placeholder={arrayElement.placeholder}\r\n infoElement={arrayElement.infoElement}\r\n iconInputStart={arrayElement.iconInputStart}\r\n iconInputEnd={arrayElement.iconInputEnd}\r\n maxLength={arrayElement.maxLength}\r\n variant={arrayElement.variant}\r\n format={arrayElement.format}\r\n disabled={arrayElement.disabled}\r\n required={arrayElement.required}\r\n size={arrayElement.size}\r\n width={arrayElement.width}\r\n color={arrayElement.color}\r\n background={arrayElement.background}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n onChange={arrayElement.onChange}\r\n onBlur={arrayElement.onBlur}\r\n onKeyDown={arrayElement.onKeyDown}\r\n />\r\n ) : arrayElement.type === \"textArea\" ? (\r\n <SCTextArea\r\n title={arrayElement.title}\r\n iconTitle={arrayElement.iconTitle}\r\n infoTitle={arrayElement.infoTitle}\r\n label={arrayElement.label}\r\n placeholder={arrayElement.placeholder}\r\n maxLength={arrayElement.maxLength}\r\n variant={arrayElement.variant}\r\n disabled={arrayElement.disabled}\r\n required={arrayElement.required}\r\n width={arrayElement.width}\r\n rows={arrayElement.rows}\r\n background={arrayElement.background}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n onBlur={arrayElement.onBlur}\r\n />\r\n ) : arrayElement.type === \"autocomplete\" ? (\r\n <SCAutocomplete\r\n label={arrayElement.label}\r\n data={arrayElement.data ?? []}\r\n columnGroup={arrayElement.columnGroup}\r\n getItemValue={arrayElement.getItemValue ?? (() => ({ text: '', value: '' }))}\r\n typeFormat={arrayElement.typeFormat}\r\n checkMassive={arrayElement.checkMassive}\r\n deleteType={arrayElement.deleteType}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n fnAplicar={arrayElement.fnAplicar}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n inputChange={arrayElement.inputChange}\r\n />\r\n ) : arrayElement.type === \"select\" ? (\r\n <SCSelect\r\n label={arrayElement.label}\r\n data={arrayElement.data ?? []}\r\n getItemValue={arrayElement.getItemValue ?? (() => ({ text: '', value: '' }))}\r\n width={arrayElement.width}\r\n size={arrayElement.size}\r\n variant={arrayElement.variant}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n fnAplicar={arrayElement.fnAplicar}\r\n setState={arrayElement.setState}\r\n state={arrayElement.state || \"\"}\r\n />\r\n ) : arrayElement.type === \"dateRange\" ? (\r\n <SCDateRange\r\n labelDateInitial={arrayElement.labelDateInitial}\r\n labelDateFinal={arrayElement.labelDateFinal}\r\n required={arrayElement.required}\r\n disabled={arrayElement.disabled}\r\n background={arrayElement.background}\r\n state={arrayElement.state || []}\r\n setState={arrayElement.setState}\r\n />\r\n ) : null}\r\n </Box>\r\n ))}\r\n </Stack>\r\n {actionsA != undefined && actionsA != false ? (\r\n Array.isArray(actionsA) && actionsA?.length > 0 ?\r\n <Grid\r\n sx={{ borderTop: 1, borderColor: \"#1018403B\" }}\r\n container\r\n gap={2}\r\n padding=\"8px 12px\"\r\n height=\"42px\"\r\n alignItems=\"center\"\r\n justifyContent={actionsA.length > 1 ? \"space-between\" : !anchor && anchor != \"right\" ? \"flex-end\" : \"flex-start\"}\r\n flexDirection={anchor != \"right\" ? \"row-reverse\" : \"row\"}\r\n >\r\n {actionsA.map((btn, index) => (\r\n <Button\r\n key={index}\r\n variant={index === 0 || actionsA.length < 2 ? \"contained\" : \"text\"}\r\n color=\"primary\"\r\n onClick={btn.fn}\r\n disabled={btn.disabled || false}\r\n size=\"small\"\r\n >\r\n {btn.text}\r\n </Button>\r\n ))}\r\n </Grid>\r\n : \"\"\r\n ) : \"\"}\r\n </Stack>\r\n </Drawer >\r\n </>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport { FormControl, IconButton, InputAdornment, InputLabel, OutlinedInput, FilledInput, Popover, Input, Box, Typography, SvgIcon, Tooltip } from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid2\";\r\n\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport { Visibility, VisibilityOff, InfoOutlined } from \"@mui/icons-material\";\r\n\r\nimport { SCTextFieldProps } from \"./Model\";\r\nimport '../../App.css';\r\nimport { getIconComponent, getIconValidation, validateKeyDown, validateOnBlurField } from \"./Helpers\";\r\n\r\nexport const SCTextField = ({\r\n //informativas\r\n title,\r\n iconTitle,\r\n infoTitle,\r\n label = \"\",\r\n placeholder = \"\",\r\n\r\n infoElement,\r\n iconInputStart,\r\n iconInputEnd,\r\n\r\n maxLength,\r\n //Apariencia\r\n variant = \"outlined\",\r\n format,\r\n disabled,\r\n required,\r\n size,\r\n width = \"100%\",\r\n color,\r\n background,\r\n //Funcionales\r\n setState,\r\n state,\r\n onChange,\r\n onBlur,\r\n onKeyDown,\r\n}: SCTextFieldProps) => {\r\n\r\n\r\n const inputComponents = {\r\n outlined: OutlinedInput,\r\n filled: FilledInput,\r\n standard: Input,\r\n };\r\n const InputComponent = inputComponents[variant] || OutlinedInput;\r\n\r\n let IconInputStartValidation: string | undefined;\r\n let IconInputEndValidation: string | undefined;\r\n let IconInputStart: React.ElementType | undefined;\r\n let IconInputEnd: React.ElementType | undefined;\r\n let IconTitle: React.ElementType | undefined;\r\n\r\n\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [error, setError] = useState(false);\r\n const [anchorInfoTitle, setAnchorInfoTitle] = useState<HTMLElement | null>(null);\r\n const openInfoTitle = Boolean(anchorInfoTitle);\r\n const [anchorInfoElement, setAnchorInfoElement] = useState<HTMLElement | null>(null);\r\n const openInfoElement = Boolean(anchorInfoElement);\r\n\r\n\r\n useEffect(() => {\r\n if (error) {\r\n setTimeout(() => {\r\n setError(false);\r\n }, 1000);\r\n }\r\n }, [error]);\r\n // INICIO REFACTORIZADO\r\n if (iconInputStart) {\r\n IconInputStartValidation = getIconValidation(iconInputStart);\r\n IconInputStart = getIconComponent(iconInputStart);\r\n }\r\n\r\n if (iconInputEnd) {\r\n IconInputEndValidation = getIconValidation(iconInputEnd);\r\n IconInputEnd = getIconComponent(iconInputEnd);\r\n }\r\n\r\n if (iconTitle) {\r\n IconTitle = getIconComponent(iconTitle);\r\n }\r\n\r\n const handleClickShowPassword = () => setShowPassword((show) => !show);\r\n const handleMouseDownPassword = (\r\n event: React.MouseEvent<HTMLButtonElement>\r\n ) => {\r\n event.preventDefault();\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n validateKeyDown(event, format);\r\n if (onKeyDown) onKeyDown(event);\r\n };\r\n // Fin Refactorizado\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n let valueMax = maxLength ? maxLength + 1 : 50;\r\n\r\n if (event.target.value.length < valueMax) {\r\n if (setState) {\r\n setState(event.target.value);\r\n }\r\n if (onChange) {\r\n onChange(event);\r\n }\r\n }\r\n };\r\n\r\n const handleBlur = validateOnBlurField({ state, required, setError, onBlur });\r\n\r\n // const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\r\n // const error = !value.trim() && required ? true : false;\r\n // setError(error ? true : false);\r\n\r\n // if (onBlur) {\r\n // onBlur(event);\r\n // }\r\n // };\r\n\r\n const handleOpenInfoTitle = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoTitle(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoTitle = () => {\r\n setAnchorInfoTitle(null);\r\n };\r\n\r\n const handleOpenInfoElement = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoElement(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoElement = () => {\r\n setAnchorInfoElement(null);\r\n };\r\n\r\n return (\r\n <Box sx={{ width: width }}>\r\n <Grid container alignItems=\"center\" mb={1.25} gap={0.5}>\r\n {iconTitle && IconTitle ? (\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} />\r\n ) : (\r\n \"\"\r\n )}\r\n {title ? (\r\n <Typography mx={0.5} variant=\"subtitle2\" color=\"text.secondary\">\r\n {title}\r\n </Typography>\r\n ) : (\r\n \"\"\r\n )}\r\n {infoTitle ? (\r\n <>\r\n {infoTitle.component === \"popover\" ?\r\n (<>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoTitle(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoTitle()}\r\n />\r\n <Popover\r\n sx={{\r\n pointerEvents: \"none\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n }}\r\n open={openInfoTitle}\r\n anchorEl={anchorInfoTitle}\r\n onClose={handleCloseInfoTitle}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography p={2}>{infoTitle.text}</Typography>\r\n </Popover>\r\n </>)\r\n :\r\n (<Tooltip title={infoTitle.text} data-testid=\"test-infoTitle\" placement=\"bottom-start\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>)\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )\r\n }\r\n </Grid>\r\n <Grid container sx={{ flexWrap: \"nowrap\", alignItems: \"center\" }}>\r\n <FormControl\r\n color={color}\r\n fullWidth={true}\r\n size={size ? size : \"medium\"}\r\n variant={variant}\r\n sx={{ background: background || \"transparent\", borderRadius: \"4px\", }}\r\n >\r\n <InputLabel\r\n data-testid=\"test-label\"\r\n htmlFor=\"\"\r\n required={required && label !== \"\" ? true : false}\r\n error={error}\r\n disabled={disabled || false}\r\n >\r\n {label ? label : \"\"}\r\n </InputLabel>\r\n <InputComponent\r\n size={size ? size : \"medium\"}\r\n fullWidth\r\n value={state}\r\n error={error}\r\n id={label?.replace(/\\s+/g, \"\")}\r\n disabled={disabled ?? false}\r\n onKeyDown={handleKeyDown}\r\n onChange={handleInputChange}\r\n onBlur={handleBlur}\r\n inputProps={{ maxLength: maxLength ? maxLength : 50 }}\r\n type={\r\n !showPassword && format === \"password\"\r\n ? \"password\"\r\n : (format || \"text\").toUpperCase() === \"INT\" ||\r\n (format || \"text\").toUpperCase() === \"DECIMAL\"\r\n ? \"number\"\r\n : \"text\"\r\n }\r\n className={format === \"password\" && !showPassword ? \"\" : \"\"}\r\n placeholder={placeholder}\r\n startAdornment={\r\n iconInputStart ? (\r\n <InputAdornment position=\"start\">\r\n {IconInputStartValidation === \"text\" ? (\r\n iconInputStart\r\n ) : IconInputStart ? (\r\n <IconInputStart fontSize=\"small\" />\r\n ) : null}\r\n </InputAdornment>\r\n ) : (\r\n \"\"\r\n )\r\n }\r\n endAdornment={\r\n <InputAdornment position=\"end\">\r\n {format === \"password\" ? (\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={handleClickShowPassword}\r\n onMouseDown={handleMouseDownPassword}\r\n edge=\"end\"\r\n >\r\n {showPassword ? <VisibilityOff /> : <Visibility />}\r\n </IconButton>\r\n ) : iconInputEnd === undefined && infoElement !== undefined ? (\r\n <>\r\n {infoElement.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n data-testid=\"test-infoElement\"\r\n sx={{ ml: 0.5 }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n component=\"svg\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoElement(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoElement()}\r\n />\r\n <Popover\r\n sx={{\r\n pointerEvents: \"none\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n }}\r\n open={openInfoElement}\r\n anchorEl={anchorInfoElement}\r\n onClose={handleCloseInfoElement}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography data-testid=\"test-popover-text\" p={2}>{infoElement.text}</Typography>\r\n </Popover>\r\n </>\r\n :\r\n\r\n <Tooltip title={infoElement.text} placement=\"bottom-end\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n }\r\n </>\r\n ) : iconInputEnd !== undefined ? (\r\n IconInputEndValidation === \"text\" ? (\r\n iconInputEnd\r\n ) : IconInputEnd ? (\r\n <IconInputEnd fontSize=\"small\" />\r\n ) : null\r\n ) : (\r\n \"\"\r\n )}\r\n </InputAdornment >\r\n }\r\n label={\r\n label\r\n ? label + (format === \"password\" && !showPassword ? \"\" : \"\")\r\n : \"\"\r\n }\r\n autoComplete={format === \"password\" ? \"new-password\" : \"off\"}\r\n />\r\n </FormControl >\r\n {(iconInputEnd !== undefined || format === \"password\") &&\r\n infoElement ? (\r\n <>\r\n {infoElement.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n data-testid=\"test-infoElement\"\r\n component={\"svg\"}\r\n sx={{ marginLeft: \"4px\" }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) => handleOpenInfoElement(event as any)}\r\n onMouseLeave={handleCloseInfoElement}\r\n />\r\n <Popover\r\n // data-testid=\"test-infoElement\"\r\n sx={{ pointerEvents: \"none\" }}\r\n open={openInfoElement}\r\n anchorEl={anchorInfoElement}\r\n onClose={handleCloseInfoElement}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography data-testid=\"test-popover-text\" p={2}>{infoElement.text}</Typography>\r\n </Popover>\r\n </>\r\n :\r\n <Tooltip title={infoElement.text} placement=\"bottom-end\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n sx={{ marginLeft: \"4px\" }}\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )}\r\n </Grid >\r\n </Box >\r\n );\r\n};\r\n\r\n","import * as Muicon from \"@mui/icons-material\";\r\nimport React, {ElementType} from \"react\";\r\n\r\nexport function getIconComponent(name: string | ElementType): ElementType | undefined {\r\n if (typeof name !== \"string\") return name;\r\n return name in Muicon ? Muicon[name as keyof typeof Muicon] : undefined;\r\n}\r\n\r\nexport function getIconValidation(name: string | any): \"icon\" | \"text\" {\r\n if (typeof name !== \"string\") {\r\n return name?.type ? \"icon\" : \"text\";\r\n }\r\n return name in Muicon ? \"icon\" : \"text\";\r\n}\r\n\r\n","export function validateKeyDown(event: React.KeyboardEvent<HTMLInputElement>, format?: string): void {\r\n const key = event.key;\r\n const target = event.target as HTMLInputElement;\r\n\r\n if (format === \"int\" && !/^[0-9]$/.test(key)) {\r\n event.preventDefault();\r\n }\r\n\r\n if (format === \"decimal\" && ((target.value === \"\" && key === \".\") || key === \"-\" || key === \"+\")) {\r\n event.preventDefault();\r\n }\r\n\r\n if (target.type === \"text\") {\r\n const regex = /^[a-zA-ZáéíóúÁÉÍÓÚñÑ0-9\\s_\\-.,@]+$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { FocusEvent } from \"react\";\r\n\r\ntype HandleBlurProps = {\r\n state: string;\r\n required?: boolean;\r\n setError: (val: boolean) => void;\r\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\r\n};\r\n\r\nexport const validateOnBlurField = ({\r\n state,\r\n required = false,\r\n setError,\r\n onBlur,\r\n}: HandleBlurProps) => (event: FocusEvent<HTMLInputElement>) => {\r\n const isError = !state.trim() && required;\r\n setError(isError);\r\n\r\n if (onBlur) {\r\n onBlur(event);\r\n }\r\n};\r\n\r\n\r\n\r\n// import { Popover, Tooltip, Typography } from \"@mui/material\";\r\n// import { InfoOutlined } from \"@mui/icons-material\";\r\n// import React, { useState } from \"react\";\r\n\r\n// interface InfoIconProps {\r\n// text: string;\r\n// placement?: \"bottom-start\" | \"bottom-end\";\r\n// component: \"tooltip\" | \"popover\";\r\n// }\r\n\r\n// export const InfoIcon = ({ text, component, placement = \"bottom-start\" }: InfoIconProps) => {\r\n// const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\r\n// const open = Boolean(anchorEl);\r\n\r\n// const handleOpen = (event: React.MouseEvent<SVGSVGElement>) => {\r\n// setAnchorEl(event.target as HTMLElement);\r\n// };\r\n\r\n// const handleClose = () => {\r\n// setAnchorEl(null);\r\n// };\r\n\r\n// return component === \"popover\" ? (\r\n// <>\r\n// <InfoOutlined onMouseEnter={handleOpen} onMouseLeave={handleClose} fontSize=\"small\" color=\"action\" />\r\n// <Popover\r\n// sx={{ pointerEvents: \"none\" }}\r\n// open={open}\r\n// anchorEl={anchorEl}\r\n// onClose={handleClose}\r\n// anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n// transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n// disableRestoreFocus\r\n// >\r\n// <Typography p={2}>{text}</Typography>\r\n// </Popover>\r\n// </>\r\n// ) : (\r\n// <Tooltip title={text} placement={placement}>\r\n// <InfoOutlined fontSize=\"small\" color=\"action\" />\r\n// </Tooltip>\r\n// );\r\n// };\r\n","import * as MuiIcons from \"@mui/icons-material\";\r\nimport { ComponentType } from \"react\";\r\n\r\nexport function getIcon(name?: string): ComponentType | null {\r\n if (!name || !(name in MuiIcons)) {\r\n return null;\r\n }\r\n return MuiIcons[name as keyof typeof MuiIcons];\r\n}\r\n\r\n","// React\r\nimport React, { useEffect, useState } from 'react';\r\n// MUI Material\r\nimport { Typography, Stack, TextField, Box, Popover, Tooltip, SvgIcon, Grid } from \"@mui/material\";\r\n// Iconos MUI Material\r\nimport { InfoOutlined } from '@mui/icons-material';\r\n// Funciones del componente\r\nimport { getIcon, SCTextAreaProps } from './Helpers';\r\n\r\nexport const SCTextArea = ({\r\n //informativas\r\n title,\r\n iconTitle,\r\n infoTitle,\r\n label = \"\",\r\n placeholder,\r\n maxLength = 200,\r\n //apariencia\r\n variant,\r\n disabled,\r\n required,\r\n width = \"100%\",\r\n rows = 3,\r\n colorTitle,\r\n background,\r\n //funcionales\r\n setState,\r\n state,\r\n onBlur,\r\n}: SCTextAreaProps) => {\r\n\r\n /*states*/\r\n const [helperCount, setHelperCount] = useState<number>(0);\r\n const [stateError, setStateError] = useState<boolean>(false);\r\n const [anchorInfoTitle, setAnchorInfoTitle] = React.useState<null | HTMLElement>(null);\r\n const openInfoTitle = Boolean(anchorInfoTitle);\r\n\r\n /*Efeccts*/\r\n useEffect(() => {\r\n setHelperCount(state?.length);\r\n }, [state]);\r\n\r\n /*Funciones y eventos*/\r\n const IconTitle = getIcon(iconTitle);\r\n const handleBlur = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n if (required && state.trim() === '') {\r\n setStateError(true);\r\n setTimeout(() => {\r\n setStateError(false);\r\n }, 1000);\r\n return;\r\n }\r\n if (onBlur) {\r\n onBlur(event);\r\n }\r\n };\r\n\r\n const handleOpenInfoTitle = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorInfoTitle(event.currentTarget);\r\n };\r\n\r\n const handleCloseInfoTitle = () => {\r\n setAnchorInfoTitle(null);\r\n };\r\n\r\n return (\r\n <>\r\n <Box sx={{ width: width }}>\r\n <Grid container sx={{ alignItems: \"center\" }} gap={0.5}>\r\n {iconTitle && IconTitle && (\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} />\r\n )}\r\n {title &&\r\n <Typography color={colorTitle || \"text.secondary\"} variant='subtitle2' >\r\n {title}\r\n </Typography>}\r\n {infoTitle ? (\r\n <>\r\n {infoTitle.component === \"popover\" ?\r\n <>\r\n <InfoOutlined\r\n color='action'\r\n fontSize=\"small\"\r\n onMouseEnter={(event: React.MouseEvent<SVGSVGElement>) =>\r\n handleOpenInfoTitle(event as any)\r\n }\r\n onMouseLeave={() => handleCloseInfoTitle()}\r\n />\r\n <Popover\r\n sx={{ pointerEvents: \"none\" }}\r\n open={openInfoTitle}\r\n anchorEl={anchorInfoTitle}\r\n onClose={handleCloseInfoTitle}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n disableRestoreFocus\r\n >\r\n <Typography sx={{ p: 2 }}>\r\n {infoTitle.text}\r\n </Typography>\r\n </Popover>\r\n </>\r\n :\r\n <Tooltip title={infoTitle.text} placement=\"bottom-start\" slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <InfoOutlined\r\n color=\"action\"\r\n fontSize=\"small\"\r\n />\r\n </Tooltip>\r\n\r\n }\r\n </>\r\n ) : (\r\n \"\"\r\n )}\r\n </Grid>\r\n <Stack>\r\n <TextField\r\n required={required}\r\n placeholder={placeholder}\r\n error={stateError}\r\n variant={variant}\r\n sx={{ mt: \"10px\", background: background || \"transparent\", borderRadius: \"4px\" }}\r\n id=\"outlined-multiline-static\"\r\n label={label}\r\n multiline\r\n disabled={disabled}\r\n rows={rows}\r\n value={state}\r\n onBlur={handleBlur}\r\n onChange={(e) => {\r\n if (setState) {\r\n setState(e.target.value.substring(0, maxLength));\r\n }\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n </Stack>\r\n <Stack>\r\n <Typography\r\n variant='caption'\r\n color='text.secondary'\r\n mr={1}\r\n mt={1}\r\n align=\"right\"\r\n >\r\n {helperCount + \"/\" + maxLength}\r\n </Typography>\r\n </Stack>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useEffect } from 'react';\r\n//MATERIAL\r\nimport { InputLabel, FormControl, InputAdornment, MenuItem, TextField, Typography, SvgIcon, ListItemIcon, ListItemText, Divider, FormControlLabel, IconButton, Box, Button } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\r\n//IMAGENES E ICONOS\r\nimport { Search, Clear } from \"@mui/icons-material\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport '../App.css';\r\n\r\n//MODELO\r\ninterface SCSelectProps<T> {\r\n label?: string;\r\n data: T[];\r\n getItemValue: (item: T) => { icon?: any; text: string; value: string };\r\n width?: string;\r\n size?: \"small\" | \"medium\";\r\n variant?: \"outlined\" | \"filled\" | \"standard\";\r\n background?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n fnAplicar?: () => void | React.ReactNode;\r\n setState: React.Dispatch<React.SetStateAction<any>>;\r\n state: { hiddenValue: string; textValue: string };\r\n}\r\n\r\nexport function SCSelect<T>({\r\n label = \"\",\r\n data,\r\n getItemValue,\r\n width = \"100%\",\r\n size = \"small\",\r\n variant = \"outlined\",\r\n background = \"white\",\r\n required,\r\n disabled,\r\n setState,\r\n state,\r\n}: SCSelectProps<T>) {\r\n //CONSTANTES\r\n const labelContent = `<span style=\"color: red;\">* </span>` + label;\r\n //STATES\r\n const [prevData, setPrevData] = React.useState(data);\r\n const [error, setError] = React.useState(false);\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (error) {\r\n setTimeout(() => {\r\n setError(false);\r\n }, 1000);\r\n }\r\n }, [error]);\r\n useEffect(() => {\r\n let dataChangeValidation = JSON.stringify(prevData) === JSON.stringify(data)\r\n if (dataChangeValidation == false) {\r\n setState({ hiddenValue: \"\", textValue: \"\" });\r\n setPrevData(data);\r\n }\r\n }, [data])\r\n\r\n //FUNCIONES O EVENTOS\r\n data.map(function (option: any, index, array) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n })\r\n\r\n const handleBlur = () => {\r\n const currentValue = Array.isArray(state.hiddenValue) ? state.hiddenValue[0] : state.hiddenValue;\r\n const isError = !currentValue && !!required;\r\n setError(Boolean(isError));\r\n };\r\n\r\n const handleChange = (event: SelectChangeEvent) => {\r\n const selectedValue = event.target.value;\r\n if (selectedValue) {\r\n const selectedOption = data.find(item => getItemValue(item).value === selectedValue);\r\n if (selectedOption) {\r\n const itemValue = getItemValue(selectedOption);\r\n setState({\r\n hiddenValue: itemValue.value,\r\n textValue: itemValue.text,\r\n });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {data && (\r\n <Box sx={{ width: width }}>\r\n <FormControl\r\n fullWidth={true}\r\n size={size ? size : \"medium\"}\r\n variant={variant}\r\n >\r\n <InputLabel\r\n error={error}\r\n >\r\n {required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n </InputLabel>\r\n <Select\r\n value={Array.isArray(state.hiddenValue) ? state.hiddenValue[0] || '' : state.hiddenValue != '-1' ? state.hiddenValue : ''}\r\n label={required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n variant={variant}\r\n disabled={disabled || false}\r\n error={error}\r\n MenuProps={{\r\n PaperProps: {\r\n sx: {\r\n maxHeight: '300px',\r\n minWidth: '100%',\r\n }\r\n },\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n disableAutoFocusItem: true,\r\n marginThreshold: 0,\r\n }}\r\n >\r\n {data.map((option, index) => {\r\n return (\r\n <MenuItem key={index} value={getItemValue(option).value}>\r\n {getItemValue(option).icon != undefined ?\r\n <ListItemIcon sx={{ minWidth: \"10px !important\" }}>\r\n <SvgIcon fontSize=\"small\" color=\"action\" component={getItemValue(option).icon} />\r\n </ListItemIcon> : \"\"\r\n }\r\n <ListItemText primary={getItemValue(option).text} color=\"text.primary\" />\r\n\r\n </MenuItem>\r\n )\r\n })}\r\n </Select>\r\n </FormControl>\r\n </Box>\r\n )}\r\n </>\r\n );\r\n}","//REACT\r\nimport React, { useEffect } from 'react';\r\n//MATERIAL\r\nimport { Autocomplete, Checkbox, InputAdornment, MenuItem, TextField, Typography, SvgIcon, ListItemIcon, ListItemText, Divider, FormControlLabel, IconButton, Chip, Box, Button } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\n//IMAGENES E ICONOS\r\nimport { Search, Clear } from \"@mui/icons-material\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport { Global, css } from '@emotion/react';\r\n\r\n// MODELO\r\ninterface SCAutocompleteProps<T> {\r\n label?: string;\r\n data: T[];\r\n columnGroup?: string;\r\n getItemValue: (item: T) => { icon?: any; text: string; value: string, component?: any };\r\n typeFormat?: \"normal\" | \"multiselect\";\r\n checkMassive?: boolean;\r\n deleteType?: \"button\" | \"icon\";\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n fnAplicar?: () => void | React.ReactNode;\r\n setState: React.Dispatch<React.SetStateAction<any>>;\r\n state: { hiddenValue: string | string[]; textValue: string | string[] };\r\n inputChange?: (value: string) => void;\r\n maxCheck?: number; \r\n}\r\n\r\nexport function SCAutocomplete<T>({\r\n label = \"\",\r\n data,\r\n columnGroup,\r\n getItemValue,\r\n typeFormat = \"normal\",\r\n checkMassive = false,\r\n deleteType = \"button\",\r\n fnAplicar,\r\n required,\r\n disabled,\r\n background,\r\n setState,\r\n state,\r\n inputChange,\r\n maxCheck, \r\n}: SCAutocompleteProps<T>) {\r\n\r\n // CONSTANTES\r\n const labelContent = `<span style=\"color: red;\">* </span>` + label;\r\n // VARIABLES\r\n let group = \"\";\r\n let isSelected = false\r\n // STATES\r\n const [selectedOptions, setSelectedOptions] = React.useState<T[]>([]);\r\n const [prevData, setPrevData] = React.useState(data);\r\n const [originalData, setOriginalData] = React.useState(data);\r\n const [inputValue, setInputValue] = React.useState(\"\");\r\n const [isUserTyping, setIsUserTyping] = React.useState(false);\r\n\r\n // USEEFFECT\r\n useEffect(() => {\r\n const dataChangeValidation = JSON.stringify(prevData) === JSON.stringify(data);\r\n \r\n if (!dataChangeValidation && !isUserTyping) {\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setSelectedOptions([]);\r\n setOriginalData(data);\r\n } else if (!isUserTyping) {\r\n setOriginalData(data);\r\n }\r\n setPrevData(data);\r\n }, [data, isUserTyping])\r\n\r\n useEffect(() => {\r\n if (typeFormat == \"multiselect\") {\r\n if (state.hiddenValue != \"-1\" && Array.isArray(state.hiddenValue)) {\r\n const newSelectedOptions = originalData.filter((item) =>\r\n state.hiddenValue.includes(getItemValue(item).value)\r\n );\r\n setSelectedOptions(newSelectedOptions);\r\n }\r\n }\r\n }, [state.hiddenValue, originalData, typeFormat]);\r\n\r\n\r\n useEffect(() => {\r\n if (inputValue === \"\") {\r\n setIsUserTyping(false);\r\n }\r\n }, [inputValue]);\r\n\r\n // FUNCIONES O EVENTOS\r\n data.map(function (option: any) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n })\r\n\r\n const cleanOptions = (event: any) => {\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setSelectedOptions([])\r\n setInputValue(\"\");\r\n setIsUserTyping(false);\r\n }\r\n\r\n const handleCheckAll = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (event.target.checked) {\r\n const itemsToSelect = maxCheck ? data.slice(0, maxCheck) : data;\r\n \r\n setSelectedOptions(itemsToSelect);\r\n setState({\r\n hiddenValue: itemsToSelect.map(item => getItemValue(item).value),\r\n textValue: itemsToSelect.map(item => getItemValue(item).text),\r\n });\r\n } else {\r\n setSelectedOptions([]);\r\n setState({ hiddenValue: \"-1\", textValue: \"\" });\r\n setInputValue(\"\");\r\n setIsUserTyping(false);\r\n }\r\n };\r\n const allSelected = data.length > 0 && selectedOptions.length === data.length;\r\n\r\n const handleChange = (event: any, value: any) => {\r\n if (typeFormat === \"multiselect\") {\r\n if (maxCheck && value.length > maxCheck) {\r\n value = value.slice(0, maxCheck);\r\n }\r\n \r\n const ids = value.map((v: T) => getItemValue ? getItemValue(v).value : \"\");\r\n const texts = value.map((v: T) => getItemValue ? getItemValue(v).text : \"\");\r\n setSelectedOptions(value);\r\n setState({\r\n hiddenValue: ids,\r\n textValue: texts,\r\n });\r\n } else {\r\n setState({\r\n hiddenValue: getItemValue(value).value,\r\n textValue: getItemValue(value).text,\r\n });\r\n }\r\n };\r\n\r\n const selectedValue =\r\n typeFormat === \"multiselect\"\r\n ? selectedOptions \r\n : originalData.find(\r\n (item) =>\r\n getItemValue(item).value === state.hiddenValue\r\n ) || null;\r\n\r\n\r\n return (\r\n <>\r\n {data && (\r\n <Autocomplete\r\n multiple={typeFormat === \"multiselect\"}\r\n clearOnEscape\r\n noOptionsText=\"No se encuentra\"\r\n disabled={disabled}\r\n options={data}\r\n isOptionEqualToValue={(option, value) => getItemValue(option).value === getItemValue(value).value}\r\n onInputChange={(event, value) => {\r\n setInputValue(value);\r\n setIsUserTyping(value.length > 0);\r\n if (inputChange) {\r\n inputChange(value);\r\n }\r\n }}\r\n onChange={handleChange}\r\n getOptionLabel={(option: T) => getItemValue(option).text}\r\n value={selectedValue}\r\n sx={{\r\n background: background || \"transparent\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n }}\r\n limitTags={2}\r\n renderTags={(value, getTagProps) => {\r\n const limit = 2;\r\n return (\r\n <>\r\n {value.slice(0, limit).map((option, index) => {\r\n const { key, ...chipProps } = getTagProps({ index });\r\n return (\r\n <Chip\r\n key={key}\r\n color=\"default\"\r\n size=\"small\"\r\n variant=\"filled\"\r\n label={getItemValue(option).text}\r\n {...chipProps}\r\n style={{ maxWidth: 120, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}\r\n />\r\n );\r\n })}\r\n {value.length > limit && (\r\n <Box sx={{ ml: 0.5, fontSize: 13, color: \"#666\", display: \"flex\", alignItems: \"center\" }}>\r\n {`+${value.length - limit}`}\r\n </Box>\r\n )}\r\n </>\r\n );\r\n }}\r\n renderOption={(props, option) => {\r\n const { key, ...optionProps } = props;\r\n let isValid\r\n let isDisabled = false;\r\n\r\n if (typeFormat == \"multiselect\") {\r\n isSelected = selectedOptions.some(\r\n (selected) => getItemValue(selected).value === getItemValue(option).value\r\n );\r\n \r\n if (maxCheck && selectedOptions.length >= maxCheck && !isSelected) {\r\n isDisabled = true;\r\n }\r\n }\r\n if (columnGroup) {\r\n isValid = group == (option as Record<string, any>)[columnGroup];\r\n group = (option as Record<string, any>)[columnGroup];\r\n }\r\n\r\n return (\r\n <>\r\n <React.Fragment key={key}>\r\n {columnGroup ? !isValid ? <Typography color=\"text.secondary\" sx={{ margin: \"7px 16px !important\", fontSize: \"13px !important\" }}>{(option as Record<string, any>)[columnGroup]}</Typography> : \"\" : \"\"}\r\n <MenuItem \r\n {...optionProps} \r\n disabled={isDisabled}\r\n style={{ \r\n background: typeFormat != \"multiselect\" ? state.hiddenValue == getItemValue(option).value ? \"#dfe6ec\" : 'white' : 'white', \r\n padding: \"7px 16px\",\r\n opacity: isDisabled ? 0.5 : 1\r\n }}\r\n >\r\n {typeFormat != \"multiselect\" && getItemValue(option).icon != undefined ? <ListItemIcon sx={{ minWidth: \"10px !important\" }}><SvgIcon fontSize=\"small\" color=\"action\" component={getItemValue(option).icon} /></ListItemIcon> : \"\"}\r\n {typeFormat == \"multiselect\" ? \r\n <Checkbox \r\n checked={isSelected} \r\n disabled={isDisabled}\r\n value={getItemValue(option).text} \r\n color=\"primary\" \r\n /> \r\n : \"\"}\r\n <ListItemText primary={getItemValue(option).text} color=\"text.primary\" />\r\n {getItemValue(option).component != undefined ?\r\n getItemValue(option).component\r\n : \"\"\r\n }\r\n </MenuItem>\r\n </React.Fragment>\r\n </>\r\n );\r\n }}\r\n\r\n renderInput={(params) => (\r\n <>\r\n <TextField\r\n {...params}\r\n label={required ? <span dangerouslySetInnerHTML={{ __html: labelContent }} /> : label}\r\n placeholder={selectedOptions.length == 0 ? \"Búsqueda\" : \"\"}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n <>\r\n {deleteType == \"icon\" && (state.hiddenValue.toString() != '-1' && state.hiddenValue.toString() != '') ?\r\n <IconButton size=\"small\" onClick={cleanOptions} sx={{ marginLeft: \"auto\", textAlign: \"right\", padding: \"0px\" }}>\r\n <Clear fontSize=\"small\" />\r\n </IconButton>\r\n : \"\"}\r\n <InputAdornment style={{ zIndex: 1, position: \"relative\" }} position=\"end\">\r\n <Search fontSize=\"small\" color=\"action\" style={{ cursor: \"pointer\" }} />\r\n </InputAdornment>\r\n </>\r\n ),\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n slotProps={{\r\n listbox: {\r\n component: React.forwardRef(function ListboxComponent(props: any, ref: React.Ref<HTMLDivElement>) {\r\n return (\r\n <>\r\n <Box\r\n ref={ref}\r\n {...props}\r\n sx={{\r\n position: \"relative\",\r\n paddingBottom: \"56px\",\r\n backgroundColor: \"white\",\r\n ...props.sx,\r\n }}\r\n >\r\n {checkMassive && typeFormat == \"multiselect\" ?\r\n <>\r\n <FormControlLabel control={<Checkbox checked={allSelected} indeterminate={selectedOptions.length > 0 && selectedOptions.length < data.length} onChange={handleCheckAll} color=\"primary\" />} label=\"Todos los items\" sx={{ marginLeft: \"0px !important\", marginRight: \"0px !important\", padding: \"7px 16px\" }} />\r\n <Divider />\r\n </>\r\n : \"\"}\r\n {props.children}\r\n {deleteType == \"button\" || fnAplicar ?\r\n <Grid container\r\n sx={{\r\n position: \"sticky\",\r\n bottom: -8,\r\n left: 0,\r\n width: \"100%\",\r\n backgroundColor: \"grey.50\",\r\n padding: \"8px 16px\",\r\n textAlign: \"left\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n {deleteType == \"button\" ?\r\n <Button variant=\"text\" color=\"primary\" size=\"small\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n cleanOptions(event);\r\n }}\r\n >\r\n Limpiar\r\n </Button>\r\n : \"\"}\r\n {fnAplicar &&\r\n <Button variant=\"contained\" color=\"primary\" size=\"small\"\r\n onClick={fnAplicar}\r\n >\r\n Aplicar\r\n </Button>\r\n }\r\n </Grid>\r\n : \"\"}\r\n </Box>\r\n\r\n </>\r\n );\r\n })\r\n }\r\n }}\r\n />\r\n )}\r\n </>\r\n );\r\n}\r\n","//REACT\r\nimport React from 'react';\r\n//MATERIAL\r\nimport { Box, Typography, InputAdornment } from '@mui/material';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\r\nimport { MultiInputDateRangeField } from '@mui/x-date-pickers-pro/MultiInputDateRangeField';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport 'dayjs/locale/es';\r\nimport { LicenseInfo } from \"@mui/x-license-pro\";\r\n//IMAGENES E ICONOS\r\nimport EventIcon from '@mui/icons-material/Event';\r\n\r\n\r\ninterface SCDateRangeProps {\r\n labelDateInitial?: string;\r\n labelDateFinal?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n state: [Dayjs | null, Dayjs | null];\r\n setState: React.Dispatch<React.SetStateAction<[Dayjs | null, Dayjs | null]>>;\r\n}\r\n\r\nexport const SCDateRange= ({\r\n labelDateInitial = \"Fecha inicial\",\r\n labelDateFinal = \"Fecha final\",\r\n required = false,\r\n disabled = false,\r\n background = \"transparent\",\r\n state,\r\n setState,\r\n}: SCDateRangeProps) => {\r\n LicenseInfo.setLicenseKey(\r\n \"77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI=\"\r\n );\r\n //CONSTANTES\r\n // Validar si los campos requeridos están completos\r\n const isStartEmpty = required && !state[0];\r\n const isEndEmpty = required && !state[1];\r\n const hasError = isStartEmpty || isEndEmpty;\r\n\r\n const handleDateChange = (newValue: any) => {\r\n // Convertir los valores a Dayjs si son Date, o mantener null\r\n const convertedValue: [Dayjs | null, Dayjs | null] = [\r\n newValue[0] ? dayjs(newValue[0]) : null,\r\n newValue[1] ? dayjs(newValue[1]) : null\r\n ];\r\n setState(convertedValue);\r\n };\r\n\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale=\"es\">\r\n <Box sx={{ width: '100%' }}>\r\n <DateRangePicker\r\n value={state}\r\n onChange={handleDateChange}\r\n disabled={disabled}\r\n slots={{\r\n field: MultiInputDateRangeField\r\n }}\r\n slotProps={{\r\n field: {\r\n slotProps: {\r\n textField: ({ position }: { position: 'start' | 'end' }) => ({\r\n label: position === 'start' ? labelDateInitial : labelDateFinal,\r\n size: 'small' as const,\r\n variant: 'outlined' as const,\r\n required: required,\r\n error: position === 'start' ? isStartEmpty : isEndEmpty,\r\n InputProps: {\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <EventIcon\r\n color={hasError ? \"error\" : \"action\"}\r\n fontSize=\"small\"\r\n />\r\n </InputAdornment>\r\n ),\r\n },\r\n sx: {\r\n mr: position === 'start' ? 1 : 0,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: background === \"transparent\" ? \"transparent\" : background\r\n },\r\n '& .MuiInputLabel-asterisk': {\r\n color: 'error.main'\r\n },\r\n background: background ?? \"transparent\"\r\n }\r\n }),\r\n }\r\n } as any\r\n }}\r\n sx={{\r\n display: 'flex',\r\n gap: 1,\r\n width: '100%',\r\n }}\r\n />\r\n </Box>\r\n </LocalizationProvider>\r\n );\r\n};\r\n","import * as Muicon from \"@mui/icons-material\";\r\n\r\nexport const getIcon = (iconName?: string | false) => {\r\n if (iconName && iconName in Muicon) {\r\n return Muicon[iconName as keyof typeof Muicon];\r\n } \r\n return null;\r\n};\r\n\r\n\r\n\r\n\r\n","import { ToastBaseProperties } from \"../../ToastNotification\";\r\nimport { validateTypeElements } from '../Helpers';\r\n\r\nexport const validateInputs = (\r\n arrayElements: any[],\r\n onError: (toast: ToastBaseProperties) => void,\r\n onSuccess: () => void,\r\n setChipFilters: any,\r\n setTextFilters: any,\r\n) => {\r\n let requiredValues = 0;\r\n let filledValues = 0;\r\n\r\n for (let i = 0; i < arrayElements.length; i++) {\r\n const element = arrayElements[i];\r\n const { validation, element: typeElement } = validateTypeElements(element);\r\n const textValue = typeElement.state?.textValue !== undefined ? String(typeElement.state?.textValue) : String(typeElement.state);\r\n\r\n if (typeElement?.required) {\r\n requiredValues++;\r\n if (textValue.trim() !== \"\" && textValue.trim() !== \",\") {\r\n filledValues++; \r\n } \r\n }\r\n }\r\n\r\n if (requiredValues === filledValues) {\r\n onSuccess();\r\n setChipFilters(true)\r\n } else {\r\n onError({\r\n type: \"error\",\r\n title: \"Algunos campos son requeridos\",\r\n time: 10,\r\n });\r\n setChipFilters(false)\r\n }\r\n};","import React, { useEffect, useRef, useMemo, useCallback } from 'react'\r\nexport const validateTypeElements = (\r\n element: any,\r\n) => {\r\n let validation = \"\";\r\n let typeElement = element;\r\n\r\n if (element.type == \"textField\") {\r\n validation = \"textField\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name == \"SCtextField\") {\r\n validation = \"textField\";\r\n typeElement = element?.component.props;\r\n } else if (element.type == \"textArea\") {\r\n validation = \"textArea\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name == \"SCtextArea\") {\r\n validation = \"textArea\";\r\n typeElement = element?.component.props;\r\n } else if (element.type == \"dateRange\") {\r\n validation = \"dateRange\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name == \"SCDateRange\") {\r\n validation = \"dateRange\";\r\n typeElement = element?.component.props;\r\n } else if (element.type == \"autocomplete\") {\r\n validation = \"autocomplete\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name == \"SCAutocomplete\") {\r\n validation = \"autocomplete\";\r\n typeElement = element?.component.props;\r\n } else if (element.typeFormat == \"multiselect\") {\r\n validation = \"multiselect\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.props && (element?.component?.props as any).typeFormat == \"multiselect\") {\r\n validation = \"multiselect\";\r\n typeElement = element?.component.props;\r\n } else if (element.type == \"select\") {\r\n validation = \"select\";\r\n typeElement = element;\r\n } else if (React.isValidElement(element?.component) && element.component.type && (element.component.type as any).name == \"SCSelect\") {\r\n validation = \"select\";\r\n typeElement = element?.component.props;\r\n }\r\n\r\n return {\r\n validation,\r\n element: typeElement\r\n };\r\n}","import React from 'react';\r\nimport { AppBar, Toolbar, Box, Typography } from '@mui/material';\r\nimport { FooterActionsProperties } from './Model';\r\n\r\nexport const FooterAction = ({\r\n leftContent,\r\n rightContent,\r\n label,\r\n variant,\r\n}: FooterActionsProperties) => {\r\n return (\r\n <AppBar\r\n color=\"inherit\"\r\n sx={{ position: variant == 'float' ? 'relative' : 'fixed', left: 0, right: 'auto', width: \"100%\", top: 'auto', bottom: 0 }}\r\n >\r\n <Toolbar\r\n id=\"footer-toolbar\"\r\n sx={{ gap: 1.5, minHeight: '50px !important' }}\r\n >\r\n {leftContent}\r\n\r\n <Box flexGrow={1} />\r\n\r\n {label && (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n {rightContent}\r\n </Toolbar>\r\n </AppBar>\r\n );\r\n};\r\n","import React, { useEffect, useMemo } from \"react\";\r\nimport { Button, Checkbox, FormControl, InputAdornment, ListItemIcon, MenuItem, Popover, Stack, TextField } from \"@mui/material\";\r\nimport { SearchOutlined } from \"@mui/icons-material\";\r\nimport { getIconMultiSelect, MultiSelectProps, useFilteredItems, useMultiSelectHandlers } from \"./helpers\";\r\nimport { capitalize } from \"../../generales\";\r\n\r\nexport function MultiSelect<T>({\r\n textButton,\r\n button,\r\n items,\r\n topPanel,\r\n actions,\r\n dense = false,\r\n open,\r\n selectAll = false,\r\n getItemLabel }: MultiSelectProps<T>) {\r\n const {\r\n anchorEl,\r\n open: openMultiselect,\r\n selectedItems,\r\n filterValue,\r\n setSelectedItems,\r\n handleOpen,\r\n handleClose,\r\n handleFilterChange,\r\n handleCheckboxToggle,\r\n setOpen } = useMultiSelectHandlers<T>();\r\n\r\n useEffect(() => {\r\n if (open !== undefined) {\r\n setOpen(open);\r\n }\r\n }, [open, setOpen]);\r\n\r\n useEffect(() => {\r\n setSelectedItems([]);\r\n }, [items, setSelectedItems]);\r\n\r\n const { filteredItems, sortedItems } = useFilteredItems(items, filterValue, getItemLabel, selectedItems);\r\n\r\n const Icon = useMemo(() => getIconMultiSelect(button?.icon ?? \"FilterListOutlined\"), [button?.icon]);\r\n\r\n const handleSelectAll = () => {\r\n const allSelected = selectedItems.length === filteredItems.length;\r\n setSelectedItems(allSelected ? [] : filteredItems);\r\n };\r\n\r\n const allSelected =\r\n filteredItems.length > 0 &&\r\n selectedItems.length === filteredItems.length;\r\n\r\n const resolvedActions = actions ?? [\r\n { text: \"Limpiar\", fn: handleClose },\r\n { text: \"Aplicar\", fn: () => { } },\r\n ];\r\n\r\n return (\r\n <>\r\n <Button\r\n test-id=\"multiselect-button\"\r\n color={button?.color ?? \"primary\"}\r\n onClick={handleOpen}\r\n variant={button?.variant ?? \"text\"}\r\n size=\"small\"\r\n startIcon={button?.iconPosition === \"left\" || !button?.iconPosition ? <Icon /> : null}\r\n endIcon={button?.iconPosition === \"right\" ? <Icon /> : null}\r\n >\r\n {capitalize(textButton ?? \"MultiSelect\")}\r\n </Button>\r\n\r\n <Popover\r\n elevation={8}\r\n anchorEl={anchorEl}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n open={openMultiselect}\r\n onClose={() => setOpen(false)}\r\n >\r\n <Stack minWidth=\"320px\" data-testid=\"multiselect-container\" bgcolor=\"white\" boxShadow={3} borderRadius={1}>\r\n <Stack py={1} px={2}>\r\n {topPanel ?? (\r\n <FormControl fullWidth size=\"small\">\r\n <TextField\r\n data-testid=\"multiselect-input\"\r\n fullWidth\r\n size=\"small\"\r\n variant=\"outlined\"\r\n placeholder=\"Buscar\"\r\n value={filterValue}\r\n onChange={handleFilterChange}\r\n slotProps={{\r\n input: {\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <SearchOutlined fontSize=\"small\" />\r\n </InputAdornment>\r\n ),\r\n },\r\n }}\r\n />\r\n </FormControl>\r\n )}\r\n </Stack>\r\n\r\n <Stack maxHeight=\"300px\" overflow=\"auto\">\r\n {selectAll && (\r\n <MenuItem dense={dense} onClick={handleSelectAll}>\r\n <ListItemIcon>\r\n <Checkbox checked={allSelected} color=\"primary\" />\r\n </ListItemIcon>\r\n Todos los items\r\n </MenuItem>\r\n )}\r\n {sortedItems.length > 0 ? (\r\n sortedItems.map((item) => (\r\n <MenuItem\r\n key={getItemLabel(item)}\r\n dense={dense}\r\n onClick={() => handleCheckboxToggle(item)}\r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={selectedItems.includes(item)}\r\n color=\"primary\"\r\n />\r\n </ListItemIcon>\r\n {getItemLabel(item)}\r\n </MenuItem>\r\n ))\r\n ) : (\r\n <MenuItem disabled>No se encontraron resultados</MenuItem>\r\n )}\r\n </Stack>\r\n\r\n <Stack direction=\"row\" gap={1} p={1} justifyContent=\"space-between\" bgcolor=\"grey.50\">\r\n {resolvedActions.map((button, index) => (\r\n <Button\r\n key={index}\r\n variant={index === 0 || resolvedActions.length < 2 ? \"text\" : \"contained\"}\r\n onClick={button.fn}\r\n disabled={button.disabled ?? false}\r\n size=\"small\"\r\n >\r\n {capitalize(button.text)}\r\n </Button>\r\n ))}\r\n </Stack>\r\n </Stack>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n","import { useCallback, useState } from \"react\";\r\n\r\nexport function useMultiSelectHandlers<T>() {\r\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\r\n const [open, setOpen] = useState(false);\r\n const [selectedItems, setSelectedItems] = useState<T[]>([]);\r\n const [filterValue, setFilterValue] = useState(\"\");\r\n\r\n const handleOpen = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(e.currentTarget);\r\n setOpen(true);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setAnchorEl(null);\r\n setOpen(false);\r\n }, []);\r\n\r\n const handleFilterChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setFilterValue(e.target.value);\r\n },\r\n []\r\n );\r\n\r\n const handleCheckboxToggle = useCallback((item: T) => {\r\n setSelectedItems((prev) =>\r\n prev.includes(item) ? prev.filter((i) => i !== item) : [...prev, item]\r\n );\r\n }, []);\r\n\r\n return {\r\n anchorEl,\r\n open,\r\n selectedItems,\r\n filterValue,\r\n setSelectedItems,\r\n handleOpen,\r\n handleClose,\r\n handleFilterChange,\r\n handleCheckboxToggle,\r\n setOpen,\r\n };\r\n}","import * as MuiIcons from \"@mui/icons-material\";\r\nimport { FilterListOutlined } from \"@mui/icons-material\";\r\n\r\nexport function getIconMultiSelect(name: string) {\r\n return name in MuiIcons\r\n ? MuiIcons[name as keyof typeof MuiIcons]\r\n : FilterListOutlined;\r\n}\r\n","import { useMemo } from \"react\";\r\n\r\nexport function useFilteredItems<T>(\r\n items: T[],\r\n filterValue: string,\r\n getItemLabel: (item: T) => string,\r\n selectedItems: T[]\r\n) {\r\n const filteredItems = useMemo(\r\n () =>\r\n items.filter((item) =>\r\n getItemLabel(item).toLowerCase().includes(filterValue.toLowerCase())\r\n ),\r\n [items, filterValue, getItemLabel]\r\n );\r\n\r\n const sortedItems = useMemo(() => {\r\n return [\r\n ...filteredItems.filter((item) => selectedItems.includes(item)),\r\n ...filteredItems.filter((item) => !selectedItems.includes(item)),\r\n ];\r\n }, [filteredItems, selectedItems]);\r\n\r\n return { filteredItems, sortedItems };\r\n}\r\n","import React from \"react\";\r\nimport { Stack, Typography } from \"@mui/material\";\r\nimport { PageheaderProperties } from \"./Model\";\r\n\r\nexport const PageHeader = ({\r\n title,\r\n subtitle,\r\n actions,\r\n buttonBack,\r\n fixed,\r\n shadow = true,\r\n}: PageheaderProperties) => {\r\n return (\r\n <Stack data-testid=\"main-container\" justifyContent={\"center\"} height={48} position={fixed ? \"fixed\" : \"relative\"} width={fixed ? \"100%\" : \"inherit\"} bgcolor=\"background.paper\" zIndex={10}\r\n sx={{ boxShadow: shadow ? (theme) => theme.shadows[1] : \"none\" }} >\r\n <Stack data-testid=\"page-header-content\" height={40} px={3} pl={buttonBack ? 1 : 3} direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" >\r\n <Stack id=\"left-section\" direction=\"row\" alignItems=\"center\" gap={1}>\r\n {buttonBack}\r\n <Stack id=\"text-section\" gap={0.5}>\r\n <Typography data-testid=\"page-header-title\" variant=\"h6\" color=\"text.primary\">\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography data-testid=\"page-header-subtitle\" variant=\"caption\" color=\"text.primary\">\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Stack>\r\n </Stack>\r\n\r\n {actions && (\r\n <Stack id=\"right-actions\" direction=\"row\" alignItems=\"center\" gap={1}>\r\n {actions}\r\n </Stack>\r\n )}\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { Button, Typography, IconButton, Box } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\r\nimport { es } from 'date-fns/locale';\r\nimport { format, startOfWeek, endOfWeek, addDays, isSameDay } from 'date-fns';\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';\r\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';\r\n\r\ninterface SCCalendarSwipeableProps {\r\n //apariencia\r\n background?: string;\r\n //funcionales\r\n setState: React.Dispatch<React.SetStateAction<string>>;\r\n state: string | any;\r\n}\r\n\r\nexport const SCCalendarSwipeable = ({\r\n //informativas\r\n //apariencia\r\n background,\r\n //funcionales\r\n setState,\r\n state,\r\n}: SCCalendarSwipeableProps) => {\r\n //VARIABLES\r\n let convertFecha\r\n //STATES\r\n const [fecha, setFecha] = useState(new Date());\r\n const [fechaSeleccionada, setFechaSeleccionada] = useState();\r\n const [stateVal, setstateVal] = React.useState(new Date());\r\n const [openCalendar, setOpenCalendar] = React.useState(false);\r\n //CONSTANTES\r\n const hoy = new Date();\r\n const inicioSemana = startOfWeek(fecha, { weekStartsOn: 0 }); // Domingo como inicio de semana\r\n const diasSemana = Array.from({ length: 7 }, (_, i) => addDays(inicioSemana, i));\r\n //USEEFFECT\r\n React.useEffect(() => {\r\n if (fecha != null) {\r\n handleConvertFecha(fecha)\r\n }\r\n }, [fecha]);\r\n //FUNCIONES O EVENTOS\r\n const handleConvertFecha = (fecha: any) => {\r\n if (fecha) {\r\n let day = (fecha.getDate() < 10 ? \"0\" : \"\") + fecha.getDate();\r\n let month = (fecha.getMonth() + 1 < 10 ? \"0\" : \"\") + (fecha.getMonth() + 1);\r\n let year = fecha.getFullYear();\r\n convertFecha = day + \"/\" + month + \"/\" + year;\r\n setState(convertFecha)\r\n setFecha(fecha)\r\n }\r\n };\r\n\r\n const toggleCalendar = (newOpen: any) => () => {\r\n setOpenCalendar(newOpen);\r\n };\r\n\r\n const locale = {\r\n ...es,\r\n // options: {\r\n // weekStartsOn: 0, // 0 para domingo, 1 para lunes, etc.\r\n // },\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={locale} >\r\n {openCalendar == false ? (\r\n <Box data-testid=\"calendar-mobile\" sx={{ width: \"100%\", background: background ? background : \"white\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", maxWidth: \"320px\", background: \"transparent\" }}>\r\n <Grid container gap={0.5} sx={{justifyContent: \"space-between\", padding: \"12px 0px\", background: \"transparent\"}}>\r\n {diasSemana.map((dia) => (\r\n <Grid sx={{ width: \"36px\" }} key={dia.toString()}>\r\n <Box sx={{ width: \"36px\", height: \"40px\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\r\n <Typography sx={{ fontSize: \"12px !important\", color: \"#10184099\" }}>{format(dia, 'EEEE', { locale: es }).charAt(0).toUpperCase()}</Typography>\r\n </Box>\r\n <Box\r\n onClick={() => setFecha(dia)}\r\n sx={{\r\n padding: '10px',\r\n textAlign: 'center',\r\n backgroundColor: isSameDay(dia, fecha) ? '#2063a0' : 'transparent',\r\n cursor: 'pointer',\r\n borderRadius: '50%',\r\n //border: '1px solid lightgray',\r\n position: 'relative',\r\n //width: '36px',\r\n //height: '36px',\r\n }}\r\n >\r\n <Typography sx={{ fontSize: \"12px !important\", color: isSameDay(dia, fecha) ? 'white' : \"#101840DE\" }}>{format(dia, 'd')}</Typography>\r\n </Box>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"open-calendar-button\" onClick={toggleCalendar(true)}>\r\n <KeyboardDoubleArrowDownIcon />\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box sx={{ width: \"100%\", background: \"white\" }}>\r\n <StaticDatePicker\r\n orientation=\"landscape\"\r\n openTo=\"day\"\r\n value={fecha}\r\n slotProps={{ toolbar: { hidden: true }, actionBar: { actions: [] } }} // Oculta la barra de herramientas\r\n //slotProps={{ actionBar: { actions: [] } }} // Oculta los botones de Cancelar y Aceptar\r\n sx={{ fontSize: \"12px !important\", height: \"300px !important\", background: background ? background : \"white\", \"& .MuiDayCalendar-header\": { justifyContent: \"space-between\" }, \"& .MuiDayCalendar-weekContainer\": { justifyContent: \"space-between\" }, \"& .MuiPickersCalendarHeader-root\": { paddingLeft: \"0px\", paddingRight: \"0px\", color: \"#10184099\" }, \"& .MuiPickersDay-root\": { fontSize: \"12px !important\" }, \"& .MuiDayCalendar-weekDayLabel\": { fontSize: \"12px !important\" }, }}\r\n onChange={(newValue: Date | any) => setFecha(newValue)}\r\n />\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"close-calendar-button\" onClick={toggleCalendar(false)}>\r\n <KeyboardDoubleArrowUpIcon />\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n )}\r\n </LocalizationProvider>\r\n </>\r\n );\r\n};","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { DataGridPro, GridColDef, useGridApiRef, GridRowParams, GridRowSelectionModel, GridRowId } from '@mui/x-data-grid-pro';\r\nimport { LicenseInfo } from \"@mui/x-license-pro\";\r\n//IMAGENES E ICONOS\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { de } from 'date-fns/locale';\r\n\r\n\r\ninterface SCDataGridInitialProps<T> {\r\n //informativas\r\n data: T[];\r\n columns: any;\r\n //apariencia\r\n rowsTable?: number;\r\n checkboxSelection?: boolean;\r\n width?: string | number;\r\n maxHeight?: number;\r\n density?: \"compact\" | \"standard\" | \"comfortable\";\r\n groupColumns?: (item: any) => { textGroup1?: string; valueGroup1?: string; textGroup2?: string; valueGroup2?: string; headerNameFirstColumn?: string; fieldFirstColumn?: string };\r\n}\r\n\r\nexport function SCDataGridInitial<T>({ data, columns, groupColumns, rowsTable, checkboxSelection, width, maxHeight, density }: SCDataGridInitialProps<T>) {\r\n LicenseInfo.setLicenseKey(\r\n \"77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI=\"\r\n );\r\n\r\n //CONSTANTES\r\n const theme = useTheme();\r\n const apiRef = useGridApiRef();\r\n const isRowSelectable = (params: GridRowParams) => params.row.bloqueoChecked == false ? false : true;\r\n\r\n function generateRandomId() {\r\n return Math.floor(Math.random() * 1000000); \r\n }\r\n\r\n const getTreeDataPaths = (row: any) => {\r\n const group1Value = groupColumns && groupColumns(row)?.valueGroup1;\r\n const group2Value = groupColumns && groupColumns(row)?.valueGroup2;\r\n const fieldValue = groupColumns && groupColumns(row)?.fieldFirstColumn;\r\n \r\n return [\r\n String(group1Value || ''),\r\n ...(group2Value ? [String(group2Value)] : []), \r\n `${String(fieldValue || '')}/${generateRandomId()}`\r\n ];\r\n }\r\n\r\n const groupingColDefs: GridColDef = {\r\n field: 'grouping',\r\n headerName: groupColumns ? groupColumns(data[0]).headerNameFirstColumn : 'Agrupador',\r\n renderCell: (params: any) => {\r\n let label = params.value.toString().includes(\"/\") ? params.value.split(\"/\")[0].toString() : params.value.toString();\r\n\r\n let maxDepth = 0;\r\n if (groupColumns && data.length > 0) {\r\n const sampleItem = groupColumns(data[0]);\r\n if (sampleItem.valueGroup1) maxDepth++;\r\n if (sampleItem.valueGroup2) maxDepth++;\r\n maxDepth = Math.max(0, maxDepth - 1);\r\n }\r\n\r\n if (groupColumns) {\r\n if (params.rowNode.depth === 0) {\r\n let customLabel = label;\r\n if (groupColumns) {\r\n const originalItem = data.find(item =>\r\n String(groupColumns(item)?.valueGroup1) === label\r\n );\r\n if (originalItem) {\r\n const itemValue = groupColumns(originalItem);\r\n customLabel = itemValue.textGroup1 || label;\r\n }\r\n }\r\n\r\n const subgroup1 = arrayRows\r\n .filter(r =>\r\n groupColumns && String(groupColumns(r)?.valueGroup1) === label) \r\n .map(r =>\r\n groupColumns && String(groupColumns(r)?.valueGroup2));\r\n const groupedDataLength1 = subgroup1.filter((valor, indiceActual, arreglo) => arreglo.indexOf(valor) === indiceActual);\r\n label = `${customLabel} (${groupedDataLength1.length})`;\r\n } else if (groupColumns(data[0])?.valueGroup2 && params.rowNode.depth === 1) {\r\n const labelGrouping1 = params.api.getRowNode(params.rowNode.parent)?.groupingKey.toString();\r\n let customLabel = label;\r\n \r\n if (groupColumns) {\r\n const originalItem = data.find(item =>\r\n String(groupColumns(item)?.valueGroup2) === label\r\n );\r\n if (originalItem) {\r\n const itemValue = groupColumns(originalItem);\r\n customLabel = itemValue.textGroup2 || label;\r\n }\r\n }\r\n\r\n const groupedDataLength2 = arrayRows.filter(\r\n r => groupColumns && String(groupColumns(r)?.valueGroup1) === labelGrouping1 && groupColumns && String(groupColumns(r)?.valueGroup2) === label\r\n ).length;\r\n label = `${customLabel} (${groupedDataLength2})`;\r\n } else {\r\n label = label \r\n }\r\n }\r\n return (\r\n <div\r\n style={{\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n color: \"#101840DE\",\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: params.rowNode.depth == 0 ? \"5px\" : params.rowNode.depth == 1 ? \"15px\" : \"25px\",\r\n backgroundColor: params.rowNode.type === 'group'\r\n ? (theme.palette.grey as any)[100 + (maxDepth - params.rowNode.depth) * 100]\r\n : \"#FFFFFF\",\r\n fontWeight: params.rowNode.type == \"group\" ? '400' : '300',\r\n }}\r\n >\r\n {params.rowNode.type === 'group' && (\r\n <span\r\n style={{\r\n cursor: 'pointer',\r\n marginRight: 8,\r\n userSelect: 'none',\r\n }}\r\n onClick={e => {\r\n e.stopPropagation();\r\n params.api.setRowChildrenExpansion(params.id, !params.rowNode.childrenExpanded);\r\n }}\r\n >\r\n {params.rowNode.childrenExpanded ? <KeyboardArrowUpIcon fontSize='small' color=\"action\" /> : <KeyboardArrowDownIcon fontSize='small' color=\"action\" />}\r\n </span>\r\n )}\r\n {label}\r\n </div>\r\n );\r\n },\r\n colSpan: (params: any) => {\r\n const value = String(params);\r\n const fieldGrouping1 = groupColumns ? groupColumns(data[0])?.valueGroup1 : undefined;\r\n const fieldGrouping2 = groupColumns ? groupColumns(data[0])?.valueGroup2 : undefined;\r\n \r\n let agrupado1 = false;\r\n let agrupado2 = false;\r\n\r\n if (fieldGrouping1 != undefined) {\r\n agrupado1 = arrayRows.some(row =>\r\n groupColumns && String(groupColumns(row)?.valueGroup1) === value\r\n );\r\n }\r\n\r\n if (fieldGrouping2 != undefined) {\r\n agrupado2 = arrayRows.some(row =>\r\n groupColumns && String(groupColumns(row)?.valueGroup2) === value\r\n );\r\n }\r\n\r\n if (agrupado1 || agrupado2) {\r\n return columns.length + 1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n };\r\n\r\n //VARIABLES\r\n let validationTreeData = groupColumns ? true : false;\r\n let validationCheckboxSelection = checkboxSelection || false;\r\n let styleDensity = density || 'compact';\r\n let styleTopContainerHeight = styleDensity === \"compact\" ? \"26px\" : styleDensity === \"standard\" ? \"38px\" : styleDensity === \"comfortable\" ? \"60px\" : \"27px\";\r\n let styleRowHeight = density == \"compact\" ? 32 : density == \"standard\" ? 28 : density == \"comfortable\" ? 36 : 32\r\n let rows = rowsTable ? rowsTable : validationTreeData != false ? parseInt(data.length.toString()) : data.length < 10 ? parseInt(data.length.toString()) : 10;\r\n let validationGroupingColDef = groupingColDefs || {};\r\n\r\n //STATES\r\n const [groupDataLenght, setGroupDataLengh] = useState<number>(0);\r\n type DataItem = { [key: string]: any };\r\n const [pageSize, setPageSize] = useState<number>(rows);\r\n const [arrayRows, setArrayRows] = useState<DataItem[]>([]);\r\n const [selectionModel, setSelectionModel] = useState<GridRowId[]>([]);\r\n\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (data?.length > 0) {\r\n dataConvertRows(data, undefined);\r\n }\r\n }, [data]);\r\n\r\n //FUNCIONES O EVENTOS\r\n const dataConvertRows = (data: any, columnId: any) => {\r\n let dataConvert: DataItem[] = [];\r\n if (data?.length > 0) {\r\n const dataKeys = Object.keys(data[0]);\r\n data.map((item: any) => {\r\n const newKeys: { [key: string]: any } = {};\r\n let i = 0;\r\n let id = dataConvert.length + 1;\r\n for (i = 0; i < dataKeys.length; i++) {\r\n newKeys[dataKeys[i]] = item[dataKeys[i]];\r\n }\r\n newKeys.id = columnId ? item[columnId] : id;\r\n dataConvert = [...dataConvert, newKeys];\r\n });\r\n }\r\n setArrayRows(dataConvert);\r\n };\r\n\r\n const handleSelectionChange = (newSelection: GridRowSelectionModel) => {\r\n if (groupDataLenght > 0 && validationTreeData == true) {\r\n let numberGrouped = 0\r\n let idsRowSelectBefore: GridRowId[] = [];\r\n let idRowSelect: GridRowId[] = [];\r\n for (let i = 0; i < newSelection.length; i++) {\r\n if (typeof newSelection[i] === \"string\") {\r\n if ((newSelection[i] as string).includes(\"auto-generated-row-null\")) {\r\n numberGrouped = i\r\n }\r\n } else {\r\n idsRowSelectBefore.push(newSelection[i]);\r\n }\r\n }\r\n\r\n arrayRows.forEach((array: any) => {\r\n if (typeof newSelection[numberGrouped] === \"string\") {\r\n if ((newSelection[numberGrouped] as string).includes(array.name)) {\r\n idRowSelect.push(array.id);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (idRowSelect !== null) {\r\n const soloEnArr1 = idsRowSelectBefore.filter(elemento => !idRowSelect.includes(elemento));\r\n const hasCommonElements = idsRowSelectBefore.some(element => idRowSelect.includes(element));\r\n if (hasCommonElements == true) {\r\n setSelectionModel([...soloEnArr1]); // Convierte a array mutable\r\n } else {\r\n setSelectionModel([...idsRowSelectBefore, ...idRowSelect]);\r\n }\r\n }\r\n\r\n } else {\r\n setSelectionModel([...newSelection]);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {data && (\r\n <>\r\n <div style={{ width: width || '100%', maxHeight: maxHeight ? `${maxHeight}px` : 'none', }}>\r\n <DataGridPro\r\n apiRef={apiRef}\r\n rowHeight={styleRowHeight}\r\n rows={arrayRows}\r\n columns={columns}\r\n density={styleDensity}\r\n treeData={validationTreeData}\r\n getTreeDataPath={validationTreeData == true ? getTreeDataPaths : undefined}\r\n groupingColDef={validationTreeData == true ? validationGroupingColDef : undefined}\r\n pagination\r\n initialState={{\r\n pagination: { paginationModel: { pageSize: rows } }\r\n }}\r\n //pageSizeOptions={[rows, rows*2, rows*3]}// si desea que se muestre el texto: filas por pagina en el footer del paginador\r\n checkboxSelection={validationCheckboxSelection} //permite seleccionar de forma masiva las filas de toda la tabla, si se quita no muestra los check en cada fila\r\n // checkboxSelectionVisibleOnly//permite seleccionar de forma masiva todas las filas solo de las que se muestran en la paginacion\r\n rowSelectionModel={selectionModel}\r\n onRowSelectionModelChange={(newSelection) => handleSelectionChange(newSelection)}\r\n isRowSelectable={isRowSelectable}\r\n //keepNonExistentRowsSelected={false} // Mantener filas no existentes seleccionadas.Útil cuando se utiliza la paginación del lado del servidor y las selecciones de fila deben conservarse al cambiar de página\r\n disableRowSelectionOnClick // Deshabilitar selección de filas en el check al hacer clic en la celda\r\n hideFooter={validationTreeData == true ? true : false}\r\n localeText={{\r\n noRowsLabel: 'No hay filas',\r\n columnMenuLabel: 'Menú de columna',\r\n footerTotalRows: 'Filas Totales:',\r\n footerRowSelected: count => `${count.toLocaleString()} fila(s) seleccionada(s)`, // Ejemplo de traducción dinámica\r\n MuiTablePagination: {\r\n labelRowsPerPage: 'Filas por página:',\r\n labelDisplayedRows: ({ from, to, count }) => `${from}–${to} de ${count !== -1 ? count : `más de ${to}`}`,\r\n },\r\n }}\r\n sx={{\r\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\r\n '& .MuiDataGrid-filler': {\r\n display: 'none !important',\r\n },\r\n \"& .MuiDataGrid-footerContainer\": {\r\n minHeight: \"26px !important\",\r\n height: \"26px !important\",\r\n },\r\n \"& .MuiTablePagination-toolbar\": {\r\n minHeight: \"25px !important\",\r\n height: \"25px !important\",\r\n },\r\n \"& .MuiTablePagination-actions .MuiIconButton-root\": {\r\n padding: \"0px !important\",\r\n },\r\n\r\n '&.MuiDataGrid-root': {\r\n [`--DataGrid-topContainerHeight`]: `${styleTopContainerHeight} !important`,\r\n },\r\n\r\n \"MuiDataGrid-root .MuiDataGrid-virtualScrollerContent .MuiDataGrid-row\": {\r\n \"--height\": \"0px !important\",\r\n \"minHeight\": \"0px !important\",\r\n \"maxHeight\": \"0px !important\",\r\n },\r\n '& .MuiDataGrid-cell': {\r\n padding: '0 !important',\r\n background: \"white\",\r\n },\r\n }}\r\n />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n )\r\n};\r\n\r\nexport const SCDataGrid = React.memo(SCDataGridInitial, (prevProps, nextProps) => {\r\n const isEqual = (\r\n prevProps.rowsTable === nextProps.rowsTable &&\r\n prevProps.checkboxSelection === nextProps.checkboxSelection &&\r\n prevProps.width === nextProps.width &&\r\n prevProps.maxHeight === nextProps.maxHeight &&\r\n prevProps.density === nextProps.density\r\n );\r\n return isEqual;\r\n});","// React\r\nimport React, { ReactElement, ReactNode } from 'react';\r\n// Mui Material\r\nimport { Button, Stack, Typography } from '@mui/material';\r\n// Images\r\nimport create from '../../assets/ImgEmptyState/create.svg';\r\nimport error from '../../assets/ImgEmptyState/error.svg';\r\nimport empty from '../../assets/ImgEmptyState/empty.svg';\r\nimport search from '../../assets/ImgEmptyState/search.svg';\r\nimport { capitalize, ReplyPalette } from '../../generales';\r\nimport { Create } from '../../assets/ImgEmptyState/create';\r\nimport { Empty } from '../../assets/ImgEmptyState/empty';\r\nimport { Error } from '../../assets/ImgEmptyState/error';\r\nimport { Search } from '../../assets/ImgEmptyState/search';\r\n\r\n// Types\r\nexport type EmptyStateStates = 'create' | 'error' | 'noResult' | 'search';\r\nexport type EmptyStateSize = 'small' | 'large';\r\n\r\n// Props del componente\r\nexport interface EmptyStateProperties {\r\n icon?: ReactNode;\r\n state?: EmptyStateStates;\r\n size?: EmptyStateSize;\r\n title: string;\r\n subtitle?: string;\r\n actions?: { icon?: string; text?: string; color?: ReplyPalette; variant?: 'text' | 'outlined' | 'contained'; iconPosition?: 'left' | 'right'; size?: \"small\" | \"medium\" | \"large\", onClick?: () => void }[];\r\n containerHeight?: string;\r\n}\r\n// Map de imágenes por estado\r\nconst EmptyStateImageUrls: Record<EmptyStateStates, ReactElement> = {\r\n create: <Create />,\r\n error: <Error />,\r\n noResult: <Empty />,\r\n search: <Search />,\r\n};\r\n// Config Icon\r\nconst DefaultIcon = ({\r\n state = 'create',\r\n size = 'large',\r\n}: {\r\n state: EmptyStateStates;\r\n size: EmptyStateSize;\r\n}) => {\r\n const Icon = EmptyStateImageUrls[state];\r\n\r\n const iconSize: React.CSSProperties =\r\n size === 'small' ? { width: '40px', height: '40px' } : { width: '60px', height: '60px' };\r\n return <div>{Icon}</div>;\r\n};\r\n\r\n// Component\r\nexport const EmptyState = ({\r\n state = 'create',\r\n size = 'large',\r\n title,\r\n subtitle,\r\n actions,\r\n containerHeight = '100vh',\r\n icon = <DefaultIcon state={state} size={size} />,\r\n}: EmptyStateProperties) => {\r\n\r\n // Condicionales de Ttpografía por tamaño\r\n const titleVariant = size === 'small' ? 'subtitle2' : 'h6';\r\n const subtitleVariant = size === 'small' ? 'caption' : 'body1';\r\n\r\n return (\r\n <Stack\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n spacing={2}\r\n height={containerHeight}\r\n data-testid=\"empty-state-container\"\r\n >\r\n {icon && <Stack>{icon}</Stack>}\r\n\r\n <Stack gap={0.5}>\r\n <Typography color=\"text.primary\" variant={titleVariant} textAlign=\"center\">\r\n {title}\r\n </Typography>\r\n\r\n {subtitle && (\r\n <Typography\r\n variant={subtitleVariant}\r\n textAlign=\"center\"\r\n color=\"text.secondary\"\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n {actions && actions?.length > 0 && (\r\n <Stack\r\n direction=\"row\"\r\n spacing={2}\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n >\r\n {actions.map((action, index) => (\r\n <Button\r\n key={index}\r\n color={action.color ?? 'primary'}\r\n variant={action.variant ?? 'text'}\r\n size={action.size ?? 'small'}\r\n startIcon={\r\n action.icon && action.iconPosition === 'left'\r\n ? <img src={action.icon} alt=\"icon\" />\r\n : undefined\r\n }\r\n endIcon={\r\n action.icon && action.iconPosition === 'right'\r\n ? <img src={action.icon} alt=\"icon\" />\r\n : undefined\r\n }\r\n onClick={action.onClick}\r\n >\r\n {capitalize(action.text ?? 'action')}\r\n </Button>\r\n ))}\r\n </Stack>\r\n )}\r\n </Stack>\r\n </Stack>\r\n );\r\n};","import React from 'react';\r\n\r\nexport const Create = () => {\r\n return (\r\n <svg width=\"45\" height=\"41\" viewBox=\"0 0 45 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1283_39624)\">\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M44.4956 13.1869C44.4386 13.8714 43.8367 14.3801 43.1514 14.3231L39.9978 14.0608C39.3124 14.0038 38.8032 13.4027 38.8602 12.7182C38.9173 12.0336 39.5191 11.525 40.2044 11.582L43.3581 11.8443C44.0434 11.9013 44.5527 12.5024 44.4956 13.1869Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M41.0393 1.01388C41.4429 1.57002 41.3187 2.34766 40.7619 2.75078L38.099 4.6787C37.5423 5.08182 36.7637 4.95777 36.3601 4.40163C35.9565 3.84548 36.0807 3.06785 36.6375 2.66473L39.3004 0.736804C39.8572 0.333685 40.6357 0.457736 41.0393 1.01388Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M36.6656 21.2361C36.1755 21.7179 36.1692 22.5054 36.6515 22.9949L38.9584 25.3363C39.4408 25.8258 40.2291 25.8321 40.7193 25.3503C41.2094 24.8685 41.2157 24.0811 40.7333 23.5915L38.4264 21.2502C37.9441 20.7606 37.1557 20.7543 36.6656 21.2361Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0.504365 13.1869C0.561439 13.8714 1.16326 14.3801 1.84856 14.323L5.00224 14.0607C5.68755 14.0037 6.19683 13.4026 6.13976 12.7181C6.08268 12.0336 5.48087 11.5249 4.79556 11.5819L1.64188 11.8442C0.956574 11.9012 0.447291 12.5023 0.504365 13.1869Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M3.95913 1.01431C3.55554 1.57046 3.67974 2.34809 4.23653 2.75121L6.8994 4.67914C7.45619 5.08225 8.23473 4.9582 8.63832 4.40206C9.04191 3.84592 8.91771 3.06828 8.36092 2.66516L5.69805 0.737237C5.14126 0.334118 4.36272 0.458169 3.95913 1.01431Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.33389 21.236C8.82403 21.7178 8.83033 22.5053 8.34796 22.9949L6.04107 25.3362C5.5587 25.8257 4.77034 25.832 4.28021 25.3502C3.79008 24.8684 3.78378 24.081 4.26614 23.5914L6.57304 21.2501C7.0554 20.7605 7.84376 20.7542 8.33389 21.236Z\" fill=\"#CED1D4\" />\r\n <path d=\"M19.1448 37.3573H25.5804L25.1621 38.889C25.0636 39.2498 24.7356 39.5 24.3613 39.5H20.3638C19.9895 39.5 19.6615 39.2498 19.563 38.889L19.1448 37.3573Z\" fill=\"#CED1D4\" />\r\n <path d=\"M17.6534 35.3665C17.5381 34.8487 17.9326 34.3575 18.4637 34.3575H26.3983C26.9294 34.3575 27.3239 34.8487 27.2087 35.3665L26.9829 36.3814C26.8563 36.9504 26.351 37.3553 25.7674 37.3553H19.0946C18.511 37.3553 18.0057 36.9504 17.8791 36.3814L17.6534 35.3665Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.85423 13.9906C8.85423 6.60807 14.935 0.652473 22.3998 0.652473C29.8646 0.652473 35.9455 6.60807 35.9455 13.9906C35.9455 17.6153 34.4759 20.9015 32.0983 23.3022C31.9627 23.4392 31.8257 23.5745 31.6935 23.7052L31.6917 23.707C30.7961 24.5922 30.1385 25.2699 29.8494 26.1116C29.7242 26.4761 29.6012 27.1915 29.4988 28.0885C29.4002 28.9527 29.3306 29.8872 29.2854 30.6281C29.2099 31.864 28.1896 32.8547 26.9266 32.8547H17.8731C16.6101 32.8547 15.5898 31.864 15.5143 30.6281C15.469 29.8872 15.3995 28.9527 15.3009 28.0885C15.1985 27.1915 15.0755 26.4761 14.9503 26.1116C14.6612 25.2699 14.0036 24.5922 13.108 23.707L13.106 23.7051C12.9739 23.5744 12.837 23.4391 12.7014 23.3022C10.3238 20.9015 8.85423 17.6153 8.85423 13.9906ZM22.3998 2.85676C16.1214 2.85676 11.0611 7.85765 11.0611 13.9906C11.0611 17.0068 12.2813 19.7437 14.2703 21.752C14.3969 21.8798 14.526 22.0075 14.6602 22.1401C14.6831 22.1627 14.7062 22.1855 14.7294 22.2085C15.5402 23.0091 16.5655 24.0215 17.0377 25.3961C17.2505 26.0156 17.3925 26.9534 17.4936 27.8388C17.5983 28.757 17.6707 29.7342 17.7171 30.4939C17.723 30.59 17.8001 30.6504 17.8731 30.6504H26.9266C26.9996 30.6504 27.0767 30.59 27.0826 30.4939C27.129 29.7342 27.2013 28.757 27.3061 27.8388C27.4072 26.9534 27.5492 26.0156 27.762 25.3961C28.2342 24.0215 29.2594 23.0091 30.0702 22.2085C30.0935 22.1855 30.1166 22.1627 30.1395 22.1401C30.2737 22.0075 30.4028 21.8798 30.5294 21.752C32.5184 19.7437 33.7386 17.0068 33.7386 13.9906C33.7386 7.85765 28.6783 2.85676 22.3998 2.85676Z\" fill=\"#B9BDC1\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1283_39624\">\r\n <rect width=\"44\" height=\"40\" fill=\"white\" transform=\"translate(0.5 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n}","import React from 'react';\r\nexport const Empty = () => {\r\n return (\r\n <svg width=\"41\" height=\"41\" viewBox=\"0 0 41 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1283_39626)\">\r\n <path d=\"M36.1351 20.9955C25.1396 25.3151 16.1875 30.5689 11.8186 30.9221L14.7134 35.4696L36.1351 20.9955Z\" fill=\"#CED1D4\" />\r\n <path d=\"M37.4531 24.9937C39.7468 28.137 42.9751 35.0522 37.4531 35.3441C34.9101 35.4058 31.3306 32.981 37.4531 24.9937Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.6074 1.30001C25.1055 0.501016 24.051 0.26003 23.2522 0.761943L19.6474 3.02673C17.5114 2.68138 14.5326 2.642 12.1799 3.71891C10.8937 4.30766 9.75284 5.25155 9.09396 6.68863C8.65845 7.63849 8.46029 8.74589 8.52317 10.0159L1.2996 14.5543C0.500747 15.0562 0.260156 16.1108 0.762045 16.9098L12.7907 36.0589C13.2926 36.8579 14.3471 37.0989 15.1459 36.597L37.0985 22.8046C37.8973 22.3027 38.1379 21.2481 37.636 20.4491L25.6074 1.30001ZM2.79326 16.1347L8.88857 12.3051C8.91842 12.3953 8.95405 12.4868 8.99634 12.5777C9.70948 14.1097 11.2554 15.9861 13.7088 16.7327C16.2084 17.4934 19.3887 17.0049 23.1824 14.2981L23.3709 14.1636L22.1324 12.4273L21.9439 12.5618C18.5121 15.0104 16.0132 15.2048 14.3292 14.6924C12.5992 14.1659 11.458 12.8132 10.9295 11.6778C10.9197 11.6569 10.9072 11.6225 10.8968 11.5772C10.8595 11.4156 10.8267 11.2584 10.7981 11.1054L24.0275 2.79363L35.6048 21.2243L14.3706 34.5653L2.79326 16.1347ZM13.0675 5.65821C14.0932 5.18871 15.3429 4.98089 16.5902 4.94754L10.716 8.63821C10.7826 8.23367 10.8925 7.88269 11.0323 7.57786C11.4327 6.70447 12.1364 6.08441 13.0675 5.65821Z\" fill=\"#B9BDC1\" />\r\n <path d=\"M24.3482 14.3207C24.0493 15.6305 22.7454 16.4497 21.4358 16.1505C20.1262 15.8513 19.3069 14.547 19.6058 13.2372C19.9047 11.9274 21.2086 11.1082 22.5182 11.4074C23.8278 11.7066 24.6471 13.011 24.3482 14.3207Z\" fill=\"#CED1D4\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1283_39626\">\r\n <rect width=\"40\" height=\"40\" fill=\"white\" transform=\"translate(0.5 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )\r\n}","import React from 'react';\r\nexport const Error = () => {\r\n return (\r\n <svg width=\"41\" height=\"41\" viewBox=\"0 0 41 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M17.8035 3.2925C17.0304 3.2925 16.358 3.82772 16.1913 4.58349L14.0944 13.8188C13.8625 14.8535 14.6474 15.8412 15.7066 15.8412H25.4175C26.4764 15.8412 27.2677 14.8538 27.0297 13.8185L24.9328 4.58323C24.7608 3.82996 24.0975 3.29514 23.3264 3.2925H17.8035ZM15.9436 13.9945L17.9555 5.13336L23.1745 5.12121L25.1863 13.9945H15.9436Z\" fill=\"#B9BDC1\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M11.5449 28.1551C10.7717 28.1551 10.0993 28.6904 9.93264 29.4462L8.54048 35.6049C8.46109 35.7863 8.54048 35.6049 8.46109 35.7863H5.42145C4.91308 35.7863 4.50096 36.1984 4.50096 36.7068C4.50096 37.2152 4.91308 37.6273 5.42145 37.6273H35.5795C36.0879 37.6273 36.5 37.2152 36.5 36.7068C36.5 36.1984 36.0879 35.7863 35.5795 35.7863H32.595C32.5443 35.6284 32.5801 35.745 32.5443 35.5928L31.1121 29.4342C30.9394 28.6844 30.2672 28.1551 29.5 28.1551H11.5449ZM10.3781 35.7863L11.6854 29.9961H29.3426L30.6891 35.7863H10.3781Z\" fill=\"#B9BDC1\" />\r\n <path d=\"M13.7368 17.4381H28.0252C28.2486 17.4381 28.4434 17.5928 28.495 17.8162L30.271 25.9114C30.334 26.2094 30.1106 26.4901 29.8012 26.4901H11.6743C11.3649 26.4901 11.1358 26.1979 11.2102 25.8943L13.2727 17.799C13.3243 17.587 13.519 17.4381 13.7368 17.4381Z\" fill=\"#CED1D4\" />\r\n </svg>\r\n\r\n )\r\n}","import React from 'react';\r\n\r\nexport const Search = () => {\r\n return (\r\n <svg width=\"41\" height=\"41\" viewBox=\"0 0 41 41\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1283_39628)\">\r\n <path d=\"M29.421 4.71198C28.943 2.92749 30.0021 1.09315 31.7865 0.61487C33.5709 0.136592 35.405 1.19549 35.883 2.97998L40.3853 19.7878C40.8633 21.5723 39.8042 23.4066 38.0198 23.8849C36.2354 24.3632 34.4013 23.3043 33.9233 21.5198L29.421 4.71198Z\" fill=\"#CED1D4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0.607749 18.613C0.158895 16.9369 1.15336 15.2141 2.82895 14.7649C4.50454 14.3157 6.22674 15.3102 6.67559 16.9862L8.06043 22.1573C8.50928 23.8333 7.51482 25.5561 5.83923 26.0054C4.16364 26.4546 2.44144 25.46 1.99259 23.784L0.607749 18.613ZM3.41576 16.9561C2.95002 17.0809 2.67359 17.5598 2.79836 18.0257L4.18319 23.1967C4.30796 23.6626 4.78667 23.939 5.25242 23.8142C5.71816 23.6893 5.99459 23.2104 5.86982 22.7445L4.48499 17.5735C4.36022 17.1076 3.88151 16.8312 3.41576 16.9561Z\" fill=\"#B9BDC1\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18.0672 23.7222C17.6115 24.3518 16.9814 24.8602 16.2239 25.1659L23.5692 38.9314C23.929 39.6056 23.6742 40.4438 23.0003 40.8037C22.3263 41.1635 21.4883 40.9087 21.1286 40.2346L14.2002 27.2506L6.15159 39.7788C5.73857 40.4217 4.88273 40.6079 4.24003 40.1948C3.59732 39.7816 3.41113 38.9255 3.82416 38.2826L12.4422 24.8681C11.8201 24.4937 11.2926 23.9601 10.9267 23.3057L6.9728 23.4848C6.43282 23.5092 5.94855 23.1546 5.80865 22.6324L4.48764 17.7008C4.34775 17.1786 4.5899 16.6293 5.06976 16.3804L11.2775 13.1606L11.2169 12.934C11.0764 12.4095 11.3213 11.8581 11.8046 11.6107L26.5904 4.04383C26.8999 3.88542 27.2644 3.87542 27.5822 4.01662C27.8999 4.15781 28.1369 4.43508 28.2269 4.77102L32.7303 21.5831C32.8203 21.9191 32.7537 22.2777 32.5491 22.5589C32.3445 22.8401 32.0238 23.0137 31.6766 23.0314L18.0672 23.7222ZM17.9643 23.1894C18.1495 22.8739 18.2903 22.5322 18.3806 22.1748C18.4139 22.0434 18.4403 21.9098 18.4596 21.7746C18.4048 22.1588 18.2927 22.5298 18.1297 22.876C18.0793 22.983 18.0241 23.0876 17.9643 23.1894ZM18.8739 21.375L30.1375 20.8032L26.3713 6.7432L13.6819 13.2372L14.6854 16.9834C16.5391 17.0063 18.2272 18.2517 18.7306 20.1311C18.8421 20.5473 18.8877 20.9656 18.8739 21.375ZM12.4612 17.5793C11.2373 18.3061 10.4581 19.6082 10.3898 21.0243L7.79324 21.142L6.95134 17.999L11.8877 15.4386L12.4612 17.5793ZM15.1332 23.1064C16.1692 22.8287 16.784 21.7635 16.5064 20.7272C16.2288 19.6909 15.164 19.0759 14.128 19.3536C13.092 19.6313 12.4772 20.6965 12.7547 21.7328C12.9527 22.4718 13.5511 22.9972 14.2553 23.1365C14.2923 23.1351 14.3294 23.1351 14.3667 23.1366C14.4569 23.1402 14.5456 23.1526 14.6318 23.1732C14.797 23.173 14.9652 23.1515 15.1332 23.1064Z\" fill=\"#B9BDC1\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1283_39628\">\r\n <rect width=\"40\" height=\"40\" fill=\"white\" transform=\"translate(0.5 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n )\r\n}","//REACT\r\nimport React, { useEffect, useState } from \"react\";\r\n//MATERIAL\r\nimport { Button, Typography, Modal, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Tooltip, Box, SvgIcon } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport { ReplyPalette } from \"../stories/Generales/types\";\r\n//IMAGENES E ICONOS\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Action {\r\n //informativas\r\n text?: string;\r\n fn?: () => void;\r\n icon?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n disabled?: boolean;\r\n color?: ReplyPalette\r\n}\r\n\r\ninterface SCDialogProps {\r\n //informativas\r\n title?: string;\r\n iconTitle?: React.ReactNode | React.ReactElement | keyof typeof Muicon;\r\n subtitle?: string;\r\n content?: any;\r\n actions?: Action[];\r\n buttonDialog?: { icon?: string; text?: string; color?: ReplyPalette; tooltip?: string; variant?: 'text' | 'outlined' | 'contained'; iconPosition?: 'left' | 'right' | undefined; };\r\n //apariencia\r\n disableClose?: boolean;\r\n dividers?: boolean;\r\n widthContent?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';\r\n heightContent?: string;\r\n background?: string;\r\n //funcionales\r\n setShow?: React.Dispatch<React.SetStateAction<boolean>>;\r\n show?: boolean | any;\r\n}\r\n\r\nexport const SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, disableClose, dividers, widthContent, heightContent, background, setShow, show }: SCDialogProps) => {\r\n //VARIABLES\r\n let i = 0;\r\n let iconTitleValidation = \"\"\r\n let IconTitle: any;\r\n let ButtonIcon: any;\r\n //STATE\r\n const [open, setOpen] = useState(show);\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (show) {\r\n handleOpen();\r\n }\r\n else {\r\n handleClose();\r\n }\r\n }, [show]);\r\n //FUNCIONES O EVENTOS\r\n if (buttonDialog?.icon != undefined) {\r\n if (Muicon[buttonDialog?.icon as keyof typeof Muicon] == undefined) {\r\n ButtonIcon = buttonDialog?.icon as any;\r\n } else {\r\n ButtonIcon = Muicon[buttonDialog?.icon as keyof typeof Muicon]\r\n }\r\n }\r\n\r\n\r\n actions?.map(function (option: Action, index, array) {\r\n if (option?.icon) {\r\n if (option?.icon.type == undefined) {\r\n option.icon = Muicon[option?.icon as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n });\r\n\r\n if (iconTitle) {\r\n if (Muicon[iconTitle as keyof typeof Muicon] == undefined) {\r\n if (iconTitle && React.isValidElement(iconTitle) && iconTitle.type == undefined) {\r\n iconTitleValidation = \"image\"\r\n IconTitle = iconTitle\r\n } else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = iconTitle\r\n }\r\n } else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = Muicon[iconTitle as keyof typeof Muicon]\r\n }\r\n }\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n if (setShow) {\r\n setShow(true);\r\n }\r\n };\r\n\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n if (setShow) {\r\n setShow(false);\r\n }\r\n };\r\n\r\n //PROPS\r\n const dialogActions = actions ?? [{ text: \"Cerrar\", fn: handleClose }];\r\n content = content ?? { component: <Box> Aqui va el contenido </Box> };\r\n\r\n return (\r\n <div>\r\n {buttonDialog ?\r\n <>\r\n {buttonDialog.text != undefined ?\r\n <Tooltip placement=\"bottom-start\" title={buttonDialog.tooltip != undefined ? buttonDialog.tooltip : \"\"} slotProps={{ popper: { modifiers: [{ name: 'offset', options: { offset: [0, -14], }, },], }, }}>\r\n <Button size=\"small\" color={buttonDialog.color != undefined ? buttonDialog.color : \"primary\"} variant={buttonDialog?.variant != undefined ? buttonDialog?.variant : \"text\"} startIcon={buttonDialog?.iconPosition != undefined ? buttonDialog?.iconPosition == 'left' ? <ButtonIcon/> : \"\" : \"\"} endIcon={buttonDialog?.iconPosition != undefined ? buttonDialog?.iconPosition == 'right' ? <ButtonIcon /> : \"\" : \"\"} onClick={handleOpen}> {buttonDialog?.text != undefined ? buttonDialog.text : \"\"} </Button>\r\n </Tooltip>\r\n :\r\n <IconButton style={{ cursor: \"pointer\" }} onClick={handleOpen}>\r\n <SvgIcon fontSize=\"small\" color={buttonDialog?.color != undefined ? buttonDialog?.color : \"action\"} component={ButtonIcon} />\r\n </IconButton>\r\n }\r\n\r\n </>\r\n : \"\"\r\n }\r\n <Modal open={open || false} onClose={handleClose}>\r\n <Dialog\r\n data-testid=\"dialog-element\"\r\n open={open || false}\r\n onClose={disableClose ? undefined : handleClose}\r\n maxWidth={\"xl\"}\r\n sx={{\r\n width: \"100% !important\",\r\n \"& .MuiBackdrop-root\": {\r\n backdropFilter: \"blur(0px) !important\"\r\n },\r\n }}\r\n >\r\n {title && (\r\n <DialogTitle sx={{ m: 0, padding: \"8px 16px 8px 16px\" }} data-testid=\"dialog-icon-title\">\r\n <Grid container size={12} sx={{ justifyContent: \"space-between\", flexWrap: \"nowrap\" }}>\r\n <Grid container size={11} sx={{ alignItems: \"center\" }}>\r\n {iconTitle ?\r\n iconTitleValidation == \"image\" ?\r\n <Box sx={{ marginRight: \"16px\", width: \"44px\", height: \"44px\", borderRadius: \"1px\" }} >\r\n <img src={IconTitle} width=\"44px\" height=\"44px\"></img>\r\n </Box>\r\n :\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} sx={{ marginRight: \"16px\" }} />\r\n : \"\"}\r\n <Grid>\r\n <Typography color=\"text.primary\" variant=\"h6\" gutterBottom>\r\n {title ? title : \"\"}\r\n </Typography>\r\n <Typography color=\"text.secondary\" variant=\"body2\" gutterBottom>\r\n {subtitle\r\n ? subtitle\r\n : \"\"}\r\n </Typography>\r\n </Grid>\r\n </Grid>\r\n {disableClose != true ?\r\n <IconButton data-testid=\"close-dialog-button\" onClick={handleClose} size=\"small\" color=\"default\" sx={{ height: 22, width: 22 }} >\r\n <CloseIcon />\r\n </IconButton>\r\n : \"\"}\r\n </Grid>\r\n </DialogTitle>\r\n )}\r\n <DialogContent\r\n data-testid=\"dialog-content\"\r\n dividers={dividers ? dividers : false}\r\n sx={{\r\n m: 0,\r\n padding: \"12px 16px 8px 16px\",\r\n background: background ? background : \"white\",\r\n height: !heightContent ? { xs: \"60vh\", sm: \"70vh\", md: \"508px\" } : heightContent,\r\n width: (() => {\r\n switch (widthContent) {\r\n case \"extra-small\":\r\n return { xs: \"48vw\", md: \"33vw\" };\r\n case 'small':\r\n return { xs: \"54vw\", md: \"39vw\" };\r\n case 'medium':\r\n return { xs: \"64vw\", md: \"56vw\" };\r\n case 'large':\r\n return { xs: \"74vw\", md: \"78vw\" };\r\n case 'extra-large':\r\n return { xs: \"84vw\", md: \"93vw\" };\r\n default:\r\n return { xs: \"64vw\", md: \"56vw\" };\r\n }\r\n })\r\n }}\r\n >\r\n {content.url ? (\r\n <iframe\r\n style={{ border: \"none\", minWidth: \"100%\", minHeight: \"100%\" }}\r\n id=\"inlineFrameExample\"\r\n title=\"Inline Frame Example\"\r\n src={content.url}\r\n ></iframe>\r\n ) : (\r\n content.component\r\n )}\r\n </DialogContent>\r\n {dialogActions.length > 0 ?\r\n <DialogActions sx={{ gap: 1, m: 0, padding: \"12px 16px 12px 16px\", justifyContent: dialogActions.length >= 3 ? \"space-between\" : \"flex-end\" }}>\r\n {dialogActions.length >= 3 ? (\r\n <>\r\n <Button\r\n variant=\"text\"\r\n color={dialogActions[0].color || \"primary\"}\r\n size=\"small\"\r\n onClick={dialogActions[0].fn}\r\n disabled={dialogActions[0].disabled || false}\r\n startIcon={dialogActions[0].icon ? <SvgIcon fontSize=\"small\" component={dialogActions[0].icon} /> : undefined}\r\n >\r\n {dialogActions[0].text}\r\n </Button>\r\n \r\n <Box sx={{ display: \"flex\", gap: 1 }}>\r\n {dialogActions.slice(1).map((boton, index) => {\r\n return (\r\n <Button\r\n key={index + 1}\r\n variant={index === dialogActions.length - 2 ? \"contained\" : \"text\"}\r\n color={boton.color || \"primary\"}\r\n size=\"small\"\r\n onClick={boton.fn}\r\n disabled={boton.disabled || false}\r\n startIcon={boton.icon ? <SvgIcon fontSize=\"small\" component={boton.icon} /> : undefined}\r\n >\r\n {boton.text}\r\n </Button>\r\n );\r\n })}\r\n </Box>\r\n </>\r\n ) : (\r\n dialogActions.map((boton, index) => {\r\n return (\r\n <Button\r\n key={index}\r\n variant={index === dialogActions.length - 1 ? \"contained\" : \"text\"}\r\n color={boton.color || \"primary\"}\r\n size=\"small\"\r\n onClick={boton.fn}\r\n disabled={boton.disabled || false}\r\n startIcon={boton.icon ? <SvgIcon fontSize=\"small\" component={boton.icon} /> : undefined}\r\n >\r\n {boton.text}\r\n </Button>\r\n );\r\n })\r\n )}\r\n </DialogActions>\r\n : \"\"}\r\n </Dialog>\r\n </Modal>\r\n </div>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { Tabs, Tab, Dialog, DialogTitle, DialogContent, DialogActions, Modal, Backdrop, Fade, Popover, ClickAwayListener, Box, Stack, Radio, RadioGroup, FormControlLabel, FormControl, FormLabel, Chip, Typography, Paper, Divider, MenuList, MenuItem, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListItemAvatar, SvgIcon, Button, TextField, InputLabel, IconButton } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\n//IMAGENES E ICONOS\r\nimport Avatar from '@mui/material/Avatar';\r\nimport ImageIcon from '@mui/icons-material/Image';\r\nimport WorkIcon from '@mui/icons-material/Work';\r\nimport BeachAccessIcon from '@mui/icons-material/BeachAccess';\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Option {\r\n //informativas\r\n title?: string;\r\n subtitle?: any;\r\n description?: any;\r\n iconLeftColor?: 'inherit' | 'action' | 'disabled' | 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';\r\n iconLeft?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n iconRightColor?: 'inherit' | 'action' | 'disabled' | 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';\r\n iconRight?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n //apariencia\r\n divider?: boolean;\r\n disable?: boolean;\r\n //funcionales\r\n //page: React.ReactNode | React.ReactElement;\r\n fn?: any;\r\n}\r\n\r\ninterface SCListContentProps {\r\n options: Option[];\r\n}\r\n\r\nexport const SCListContent = ({ options }: SCListContentProps) => {\r\n //States\r\n const [selectedIndex, setSelectedIndex] = React.useState(\"1\");\r\n const [value, setValue] = React.useState(\"1\");\r\n //funciones o eventos\r\n options.map(function (option: Option, index, array) {\r\n if (option?.iconLeft) {\r\n if (option?.iconLeft.type == undefined) {\r\n option.iconLeft = Muicon[option?.iconLeft as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n\r\n if (option?.iconRight) {\r\n if (option?.iconRight.type == undefined) {\r\n option.iconRight = Muicon[option?.iconRight as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n <List sx={{ width: '100%', maxWidth: 360, bgcolor: 'background.paper', padding: \"0px !important\" }}>\r\n {options.map((option, index) => (\r\n <React.Fragment key={index}>\r\n <ListItemButton\r\n disabled={option.disable}\r\n onClick={option.fn}\r\n >\r\n {option.iconLeft ?\r\n <ListItemIcon sx={{minWidth: \"30px !important\"}} >\r\n <SvgIcon fontSize=\"small\" color={option.iconLeftColor || \"action\"} component={option.iconLeft} />\r\n </ListItemIcon>\r\n : \"\"}\r\n\r\n <ListItemText primary={option.title}\r\n secondary={\r\n <Grid gap={0.5}>\r\n <Grid container gap={0.5}>\r\n {option.subtitle}\r\n </Grid>\r\n <Grid container gap={0.5}>\r\n {option.description}\r\n </Grid>\r\n </Grid>\r\n } />\r\n {option.iconRight ?\r\n <ListItemIcon sx={{ minWidth: \"0px !important\"}}>\r\n <SvgIcon fontSize=\"small\" color={option.iconRightColor || \"action\"} component={option.iconRight} />\r\n </ListItemIcon>\r\n : \"\"}\r\n </ListItemButton>\r\n {\r\n option.divider == true ?\r\n <Divider />\r\n : \"\"\r\n }\r\n </React.Fragment>\r\n ))}\r\n </List>\r\n </>\r\n );\r\n};","//REACT\r\nimport React from \"react\";\r\n//MATERIAL\r\nimport { Box, Typography, Paper, Divider, MenuList, MenuItem, ListItemIcon, SvgIcon } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\n//HOOKS\r\nimport useWindowDimensions from \"./Hooks/useWindowDimensions\";\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Option {\r\n //informativas\r\n name?: string;\r\n iconLeft?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n iconRight?: any | React.ReactNode | React.ReactElement | React.ElementType | null;\r\n //apariencia\r\n divider?: boolean;\r\n //funcionales\r\n page: React.ReactNode | React.ReactElement;\r\n}\r\n\r\ninterface SCMenuProps {\r\n //informativas\r\n header?: any;\r\n options: Option[];\r\n defaultOption?: string;\r\n //apariencia\r\n disable?: boolean;\r\n widthMenu?: string;\r\n heightMenu?: string;\r\n widthPage?: string;\r\n}\r\n\r\nexport const SCMenu = ({ header, options, defaultOption, disable, widthMenu, heightMenu, widthPage }: SCMenuProps) => {\r\n //Constantes\r\n const { height, width } = useWindowDimensions();\r\n const menuSize = widthMenu ? parseInt(widthMenu) : 284;\r\n const pageSize = widthPage ? parseInt(widthPage) : width - menuSize;\r\n const widthContainer = menuSize + pageSize;\r\n //Variables\r\n let heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;\r\n //States\r\n const [selectedIndex, setSelectedIndex] = React.useState(\"1\");\r\n const [value, setValue] = React.useState(\"1\");\r\n //useEffect\r\n React.useEffect(() => {\r\n heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;\r\n }, [height]);\r\n\r\n React.useEffect(() => {\r\n if (defaultOption) {\r\n handleClickMenusItem(event, undefined);\r\n }\r\n }, [defaultOption]);\r\n //funciones o eventos\r\n options.map(function (option: Option, index, array) {\r\n if (option?.iconLeft) {\r\n if (option?.iconLeft.type == undefined) {\r\n option.iconLeft = Muicon[option?.iconLeft as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n\r\n if (option?.iconRight) {\r\n if (option?.iconRight.type == undefined) {\r\n option.iconRight = Muicon[option?.iconRight as keyof typeof Muicon]\r\n } else {\r\n option\r\n }\r\n }\r\n });\r\n\r\n const handleClickMenusItem = (event: any, index: any) => {\r\n if (defaultOption && index == undefined) {\r\n setSelectedIndex(defaultOption);\r\n setValue(defaultOption);\r\n } else if (index != undefined) {\r\n setSelectedIndex(String(index + 1));\r\n setValue(String(index + 1));\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <Grid container sx={{ height: heightContainer, width: widthContainer, flexDirection: \"column\" }}>\r\n <Paper data-testid='menu-content' sx={{ width: menuSize, height: heightContainer, overflow: 'auto' }}>\r\n {header && (\r\n header.component\r\n )}\r\n <MenuList sx={{ height: options.length * 45, padding: \"8px 0px\" }}>\r\n {options.map((option, index) => (\r\n <>\r\n <MenuItem\r\n disabled={disable == true ? true : false}\r\n key={index}\r\n selected={String(index + 1) === selectedIndex}\r\n onClick={(event) => handleClickMenusItem(event, index)}\r\n >\r\n {option.iconLeft ?\r\n <ListItemIcon sx={{ color: String(index + 1) === selectedIndex ? \"primary\" : \"active\" }}>\r\n <SvgIcon fontSize=\"small\" color={String(index + 1) === selectedIndex ? \"primary\" : \"action\"} component={option.iconLeft} />\r\n </ListItemIcon>\r\n : \"\"}\r\n <Grid container size={12} sx={{ maxWidth: 220, flexWrap: \"noWrap\", alignItems: \"center\" }}>\r\n <Typography noWrap variant=\"caption\" color={String(index + 1) === selectedIndex ? \"primary\" : \"active\"}>{option.name}</Typography>\r\n {option.iconRight ?\r\n <ListItemIcon sx={{ minWidth: \"0px !important\", color: String(index + 1) === selectedIndex ? \"primary\" : \"active\" }}>\r\n <SvgIcon fontSize=\"small\" color={String(index + 1) === selectedIndex ? \"primary\" : \"action\"} component={option.iconRight} />\r\n </ListItemIcon>\r\n : \"\"}\r\n </Grid>\r\n </MenuItem>\r\n {\r\n option.divider == true ?\r\n <Divider />\r\n : \"\"\r\n }\r\n </>\r\n ))}\r\n </MenuList>\r\n </Paper>\r\n <Grid container>\r\n {options.map((option, index) => (\r\n option.page ?\r\n String(index + 1) == value ? (\r\n <Box data-testid='menu-page-content' sx={{ padding: \"16px\", width: pageSize, height: heightContainer }} key={index}>\r\n {option.page}\r\n </Box>\r\n ) : \"\"\r\n : (<Typography color=\"error\">No se ha configurado el componente a visualizar</Typography>)\r\n ))}\r\n </Grid>\r\n </Grid>\r\n </>\r\n )\r\n};","import { useState, useEffect } from 'react';\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n return {\r\n width,\r\n height\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}","//REACT\r\nimport React, { Children, useEffect } from \"react\";\r\n//MATERIAL\r\nimport { Button, Typography, Box, SvgIcon, Tab, Tabs, Badge } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\n//COMPONENTES\r\nimport { SCToastNotification } from '../Components/ToastNotification/SCToastNotification';\r\nimport { ToastBaseProperties } from '../Components/ToastNotification';\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface Option {\r\n //informativas\r\n name?: string;\r\n iconOrBadge: string | number | null | undefined | any | React.ReactNode | React.ReactElement | React.ElementType;\r\n //apariencia\r\n disabled?: boolean;\r\n //funcionales\r\n page: React.ReactNode | React.ReactElement;\r\n}\r\n\r\ninterface SCTabsProps {\r\n //informativas \r\n options: Option[];\r\n defaultOption?: string;\r\n typeIcon?: \"badge\" | \"icon\";\r\n //apariencia\r\n background?: string;\r\n iconPosition?: \"top\" | \"bottom\" | \"start\" | \"end\";\r\n colorTab?: \"secondary\" | \"primary\";\r\n orientation?: \"horizontal\" | \"vertical\";\r\n variant?: \"standard\" | \"fullWidth\" | \"scrollable\";\r\n scrollButtons?: boolean;\r\n //funcionales\r\n children?: any;\r\n}\r\n\r\nexport const SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colorTab, orientation, variant, scrollButtons, children }: SCTabsProps) => {\r\n //CONSTANTES\r\n const [toast, setToast] = React.useState<ToastBaseProperties | null>(null);\r\n //VARIABLES\r\n let i = 0;\r\n let j = 0;\r\n let k = 0;\r\n let l = 0;\r\n let validateTypeIcon = true;\r\n //STATES\r\n const [value, setValue] = React.useState(\"1\");\r\n //USEEFFECT\r\n useEffect(() => {\r\n if (defaultOption) {\r\n handleChange(event, undefined);\r\n }\r\n }, [defaultOption]);\r\n //FUNCIONES O EVENTOS\r\n options.map(function (option) {\r\n const optionsLength = options.length;\r\n if (option?.iconOrBadge) {\r\n if (typeIcon == \"icon\") {\r\n if (option?.iconOrBadge in Muicon == true) {\r\n validateTypeIcon = true;\r\n option.iconOrBadge = Muicon[option?.iconOrBadge as keyof typeof Muicon]\r\n } else {\r\n validateTypeIcon = false;\r\n setTimeout(() => {\r\n setToast({\r\n type: \"error\",\r\n title: \"Componente SCTabs\",\r\n subtitle: \"En Option todos los iconOrBadge deben ser iconos de MUI, por favor verificar.\",\r\n time: 50,\r\n });\r\n }, 10);\r\n return;\r\n }\r\n } else if (typeIcon == \"badge\") {\r\n if (option?.iconOrBadge in Muicon == false) {\r\n validateTypeIcon = true;\r\n option\r\n } else {\r\n validateTypeIcon = false;\r\n setTimeout(() => {\r\n setToast({\r\n type: \"error\",\r\n title: \"Componente SCTabs\",\r\n subtitle: \"En Option todos los iconOrBadge deben ser numeros para el badge, por favor verificar.\",\r\n time: 10,\r\n });\r\n }, 10);\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n\r\n const handleChange = (event: any, newValue: any) => {\r\n if (defaultOption && newValue == undefined) {\r\n setValue(defaultOption);\r\n } else if (newValue != undefined) {\r\n setValue(newValue);\r\n }\r\n };\r\n\r\n\r\n\r\n return (\r\n <>\r\n\r\n {validateTypeIcon == true ?\r\n <Box sx={{ height: orientation == \"vertical\" ? '100%' : \"auto\", display: 'flex', flexDirection: orientation == \"vertical\" ? \"row\" : \"column\" }} id=\"tabsitos\">\r\n <TabContext value={value}>\r\n <Tabs\r\n data-testid='tab-container'\r\n value={value}\r\n onChange={handleChange}\r\n variant={variant ? orientation == \"vertical\" && variant == \"fullWidth\" ? \"standard\" : variant : \"standard\"}\r\n scrollButtons={scrollButtons == false ? false : true}\r\n visibleScrollbar={scrollButtons == false ? true : false}\r\n textColor={colorTab}\r\n indicatorColor={colorTab}\r\n orientation={orientation || \"horizontal\"}\r\n sx={{ borderBottom: orientation == \"vertical\" ? 0 : 1, borderRight: orientation == \"vertical\" ? 1 : 0, borderColor: 'divider', background: background || \"\" }}\r\n >\r\n {options.map((option) => (\r\n <Tab\r\n data-testid='tab-item'\r\n value={String((i = i + 1))}\r\n key={(j = j + 1)}\r\n label={option.name || \"\"}\r\n disabled={option.disabled || false}\r\n iconPosition={iconPosition || \"end\"}\r\n icon={typeIcon == \"badge\" ?\r\n <Badge\r\n sx={{\r\n width: \"20px\", height: \"20px\",\r\n \"& .MuiBadge-badge\": {\r\n top: \"10px\", right: \"10px\",\r\n },\r\n }}\r\n variant=\"standard\"\r\n badgeContent={option.iconOrBadge}\r\n color={value == String(i) ? colorTab ? colorTab : \"primary\" : \"default\"}\r\n />\r\n : typeIcon == \"icon\" ?\r\n <SvgIcon fontSize=\"small\" component={option.iconOrBadge} color={value == String(i) ? colorTab ? colorTab : \"primary\" : \"action\"} sx={{ width: \"20px\", height: \"20px\" }} />\r\n : \"\"\r\n }\r\n sx={{ \"& .MuiTab-icon\": { margin: \"0px !important\", }, padding: \"10px 16px\", gap: \"4px\" }}\r\n />\r\n ))}\r\n </Tabs>\r\n {children}\r\n {options.map((option) => (\r\n <TabPanel\r\n key={(k = k + 1)}\r\n value={String((l = l + 1))}\r\n sx={{ padding: \"16px\" }}\r\n >\r\n {option.page ? (\r\n option.page\r\n ) : (\r\n <Typography>No se ha configurado el componente a visualizar </Typography>\r\n )}\r\n </TabPanel>\r\n ))}\r\n </TabContext>\r\n </Box>\r\n :\r\n <Box sx={{ height: \"200px\" }}>\r\n\r\n {toast && <SCToastNotification data-testid='error-tab-message' {...toast} />}\r\n </Box>\r\n }\r\n </>\r\n );\r\n};","// React\r\nimport React, { useEffect, useState } from 'react';\r\n// MUI Material\r\nimport { Box, CircularProgress } from '@mui/material';\r\n// Local components\r\nimport { CalendarToolbar } from './CalendarToolbar';\r\nimport { MonthView } from './Views/MonthView';\r\nimport { WeekView } from './Views/WeekView';\r\nimport { DayView } from './Views/DayView';\r\n// Local types / interfaces\r\nimport { CalendarProps, CalendarView } from './Types';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\n// Calendar.tsx\r\nexport const Calendar: React.FC<CalendarProps> = ({\r\n events,\r\n onDayClick,\r\n onMoreClick,\r\n onEventClick,\r\n onEventHover,\r\n onDateChange,\r\n view: initialView = 'month',\r\n onViewChange,\r\n toolbar,\r\n isLoading = false,\r\n startHour = 0, // <- valor por defecto\r\n endHour = 23,\r\n}) => {\r\n const [view, setView] = useState<CalendarView>(initialView);\r\n const [currentDate, setCurrentDate] = useState(dayjs());\r\n\r\n useEffect(() => {\r\n onDateChange?.(currentDate);\r\n }, []);\r\n\r\n const handleViewChange = (newView: CalendarView) => {\r\n setView(newView);\r\n onViewChange?.(newView);\r\n };\r\n\r\n const handleNavigate = (action: 'PREV' | 'NEXT' | 'TODAY') => {\r\n let newDate = currentDate;\r\n const unit = view === 'month' ? 'month' : 'day';\r\n\r\n if (action === 'PREV') {\r\n if (view === 'day') newDate = currentDate.subtract(1, 'day');\r\n if (view === 'week') newDate = currentDate.subtract(1, 'week');\r\n if (view === 'month') newDate = currentDate.subtract(1, 'month');\r\n }\r\n else if (action === 'NEXT') {\r\n if (view === 'day') newDate = currentDate.add(1, 'day');\r\n if (view === 'week') newDate = currentDate.add(1, 'week');\r\n if (view === 'month') newDate = currentDate.add(1, 'month');\r\n }\r\n else if (action === 'TODAY') newDate = dayjs();\r\n\r\n setCurrentDate(newDate);\r\n onDateChange?.(newDate);\r\n };\r\n return (\r\n <Box>\r\n <CalendarToolbar\r\n labelDate={currentDate}\r\n view={view}\r\n onView={handleViewChange}\r\n onNavigate={handleNavigate}\r\n >\r\n {toolbar}\r\n </CalendarToolbar>\r\n {isLoading ? (\r\n <>\r\n <Box>\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n height=\"400px\"\r\n >\r\n <CircularProgress variant='indeterminate' />\r\n </Box>\r\n </Box>\r\n </>\r\n ) :\r\n (<>\r\n {view === 'month' && (\r\n <MonthView\r\n events={events}\r\n currentDate={currentDate}\r\n onDayClick={onDayClick}\r\n onMoreClick={onMoreClick}\r\n onEventClick={onEventClick}\r\n onEventHover={onEventHover}\r\n />\r\n )}\r\n\r\n {view === 'week' && (\r\n <WeekView\r\n events={events}\r\n currentDate={currentDate}\r\n onDayClick={onDayClick}\r\n onMoreClick={onMoreClick}\r\n onEventClick={onEventClick}\r\n onEventHover={onEventHover}\r\n startHour={startHour}\r\n endHour={endHour}\r\n />\r\n )}\r\n\r\n {view === 'day' && (\r\n <DayView\r\n events={events}\r\n currentDate={currentDate}\r\n onEventClick={onEventClick}\r\n onEventHover={onEventHover}\r\n startHour={startHour}\r\n endHour={endHour}\r\n />\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n </Box >\r\n );\r\n};\r\n","// React\r\nimport React, { useState } from 'react';\r\n// MUI Material\r\nimport { ChevronLeft, ChevronRight, KeyboardArrowDown, LightModeOutlined } from '@mui/icons-material';\r\nimport { Box, Chip, IconButton, Menu, MenuItem, Stack, Typography } from '@mui/material';\r\n// Local types\r\nimport { CalendarView } from './Types';\r\n// Day.js\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport updateLocale from 'dayjs/plugin/updateLocale';\r\nimport 'dayjs/locale/es';\r\ndayjs.locale('es');\r\n// Configura el domingo de la semana para que se cuente como el 0, y el indicador de la duracion de la semana se muestre correctamente.\r\ndayjs.extend(updateLocale);\r\ndayjs.updateLocale('en', {\r\n weekStart: 0, // 0 = domingo\r\n});\r\n\r\n// Interfaces - Types\r\ninterface CalendarToolbarProps {\r\n labelDate: Dayjs;\r\n view: CalendarView;\r\n onView: (view: CalendarView) => void;\r\n onNavigate: (action: 'TODAY' | 'PREV' | 'NEXT') => void;\r\n children?: React.ReactNode;\r\n}\r\n// CalendarToolbar Component\r\nexport const CalendarToolbar: React.FC<CalendarToolbarProps> = ({\r\n labelDate,\r\n view,\r\n onView,\r\n onNavigate,\r\n children,\r\n}) => {\r\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleViewChange = (newView: CalendarView) => {\r\n onView(newView);\r\n handleMenuClose();\r\n };\r\n\r\n const getFormattedDate = () => {\r\n const sunday = labelDate.day(0); // Domingo de la semana\r\n\r\n if (view === 'month') {\r\n const textMonth = labelDate.format('MMMM YYYY')\r\n return textMonth.charAt(0).toUpperCase() + textMonth.slice(1)\r\n }\r\n if (view === 'week') {\r\n return `${labelDate.startOf('week').format('DD MMM')} - ${labelDate.endOf('week').format('DD MMM YYYY')}`;\r\n }\r\n return labelDate.format(' DD MMMM YYYY');\r\n };\r\n\r\n return (\r\n\r\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={.5} px={1} py={.5}>\r\n <Box>\r\n <Chip\r\n label=\"Hoy\"\r\n icon={<LightModeOutlined fontSize=\"small\" />}\r\n color=\"primary\"\r\n onClick={() => onNavigate('TODAY')}\r\n />\r\n </Box>\r\n\r\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\r\n <IconButton aria-label=\"Anterior\" onClick={() => onNavigate('PREV')} size=\"small\" color=\"primary\">\r\n <ChevronLeft fontSize=\"small\" />\r\n </IconButton>\r\n <IconButton aria-label=\"Siguiente\" onClick={() => onNavigate('NEXT')} size=\"small\" color=\"primary\">\r\n <ChevronRight fontSize=\"small\" />\r\n </IconButton>\r\n <Typography variant=\"h6\" color=\"primary\" data-testid=\"currentDate\">\r\n {getFormattedDate()}\r\n </Typography>\r\n <IconButton onClick={handleMenuOpen} size=\"small\" color=\"primary\" aria-label=\"Cambiar vista\">\r\n <KeyboardArrowDown fontSize=\"small\" />\r\n </IconButton>\r\n <Menu\r\n anchorEl={anchorEl}\r\n open={open}\r\n onClose={handleMenuClose}\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\r\n >\r\n <MenuItem onClick={() => handleViewChange('month')}>Mes</MenuItem>\r\n <MenuItem onClick={() => handleViewChange('week')}>Semana</MenuItem>\r\n <MenuItem onClick={() => handleViewChange('day')}>Día</MenuItem>\r\n </Menu>\r\n </Stack>\r\n\r\n {/* Children alineados a la derecha si existen */}\r\n {children ? <Box>{children}</Box> : <Box width=\"24px\" />} {/* Placeholder si no hay children */}\r\n </Stack>\r\n\r\n );\r\n};\r\n","// React\r\nimport React from 'react';\r\n// MUI\r\nimport { Box, Typography, IconButton, Paper, Tooltip, Stack, Divider, CircularProgress } from '@mui/material';\r\nimport AddIcon from '@mui/icons-material/Add';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\n// Utils\r\nimport { getMonthDays, isToday, stateColors } from '../Utils';\r\nimport { CalendarProps } from '../Types';\r\nimport { CalendarEventCard } from '../Event';\r\nimport { SCDrawer } from '../../Drawer';\r\nimport { EmptyState } from '../../EmptyState';\r\n// Local images/icons\r\nimport { LogoCalendario } from '../../../assets';\r\n\r\ndayjs.extend(localeData);\r\ndayjs.extend(isBetween);\r\n\r\ninterface Props extends Pick<CalendarProps, 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick' | \"isLoading\" | 'onEventHover'> {\r\n currentDate: dayjs.Dayjs;\r\n}\r\n\r\nexport const MonthView = ({ events, isLoading, onDayClick, onMoreClick, currentDate, onEventClick, onEventHover }: Props) => {\r\n\r\n const noEvents = events.length === 0;\r\n const days = getMonthDays(currentDate);\r\n const weekDays = Array.from({ length: 7 }, (_, i) => dayjs().day(i));\r\n\r\n\r\n // Estado para el drawer\r\n const [openDrawer, setOpenDrawer] = React.useState(false);\r\n const [selectedDay, setSelectedDay] = React.useState<dayjs.Dayjs | null>(null);\r\n const [selectedEvents, setSelectedEvents] = React.useState<typeof events>([]);\r\n\r\n return (\r\n <Box width=\"100%\" sx={{ overflowX: 'auto' }}>\r\n <Box minWidth=\"1050px\">\r\n {/* Encabezado de días */}\r\n <Box display=\"grid\" gridTemplateColumns=\"repeat(7, minmax(150px, 1fr))\" gap={0.5} mb={1}>\r\n {weekDays.map((day) => (\r\n <Box key={day.day()} textAlign=\"center\" py={0.5}>\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {day.format('dddd')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Grilla de días */}\r\n {isLoading ? (\r\n <Box display={\"flex\"} alignItems={\"center\"} justifyContent={\"center\"} width={\"100%\"} height={\"450px\"}>\r\n <CircularProgress sx={{ width: \"60px\", height: \"60px\" }} variant='indeterminate' />\r\n </Box>\r\n ) : !isLoading && noEvents ? (\r\n <EmptyState\r\n title='Inicia la gestión de las actividades'\r\n subtitle='Selecciona un mecánico y asígnale las actividades a realizar.'\r\n icon={<LogoCalendario />}\r\n />\r\n ) : (\r\n <Box display=\"grid\" gridTemplateColumns=\"repeat(7, minmax(150px, 1fr))\" gap={0.5}>\r\n {days.map((day) => {\r\n const dayEvents = events.filter((e) =>\r\n day.isBetween(e.start.startOf('day'), e.end.endOf('day'), null, '[]')\r\n );\r\n const isCurrentMonth = day.month() === currentDate.month();\r\n\r\n return (\r\n <Paper\r\n key={day.toString()}\r\n onClick={() => onDayClick?.(day)}\r\n sx={{\r\n minHeight: 120,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n boxShadow: 'none',\r\n bgcolor: isCurrentMonth ? 'grey.50' : 'background.default',\r\n cursor: 'pointer',\r\n '&:hover': { bgcolor: 'primary.50' },\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <Box p={1} flexShrink={0}>\r\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"flex-start\">\r\n <Box\r\n sx={{\r\n width: 24,\r\n height: 24,\r\n borderRadius: '50%',\r\n backgroundColor: isToday(day) ? 'primary.main' : undefined,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: isToday(day) ? 'white' : 'text.secondary' }}\r\n >\r\n {day.date()}\r\n </Typography>\r\n </Box>\r\n\r\n {dayEvents.length > 2 && (\r\n <Tooltip title=\"Más eventos\">\r\n <IconButton\r\n color=\"primary\"\r\n size=\"small\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onMoreClick?.(day, dayEvents);\r\n setSelectedDay(day);\r\n setSelectedEvents(dayEvents);\r\n }}\r\n >\r\n <AddIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {/* Eventos */}\r\n <Box display=\"flex\" flexDirection=\"column\" gap={0.5} p={1} pt={0} overflow=\"hidden\">\r\n {dayEvents.slice(0, 2).map((event) => (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n onHover={onEventHover}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {dayEvents.length > 2 && (\r\n <Stack justifyItems=\"center\" px={1} pb={0.5} onClick={(e) => e.stopPropagation()}\r\n sx={{ \"& .MuiButtonBase-root\": { width: \"100%\" } }}\r\n >\r\n <SCDrawer\r\n width='350px'\r\n title={day.format('DD [de] MMMM YYYY')}\r\n open={openDrawer}\r\n buttonDrawer={{ text: `+ ${dayEvents.length}` }}\r\n anchor='right'\r\n actions={false}\r\n arrayElements={[{\r\n component: (() => {\r\n const [first, ...rest] = dayEvents;\r\n\r\n return (\r\n <Box display=\"flex\" width=\"100%\" flexDirection=\"column\" height=\"100%\" pr={1.5}>\r\n <Typography width={\"100%\"} color=\"text.secondary\"> Proximo evento </Typography>\r\n {first && (\r\n <Box p={1} pb={1} width={\"100%\"} >\r\n <CalendarEventCard\r\n event={first}\r\n color={stateColors[first.state]}\r\n onClick={() => onEventClick?.(first, day)}\r\n onHover={onEventHover}\r\n sx={{\r\n whiteSpace: 'normal',\r\n '& .MuiTypography-root': {\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n }\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n <Divider flexItem sx={{ width: \"100%\" }} />\r\n <Typography width={\"100%\"} py={1} color=\"text.secondary\"> Eventos restantes </Typography>\r\n\r\n {/* Scroll de eventos restantes */}\r\n <Box\r\n width=\"100%\"\r\n height=\"100%\"\r\n flex={1}\r\n overflow=\"auto\"\r\n p={1}\r\n pt={1}\r\n display=\"flex\"\r\n flexDirection=\"column\"\r\n gap={1.5}\r\n >\r\n {rest.map((event) => (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n onHover={onEventHover}\r\n sx={{\r\n whiteSpace: 'normal',\r\n '& .MuiTypography-root': {\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n })()\r\n }]}\r\n />\r\n\r\n </Stack>\r\n )\r\n }\r\n </Paper>\r\n );\r\n })}\r\n </Box>\r\n )}\r\n\r\n </Box>\r\n </Box >\r\n );\r\n};\r\n\r\n","import dayjs, { Dayjs } from 'dayjs';\r\n// Funcion para obotener los días del mes\r\nexport function getMonthDays(date: Dayjs) {\r\n const start = date.startOf('month').day(0);\r\n const end = date.endOf('month').day(6);\r\n\r\n const days: Dayjs[] = [];\r\n let current = start;\r\n\r\n while (current.isBefore(end) || current.isSame(end, 'day')) {\r\n days.push(current);\r\n current = current.add(1, 'day');\r\n }\r\n\r\n return days;\r\n}\r\n// Funcion para obtener al dia actual\r\nexport const isToday = (date: dayjs.Dayjs) => {\r\n return date.isSame(dayjs(), 'day');\r\n};\r\n// Definición de colores por estado\r\nexport const stateColors: Record<string, string> = {\r\n Asignada: 'warning.main',\r\n Finalizado: \"primary.main\",\r\n Vencida: 'error.main',\r\n EnProgreso: 'success.main',\r\n Aplazada: 'grey.400',\r\n Generada: 'secondary.main',\r\n};\r\n\r\n\r\n","import React from 'react';\r\nimport { Box, Stack, Typography, Theme, Divider, Tooltip, Popover } from '@mui/material';\r\nimport { CalendarEvent } from './Types';\r\nimport { capitalize } from '../../generales';\r\n\r\ninterface Props {\r\n event: CalendarEvent;\r\n color?: string;\r\n sx?: object;\r\n onClick?: (event: CalendarEvent) => void;\r\n onHover?: (event: CalendarEvent) => React.ReactNode;\r\n}\r\n\r\nexport const CalendarEventCard: React.FC<Props> = ({ event, color, sx, onClick, onHover }) => {\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\r\n\r\n const handlePopoverOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handlePopoverClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n return (\r\n <Stack\r\n direction=\"row\"\r\n padding={0.5}\r\n borderRadius={0.5}\r\n alignItems=\"flex-start\"\r\n minHeight=\"20px\"\r\n onMouseOver={() => onHover?.(event)}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onClick?.(event);\r\n }}\r\n sx={(theme: Theme) => ({\r\n backgroundColor: theme.palette.common.white,\r\n boxShadow: theme.shadows[2],\r\n color: theme.palette.text.secondary,\r\n overflow: 'hidden',\r\n cursor: onClick ? 'pointer' : 'default',\r\n ...sx,\r\n })}\r\n >\r\n <Divider\r\n orientation=\"vertical\"\r\n flexItem\r\n sx={{\r\n width: '2px',\r\n backgroundColor: color ?? 'primary.main',\r\n borderRadius: '2px',\r\n }}\r\n />\r\n\r\n <Box\r\n px={1}\r\n py={0.5}\r\n flex=\"1\"\r\n minWidth={0}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n >\r\n {/* <Tooltip title={event.title} placement=\"top\" > */}\r\n <Typography\r\n color=\"text.primary\"\r\n variant=\"caption\"\r\n noWrap\r\n sx={{\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n onMouseEnter={handlePopoverOpen}\r\n onMouseLeave={handlePopoverClose}\r\n >\r\n {event.title.charAt(0).toUpperCase() + event.title.slice(1).toLowerCase()}\r\n {/* {capitalize(event.title)} */}\r\n </Typography>\r\n {/* </Tooltip> */}\r\n\r\n <Popover\r\n id=\"mouse-over-popover\"\r\n sx={{ pointerEvents: 'none' }}\r\n open={open}\r\n anchorEl={anchorEl}\r\n anchorOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n transformOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n }}\r\n onClose={handlePopoverClose}\r\n disableRestoreFocus\r\n >\r\n {onHover ? onHover(event) : \" \"}\r\n </Popover>\r\n\r\n </Box>\r\n </Stack>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport const LogoCalendario = () => {\r\n return (\r\n <svg width=\"60\" height=\"61\" viewBox=\"0 0 60 61\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_5353_24891)\">\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M40.7361 11.1589C39.7792 11.1589 39.0106 11.9722 39.0106 12.9661V15.4375H20.0309V12.9661C20.0309 11.964 19.2545 11.1589 18.3055 11.1589C17.3487 11.1589 16.5801 11.9722 16.5801 12.9661V15.4375H12.8819C12.0652 15.4375 11.4038 16.0918 11.4038 16.8998V20.6551C11.4038 21.463 12.0652 22.1174 12.8819 22.1174H46.8383C47.655 22.1174 48.3165 21.463 48.3165 20.6551V16.8998C48.3165 16.0918 47.655 15.4375 46.8383 15.4375H42.4615V12.9661C42.4615 11.964 41.6851 11.1589 40.7361 11.1589ZM19.4827 19.2049C19.6528 19.1343 19.7361 19.006 19.7724 18.8352C19.6916 18.9714 19.594 19.0957 19.4827 19.2049Z\" fill=\"#00BCD4\" />\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M14.2037 25.8653C13.7579 25.8653 13.425 26.2168 13.425 26.6093V47.3669C13.425 47.7595 13.7579 48.1109 14.2037 48.1109H46.0004C46.4782 48.1109 46.8656 47.7236 46.8656 47.2458V26.6093C46.8656 26.2168 46.5327 25.8653 46.087 25.8653H14.2037ZM11.6948 26.6093C11.6948 25.2255 12.8384 24.135 14.2037 24.135H46.087C47.4522 24.135 48.5959 25.2255 48.5959 26.6093V47.2458C48.5959 48.6792 47.4339 49.8412 46.0004 49.8412H14.2037C12.8384 49.8412 11.6948 48.7508 11.6948 47.3669V26.6093Z\" fill=\"#6392BD\" />\r\n <path d=\"M19.481 30.9138C19.481 30.5164 20.1155 30.1903 20.9058 30.1903C21.6894 30.1903 22.3305 30.5131 22.3305 30.9138V32.8862C22.3305 33.2836 21.6894 33.6097 20.9058 33.6097C20.1222 33.6097 19.481 33.2869 19.481 32.8862V30.9138Z\" fill=\"#6392BD\" />\r\n <path d=\"M30.0242 30.1903C29.2339 30.1903 28.5995 30.5164 28.5995 30.9138V32.8862C28.5995 33.2869 29.2406 33.6097 30.0242 33.6097C30.8079 33.6097 31.449 33.2836 31.449 32.8862V30.9138C31.449 30.5131 30.8079 30.1903 30.0242 30.1903Z\" fill=\"#6392BD\" />\r\n <path d=\"M37.7179 30.9138C37.7179 30.5164 38.3524 30.1903 39.1427 30.1903C39.608 30.1903 40.022 30.3038 40.2825 30.4797C40.3515 30.5276 40.4116 30.5788 40.4561 30.6344C40.5274 30.7201 40.5675 30.8147 40.5675 30.9138V32.8862C40.5675 33.2836 39.9263 33.6097 39.1427 33.6097C38.3591 33.6097 37.7179 33.2869 37.7179 32.8862V30.9138Z\" fill=\"#6392BD\" />\r\n <path d=\"M20.9058 39.8787C20.1155 39.8787 19.481 40.2048 19.481 40.6022V42.5746C19.481 42.687 19.5322 42.7927 19.6213 42.8874C19.7036 42.9731 19.8172 43.0499 19.9552 43.1122C20.2068 43.228 20.5407 43.2981 20.9058 43.2981C21.6894 43.2981 22.3305 42.972 22.3305 42.5746V40.6022C22.3305 40.2015 21.6894 39.8787 20.9058 39.8787Z\" fill=\"#6392BD\" />\r\n <path d=\"M29.524 39.9477C29.7087 39.9032 29.9158 39.8787 30.1339 39.8787C30.9176 39.8787 31.5587 40.2015 31.5587 40.6022V42.5746C31.5587 42.972 30.9176 43.2981 30.1339 43.2981C29.3503 43.2981 28.7092 42.9753 28.7092 42.5746V40.6022C28.7092 40.315 29.0409 40.0646 29.524 39.9477Z\" fill=\"#6392BD\" />\r\n <path d=\"M38.5141 39.9482C38.6989 39.9037 38.9059 39.8792 39.1241 39.8792C39.9077 39.8792 40.5488 40.202 40.5488 40.6027V42.5751C40.5488 42.9725 39.9077 43.2986 39.1241 43.2986C38.3405 43.2986 37.6993 42.9758 37.6993 42.5751V40.6027C37.6993 40.3155 38.031 40.0651 38.5141 39.9482Z\" fill=\"#6392BD\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_5353_24891\">\r\n <rect width=\"60\" height=\"60\" fill=\"white\" transform=\"translate(0 0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n );\r\n}","// React\r\nimport React from 'react';\r\n// MUI Material\r\nimport { Box, CircularProgress, Typography } from '@mui/material';\r\n// Day.js\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\n// Utils, Types and Components\r\nimport { stateColors } from '../Utils';\r\nimport { CalendarProps } from '../Types';\r\nimport { CalendarEventCard } from '../Event';\r\nimport { EmptyState } from '../../EmptyState';\r\nimport { LogoCalendario } from '../../../assets';\r\ndayjs.extend(localeData);\r\n// Iconos locales.\r\n\r\n\r\ninterface Props extends Pick<\r\n CalendarProps,\r\n 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick' | 'isLoading' | 'startHour' | 'endHour' | 'onEventHover'\r\n> {\r\n currentDate: dayjs.Dayjs;\r\n}\r\n\r\nexport const WeekView: React.FC<Props> = ({\r\n events,\r\n currentDate,\r\n isLoading,\r\n onDayClick,\r\n onEventClick,\r\n onEventHover,\r\n startHour = 0,\r\n endHour = 23\r\n}) => {\r\n const noEvents = events.length === 0;\r\n const todayString = dayjs().format('YYYY-MM-DD');\r\n\r\n const startOfWeek = currentDate.startOf('week');\r\n const days = Array.from({ length: 7 }, (_, i) => startOfWeek.add(i, 'day'));\r\n\r\n // Horas visibles según props\r\n const hours = Array.from({ length: endHour - startHour + 1 }, (_, i) => startHour + i);\r\n\r\n // Función para definir tipo de borde por hora\r\n const getCellBorderType = (cellHour: number, dayEvents: typeof events) => {\r\n for (const event of dayEvents) {\r\n const start = event.start.hour() + event.start.minute() / 60;\r\n const end = event.end.hour() + event.end.minute() / 60;\r\n const cellStart = cellHour;\r\n const cellEnd = cellHour + 1;\r\n\r\n if (cellEnd > start && cellStart < end) {\r\n if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01) return 'full';\r\n if (Math.abs(cellStart - start) < 0.01) return 'start';\r\n if (Math.abs(cellEnd - end) < 0.01) return 'end';\r\n return 'middle';\r\n }\r\n }\r\n return 'none';\r\n };\r\n\r\n return (\r\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\r\n {/* Header de días */}\r\n <Box display=\"flex\" bgcolor=\"transparent\">\r\n <Box width={45} bgcolor=\"transparent\" />\r\n {days.map((day) => {\r\n const isToday = day.format('YYYY-MM-DD') === todayString;\r\n return (\r\n <Box\r\n key={day.toString()}\r\n height={40}\r\n flex={1}\r\n pl={0.5}\r\n textAlign=\"center\"\r\n display=\"flex\"\r\n flexDirection=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"flex-start\"\r\n bgcolor={isToday ? \"primary.100\" : 'transparent'}\r\n borderRadius={isToday ? \"6px 6px 0 0\" : \"0\"}\r\n borderBottom={isToday ? 2 : 0}\r\n borderColor={isToday ? \"primary.main\" : \"transparent\"}\r\n >\r\n <Typography variant=\"h6\" color=\"text.primary\">\r\n {day.format('D')}\r\n </Typography>\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {day.format('dddd')}\r\n </Typography>\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n\r\n {isLoading ? (\r\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\" width=\"100%\" height=\"450px\">\r\n <CircularProgress sx={{ width: \"60px\", height: \"60px\" }} variant=\"indeterminate\" />\r\n </Box>\r\n ) : !isLoading && noEvents ? (\r\n <EmptyState\r\n title=\"Inicia la gestión de las actividades\"\r\n subtitle=\"Selecciona un mecánico y asígnale las actividades a realizar.\"\r\n icon={<LogoCalendario />}\r\n />\r\n ) : (\r\n // Grid de horas y eventos\r\n <Box display=\"flex\" flex={1}>\r\n {/* Columna de las horas */}\r\n <Box width={45} bgcolor=\"transparent\">\r\n {hours.map((h) => (\r\n <Box\r\n key={h}\r\n height={60}\r\n textAlign=\"right\"\r\n pr={1}\r\n borderColor=\"divider\"\r\n >\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {dayjs().hour(h).format('h A')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Columnas de días */}\r\n {days.map((day) => {\r\n const dayEvents = events\r\n .filter((event) =>\r\n day.isBetween(event.start.startOf('day'), event.end.endOf('day'), null, '[]')\r\n )\r\n .filter((event) => {\r\n const startsInRange = event.start.hour() >= startHour && event.start.hour() <= endHour;\r\n const endsInRange = event.end.hour() >= startHour && event.end.hour() <= endHour;\r\n return startsInRange || endsInRange;\r\n })\r\n .sort((a, b) => a.start.valueOf() - b.start.valueOf());\r\n\r\n return (\r\n <Box\r\n key={day.toString()}\r\n flex={1}\r\n borderLeft=\"1px solid\"\r\n borderColor=\"divider\"\r\n position=\"relative\"\r\n data-testid={`week-day-column-${day.format('YYYY-MM-DD')}`}\r\n onClick={() => onDayClick?.(day)}\r\n >\r\n {/* Celdas horarias */}\r\n {hours.map((hourIdx) => {\r\n const borderType = getCellBorderType(hourIdx, dayEvents);\r\n return (\r\n <Box\r\n key={hourIdx}\r\n height={60}\r\n borderTop=\"1px solid\"\r\n borderColor={\r\n borderType === 'start' || borderType === 'full' || borderType === 'none'\r\n ? 'divider'\r\n : 'transparent'\r\n }\r\n borderBottom={\r\n borderType === 'end' || borderType === 'full'\r\n ? '1px solid divider'\r\n : undefined\r\n }\r\n />\r\n );\r\n })}\r\n\r\n {/* Render de eventos */}\r\n {dayEvents.map((event) => {\r\n const eventStart = day.isSame(event.start, 'day')\r\n ? event.start\r\n : day.startOf('day').hour(startHour).minute(0);\r\n\r\n const eventEnd = day.isSame(event.end, 'day')\r\n ? event.end\r\n : day.endOf('day').hour(endHour).minute(59);\r\n\r\n const startMinutes =\r\n (eventStart.hour() - startHour) * 60 + eventStart.minute();\r\n const durationMinutes = eventEnd.diff(eventStart, 'minute');\r\n\r\n return (\r\n <CalendarEventCard\r\n key={`${event.id}-${day.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, day)}\r\n onHover={onEventHover}\r\n sx={{\r\n position: 'absolute',\r\n top: `${startMinutes}px`,\r\n left: 4,\r\n right: 4,\r\n cursor: 'pointer',\r\n height: `${durationMinutes}px`\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};","import React from 'react';\r\nimport { Box, CircularProgress, Typography } from '@mui/material';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { CalendarEvent, CalendarProps } from '../Types';\r\nimport { stateColors } from '../Utils';\r\nimport { CalendarEventCard } from '../Event';\r\nimport { EmptyState } from '../../EmptyState';\r\nimport iconScheduler from '../../../assets/Icon Scheduler.svg';\r\nimport { LogoCalendario } from '../../../assets';\r\n\r\ninterface Props\r\n extends Pick<\r\n CalendarProps,\r\n 'events' | 'onDayClick' | 'onMoreClick' | 'onEventClick' | 'isLoading' | 'onEventHover'\r\n > {\r\n currentDate: Dayjs;\r\n startHour?: number;\r\n endHour?: number;\r\n}\r\n\r\nexport const DayView: React.FC<Props> = ({\r\n events,\r\n currentDate,\r\n isLoading,\r\n onEventClick,\r\n onEventHover,\r\n startHour = 0,\r\n endHour = 24,\r\n}) => {\r\n const hours = Array.from({ length: endHour - startHour + 1 }, (_, i) => startHour + i);\r\n\r\n const getCellBorderType = (cellHour: number, dayEvents: CalendarEvent[]) => {\r\n for (const event of dayEvents) {\r\n const start = event.start.hour() + event.start.minute() / 60;\r\n const end = event.end.hour() + event.end.minute() / 60;\r\n const cellStart = cellHour;\r\n const cellEnd = cellHour + 1;\r\n\r\n if (cellEnd > start && cellStart < end) {\r\n if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01) return 'full';\r\n if (Math.abs(cellStart - start) < 0.01) return 'start';\r\n if (Math.abs(cellEnd - end) < 0.01) return 'end';\r\n return 'middle';\r\n }\r\n }\r\n return 'none';\r\n };\r\n\r\n const dayEvents = events.filter(event =>\r\n currentDate.isBetween(event.start.startOf('day'), event.end.endOf('day'), null, '[]')\r\n );\r\n\r\n const noEvents = events.length === 0;\r\n\r\n return (\r\n <Box display=\"flex\" flexDirection=\"column\" height=\"100%\">\r\n {/* === Cabecera original === */}\r\n <Box display=\"flex\" borderBottom=\"1px solid\" borderColor=\"primary.main\" bgcolor=\"background.paper\">\r\n <Box width={47} bgcolor=\"background.default\" borderBottom=\"1px solid\" borderColor=\"transparent\" />\r\n <Box flex={1} display=\"flex\" flexDirection=\"column\" textAlign=\"start\" gap={0.5} py={1} bgcolor=\"primary.50\">\r\n <Typography variant=\"h6\" color=\"text.secondary\">\r\n {currentDate.format('D')}\r\n </Typography>\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {currentDate.format('dddd')}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n\r\n {/* === Contenido === */}\r\n {isLoading ? (\r\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\" width=\"100%\" height=\"450px\">\r\n <CircularProgress sx={{ width: '60px', height: '60px' }} variant=\"indeterminate\" />\r\n </Box>\r\n ) : noEvents ? (\r\n <EmptyState\r\n title=\"Inicia la gestión de las actividades\"\r\n subtitle=\"Selecciona un mecánico y asígnale las actividades a realizar.\"\r\n icon={<LogoCalendario />}\r\n />\r\n ) : (\r\n <Box display=\"flex\" flex={1}>\r\n {/* Columna de horas */}\r\n <Box width={47} bgcolor=\"background.default\">\r\n {hours.map(h => (\r\n <Box\r\n key={h}\r\n height={60}\r\n textAlign=\"right\"\r\n pr={1}\r\n borderTop=\"1px solid\"\r\n borderRight=\"1px solid\"\r\n borderColor=\"divider\"\r\n >\r\n <Typography variant=\"caption\" color=\"text.secondary\">\r\n {dayjs().hour(h).format('h A')}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n {/* Contenedor del día */}\r\n <Box flex={1} position=\"relative\">\r\n {hours.map(hourIdx => {\r\n const borderType = getCellBorderType(hourIdx, dayEvents);\r\n return (\r\n <Box\r\n key={hourIdx}\r\n height={60}\r\n borderTop=\"1px solid\"\r\n borderColor={\r\n borderType === 'start' || borderType === 'full' || borderType === 'none'\r\n ? 'divider'\r\n : 'transparent'\r\n }\r\n borderBottom={\r\n borderType === 'end' || borderType === 'full' ? '1px solid divider' : undefined\r\n }\r\n />\r\n );\r\n })}\r\n\r\n {/* Render de eventos */}\r\n {dayEvents.map(event => {\r\n // Limitar el inicio y fin del evento al rango visible\r\n const eventStart = currentDate.isSame(event.start, 'day')\r\n ? event.start\r\n : currentDate.startOf('day');\r\n\r\n const eventEnd = currentDate.isSame(event.end, 'day')\r\n ? event.end\r\n : currentDate.endOf('day');\r\n\r\n const minStart = currentDate.hour(startHour).minute(0);\r\n const maxEnd = currentDate.hour(endHour).minute(0);\r\n\r\n const clampedStart = eventStart.isBefore(minStart) ? minStart : eventStart;\r\n const clampedEnd = eventEnd.isAfter(maxEnd) ? maxEnd : eventEnd;\r\n\r\n const startMinutes = (clampedStart.hour() - startHour) * 60 + clampedStart.minute();\r\n const durationMinutes = clampedEnd.diff(clampedStart, 'minute');\r\n\r\n return (\r\n <CalendarEventCard\r\n key={`${event.id}-${currentDate.toString()}`}\r\n event={event}\r\n color={stateColors[event.state]}\r\n onClick={() => onEventClick?.(event, currentDate)}\r\n onHover={onEventHover}\r\n sx={{\r\n position: 'absolute',\r\n top: `${startMinutes}px`,\r\n height: `${durationMinutes}px`,\r\n left: 4,\r\n right: 4,\r\n }}\r\n />\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n","//REACT\r\nimport React, { useState } from 'react';\r\n//MATERIAL\r\nimport { Box, Typography, InputAdornment, Popover, ClickAwayListener } from '@mui/material';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport 'dayjs/locale/es';\r\nimport { LicenseInfo } from \"@mui/x-license-pro\";\r\n//IMAGENES E ICONOS\r\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\r\nimport { TimeField } from '@mui/x-date-pickers/TimeField';\r\nimport { DigitalClock } from '@mui/x-date-pickers/DigitalClock';\r\n\r\n\r\ninterface SCTimeProps {\r\n label?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n background?: string;\r\n timeStep?: number; // Intervalos de tiempo en minutos (5, 15, 30,)\r\n state: Dayjs | null;\r\n setState: (value: Dayjs | null) => void;\r\n}\r\n\r\nexport const SCTime = ({\r\n label = \"Hora\",\r\n required = false,\r\n disabled = false,\r\n background = \"transparent\",\r\n timeStep = 5,\r\n state,\r\n setState,\r\n}: SCTimeProps) => {\r\n LicenseInfo.setLicenseKey(\r\n \"77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI=\"\r\n );\r\n //CONSTANTES\r\n const isTimeEmpty = required && !state;\r\n const hasError = isTimeEmpty;\r\n //STATES\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\r\n const [isOpenPopover, setIsOpenPopover] = useState(false);\r\n const [popoverPlacement, setPopoverPlacement] = useState<'top' | 'bottom'>('bottom');\r\n\r\n // Detectar el mejor posicionamiento basado en el espacio disponible\r\n const detectPlacement = (element: HTMLElement) => {\r\n const rect = element.getBoundingClientRect();\r\n const windowHeight = window.innerHeight;\r\n const spaceBelow = windowHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n const popoverHeight = 300;\r\n\r\n // Si hay más espacio arriba que abajo y no hay suficiente espacio abajo\r\n if (spaceBelow < popoverHeight && spaceAbove > spaceBelow) {\r\n setPopoverPlacement('top');\r\n } else {\r\n setPopoverPlacement('bottom');\r\n }\r\n };\r\n\r\n\r\n const handleTimeFieldClick = (event: React.MouseEvent<HTMLElement>) => {\r\n if (!disabled) {\r\n const target = event.currentTarget;\r\n setAnchorEl(target);\r\n detectPlacement(target);\r\n setIsOpenPopover(true);\r\n }\r\n };\r\n\r\n const handleTimeChange = (newValue: any) => {\r\n const dayjsValue = newValue ? dayjs(newValue) : null;\r\n setState(dayjsValue);\r\n setIsOpenPopover(false);\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleClose = () => {\r\n setIsOpenPopover(false);\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs} >\r\n <Box sx={{ position: 'relative', width: '120px' }}>\r\n <TimeField\r\n label={label}\r\n value={state}\r\n disabled={disabled}\r\n required={required}\r\n error={hasError}\r\n onClick={handleTimeFieldClick}\r\n slotProps={{\r\n textField: {\r\n InputProps: {\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <AccessTimeIcon\r\n color={disabled ? \"disabled\" : \"action\"}\r\n sx={{ cursor: disabled ? 'default' : 'pointer' }}\r\n fontSize=\"small\"\r\n />\r\n </InputAdornment>\r\n ),\r\n sx: {\r\n backgroundColor: background,\r\n padding: \"8px 12px\",\r\n cursor: disabled ? 'default' : 'pointer',\r\n '& input': {\r\n cursor: disabled ? 'default' : 'pointer'\r\n },\r\n }\r\n }\r\n }\r\n }}\r\n sx={{\r\n width: '100%',\r\n '& .MuiInputBase-input': {\r\n cursor: disabled ? 'default' : 'pointer'\r\n },\r\n '& .MuiPickersSectionList-root': {\r\n padding: \"0px !important\",\r\n },\r\n }}\r\n />\r\n <Popover\r\n open={isOpenPopover}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: popoverPlacement === 'top' ? 'top' : 'bottom',\r\n horizontal: 'left',\r\n }}\r\n transformOrigin={{\r\n vertical: popoverPlacement === 'top' ? 'bottom' : 'top',\r\n horizontal: 'left',\r\n }}\r\n marginThreshold={0}\r\n disableScrollLock={true}\r\n slotProps={{\r\n paper: {\r\n sx: {\r\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',\r\n borderRadius: 1,\r\n border: '1px solid #e0e0e0',\r\n maxHeight: '300px',\r\n overflow: 'visible',\r\n }\r\n }\r\n }}\r\n >\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <Box sx={{ p: 0 }}>\r\n <DigitalClock\r\n value={state}\r\n onChange={handleTimeChange}\r\n timeStep={timeStep}\r\n sx={{\r\n '& .MuiList-root': {\r\n maxHeight: '250px',\r\n overflow: 'auto'\r\n },\r\n '& .MuiMenuItem-root': {\r\n fontSize: '0.875rem',\r\n py: 0.5,\r\n }\r\n }}\r\n />\r\n </Box>\r\n </ClickAwayListener>\r\n </Popover>\r\n </Box>\r\n </LocalizationProvider>\r\n );\r\n}","//REACT\r\nimport React, { useEffect, useState } from \"react\";\r\n//MATERIAL\r\nimport { Avatar, Button, Typography, Modal, Dialog, DialogActions, DialogContent, DialogTitle, Tooltip, Box, SvgIcon } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport IconButton, { IconButtonProps } from '@mui/material/IconButton';\r\nimport Card from '@mui/material/Card';\r\nimport CardHeader from '@mui/material/CardHeader';\r\nimport CardMedia from '@mui/material/CardMedia';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport CardActions from '@mui/material/CardActions';\r\nimport Collapse from '@mui/material/Collapse';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\n\r\ninterface SCCardProps {\r\n //informativas\r\n title?: string;\r\n subtitle?: string;\r\n iconTitle?: React.ReactNode | React.ReactElement | keyof typeof Muicon;\r\n actionsTitle?: any;\r\n image?: any;\r\n content?: any;\r\n actions?: { text?: string; fn: () => void; disabled?: boolean }[];\r\n expand?: { type?: 'icon' | 'text', position?: 'top' | 'bottom', content?: string };\r\n}\r\n\r\n\r\nexport const SCCard = ({ title, image, iconTitle, actionsTitle, subtitle, content, actions, expand }: SCCardProps) => {\r\n\r\n //VARIABLES\r\n let iconTitleValidation = \"\"\r\n let IconTitle: any;\r\n //STATE\r\n const [expanded, setExpanded] = React.useState(false);\r\n //FUNCIONES O EVENTOS\r\n if (iconTitle) {\r\n if (Muicon[iconTitle as keyof typeof Muicon] == undefined) {\r\n if (iconTitle && React.isValidElement(iconTitle) && iconTitle.type == undefined) {\r\n iconTitleValidation = \"image\"\r\n IconTitle = iconTitle\r\n }\r\n else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = iconTitle\r\n }\r\n } else {\r\n iconTitleValidation = \"icon\"\r\n IconTitle = Muicon[iconTitle as keyof typeof Muicon]\r\n }\r\n }\r\n\r\n const handleExpandClick = () => {\r\n setExpanded(!expanded);\r\n };\r\n\r\n\r\n return (\r\n <Card sx={{ maxWidth: 345 }}>\r\n {title &&\r\n <CardHeader\r\n avatar={\r\n iconTitle\r\n ? iconTitleValidation === \"image\"\r\n ? (\r\n <Box sx={{ marginRight: \"16px\", width: \"44px\", height: \"44px\", borderRadius: \"1px\" }} >\r\n <img src={IconTitle} width=\"44px\" height=\"44px\" />\r\n </Box>\r\n )\r\n : (\r\n <SvgIcon color=\"action\" fontSize=\"small\" component={IconTitle} sx={{ marginRight: \"16px\" }} />\r\n )\r\n : undefined\r\n }\r\n action={\r\n expand?.position == 'top' ? (\r\n expand?.type === 'text' ? (\r\n <Button onClick={handleExpandClick} sx={{ marginRight: 'auto' }}>\r\n Expandir\r\n </Button>\r\n ) : (\r\n expand?.type === 'icon' && (\r\n <IconButton onClick={handleExpandClick} sx={{ marginRight: 'auto' }} size='small'>\r\n <ExpandMoreIcon fontSize=\"small\" />\r\n </IconButton>\r\n )\r\n )\r\n ) : (\r\n actionsTitle\r\n )\r\n }\r\n title={title}\r\n subheader={subtitle}\r\n sx={{\r\n \"& .MuiCardHeader-title\": {\r\n fontSize: '14px',\r\n color: 'text.primary',\r\n },\r\n \"& .MuiCardHeader-subheader\": {\r\n fontSize: '13px',\r\n color: 'text.secondary'\r\n },\r\n \"& .MuiCardHeader-action\": {\r\n height: '40px !important',\r\n display: 'flex',\r\n alignItems: 'center',\r\n }\r\n }}\r\n />\r\n }\r\n {image && (\r\n <CardMedia\r\n component=\"img\"\r\n height=\"194\"\r\n image={image}\r\n />\r\n )}\r\n {content && (\r\n <CardContent sx={{ padding: \"8px 16px !important\" }}>\r\n {content}\r\n </CardContent>\r\n )}\r\n {(expand?.position == 'bottom' || actions != undefined) && (\r\n <CardActions disableSpacing sx={{ justifyContent: 'flex-end' }}>\r\n {expand?.position === 'bottom' ? (\r\n expand?.type === 'text' ? (\r\n <Button onClick={handleExpandClick} sx={{ marginRight: 'auto' }}>\r\n Expandir\r\n </Button>\r\n ) : (\r\n expand?.type === 'icon' && (\r\n <IconButton onClick={handleExpandClick} sx={{ marginRight: 'auto' }}>\r\n <ExpandMoreIcon />\r\n </IconButton>\r\n )\r\n )\r\n ) : null}\r\n {actions && actions.length > 0 ?\r\n actions.map((action: any, index: number) => (\r\n <Button\r\n key={index}\r\n size=\"small\"\r\n color={action.color || \"primary\"}\r\n variant={action.variant || \"text\"}\r\n onClick={action.fn}\r\n disabled={action.disabled || false}\r\n >\r\n {action.text}\r\n </Button>\r\n ))\r\n : \"\"}\r\n </CardActions>\r\n )}\r\n {expand && (\r\n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\r\n <CardContent sx={{ padding: \"8px 16px !important\" }}>\r\n {expand.content}\r\n </CardContent>\r\n </Collapse>\r\n )}\r\n </Card>\r\n );\r\n}","//REACT\r\nimport React, { useEffect, useState, useRef, useContext } from 'react';\r\n//MATERIAL\r\nimport { Button, Typography, IconButton, Box, Badge } from \"@mui/material\";\r\nimport Grid from '@mui/material/Grid2';\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\r\nimport { es } from 'date-fns/locale';\r\nimport { format, startOfWeek, endOfWeek, addDays, isSameDay } from 'date-fns';\r\nimport { SCListContent } from '../Components/SCListContent'\r\n//IMAGENES E ICONOS\r\nimport * as Muicon from \"@mui/icons-material\";\r\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';\r\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\r\nimport LightModeOutlinedIcon from '@mui/icons-material/LightModeOutlined';\r\n\r\ninterface SCActivityCalendarProps {\r\n //apariencia\r\n background?: string;\r\n //funcionales\r\n setState: React.Dispatch<React.SetStateAction<string>>;\r\n state: string | any;\r\n events: any[];\r\n fn?: any;\r\n configRangeHour?: string;\r\n}\r\n\r\nexport const SCActivityCalendar = ({\r\n //informativas\r\n //apariencia\r\n background,\r\n //funcionales\r\n setState,\r\n state,\r\n events,\r\n fn,\r\n configRangeHour,\r\n}: SCActivityCalendarProps) => {\r\n //VARIABLES\r\n let convertFecha\r\n //STATES\r\n const [fecha, setFecha] = useState(new Date());\r\n const [fechaSeleccionada, setFechaSeleccionada] = useState();\r\n const [stateVal, setstateVal] = React.useState(new Date());\r\n const [openCalendar, setOpenCalendar] = React.useState(false);\r\n //CONSTANTES\r\n const hoy = new Date();\r\n const inicioSemana = startOfWeek(fecha, { weekStartsOn: 0 }); // Domingo como inicio de semana\r\n const diasSemana = Array.from({ length: 7 }, (_, i) => addDays(inicioSemana, i));\r\n //USEEFFECT\r\n React.useEffect(() => {\r\n if (fecha != null) {\r\n handleConvertFecha(fecha)\r\n }\r\n }, [fecha]);\r\n //FUNCIONES O EVENTOS\r\n const handleConvertFecha = (fecha: any) => {\r\n if (fecha) {\r\n let day = (fecha.getDate() < 10 ? \"0\" : \"\") + fecha.getDate();\r\n let month = (fecha.getMonth() + 1 < 10 ? \"0\" : \"\") + (fecha.getMonth() + 1);\r\n let year = fecha.getFullYear();\r\n convertFecha = day + \"/\" + month + \"/\" + year;\r\n setState(convertFecha)\r\n setFecha(fecha)\r\n }\r\n };\r\n\r\n const toggleCalendar = (newOpen: any) => () => {\r\n setOpenCalendar(newOpen);\r\n };\r\n\r\n const locale = {\r\n ...es,\r\n options: {\r\n weekStartsOn: 0, // 0 para domingo, 1 para lunes, etc.\r\n },\r\n }\r\n\r\n return (\r\n <>\r\n <LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={es} >\r\n {openCalendar == false ? (\r\n <Box data-testid=\"calendar-mobile\" sx={{ width: \"100%\", background: background ? background : \"white\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", maxWidth: \"320px\", background: \"transparent\" }}>\r\n <Grid container gap={0.5} sx={{ justifyContent: \"space-between\", padding: \"12px 0px\", background: \"transparent\" }}>\r\n {diasSemana.map((dia) => (\r\n <Grid sx={{ width: \"36px\" }} key={dia.toString()}>\r\n <Box sx={{ width: \"36px\", height: \"40px\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\r\n <Typography sx={{ fontSize: \"12px !important\", color: \"#10184099\" }}>{format(dia, 'EEEE', { locale: es }).charAt(0).toUpperCase()}</Typography>\r\n </Box>\r\n <Box\r\n onClick={() => setFecha(dia)}\r\n sx={{\r\n padding: '10px',\r\n textAlign: 'center',\r\n backgroundColor: isSameDay(dia, fecha) ? '#2063a0' : 'transparent',\r\n cursor: 'pointer',\r\n borderRadius: '50%',\r\n //border: '1px solid lightgray',\r\n position: 'relative',\r\n //width: '36px',\r\n //height: '36px',\r\n }}\r\n >\r\n <Typography sx={{ fontSize: \"12px !important\", color: isSameDay(dia, fecha) ? 'white' : \"#101840DE\" }}>{format(dia, 'd')}</Typography>\r\n </Box>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"open-calendar-button\" onClick={toggleCalendar(true)}>\r\n <KeyboardDoubleArrowDownIcon color='action'/>\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box sx={{ width: \"100%\", background: \"white\" }}>\r\n <StaticDatePicker\r\n orientation=\"landscape\"\r\n openTo=\"day\"\r\n value={fecha}\r\n slotProps={{ toolbar: { hidden: true }, actionBar: { actions: [] } }} // Oculta la barra de herramientas\r\n //slotProps={{ actionBar: { actions: [] } }} // Oculta los botones de Cancelar y Aceptar\r\n sx={{ fontSize: \"12px !important\", height: \"300px !important\", background: background ? background : \"white\", \"& .MuiDayCalendar-header\": { justifyContent: \"space-between\" }, \"& .MuiDayCalendar-weekContainer\": { justifyContent: \"space-between\" }, \"& .MuiPickersCalendarHeader-root\": { paddingLeft: \"0px\", paddingRight: \"0px\", color: \"#10184099\" }, \"& .MuiPickersDay-root\": { fontSize: \"12px !important\" }, \"& .MuiDayCalendar-weekDayLabel\": { fontSize: \"12px !important\" }, }}\r\n onChange={(newValue: Date | any) => setFecha(newValue)}\r\n />\r\n <Grid container justifyContent=\"center\">\r\n <IconButton data-testid=\"close-calendar-button\" onClick={toggleCalendar(false)}>\r\n <KeyboardDoubleArrowUpIcon color='action'/>\r\n </IconButton>\r\n </Grid>\r\n </Box>\r\n )}\r\n </LocalizationProvider>\r\n <Box sx={{ width: \"100%\", height: openCalendar ? 'calc(91% - 300px)' : 'calc(91% - 100px)', background: \"white\", display: \"flex\", flexDirection: \"column\", overflowY: 'auto', gap: '8px', scrollSnapType: 'x mandatory', paddingBottom: '10px', }}>\r\n\r\n {diasSemana.map((day, dayIndex) => (\r\n <Box\r\n key={dayIndex}\r\n //onClick={() => setSelectedDate(day)}\r\n >\r\n {/*nombre del dia*/}\r\n <Grid container>\r\n <Typography variant=\"subtitle1\" sx={{ color: isSameDay(day, fecha) ? 'info.dark' : 'text.secondary', }}>\r\n {day.toLocaleDateString('es-ES', {\r\n day: 'numeric',\r\n })}\r\n {' de '}\r\n {day.toLocaleDateString('es-ES', {\r\n month: 'short'\r\n })}{', '}\r\n {day.toLocaleDateString('es-ES', {\r\n weekday: 'long',\r\n })}\r\n </Typography>\r\n </Grid>\r\n {/*lista de fechas con eventos*/}\r\n <Box sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n }}>\r\n {(() => {\r\n const esDomingo = day.getDay() === 0;\r\n const eventosDelDia = events.filter((event: any) =>\r\n new Date(event.date).toDateString() === day.toDateString()\r\n );\r\n if (eventosDelDia.length > 0) {\r\n return eventosDelDia.map((event: any, idx: number) => (\r\n <SCListContent\r\n key={idx}\r\n options={[{\r\n title: event.description,\r\n subtitle: <>\r\n {configRangeHour &&\r\n new Date(event.date.replace('00:00:00', event.startTime)).getHours() === new Date(event.date.replace('00:00:00', configRangeHour.split('-')[0])).getHours() &&\r\n new Date(event.date.replace('00:00:00', event.finalTime)).getHours() === new Date(event.date.replace('00:00:00', configRangeHour.split('-')[1])).getHours() &&\r\n new Date(event.date.replace('00:00:00', event.startTime)).getMinutes() === new Date(event.date.replace('00:00:00', configRangeHour.split('-')[0])).getMinutes() &&\r\n new Date(event.date.replace('00:00:00', event.finalTime)).getMinutes() === new Date(event.date.replace('00:00:00', configRangeHour.split('-')[1])).getMinutes()\r\n ? (\r\n <><Typography>Todo el dia</Typography><LightModeOutlinedIcon fontSize='small' /></>\r\n ) : (\r\n <>\r\n <Typography>{new Date(event.date.replace('00:00:00', event.startTime)).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: true })}</Typography>\r\n <ArrowForwardIcon fontSize='small' />\r\n <Typography>{new Date(event.date.replace('00:00:00', event.finalTime)).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: true })}</Typography>\r\n </>\r\n )}\r\n </>,\r\n iconLeftColor: event.state === 'Finalizada' ? 'success' : 'action',\r\n iconLeft: event.state === 'Finalizada' ? 'CheckCircle' : event.state === 'Aplazada' ? 'EventBusyOutlined' : event.state === 'En progreso' ? 'PendingOutlined' : 'RadioButtonUnchecked',\r\n description:\r\n <>\r\n {(event.state === 'Aplazada' || event.state === 'En progreso' || event.state === 'Auto asignada') ? (\r\n <>\r\n <Badge variant='dot' badgeContent={''} sx={{display: 'flex', alignItems: 'center','& .MuiBadge-badge': { top: '50%',transform: 'translateY(-50%)', },color: \"action\"}}/>\r\n <Typography>{event.state=='Auto asignada'?'Adicional':event.state}</Typography>\r\n </>\r\n ) : (\r\n null\r\n )}\r\n </>,\r\n divider: eventosDelDia.length === idx + 1 ? false : true,\r\n disable: (event.state === 'Finalizada' || event.state === 'Aplazada' || event.state === 'En progreso') ? true : false,\r\n fn: fn ? () => fn(event) : undefined\r\n }]} />\r\n ));\r\n } else {\r\n return (\r\n <SCListContent\r\n options={[{\r\n title: esDomingo == true ? 'No disponible' : 'No hay actividades asignadas',\r\n iconLeft: esDomingo == true ? 'BlockOutlined' : 'HandymanOutlined',\r\n disable: true,\r\n }]} />\r\n );\r\n }\r\n })()}\r\n </Box>\r\n </Box>\r\n ))}\r\n </Box>\r\n </>\r\n );\r\n};","import { createTheme } from '@mui/material/styles';\r\nimport { ERPTheme, ADPROTheme, ADCTheme } from './theme';\r\n\r\nexport const SincoTheme = createTheme({\r\n ...ERPTheme\r\n})\r\n\r\nexport let AdproSincoTheme = createTheme({\r\n ...ADPROTheme\r\n})\r\n\r\nexport let ADCSincoTheme = createTheme({\r\n ...ADCTheme\r\n})\r\n","import React from \"react\";\r\nimport type { } from \"@mui/x-data-grid/themeAugmentation\";\r\nimport { Components, Theme } from \"@mui/material\";\r\nimport {\r\n InfoRounded,\r\n CheckCircleRounded,\r\n WarningRounded,\r\n ErrorRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nexport const components: Components<Theme> = {\r\n MuiSelect: {\r\n styleOverrides: {\r\n outlined: {\r\n paddingBlock: \"13px\"\r\n },\r\n iconStandard: {\r\n \"&.MuiSelect-iconStandard.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .4em)\",\r\n }\r\n },\r\n iconFilled: {\r\n \"&.MuiSelect-iconFilled.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .15em)\",\r\n }\r\n },\r\n iconOutlined: {\r\n \"&.MuiSelect-iconOutlined.MuiSvgIcon-root\": {\r\n top: \"calc(50% - .35em)\",\r\n }\r\n },\r\n icon: {\r\n width: 16,\r\n height: 16,\r\n },\r\n root: {\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n letterSpacing: \"0.15px\",\r\n lineHeight: \"19px\",\r\n },\r\n },\r\n },\r\n MuiSpeedDialIcon: {\r\n styleOverrides: {\r\n icon: {\r\n height: 24,\r\n width: 24,\r\n },\r\n },\r\n },\r\n MuiSpeedDialAction: {\r\n styleOverrides: {\r\n fab: {\r\n height: 40,\r\n width: 40,\r\n },\r\n },\r\n },\r\n MuiBadge: {\r\n styleOverrides: {\r\n badge: {\r\n fontSize: \"11px\",\r\n fontWeight: 400,\r\n lineHeight: \"11px\",\r\n letterSpacing: \".14px\"\r\n }\r\n }\r\n },\r\n MuiSpeedDial: {\r\n styleOverrides: {\r\n fab: {\r\n height: 56,\r\n width: 56,\r\n },\r\n },\r\n },\r\n MuiAccordion: {\r\n styleOverrides: {\r\n root: {\r\n \".MuiButtonBase-root.MuiAccordionSummary-root\": {\r\n minHeight: 44,\r\n height: 44,\r\n },\r\n },\r\n },\r\n },\r\n MuiTabs: {\r\n styleOverrides: {\r\n root: {\r\n minHeight: 40,\r\n },\r\n },\r\n },\r\n MuiTab: {\r\n styleOverrides: {\r\n labelIcon: {\r\n paddingBlock: 10,\r\n },\r\n root: {\r\n textTransform: \"none\",\r\n minHeight: 40,\r\n },\r\n },\r\n },\r\n MuiDataGrid: {\r\n defaultProps: {\r\n density: \"compact\",\r\n },\r\n styleOverrides: {\r\n columnHeader: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n columnSeparator: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n iconButtonContainer: {\r\n fontSize: 16,\r\n },\r\n columnHeaderDraggableContainer: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"24px\",\r\n minHeight: \"24px !important\",\r\n maxHeight: \"24px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"36px\",\r\n minHeight: \"36px !important\",\r\n maxHeight: \"36px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"52px\",\r\n minHeight: \"52px !important\",\r\n maxHeight: \"52px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n\r\n columnHeaderTitle: {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 500,\r\n fontSize: 13,\r\n lineHeight: 1.5,\r\n letterSpacing: 0.17,\r\n\r\n },\r\n\r\n row: {\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"22px\",\r\n minHeight: \"22px !important\",\r\n maxHeight: \"22px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"28px\",\r\n minHeight: \"28px !important\",\r\n maxHeight: \"28px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"48px\",\r\n minHeight: \"48px !important\",\r\n maxHeight: \"48px !important\",\r\n },\r\n },\r\n ],\r\n },\r\n\r\n cell: {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 300,\r\n fontSize: 12,\r\n lineHeight: 1.5,\r\n letterSpacing: 0.17,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n variants: [\r\n {\r\n props: { density: \"compact\" },\r\n style: {\r\n \"--height\": \"22px\",\r\n minHeight: \"22px !important\",\r\n maxHeight: \"22px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"standard\" },\r\n style: {\r\n \"--height\": \"28px\",\r\n minHeight: \"28px !important\",\r\n maxHeight: \"28px !important\",\r\n },\r\n },\r\n {\r\n props: { density: \"comfortable\" },\r\n style: {\r\n \"--height\": \"48px\",\r\n minHeight: \"48px !important\",\r\n maxHeight: \"48px !important\",\r\n },\r\n },\r\n ],\r\n // COMPONENTES DENTRO DE CELDAS\r\n \".MuiButtonBase-root\": {\r\n lineHeight: 0,\r\n textTransform: \"capitalize\",\r\n },\r\n // CELDA ENFOCADA\r\n \".MuiDataGrid-cell\": {\r\n \"&:focus\": {\r\n outline: \"transparent\",\r\n borderWidth: 0,\r\n },\r\n },\r\n },\r\n // BOTOM MENU EN LAS CABECERA DE CADA COLUMNA\r\n menuIconButton: {\r\n svg: {\r\n fontSize: \"16px\",\r\n },\r\n },\r\n menu: {\r\n svg: {\r\n fontSize: \"16px !important\",\r\n },\r\n \".MuiMenuItem-root\": {\r\n minHeight: \"28px\",\r\n height: \"28px\",\r\n },\r\n },\r\n pinnedRows: {\r\n borderTop: \"1px solid rgba(228, 236, 244, 1)\",\r\n },\r\n root: {\r\n\r\n // FONT-SIZE DE CELDA EN MODO EDICION\r\n \".MuiInputBase-root\": {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 300,\r\n fontSize: 12,\r\n letterSpacing: 0.17,\r\n borderRadius: \"0px\",\r\n },\r\n // CELDA FOCUS\r\n \".Mui-focused, .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0px !important\",\r\n },\r\n // TAMAÑO PEQUEÑO\r\n \"&.MuiDataGrid-root--densityCompact\": {\r\n \".MuiSvgIcon-root\": {\r\n fontSize: 16,\r\n },\r\n \".MuiDataGrid-cellCheckbox\": {\r\n \".MuiButtonBase-root\": {\r\n padding: 4,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n MuiRating: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n sizeSmall: {\r\n fontSize: 18,\r\n },\r\n sizeMedium: {\r\n fontSize: 24,\r\n },\r\n sizeLarge: {\r\n fontSize: 30,\r\n },\r\n },\r\n },\r\n MuiDrawer: {\r\n styleOverrides: {\r\n root: {\r\n boxShadow:\r\n \"0px 3px 1px -2px rgba(24, 39, 75, 0.20), 0px 2px 2px 0px rgba(24, 39, 75, 0.14), 0px 1px 5px 0px rgba(24, 39, 75, 0.12)\",\r\n },\r\n },\r\n },\r\n MuiTooltip: {\r\n styleOverrides: {\r\n tooltip: {\r\n backgroundColor: \"#424242\",\r\n },\r\n },\r\n },\r\n MuiDialog: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n boxShadow: \"0px 11px 15px -7px rgba(24, 39, 75, 0.2), 0px 24px 38px 3px rgba(24, 39, 75, 0.14), 0px 9px 46px 8px rgba(24, 39, 75, 0.12)\",\r\n \"& .MuiBackdrop-root\": {\r\n backgroundColor: \"#00000047\",\r\n },\r\n }),\r\n },\r\n },\r\n MuiBackdrop: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: \"transparent\",\r\n }\r\n }\r\n },\r\n MuiDialogTitle: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px !important\",\r\n },\r\n },\r\n },\r\n MuiDialogContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px !important\",\r\n },\r\n },\r\n },\r\n MuiDialogActions: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"12px 16px !important\",\r\n },\r\n },\r\n },\r\n\r\n MuiCheckbox: {\r\n variants: [\r\n {\r\n props: { size: \"large\" },\r\n style: {\r\n padding: 9,\r\n \"& .MuiSvgIcon-fontSizeLarge\": {\r\n height: 24,\r\n width: 24,\r\n fontSize: 24,\r\n },\r\n },\r\n },\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n padding: 3,\r\n },\r\n },\r\n {\r\n props: { size: \"medium\" },\r\n style: {\r\n padding: 4,\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiToggleButton: {\r\n styleOverrides: {\r\n sizeSmall: {\r\n height: 32,\r\n },\r\n sizeMedium: {\r\n height: 38,\r\n },\r\n sizeLarge: {\r\n height: 48,\r\n },\r\n },\r\n },\r\n MuiChip: {\r\n defaultProps: {\r\n size: \"small\",\r\n variant: \"standard\",\r\n color: \"default\",\r\n },\r\n styleOverrides: {\r\n icon: {\r\n opacity: \"70%\",\r\n },\r\n deleteIconSmall: {\r\n height: 16,\r\n width: 16,\r\n },\r\n deleteIconMedium: {\r\n height: 20,\r\n width: 20,\r\n },\r\n sizeSmall: {\r\n height: 16,\r\n },\r\n sizeMedium: {\r\n height: 20,\r\n },\r\n avatarSmall: {\r\n height: 14,\r\n width: 14,\r\n },\r\n avatarMedium: {\r\n height: 18,\r\n width: 18,\r\n },\r\n iconColorPrimary: ({ theme }) => ({\r\n color: theme.palette.primary.main,\r\n }),\r\n colorDefault: ({ theme }) => ({\r\n backgroundColor: theme.palette.default.main,\r\n color: theme.palette.default.contrastText,\r\n }),\r\n deleteIcon: ({ theme }) => ({\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n color: theme.palette.background.paper,\r\n opacity: \"50%\",\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", },\r\n style: {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\",\r\n \":hover\": {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\",\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.action.active,\r\n opacity: \"54%\",\r\n \":hover\": {\r\n color: theme.palette.action.active,\r\n opacity: \"54%\",\r\n }\r\n }\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n color: theme.palette.default.contrastText,\r\n opacity: \"30%\"\r\n },\r\n },\r\n ]\r\n }),\r\n\r\n avatar: ({ theme }) => ({\r\n lineHeight: 1.8,\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n backgroundColor: theme.palette.background.paper,\r\n opacity: \"70%\",\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.primary.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.error.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.success.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.info.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.warning.main,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[400],\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.background.paper,\r\n },\r\n },\r\n ],\r\n }),\r\n label: ({ theme }) => ({\r\n ...theme.typography.caption,\r\n }),\r\n root: ({ theme }) => ({\r\n height: \"inherit\",\r\n borderRadius: 4,\r\n variants: [\r\n {\r\n props: { variant: \"outlined\", color: \"default\" },\r\n style: {\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n backgroundColor: \"transparent \",\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.default.main\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.default.main,\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.default.dark\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[50],\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.grey[100],\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"filled\", color: \"default\" },\r\n style: {\r\n backgroundColor: theme.palette.grey[50],\r\n color: theme.palette.default.contrastText,\r\n \":hover\": {\r\n backgroundColor: theme.palette.grey[100],\r\n }\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", avatar: true },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n backgroundColor: theme.palette.default.contrastText,\r\n color: theme.palette.default.contrastText,\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"primary\" },\r\n style: {\r\n backgroundColor: theme.palette.chipPrimary.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipPrimary.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"secondary\" },\r\n style: {\r\n backgroundColor: theme.palette.chipSecondary.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipSecondary.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.chipInfo.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipInfo.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.chipError.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipError.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.chipSuccess.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipSuccess.dark,\r\n },\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.chipWarning.main,\r\n \":hover\": {\r\n backgroundColor: theme.palette.chipWarning.dark,\r\n },\r\n },\r\n },\r\n ],\r\n }),\r\n },\r\n },\r\n MuiAvatar: {\r\n styleOverrides: {\r\n root: {\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n },\r\n },\r\n },\r\n MuiAlert: {\r\n defaultProps: {\r\n iconMapping: {\r\n success: React.createElement(CheckCircleRounded),\r\n error: React.createElement(ErrorRounded),\r\n warning: React.createElement(WarningRounded),\r\n info: React.createElement(InfoRounded),\r\n },\r\n },\r\n\r\n variants: [\r\n {\r\n props: { variant: \"filled\" },\r\n style: {\r\n color: \"#fff\",\r\n },\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n padding: \"7px 12px 7px 12px\",\r\n },\r\n },\r\n ],\r\n styleOverrides: {\r\n\r\n message: ({ theme }) => ({\r\n padding: \"0px 4px\",\r\n minWidth: 0,\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n color: theme.palette.text.primary\r\n }\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.text.primary\r\n }\r\n },\r\n\r\n ]\r\n }),\r\n icon: ({ theme }) => ({\r\n padding: \"4px\",\r\n marginRight: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: 100,\r\n variants: [\r\n {\r\n props: { variant: \"standard\", color: \"success\" },\r\n style: {\r\n backgroundColor: theme.palette.success[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"error\" },\r\n style: {\r\n backgroundColor: theme.palette.error[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"info\" },\r\n style: {\r\n backgroundColor: theme.palette.info[100],\r\n },\r\n },\r\n {\r\n props: { variant: \"standard\", color: \"warning\" },\r\n style: {\r\n backgroundColor: theme.palette.warning[100],\r\n },\r\n },\r\n ]\r\n\r\n }),\r\n action: ({ theme }) => ({\r\n display: \"flex\",\r\n gap: 1.5,\r\n padding: \"0px\",\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n color: theme.palette.action.active\r\n }\r\n },\r\n {\r\n props: { variant: \"outlined\" },\r\n style: {\r\n color: theme.palette.action.active\r\n }\r\n }\r\n ]\r\n }),\r\n\r\n root: {\r\n padding: \"8px 12px 8px 12px\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1.5,\r\n minWidth: \"296px\",\r\n },\r\n },\r\n },\r\n MuiAlertTitle: {\r\n defaultProps: {\r\n variant: \"subtitle2\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n marginBottom: 0,\r\n marginTop: 2.5\r\n },\r\n }\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n fontFamily: \"Roboto\",\r\n textTransform: \"unset\",\r\n fontWeightLight: 300,\r\n fontSize: \"13px\",\r\n lineHeight: \"normal\",\r\n \"@media(max-width: 885px)\": {\r\n fontSize: 14,\r\n },\r\n },\r\n startIcon: {\r\n marginLeft: 2,\r\n },\r\n endIcon: {\r\n marginRight: 2,\r\n },\r\n sizeSmall: {\r\n height: 26,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \".MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n \".MuiSvgIcon-fontSizeLarge\": {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 32,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \".MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n \".MuiSvgIcon-fontSizeLarge\": {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 38,\r\n \".MuiSvgIcon-fontSizeSmall\": {\r\n height: 16,\r\n width: 16,\r\n },\r\n \"&.MuiSvgIcon-fontSizeMedium\": {\r\n height: 18,\r\n width: 18,\r\n },\r\n },\r\n },\r\n },\r\n MuiButtonGroup: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiFab: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n circular: {\r\n boxShadow:\r\n \"0px 1px 18px 0px rgba(24, 39, 75, 0.12), 0px 6px 10px 0px rgba(24, 39, 75, 0.14), 0px 3px 5px -1px rgba(24, 39, 75, 0.20)\",\r\n sizeSmall: {\r\n height: 36,\r\n width: 36,\r\n svg: {\r\n height: 20,\r\n width: 20,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 48,\r\n width: 48,\r\n svg: {\r\n height: 22,\r\n width: 22,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 56,\r\n width: 56,\r\n svg: {\r\n height: 24,\r\n width: 24,\r\n },\r\n },\r\n },\r\n extended: {\r\n gap: 1,\r\n boxShadow:\r\n \" 0px 1px 18px 0px rgba(24, 39, 75, 0.12), 0px 6px 10px 0px rgba(24, 39, 75, 0.14), 0px 3px 5px -1px rgba(24, 39, 75, 0.20)\",\r\n sizeSmall: {\r\n height: 32,\r\n svg: {\r\n height: 20,\r\n width: 20,\r\n marginRight: 4,\r\n },\r\n },\r\n sizeMedium: {\r\n height: 38,\r\n svg: {\r\n height: 22,\r\n width: 22,\r\n marginRight: 4,\r\n },\r\n },\r\n sizeLarge: {\r\n height: 48,\r\n svg: {\r\n height: 24,\r\n width: 24,\r\n marginRight: 4,\r\n },\r\n },\r\n },\r\n root: {\r\n textTransform: \"capitalize\",\r\n },\r\n },\r\n },\r\n\r\n MuiFormControl: {\r\n defaultProps: {\r\n size: \"small\",\r\n margin: \"none\",\r\n },\r\n },\r\n MuiFormHelperText: {\r\n defaultProps: {\r\n margin: \"dense\",\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n fontSizeLarge: {\r\n width: 35,\r\n height: 35,\r\n fontSize: 35,\r\n },\r\n fontSizeMedium: {\r\n width: 20,\r\n height: 20,\r\n fontSize: 20,\r\n },\r\n fontSizeSmall: {\r\n width: 16,\r\n height: 16,\r\n fontSize: 16,\r\n },\r\n },\r\n },\r\n MuiIconButton: {\r\n defaultProps: {\r\n color: \"inherit\"\r\n },\r\n styleOverrides: {\r\n sizeSmall: {\r\n padding: 3,\r\n },\r\n sizeMedium: {\r\n padding: 8,\r\n },\r\n sizeLarge: {\r\n padding: 12,\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n defaultProps: {\r\n margin: \"none\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n \"&.MuiInput-underline\": {\r\n marginTop: 9,\r\n },\r\n \".MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\r\n paddingBlock: 6.51,\r\n },\r\n \".MuiOutlinedInput-input\": {\r\n paddingBlock: 14,\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n notchedOutline: {\r\n borderColor: \"rgba(16, 24, 64, 0.23)\",\r\n },\r\n },\r\n },\r\n\r\n MuiAutocomplete: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n \"&.MuiAutocomplete-root .MuiOutlinedInput-root\": {\r\n padding: \"6px 14px 6px 10px !important\",\r\n },\r\n \"& .MuiAutocomplete-endAdornment\": {\r\n top: \"calc(50% - 12px)\",\r\n transform: \"none\",\r\n },\r\n \"&.MuiAutocomplete-root .MuiOutlinedInput-root.MuiInputBase-sizeSmall\":\r\n {\r\n paddingBlock: 3.5,\r\n paddingRight: 14,\r\n \".MuiIconButton-sizeSmall .MuiAutocomplete-popupIndicator\": {\r\n padding: 5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n asterisk: ({ theme }) => ({\r\n color: theme.palette.error.main,\r\n }),\r\n root: {\r\n display: \"flex\",\r\n gap: \".2rem\",\r\n flexDirection: \"row-reverse\",\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n letterSpacing: \"0.15px\",\r\n },\r\n filled: {\r\n \"&.MuiInputLabel-filled.MuiInputLabel-sizeSmall:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(12px,15px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-filled.MuiInputLabel-sizeMedium:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(12px,19px) scale(1)\",\r\n },\r\n },\r\n standard: {\r\n \"&.MuiInputLabel-standard.MuiInputLabel-sizeSmall:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(0, 14px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-standard.MuiInputLabel-sizeMedium:not(.MuiInputLabel-shrink)\":\r\n {\r\n transform: \"translate(0, 16px) scale(1)\",\r\n },\r\n\r\n },\r\n outlined: {\r\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall \": {\r\n transform: \"translate(14px,8px) scale(1)\",\r\n },\r\n \"&.MuiInputLabel-outlined \": {\r\n transform: \"translate(14px, 14px) scale(1)\",\r\n\r\n \"&.MuiInputLabel-shrink\": {\r\n transform: \"translate(14px, -7px) scale(0.75)\",\r\n },\r\n },\r\n },\r\n },\r\n defaultProps: {\r\n margin: \"dense\",\r\n },\r\n },\r\n MuiCard: {\r\n styleOverrides: {\r\n root: {\r\n overflow: \"initial\",\r\n boxShadow:\r\n \"0px 2px 1px -2px rgba(24, 39, 75, 0.20), 0px 1px 1px -1px rgba(24, 39, 75, 0.14), 0px 1px 3px 0px rgba(24, 39, 75, 0.12)\",\r\n },\r\n },\r\n },\r\n MuiCardHeader: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px \",\r\n },\r\n },\r\n },\r\n MuiCardContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px \",\r\n },\r\n },\r\n },\r\n MuiCardActions: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"8px 16px\",\r\n },\r\n },\r\n },\r\n MuiRadio: {\r\n variants: [\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n padding: 3,\r\n },\r\n },\r\n {\r\n props: { size: \"medium\" },\r\n style: {\r\n padding: 4,\r\n },\r\n },\r\n {\r\n props: { size: \"large\" },\r\n style: {\r\n padding: 9,\r\n \"& .MuiSvgIcon-fontSizeLarge\": {\r\n width: 24,\r\n height: 24,\r\n fontSize: 24,\r\n },\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiSwitch: {\r\n variants: [\r\n {\r\n props: { size: \"small\" },\r\n style: {\r\n height: 22,\r\n \".MuiSwitch-switchBase\": {\r\n padding: 3,\r\n },\r\n },\r\n },\r\n ],\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n },\r\n MuiTextField: {\r\n defaultProps: {\r\n size: \"small\",\r\n margin: \"none\",\r\n },\r\n variants: [\r\n {\r\n props: { variant: \"standard\" },\r\n style: {\r\n \".MuiInputBase-input.MuiInputBase-inputSizeSmall\": {\r\n padding: 1.5,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n MuiList: {\r\n defaultProps: {\r\n dense: false,\r\n },\r\n styleOverrides: {\r\n padding: {\r\n \".MuiListItem-padding\": {\r\n paddingBlock: 1,\r\n },\r\n },\r\n dense: {\r\n \".MuiListItem-dense\": {\r\n padding: \"0.25px 0px 0.25px 16px\",\r\n },\r\n },\r\n },\r\n },\r\n MuiListItemButton: {\r\n styleOverrides: {\r\n dense: {\r\n padding: \"4px 16px 4px 16px \",\r\n },\r\n root: {\r\n padding: \"8.21px 16px\",\r\n \".MuiListItemText-multiline\": {\r\n marginBlock: \"4px\",\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n dense: {\r\n height: 30,\r\n minHeight: 30,\r\n \".MuiListItemText-root > .MuiTypography-root\": {\r\n lineHeight: \"14.3px\",\r\n letterSpacing: 0.15,\r\n },\r\n },\r\n root: {\r\n padding: \"7px 16px 7px 16px\",\r\n \".MuiMenuList-root\": {\r\n height: 34,\r\n minHeight: 34,\r\n },\r\n \".MuiListItemText-root > .MuiTypography-root\": {\r\n lineHeight: \"20px\",\r\n letterSpacing: 0.17,\r\n },\r\n \".MuiListItemIcon-root\": {\r\n minWidth: 32,\r\n },\r\n },\r\n },\r\n },\r\n MuiTableBody: {\r\n styleOverrides: {\r\n root: {\r\n \".MuiTableCell-body.MuiTableCell-sizeMedium\": {\r\n padding: \"16px !important\",\r\n },\r\n },\r\n },\r\n },\r\n MuiTableCell: {\r\n styleOverrides: {\r\n sizeMedium: {\r\n padding: 13,\r\n },\r\n },\r\n },\r\n MuiTable: {\r\n defaultProps: {\r\n size: \"small\",\r\n },\r\n styleOverrides: {\r\n root: {\r\n minWidth: 630,\r\n },\r\n },\r\n },\r\n};","import { PaletteOptions } from \"@mui/material\";\r\n\r\n\r\nexport const BasicPalette: Partial<PaletteOptions> = {\r\n default: {\r\n main: \"#E4E5E7\",\r\n dark: \"#D1D3D7\",\r\n light: \"#F2F2F3\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipInfo: {\r\n main: \"#C0E8FC\",\r\n dark: \"#9CD8FA\",\r\n light: \"#E0F4FE\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipWarning: {\r\n main: \"#FCE4C0\",\r\n dark: \"#FAD19C\",\r\n light: \"#F3F2F0\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipError: {\r\n main: \"#FCD4D4\",\r\n dark: \"#F4B9B9\",\r\n light: \"#FEEAEA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSuccess: {\r\n main: \"#DDF8C3\",\r\n dark: \"#C8F3A2\",\r\n light: \"#EFFCE2\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n error: {\r\n 50: \"#F9E8E8\",\r\n 100: \"#F1C7C7\",\r\n 200: \"#E8A1A1\",\r\n 300: \"#DF7B7B\",\r\n light: \"#D85F5F\",\r\n main: \"#D14343\",\r\n 600: \"#CC3D3D\",\r\n 700: \"#C63434\",\r\n 800: \"#C02C2C\",\r\n dark: \"#B51E1E\",\r\n A100: \"#FFECEC\",\r\n A200: \"#FFB9B9\",\r\n A400: \"#FF8686\",\r\n A700: \"#FF6D6D\",\r\n contrastText: \"#ffffff\",\r\n },\r\n warning: {\r\n 50: \"#FFF0E0\",\r\n 100: \"#FEDAB3\",\r\n 200: \"#FDC280\",\r\n 300: \"#FCAA4D\",\r\n light: \"#FC9726\",\r\n main: \"#FB8500\",\r\n 600: \"#FA7D00\",\r\n 700: \"#FA7200\",\r\n 800: \"#F96800\",\r\n dark: \"#F85500\",\r\n A100: \"#FFFFFF\",\r\n A200: \"#FFF1EB\",\r\n A400: \"#FFCCB8\",\r\n A700: \"#FFBA9F\",\r\n contrastText: \"#ffffff\",\r\n },\r\n info: {\r\n 50: \"#E6F3F8\",\r\n 100: \"#C0E2EE\",\r\n 200: \"#96CFE2\",\r\n 300: \"#6CBCD6\",\r\n light: \"#4DADCE\",\r\n main: \"#2D9FC5\",\r\n 600: \"#2897BF\",\r\n 700: \"#228DB8\",\r\n 800: \"#1C83B0\",\r\n dark: \"#1172A3\",\r\n A100: \"#D4EFFF\",\r\n A200: \"#A1DCFF\",\r\n A400: \"#6ECAFF\",\r\n A700: \"#54C1FF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n success: {\r\n 50: \"#F2F9E7\",\r\n 100: \"#DDEFC4\",\r\n 200: \"#C7E49D\",\r\n 300: \"#B1D975\",\r\n light: \"#A0D158\",\r\n main: \"#8FC93A\",\r\n 600: \"#87C334\",\r\n 700: \"#7CBC2C\",\r\n 800: \"#72B525\",\r\n dark: \"#60A918\",\r\n A100: \"#EDFFDE\",\r\n A200: \"#D2FFAB\",\r\n A400: \"#B6FF78\",\r\n A700: \"#A9FF5E\",\r\n contrastText: \"#ffffff\",\r\n },\r\n grey: {\r\n 50: \"#FBFBFB\",\r\n 100: \"#F5F5F6\",\r\n 200: \"#EAEBEC\",\r\n 300: \"#DCDEE0\",\r\n 400: \"#CED1D4\",\r\n 500: \"#C4C7CA\",\r\n 600: \"#B9BDC1\",\r\n 700: \"#B2B7BB\",\r\n 800: \"#AAAEB3\",\r\n 900: \"#A2A6AB\",\r\n A100: \"#FFFFFF\",\r\n A200: \"#FFFFFF\",\r\n A400: \"#D4EAFF\",\r\n A700: \"#BBDDFF\",\r\n },\r\n text: {\r\n primary: \"#101840de\",\r\n secondary: \"#10184099\",\r\n disabled: \"#10184061\",\r\n },\r\n action: {\r\n active: \"#1018408a\",\r\n hover: \"#1018400a\",\r\n selected: \"#10184014\",\r\n disabled: \"#10184042\",\r\n disabledBackground: \"#1018401f\",\r\n focus: \"#1018401f\",\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#fff\",\r\n },\r\n common: {\r\n black: \"#000\",\r\n white: \"#fff\",\r\n },\r\n divider: \"#0000001f\",\r\n};\r\n\r\nexport const paletteERP: PaletteOptions = {\r\n primary: {\r\n 50: \"#E4ECF4\",\r\n 100: \"#BCD0E3\",\r\n 200: \"#8FB1D0\",\r\n 300: \"#6392BD\",\r\n light: \"#417AAE\",\r\n main: \"#2063A0\",\r\n 600: \"#1C5B98\",\r\n 700: \"#18518E\",\r\n 800: \"#134784\",\r\n dark: \"#0B3573\",\r\n A100: \"#A5C5FF\",\r\n A200: \"#72A4FF\",\r\n A400: \"#3F83FF\",\r\n A700: \"#2572FF\",\r\n contrastText: \"#ffffff\",\r\n\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#C4E1F5\",\r\n dark: \"#A2CDEE\",\r\n light: \"#E2F0FA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#C4F6FD\",\r\n dark: \"#A8F1FB\",\r\n light: \"#E0FBFE\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n\r\nexport const paletteADPRO: PaletteOptions = {\r\n primary: {\r\n 50: \"#F8FAFB\",\r\n 100: \"#E6EFF0\",\r\n 200: \"#D2E3E4\",\r\n 300: \"#82C6CB\",\r\n light: \"#2B9DA7\",\r\n main: \"#058C97\",\r\n 600: \"#04848F\",\r\n 700: \"#047984\",\r\n 800: \"#036F7A\",\r\n dark: \"#015C69\",\r\n A100: \"#98F0FF\",\r\n A200: \"#65E9FF\",\r\n A400: \"#32E1FF\",\r\n A700: \"#32E1FF\",\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#CEE7E9\",\r\n dark: \"#B2D9DC\",\r\n light: \"#E3F1F2\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#C4F6FD\",\r\n dark: \"#A8F1FB\",\r\n light: \"#E0FBFE\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n\r\nexport const paletteADC: PaletteOptions = {\r\n primary: {\r\n 50: \"#F8FAFB\",\r\n 100: \"#E6EFF0\",\r\n 200: \"#D2E3E4\",\r\n 300: \"#82C6CB\",\r\n light: \"#2B9DA7\",\r\n main: \"#058C97\",\r\n 600: \"#04848F\",\r\n 700: \"#047984\",\r\n 800: \"#036F7A\",\r\n dark: \"#015C69\",\r\n A100: \"#98F0FF\",\r\n A200: \"#65E9FF\",\r\n A400: \"#32E1FF\",\r\n A700: \"#32E1FF\",\r\n },\r\n secondary: {\r\n 50: \"#E0F7FA\",\r\n 100: \"#B3EBF2\",\r\n 200: \"#80DEEA\",\r\n 300: \"#4DD0E1\",\r\n light: \"#26C6DA\",\r\n main: \"#00BCD4\",\r\n 600: \"#00B6CF\",\r\n 700: \"#00ADC9\",\r\n 800: \"#00A5C3\",\r\n dark: \"#0097B9\",\r\n A100: \"#E2F9FF\",\r\n A200: \"#AFEEFF\",\r\n A400: \"#7CE3FF\",\r\n A700: \"#63DDFF\",\r\n contrastText: \"#ffffff\",\r\n },\r\n chipPrimary: {\r\n main: \"#D4D8F7\",\r\n dark: \"#B2B9F0\",\r\n light: \"#E5E8FA\",\r\n contrastText: \"#5A5E73\"\r\n },\r\n chipSecondary: {\r\n main: \"#E0E0E0\",\r\n dark: \"#D1D1D1\",\r\n light: \"#EBEBEB\",\r\n contrastText: \"#545E73\"\r\n },\r\n ...BasicPalette\r\n};\r\n","import { Breakpoints } from '@mui/material';\r\nimport { createBreakpoints } from '@mui/system';\r\n\r\nexport const breakpoints: Breakpoints = createBreakpoints({\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 960,\r\n lg: 1280,\r\n xl: 1920,\r\n },\r\n});\r\n","import { Mixins } from '@mui/material';\r\nimport { breakpoints } from './breakpoints';\r\n\r\nexport const mixins: Mixins = {\r\n toolbar: {\r\n minHeight: 48,\r\n [breakpoints.down('md')]: {\r\n minHeight: 52\r\n }\r\n }\r\n};","\r\nimport \"@mui/material/Typography\";\r\nimport \"@mui/material/Radio\";\r\nimport '@mui/material/Chip';\r\nimport \"@mui/material/Checkbox\";\r\nimport \"@mui/material/styles\";\r\n\r\ndeclare module '@mui/material/styles' {\r\n interface TypographyVariants {\r\n body3: React.CSSProperties;\r\n }\r\n\r\n interface TypographyVariantsOptions {\r\n body3?: React.CSSProperties;\r\n }\r\n}\r\ndeclare module '@mui/material/Typography' {\r\n interface TypographyPropsVariantOverrides {\r\n body3: true;\r\n }\r\n\r\n}\r\ndeclare module \"@mui/material/Radio\" {\r\n interface RadioPropsSizeOverrides {\r\n large: true;\r\n }\r\n}\r\ndeclare module \"@mui/material/Checkbox\" {\r\n interface CheckboxPropsSizeOverrides {\r\n large: true;\r\n }\r\n}\r\n\r\n// Augment the palette to include the ChipColors\r\ndeclare module '@mui/material/styles' {\r\n interface Palette {\r\n default: Palette['primary'];\r\n chipPrimary: Palette['primary'];\r\n chipSecondary: Palette['secondary'];\r\n chipInfo: Palette['info'];\r\n chipWarning: Palette['warning'];\r\n chipError: Palette['error'];\r\n chipSuccess: Palette['success'];\r\n }\r\n\r\n\r\n interface PaletteOptions {\r\n default?: Palette['primary'];\r\n chipPrimary?: Palette['primary'];\r\n chipSecondary?: Palette['secondary'];\r\n chipInfo?: Palette['info'];\r\n chipWarning?: Palette['warning'];\r\n chipError?: PaletteOptions['error'];\r\n chipSuccess?: PaletteOptions['success'];\r\n }\r\n}\r\n// extiende la paleta de los chips agregando las nuevas variantes\r\ndeclare module '@mui/material/Chip' {\r\n interface ChipPropsVariantOverrides {\r\n standard: true;\r\n }\r\n interface ChipPropsColorOverrides {\r\n default: true,\r\n chipPrimary: true,\r\n chipSecondary: true,\r\n chipInfo: true,\r\n chipWarning: true;\r\n chipError: true;\r\n chipSuccess: true;\r\n }\r\n}\r\n\r\ndeclare module \"@mui/material/styles\" {\r\n interface PaletteColor {\r\n 50?: string;\r\n 100?: string;\r\n 200?: string;\r\n 300?: string;\r\n 600?: string;\r\n 700?: string;\r\n 800?: string;\r\n }\r\n}\r\n","import { TypographyOptions } from '@mui/material/styles/createTypography';\r\nimport { breakpoints } from './breakpoints';\r\nimport \"./module\"\r\nexport const typography: TypographyOptions = {\r\n fontSize: 13,\r\n body1: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 15,\r\n },\r\n },\r\n body2: {\r\n fontFamily: 'Roboto',\r\n fontSize: 13,\r\n fontWeight: 400,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.17px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 14,\r\n },\r\n },\r\n body3: {\r\n fontFamily: 'Roboto',\r\n fontWeight: 300,\r\n fontSize: 12,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.17px\",\r\n [breakpoints.down('md')]: {\r\n fontSize: 11,\r\n },\r\n },\r\n subtitle1: {\r\n fontFamily: 'Roboto',\r\n fontSize: 14,\r\n fontWeight: 500,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 15,\r\n },\r\n },\r\n subtitle2: {\r\n fontFamily: 'Roboto',\r\n fontSize: 13,\r\n fontWeight: 500,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.1px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 14,\r\n },\r\n },\r\n caption: {\r\n fontFamily: 'Roboto',\r\n fontSize: 11,\r\n fontWeight: 400,\r\n lineHeight: \"14px\",\r\n letterSpacing: \"0.4px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 12,\r\n },\r\n },\r\n overline: {\r\n fontFamily: 'Roboto',\r\n fontSize: 11,\r\n fontWeight: 400,\r\n lineHeight: \"24px\",\r\n letterSpacing: \"1px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 12,\r\n },\r\n },\r\n h6: {\r\n fontFamily: 'Nunito',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n lineHeight: \"16px\",\r\n letterSpacing: \"0.15px\",\r\n '@media(max-width: 885px)': {\r\n fontSize: 17,\r\n },\r\n },\r\n h5: {\r\n fontFamily: 'Nunito',\r\n fontSize: 18,\r\n fontWeight: 600,\r\n letterSpacing: 0,\r\n lineHeight: \"24px\",\r\n },\r\n h4: {\r\n fontFamily: 'Nunito',\r\n fontSize: 22,\r\n fontWeight: 600,\r\n lineHeight: \"24px\",\r\n letterSpacing: \"0.25px\",\r\n },\r\n h3: {\r\n fontFamily: 'Nunito',\r\n fontSize: 28,\r\n fontWeight: 500,\r\n lineHeight: \"32px\",\r\n letterSpacing: 0,\r\n },\r\n h2: {\r\n fontFamily: 'Nunito',\r\n fontSize: 32,\r\n fontWeight: 400,\r\n lineHeight: \"40px\",\r\n letterSpacing: -0.5,\r\n },\r\n h1: {\r\n fontFamily: 'Nunito',\r\n fontSize: 40,\r\n fontWeight: 300,\r\n letterSpacing: -1.5,\r\n lineHeight: \"48px\",\r\n },\r\n};\r\n","import { Shadows } from '@mui/material/styles/shadows';\r\nexport const shadows: Shadows = [\r\n \"none\",\r\n \"0px 1px 3px rgba(24, 39, 75, 0.12), 0px 1px 1px -1px rgba(24, 39, 75, 0.14), 0px 2px 1px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 1px 5px rgba(24, 39, 75, 0.12), 0px 2px 2px rgba(24, 39, 75, 0.14), 0px 3px 1px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 1px 8px rgba(24, 39, 75, 0.12), 0px 3px 4px rgba(24, 39, 75, 0.14), 0px 3px 3px -2px rgba(24, 39, 75, 0.2)\",\r\n \"0px 2px 4px -1px rgba(24, 39, 75, 0.2), 0px 4px 5px rgba(24, 39, 75, 0.14), 0px 1px 10px rgba(24, 39, 75, 0.12)\",\r\n \"0px 3px 5px -1px rgba(24, 39, 75, 0.2), 0px 5px 8px rgba(24, 39, 75, 0.14), 0px 1px 14px rgba(24, 39, 75, 0.12)\",\r\n \"0px 3px 5px -1px rgba(24, 39, 75, 0.2), 0px 6px 10px rgba(24, 39, 75, 0.14), 0px 1px 18px rgba(24, 39, 75, 0.12)\",\r\n \"0px 4px 5px -2px rgba(24, 39, 75, 0.2), 0px 7px 10px 1px rgba(24, 39, 75, 0.14), 0px 2px 16px 1px rgba(24, 39, 75, 0.12)\",\r\n \"0px 5px 5px -3px rgba(24, 39, 75, 0.2), 0px 8px 10px 1px rgba(24, 39, 75, 0.14), 0px 3px 14px 2px rgba(24, 39, 75, 0.12)\",\r\n \"0px 5px 6px -3px rgba(24, 39, 75, 0.2), 0px 9px 12px 1px rgba(24, 39, 75, 0.14), 0px 3px 16px 2px rgba(24, 39, 75, 0.12)\",\r\n \"0px 6px 6px -3px rgba(24, 39, 75, 0.2), 0px 10px 14px 1px rgba(24, 39, 75, 0.14), 0px 4px 18px 3px rgba(24, 39, 75, 0.12)\",\r\n \"0px 6px 7px -4px rgba(24, 39, 75, 0.2), 0px 11px 15px 1px rgba(24, 39, 75, 0.14), 0px 4px 20px 3px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 8px -4px rgba(24, 39, 75, 0.2), 0px 12px 17px 2px rgba(24, 39, 75, 0.14), 0px 5px 22px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 8px -4px rgba(24, 39, 75, 0.2), 0px 13px 19px 2px rgba(24, 39, 75, 0.14), 0px 5px 24px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 7px 9px -4px rgba(24, 39, 75, 0.2), 0px 14px 21px 2px rgba(24, 39, 75, 0.14), 0px 5px 26px 4px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 9px -5px rgba(24, 39, 75, 0.2), 0px 15px 22px 2px rgba(24, 39, 75, 0.14), 0px 6px 28px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 10px -5px rgba(24, 39, 75, 0.2), 0px 16px 24px 2px rgba(24, 39, 75, 0.14), 0px 6px 30px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 8px 11px -5px rgba(24, 39, 75, 0.2), 0px 17px 26px 2px rgba(24, 39, 75, 0.14), 0px 6px 32px 5px rgba(24, 39, 75, 0.12)\",\r\n \"0px 9px 11px -5px rgba(24, 39, 75, 0.2), 0px 18px 28px 2px rgba(24, 39, 75, 0.14), 0px 7px 34px 6px rgba(24, 39, 75, 0.12)\",\r\n \"0px 9px 12px -6px rgba(24, 39, 75, 0.2), 0px 19px 29px 2px rgba(24, 39, 75, 0.14), 0px 7px 36px 6px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 13px -6px rgba(24, 39, 75, 0.2), 0px 20px 31px 3px rgba(24, 39, 75, 0.14), 0px 8px 38px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 13px -6px rgba(24, 39, 75, 0.2), 0px 21px 33px 3px rgba(24, 39, 75, 0.14), 0px 8px 40px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 10px 14px -6px rgba(24, 39, 75, 0.2), 0px 22px 35px 3px rgba(24, 39, 75, 0.14), 0px 8px 42px 7px rgba(24, 39, 75, 0.12)\",\r\n \"0px 11px 14px -7px rgba(24, 39, 75, 0.2), 0px 23px 36px 3px rgba(24, 39, 75, 0.14), 0px 9px 44px 8px rgba(24, 39, 75, 0.12)\",\r\n \"0px 11px 15px -7px rgba(24, 39, 75, 0.2), 0px 24px 38px 3px rgba(24, 39, 75, 0.14), 0px 9px 46px 8px rgba(24, 39, 75, 0.12)\",\r\n]","import { ThemeOptions } from \"@mui/material/styles\";\r\nimport { components } from \"./components\";\r\nimport { paletteERP, paletteADPRO, paletteADC } from \"./palette\";\r\nimport { mixins } from \"./mixins\";\r\nimport { breakpoints } from \"./breakpoints\";\r\nimport { typography } from \"./typography\";\r\nimport { shadows } from \"./shadows\";\r\n\r\n\r\n// Opcion 2\r\n\r\nconst BasicTheme: Partial<ThemeOptions> = {\r\n components,\r\n typography,\r\n spacing: 8,\r\n mixins,\r\n breakpoints,\r\n shadows,\r\n}\r\n\r\nexport const ERPTheme: ThemeOptions = {\r\n palette: paletteERP,\r\n ...BasicTheme\r\n}\r\n\r\nexport const ADPROTheme: ThemeOptions = {\r\n palette: paletteADPRO,\r\n ...BasicTheme\r\n}\r\n\r\nexport const ADCTheme: ThemeOptions = {\r\n palette: paletteADC,\r\n ...BasicTheme\r\n}\r\n\r\n\r\n// END Opcion 2\r\n\r\n\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAOA,UAAS,aAAAC,YAAW,QAAQ,YAAAC,iBAAgB;AAEnD,SAAS,OAAAC,MAAK,UAAAC,SAAQ,kBAAkB,cAAAC,aAAY,SAAAC,QAAO,SAAS,cAAAC,mBAA2B;AAE/F,SAAS,qBAAqB,oBAAoB,eAAe,oBAAoB,oBAAoB;;;ACLzG,OAAO,SAAuB,aAAAC,YAAW,YAAAC,iBAAgB;AACzD,SAAS,OAAO,gBAAgB,SAAS,KAAK,YAAY,YAAY,cAAe;AACrF,SAAS,OAAO,aAAa,oBAAoB,gBAAgB,cAAc,mBAAmB,uBAAuB;;;ACFzH,SAAS,WAAW,gBAAgB;AAE7B,IAAM,cAAc,CAAC,cAAsB,SAAkB;AAChE,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,CAAC;AAC1C,YAAU,MAAM;AACZ,UAAM,WAAW,YAAY,MAAM;AAC/B,kBAAY,CAAC,SAAS;AAClB,YAAI,QAAQ,KAAK;AACb,wBAAc,QAAQ;AAAA,QAC1B;AACA,YAAI,MAAM;AACN,gBAAM,eAAe,OAAO;AAC5B,iBAAO,gBAAgB,MAAM,eAAe;AAAA,QAChD,OAAO;AACH,iBAAO,OAAO;AAAA,QAClB;AAAA,MACJ,CAAC;AAAA,IACL,GAAG,eAAe,EAAE;AACpB,WAAO,MAAM;AACT,oBAAc,QAAQ;AAAA,IAC1B;AAAA,EACJ,GAAG,CAAC,cAAc,IAAI,CAAC;AACvB,SAAO;AAAA,IACH;AAAA,EACJ;AACJ;AAGO,IAAM,gBAAgB,CAAC,iBAAyB;AACnD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiB,GAAG;AACpD,YAAU,MAAM;AACZ,UAAM,WAAW,YAAY,MAAM;AAC/B,kBAAY,CAAC,SAAS;AAClB,YAAI,QAAQ,GAAG;AAAE,wBAAc,QAAQ;AAAA,QAAE;AACzC,eAAO,OAAO;AAAA,MAClB,CAAC;AAAA,IACL,GAAI,eAAe,EAAG;AACtB,WAAO,MAAM;AACT,oBAAc,QAAQ;AAAA,IAC1B;AAAA,EACJ,GAAG,CAAC,YAAY,CAAC;AACjB,SAAO;AAAA,IACH,eAAe;AAAA,EACnB;AACJ;;;ADtCO,IAAM,sBAAsB,CAAC,UAA+B;AANnE;AAQE,QAAM,CAAC,cAAc,eAAe,IAAIC,UAAS,IAAI;AACrD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,IAAI;AACjD,QAAM,eAAe,MAAM,QAAQ;AACnC,QAAM,EAAE,SAAS,IAAI,YAAY,YAAY;AAE7C,QAAM,mBAA8B,MAAM,QAAQ;AAElD,QAAM,kBAAmD;AAAA,IACvD,SAAS,oCAAC,sBAAmB,OAAM,WAAU;AAAA,IAC7C,OAAO,oCAAC,gBAAa,OAAM,SAAQ;AAAA,IACnC,SAAS,oCAAC,kBAAe,OAAM,WAAU;AAAA,IACzC,MAAM,oCAAC,eAAY,OAAM,QAAO;AAAA,EAClC;AAEA,QAAM,WAAW,CAAC,GAAI,MAAM,WAAW,CAAC,EAAE,MAAM,UAAU,IAAI,MAAM;AAAE,UAAM,EAAE;AAAA,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,IAAI,MAAM;AAAA,EAAE,EAAE,CAAC,CAAE;AAC3H,QAAM,kBAAkB,gBAAgB,MAAM,IAAK;AAEnD,QAAM,aAAa,MAAM;AACvB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,qBAAqB,MAAM;AAC/B,oBAAgB,CAAC,oBAAoB,CAAC,eAAe;AAAA,EACvD;AAEA,EAAAC,WAAU,MAAM;AACd,gBAAY,OAAO,cAAc,KAAK;AAAA,EACxC,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,0DACG,cACC;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,MACP,IAAI;AAAA,QACF,WAAW,CAAC,UAAU,MAAM,QAAQ,CAAC;AAAA,MACvC;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,IAAI;AAAA,UACF,iBAAiB;AAAA,YACf,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,YACT,MAAM;AAAA,UACR,EAAE,gBAAgB;AAAA,QACpB;AAAA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,GAAG;AAAA,UACH,KAAK;AAAA,UACL,cAAc;AAAA,UACd,SAAS;AAAA,YACP,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,YACT,MAAM;AAAA,UACR,GAAE,WAAM,SAAN,YAAc,MAAM;AAAA;AAAA,QAGtB,oCAAC,aACE,eACH;AAAA,MACF;AAAA,MACA,oCAAC,WAAQ,aAAY,YAAW,UAAQ,MAAC;AAAA,MACzC,oCAAC,SAAM,OAAO,OACZ;AAAA,QAAC;AAAA;AAAA,UACC,gBAAe;AAAA,UACf,eAAc;AAAA,UACd,YAAW;AAAA;AAAA,QAEX,oCAAC,cAAW,SAAQ,aAAY,OAAM,kBACnC,MAAM,KACT;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,SAAS;AAAA;AAAA,UAET,oCAAC,SAAM,UAAS,SAAQ;AAAA,QAC1B;AAAA,MACF,GACA,oCAAC,SAAM,KAAK,OACV,oCAAC,cAAW,OAAM,gBAAe,SAAQ,WACtC,MAAM,QACT,GACC,CAAC,gBAAgB,MAAM,aAAa,MAAM,UAAU,SAAS,KAC5D,oCAAC,aACE,MAAM,UAAU,IAAI,CAAC,SAAS,MAC7B,oCAAC,cAAW,SAAQ,WAAU,KAAK,KAAG,WACjC,OACL,CACD,CACH,CAEJ,GACA,oCAAC,SAAM,gBAAe,YAAW,eAAc,OAAM,KAAK,OACvD,MAAM,WAAW,MAAM,QAAQ,SAAS,KACvC,oCAAC,SAAM,eAAc,OAAM,KAAK,OAC7B,MAAM,QAAQ,IAAI,CAAC,QAAQ,UAC1B;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,OACE,MAAM,SAAS,SACX,SACA,MAAM,SAAS,YACb,YACA,MAAM,SAAS,UACb,UACA;AAAA,UAGV,SAAQ;AAAA,UACR,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO,YAAY;AAAA,UAC7B,MAAK;AAAA;AAAA,QAEJ,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,KAAK,MAAM,CAAC,EAAE,YAAY;AAAA,MAC1E,CACD,CACH,GAED,MAAM,WACL;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,OAAO;AAAA;AAAA,QAEN,eAAe,eAAY;AAAA,QAC3B,eAAe,oCAAC,uBAAkB,IAAK,oCAAC,qBAAgB;AAAA,MAC3D,CAEJ,CACF;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAI;AAAA,UACF,0BAA0B;AAAA,YACxB,YAAY;AAAA,YACZ,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,OAAO;AAAA,QACP,SAAQ;AAAA,QACR,OAAO,MAAM;AAAA;AAAA,IACf;AAAA,EACF,CAEJ;AAEJ;;;AEvKA,OAAOC,YAAW;AAClB,SAAS,MAAM,eAAe;AAEvB,IAAM,mBAAmB;AAAA,EAC5B,MAAM;AAAA,IACF,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,MAAM,gBAAAA,OAAA,cAAC,QAAK,OAAM,QAAO,UAAS,UAAS;AAAA,EAC/C;AAAA,EACA,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,MAAM,gBAAAA,OAAA,cAAC,QAAK,OAAM,SAAQ,UAAS,UAAS;AAAA,EAChD;AAAA,EACA,SAAS;AAAA,IACL,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,MAAM,gBAAAA,OAAA,cAAC,WAAQ,OAAM,WAAU,UAAS,UAAS;AAAA,EACrD;AACJ;;;ACnBA,YAAY,cAAc;AAC1B,SAAS,0BAA0B;AAE5B,IAAM,mBAAmB,CAAC,aAAyC;AACtE,SAAO,YAAY,SAAS,QAAiC,IACvD,SAAS,QAAiC,IAC1C;AACV;AAEO,IAAM,gBAAgB,CAAC,UAA0B;AATxD;AAUI,QAAM,SAAiC;AAAA,IACnC,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACA,UAAO,YAAO,KAAK,MAAZ,YAAiB;AAC5B;AAEO,IAAM,iBAAiB,CAAC,UAA4D;AAlB3F;AAmBI,QAAM,WAAyD;AAAA,IAC3D,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACA,UAAO,cAAS,KAAK,MAAd,YAAmB;AAC9B;;;ACzBA,OAAOC,UAAS,aAAwB,SAAS,YAAAC,iBAAgB;AACjE,SAAS,OAAO,OAAAC,MAAK,cAAAC,aAAY,cAAAC,aAAY,UAAAC,SAAQ,SAAAC,cAAa;AAClE,SAAS,SAAAC,cAAa;;;ACFf,SAAS,WAAW,MAAsB;AAAE,SAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAE;;;ADMhG,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAgF;AAdhF;AAgBE,QAAM,CAAC,cAAc,eAAe,IAAIC,UAAS,sBAAQ,KAAK;AAE9D,QAAM,eAAe,QAAQ,OAAO;AACpC,QAAM,YAAY,eAAe,sBAAQ,QAAQ;AACjD,QAAM,eAAe,eAAe,UAAW;AAE/C,QAAM,eAAe,YAAY,MAAM,aAAa,UAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC;AAClF,QAAM,cAAc,YAAY,MAAM,aAAa,KAAK,GAAG,CAAC,YAAY,CAAC;AAEzE,QAAM,OAAO,QAAQ,MAAM,iBAAiB,2CAAa,IAAI,GAAG,CAAC,2CAAa,IAAI,CAAC;AAEnF,QAAM,aAAa;AAAA,IACjB,MAAM,0BAAU;AAAA,MACd,EAAE,MAAM,YAAY,IAAI,YAAY;AAAA,MACpC,EAAE,MAAM,aAAa,IAAI,MAAM;AAAA,MAAE,EAAE;AAAA,IACrC;AAAA,IACA,CAAC,QAAQ,WAAW;AAAA,EACtB;AAEA,QAAM,EAAE,MAAM,mBAAmB,IAAI,iBAAiB,KAAK;AAE3D,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBAaG,eACC,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,QAAO,gDAAa,UAAb,YAAsB;AAAA,MAC7B,SAAS;AAAA,MACT,UAAS,gDAAa,YAAb,YAAwB;AAAA,MACjC,OAAM,gDAAa,SAAb,YAAqB;AAAA,MAC3B,YAAW,2CAAa,kBAAiB,UAAU,gBAAAD,OAAA,cAAC,UAAK;AAAA,MACzD,UAAS,2CAAa,kBAAiB,WAAW,gBAAAA,OAAA,cAAC,UAAK;AAAA;AAAA,IAEvD,YAAW,gDAAa,SAAb,YAAqB,SAAS;AAAA,EAC5C,GAGF,gBAAAA,OAAA,cAAC,SAAM,MAAM,WAAW,SAAS,aAAa,IAAI,EAAE,WAAW,EAAE,KAC/D,gBAAAA,OAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,QACT,cAAc;AAAA,QACd,WAAW;AAAA,MACb;AAAA;AAAA,IAGA,gBAAAF,OAAA,cAACG,QAAA,EAAM,WAAU,OAAM,gBAAe,iBAAgB,YAAW,YAC/D,gBAAAH,OAAA,cAACG,QAAA,EAAM,WAAU,OAAM,YAAW,UAAS,GAAG,GAAG,KAAK,OACpD,gBAAAH,OAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,gBAAe;AAAA,QACf,YAAW;AAAA,QACX,cAAa;AAAA,QACb,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS,cAAc,KAAK;AAAA;AAAA,MAE3B;AAAA,IACH,GACA,gBAAAF,OAAA,cAACI,aAAA,EAAW,SAAQ,MAAK,OAAM,kBAC5B,KACH,CACF,GACA,gBAAAJ,OAAA,cAACK,aAAA,EAAW,SAAS,aAAa,eAAY,sBAC5C,gBAAAL,OAAA,cAACM,QAAA,EAAM,OAAM,UAAS,CACxB,CACF;AAAA,IAGA,gBAAAN,OAAA,cAACG,QAAA,EAAM,IAAI,GAAG,IAAI,GAAG,KAAK,OACxB,gBAAAH,OAAA,cAACI,aAAA,EAAW,SAAQ,WACjB,eAAe,kBAClB,CACF;AAAA,IAGC,UACC,gBAAAJ,OAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,IAAG;AAAA,QACH,WAAU;AAAA,QACV,KAAK;AAAA,QACL,GAAG;AAAA,QACH,gBAAe;AAAA,QACf,SAAS;AAAA,QACT,IAAI,EAAE,cAAc,EAAE;AAAA;AAAA,MAEtB,gBAAAH,OAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,MAAK;AAAA;AAAA,QAEJ,WAAW,UAAU;AAAA,MACxB;AAAA,MACA,gBAAAD,OAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,OAAO,eAAe,KAAK;AAAA,UAC3B,SAAS;AAAA,UACT,UAAS,YAAO,CAAC,MAAR,mBAAW;AAAA,UACpB,UAAU;AAAA,UACV,MAAK;AAAA;AAAA,QAEJ,WAAW,OAAO,CAAC,EAAE,IAAI;AAAA,MAC5B;AAAA,IACF;AAAA,EAEJ,CACF,CACF;AAEJ;;;ALnIO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAC;AAClB,MAA0B;AACxB,QAAM,CAAC,OAAO,QAAQ,IAAIM,UAAyB,CAAC,CAAC;AACrD,QAAM,CAAC,cAAc,eAAe,IAAIA,UAA8B,IAAI;AAE1E,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAqC,IAAI;AACnE,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAChD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,QAAM,WAAW,OAAyB,IAAI;AAE9C,EAAAC,WAAU,MAAM;AACd,QAAI,gBAAgB,aAAa,SAAS,GAAG;AAC3C,eAAS,YAAY;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,aAAa,CAACC,WAA2C;AAC7D,IAAAA,OAAM,eAAe;AACrB,kBAAc,KAAK;AACnB,UAAM,eAAeA,OAAM,aAAa;AACxC,QAAI,gBAAgB,aAAa,SAAS,GAAG;AAC3C,YAAM,YAAY;AAAA,QAChB,QAAQ,EAAE,OAAO,aAAa;AAAA,MAChC;AACA,mBAAa,SAAS;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,iBAAiB,CAACA,WAA2C;AACjE,IAAAA,OAAM,eAAe;AACrB,kBAAc,IAAI;AAAA,EACpB;AAEA,QAAM,kBAAkB,CAACA,WAA2C;AAClE,IAAAA,OAAM,eAAe;AACrB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,eAAe,CAACA,WAA+C;AACnE,UAAM,WAAWA,OAAM,OAAO;AAC9B,QAAI,CAAC,SAAU;AAEf,UAAM,iBAAiC,CAAC;AACxC,UAAM,kBAA0B,CAAC;AAEjC,UAAM,KAAK,QAAQ,EAAE,QAAQ,CAAC,SAAS;AACrC,YAAM,mBAAmB,MAAM;AAAA,QAC7B,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,EAAE,SAAS,KAAK;AAAA,MACjD;AACA,YAAM,SAAS,KAAK,QAAQ,OAAO;AAEnC,UAAI,qBAAqB,IAAI;AAC3B,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,WAAW,CAAC,qCAAqC;AAAA,UACjD,SAAS;AAAA,UACT,MAAM;AAAA,QACR,CAAC;AACD;AAAA,MACF;AAEA,UAAI,SAAS,SAAS;AACpB,uBAAe,KAAK;AAAA,UAClB,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UACX,UAAU;AAAA,UACV,aAAa;AAAA,QACf,CAAC;AACD,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,WAAW,CAAC,qCAAkC,OAAO,KAAK;AAAA,UAC1D,MAAM;AAAA,QACR,CAAC;AACD;AAAA,MACF;AAEA,UACE,gBACA,CAAC,KAAK,KAAK;AAAA,QACT,IAAI;AAAA,UACF,IAAI,aAAa,QAAQ,OAAO,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC;AAAA,UACzD;AAAA,QACF;AAAA,MACF,GACA;AACA,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,WAAW,CAAC,cAAc,KAAK,IAAI,2BAA2B;AAAA,UAC9D,SAAS;AAAA,UACT,MAAM;AAAA,QACR,CAAC;AACD;AAAA,MACF;AAEA,qBAAe,KAAK;AAAA,QAClB,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,UAAU;AAAA,QACV,aAAa;AAAA,MACf,CAAC;AACD,sBAAgB,KAAK,IAAI;AAAA,IAC3B,CAAC;AAED,QAAI,eAAe,SAAS,GAAG;AAC7B,eAAS,CAAC,SAAS;AACjB,cAAM,eAAe,CAAC,GAAG,MAAM,GAAG,cAAc;AAChD,6CAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA,QAC3D;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,IAAAA,OAAM,OAAO,QAAQ;AAAA,EACvB;AAEA,QAAM,cAAc,CAAC,aAAqB;AACxC,aAAS,CAAC,SAAS;AACjB,YAAM,WAAW,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ;AACvD;AAAA,QACE,SAAS,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA;AAE5D,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE,gBAAAC,OAAA,cAACC,QAAA,EAAM,SAAS,KACb,SAAS,gBAAAD,OAAA,cAAC,wCAAwB,MAAO,GAC1C,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAQ;AAAA,MACR,QAAM;AAAA,MACN,KAAK;AAAA,MACL,UAAU;AAAA;AAAA,EACZ,GAEA,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH,gBAAe;AAAA,MACf,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,SAAS,UAAU,cAAc;AAAA,MACjC,QAAQ,UAAU,SAAS;AAAA,MAC3B,eAAe,UAAU,QAAQ;AAAA,MACjC,KAAK;AAAA,MACL,cAAc;AAAA,MACd,SAAS,MAAG;AAhLpB;AAgLuB,8BAAS,YAAT,mBAAkB;AAAA;AAAA,MACjC,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,IAAI;AAAA,QACF,QAAQ,QACJ,CAAC,UAAU,aAAa,MAAM,QAAQ,MAAM,IAAI,KAChD,CAAC,UAAU,cAAc,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,QACpD,QAAQ;AAAA,QACR,UAAU;AAAA,UACR,iBAAiB,QAAQ,aAAa;AAAA,QACxC;AAAA,SACG;AAAA;AAAA,IAGJ,YACC,gBAAAD,OAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,gBAAe;AAAA,QACf,OAAM;AAAA,QACN,QAAO;AAAA;AAAA,MAEP,gBAAAF,OAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,UACpC,SAAQ;AAAA;AAAA,MACV;AAAA,IACF,IAEA,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,SAAS,QAAQ,aAAa;AAAA,QAC9B,cAAa;AAAA,QACb,GAAG;AAAA;AAAA,MAEH,gBAAAF,OAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,QAAQ,UAAU;AAAA,UACzB,UAAS;AAAA;AAAA,MACX;AAAA,IACF,GACA,gBAAAA,OAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,eAAe,UAAU,QAAQ;AAAA,QACjC,YAAW;AAAA,QACX,gBAAgB,UAAU,kBAAkB;AAAA,QAC5C,KAAK;AAAA;AAAA,MAEL,gBAAAD,OAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,YAAY,UAAU,UAAU;AAAA,UAChC,KAAK;AAAA;AAAA,QAEL,gBAAAD,OAAA,cAACG,aAAA,EAAW,SAAQ,SAAQ,OAAM,kBAAe,+BAEjD;AAAA,QACA,gBAAAH,OAAA;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAO,QAAQ,UAAU;AAAA,YACzB,YAAY;AAAA,YACZ,UAAS;AAAA,YACT,cAAa;AAAA,YACb,UAAU;AAAA;AAAA,UAET,QACG,GAAG,gBAAgB,qBAAqB,iCACxC,GAAG,gBAAgB,qBAAqB,gBAAW,OAAO;AAAA,QAChE;AAAA,MACF;AAAA,MAEA,gBAAAH,OAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,MAAK;AAAA,UACL,WACE,gBAAAJ,OAAA,cAAC,sBAAmB,OAAM,WAAU,UAAS,SAAQ;AAAA;AAAA,QAExD;AAAA,MAED;AAAA,IACF,CACF;AAAA,EAEJ,GAEC,MAAM,SAAS,KACd,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH,OAAM;AAAA,MACN,IAAI;AAAA,QACF,WAAW;AAAA,SACP,MAAM,SAAS,KAAK;AAAA,QACtB,WAAW;AAAA,MACb;AAAA,MAEF,SAAS;AAAA;AAAA,IAER,MAAM,IAAI,CAAC,SACV,gBAAAD,OAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,KAAK,KAAK,QAAQ,KAAK,cAAc,WAAW;AAAA,QAChD,WAAU;AAAA,QACV,YAAW;AAAA,QACX,gBAAe;AAAA,QACf,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,QACd,IAAI;AAAA,UACF,iBAAiB,KAAK,cAAc,aAAa;AAAA,UACjD,UAAU;AAAA,YACR,iBAAiB,KAAK,cAClB,cACA;AAAA,UACN;AAAA,QACF;AAAA;AAAA,MAEA,gBAAAD,OAAA,cAACC,QAAA,EAAM,WAAU,OAAM,YAAW,UAAS,KAAK,GAAG,OAAM,UACvD,gBAAAD,OAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,KAAK,cAAc,UAAU;AAAA,UACpC,UAAS;AAAA;AAAA,MACX,GACA,gBAAAA,OAAA,cAACC,QAAA,EAAM,OAAM,UACX,gBAAAD,OAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,YAAY;AAAA,UACZ,UAAS;AAAA,UACT,cAAa;AAAA,UACb,UAAU;AAAA;AAAA,QAET,KAAK;AAAA,MACR,GACA,gBAAAH,OAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAO,KAAK,cAAc,UAAU;AAAA;AAAA,QAEnC,KAAK,eAAe,KAAK,QAAQ,OAAO,QAAQ,UAC7C,wDACA,KAAK,cACH,yDACA,IAAI,KAAK,QAAQ,OAAO,OAAO,QAAQ,CAAC,CAAC,aAAQ,KAAK,IAAI;AAAA,MAClE,CACF,CACF;AAAA,MACA,gBAAAH,OAAA,cAAC,WAAQ,OAAM,eACb,gBAAAA,OAAA,cAACK,aAAA,EAAW,MAAK,SAAQ,SAAS,MAAM,iDAAiB,KAAK,SAC5D,gBAAAL,OAAA,cAAC,gBAAa,UAAS,SAAQ,OAAM,UAAS,CAChD,CACF;AAAA,MACA,gBAAAA,OAAA,cAAC,WAAQ,OAAM,cACb,gBAAAA,OAAA;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM;AACb,4BAAgB,IAAI;AACpB,yBAAa,IAAI;AAAA,UACnB;AAAA;AAAA,QAEA,gBAAAL,OAAA,cAAC,iBAAc,UAAS,SAAQ,OAAM,UAAS;AAAA,MACjD,CACF;AAAA,IACF,CACD;AAAA,EACH,GAEF,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAM;AAAA,MACN,aAAa,4CAAsC,6CAAc,IAAI;AAAA,MACrE,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,IAAI,MAAY;AACd,gBAAI,cAAc;AAChB,kBAAI;AACF,oBAAI,cAAc;AAChB,wBAAM,aAAa,aAAa,IAAI;AAAA,gBACtC;AACA,4BAAY,aAAa,IAAI;AAC7B,yBAAS;AAAA,kBACP,OAAO;AAAA,kBACP,MAAM;AAAA,kBACN,MAAM;AAAA,gBACR,CAAC;AAAA,cACH,SAASM,QAAO;AACd,yBAAS;AAAA,kBACP,OAAO;AAAA,kBACP,MAAM;AAAA,kBACN,MAAM;AAAA,gBACR,CAAC;AAAA,cACH,UAAE;AACA,gCAAgB,IAAI;AACpB,6BAAa,KAAK;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA,EACF,CAEF;AAEJ;;;AO1XA,OAAOC,WAAS,aAAAC,aAAW,UAAAC,eAAoC;AAE/D,SAAS,OAAAC,MAAK,QAAQ,cAAAC,aAAY,cAAAC,aAAY,UAAAC,SAAQ,SAAAC,QAAO,QAAAC,aAAY;AAEzE,OAAOC,WAAU;AACjB,OAAO,eAAe;AACtB,OAAO,sBAAsB;AAC7B,OAAO,yBAAyB;;;ACRhC,OAAOC,UAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE3C,SAAS,aAAa,cAAAC,aAAY,gBAAgB,YAAY,eAAe,aAAa,SAAS,OAAO,OAAAC,MAAK,cAAAC,aAAY,SAAS,WAAAC,gBAAe;AACnJ,OAAO,UAAU;AAGjB,SAAS,YAAY,eAAe,oBAAoB;;;ACNxD,YAAY,YAAY;AAGjB,SAASC,kBAAiB,MAAqD;AACpF,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,SAAO,QAAQ,SAAS,OAAO,IAA2B,IAAI;AAChE;AAEO,SAAS,kBAAkB,MAAqC;AACrE,MAAI,OAAO,SAAS,UAAU;AAC5B,YAAO,6BAAM,QAAO,SAAS;AAAA,EAC/B;AACA,SAAO,QAAQ,SAAS,SAAS;AACnC;;;ACbO,SAAS,gBAAgBC,QAA8CC,SAAuB;AACnG,QAAM,MAAMD,OAAM;AAClB,QAAM,SAASA,OAAM;AAErB,MAAIC,YAAW,SAAS,CAAC,UAAU,KAAK,GAAG,GAAG;AAC5C,IAAAD,OAAM,eAAe;AAAA,EACvB;AAEA,MAAIC,YAAW,cAAe,OAAO,UAAU,MAAM,QAAQ,OAAQ,QAAQ,OAAO,QAAQ,MAAM;AAChG,IAAAD,OAAM,eAAe;AAAA,EACvB;AAEA,MAAI,OAAO,SAAS,QAAQ;AAC1B,UAAM,QAAQ;AACd,QAAI,CAAC,MAAM,KAAK,GAAG,GAAG;AACpB,MAAAA,OAAM,eAAe;AAAA,IACvB;AAAA,EACF;AACF;;;ACTO,IAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,MAAuB,CAACE,WAAwC;AAC9D,QAAM,UAAU,CAAC,MAAM,KAAK,KAAK;AACjC,WAAS,OAAO;AAEhB,MAAI,QAAQ;AACV,WAAOA,MAAK;AAAA,EACd;AACF;;;AHTO,IAAM,cAAc,CAAC;AAAA;AAAA,EAE1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,cAAc;AAAA,EAEd;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA;AAAA,EAEA,UAAU;AAAA,EACV,QAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AAGtB,QAAM,kBAAkB;AAAA,IACtB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACA,QAAM,iBAAiB,gBAAgB,OAAO,KAAK;AAEnD,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAGJ,QAAM,CAAC,cAAc,eAAe,IAAIC,UAAS,KAAK;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAS,KAAK;AACxC,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAA6B,IAAI;AAC/E,QAAM,gBAAgB,QAAQ,eAAe;AAC7C,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,UAA6B,IAAI;AACnF,QAAM,kBAAkB,QAAQ,iBAAiB;AAGjD,EAAAC,WAAU,MAAM;AACd,QAAI,OAAO;AACT,iBAAW,MAAM;AACf,iBAAS,KAAK;AAAA,MAChB,GAAG,GAAI;AAAA,IACT;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,gBAAgB;AAClB,+BAA2B,kBAAkB,cAAc;AAC3D,qBAAiBC,kBAAiB,cAAc;AAAA,EAClD;AAEA,MAAI,cAAc;AAChB,6BAAyB,kBAAkB,YAAY;AACvD,mBAAeA,kBAAiB,YAAY;AAAA,EAC9C;AAEA,MAAI,WAAW;AACb,gBAAYA,kBAAiB,SAAS;AAAA,EACxC;AAEA,QAAM,0BAA0B,MAAM,gBAAgB,CAAC,SAAS,CAAC,IAAI;AACrE,QAAM,0BAA0B,CAC9BC,WACG;AACH,IAAAA,OAAM,eAAe;AAAA,EACvB;AAEA,QAAM,gBAAgB,CAACA,WAAiD;AACtE,oBAAgBA,QAAOJ,OAAM;AAC7B,QAAI,UAAW,WAAUI,MAAK;AAAA,EAChC;AAGA,QAAM,oBAAoB,CAACA,WAA+C;AACxE,QAAI,WAAW,YAAY,YAAY,IAAI;AAE3C,QAAIA,OAAM,OAAO,MAAM,SAAS,UAAU;AACxC,UAAI,UAAU;AACZ,iBAASA,OAAM,OAAO,KAAK;AAAA,MAC7B;AACA,UAAI,UAAU;AACZ,iBAASA,MAAK;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,oBAAoB,EAAE,OAAO,UAAU,UAAU,OAAO,CAAC;AAW5E,QAAM,sBAAsB,CAACA,WAAyC;AACpE,uBAAmBA,OAAM,aAAa;AAAA,EACxC;AAEA,QAAM,uBAAuB,MAAM;AACjC,uBAAmB,IAAI;AAAA,EACzB;AAEA,QAAM,wBAAwB,CAACA,WAAyC;AACtE,yBAAqBA,OAAM,aAAa;AAAA,EAC1C;AAEA,QAAM,yBAAyB,MAAM;AACnC,yBAAqB,IAAI;AAAA,EAC3B;AAEA,SACE,gBAAAC,OAAA,cAACC,MAAA,EAAI,IAAI,EAAE,MAAa,KACtB,gBAAAD,OAAA,cAAC,QAAK,WAAS,MAAC,YAAW,UAAS,IAAI,MAAM,KAAK,OAChD,aAAa,YACZ,gBAAAA,OAAA,cAAC,WAAQ,OAAM,UAAS,UAAS,SAAQ,WAAW,WAAW,IAE/D,IAED,QACC,gBAAAA,OAAA,cAACE,aAAA,EAAW,IAAI,KAAK,SAAQ,aAAY,OAAM,oBAC5C,KACH,IAEA,IAED,YACC,gBAAAF,OAAA,cAAAA,OAAA,gBACG,UAAU,cAAc,YACtB,gBAAAA,OAAA,cAAAA,OAAA,gBACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,cAAc,CAACD,WACb,oBAAoBA,MAAY;AAAA,MAElC,cAAc,MAAM,qBAAqB;AAAA;AAAA,EAC3C,GACA,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,eAAe;AAAA,QACf,uBAAuB;AAAA,UACrB,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,iBAAiB;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,qBAAmB;AAAA;AAAA,IAEnB,gBAAAA,OAAA,cAACE,aAAA,EAAW,GAAG,KAAI,UAAU,IAAK;AAAA,EACpC,CACF,IAEC,gBAAAF,OAAA,cAACG,UAAA,EAAQ,OAAO,UAAU,MAAM,eAAY,kBAAiB,WAAU,gBAAe,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAG,EAAG,CAAE,EAAG,EAAG,KAClL,gBAAAH,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA;AAAA,EACX,CACF,CAEJ,IAEA,EAGJ,GACA,gBAAAA,OAAA,cAAC,QAAK,WAAS,MAAC,IAAI,EAAE,UAAU,UAAU,YAAY,SAAS,KAC7D,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,MACX,MAAM,OAAO,OAAO;AAAA,MACpB;AAAA,MACA,IAAI,EAAE,YAAY,cAAc,eAAe,cAAc,MAAO;AAAA;AAAA,IAEpE,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,SAAQ;AAAA,QACR,UAAU,YAAY,UAAU,KAAK,OAAO;AAAA,QAC5C;AAAA,QACA,UAAU,YAAY;AAAA;AAAA,MAErB,QAAQ,QAAQ;AAAA,IACnB;AAAA,IACA,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,OAAO,OAAO;AAAA,QACpB,WAAS;AAAA,QACT,OAAO;AAAA,QACP;AAAA,QACA,IAAI,+BAAO,QAAQ,QAAQ;AAAA,QAC3B,UAAU,8BAAY;AAAA,QACtB,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,YAAY,EAAE,WAAW,YAAY,YAAY,GAAG;AAAA,QACpD,MACE,CAAC,gBAAgBL,YAAW,aACxB,cACCA,WAAU,QAAQ,YAAY,MAAM,UACpCA,WAAU,QAAQ,YAAY,MAAM,YACnC,WACA;AAAA,QAER,WAAWA,YAAW,cAAc,CAAC,eAAe,KAAK;AAAA,QACzD;AAAA,QACA,gBACE,iBACE,gBAAAK,OAAA,cAAC,kBAAe,UAAS,WACtB,6BAA6B,SAC5B,iBACE,iBACF,gBAAAA,OAAA,cAAC,kBAAe,UAAS,SAAQ,IAC/B,IACN,IAEA;AAAA,QAGJ,cACE,gBAAAA,OAAA,cAAC,kBAAe,UAAS,SACtBL,YAAW,aACV,gBAAAK,OAAA;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,SAAS;AAAA,YACT,aAAa;AAAA,YACb,MAAK;AAAA;AAAA,UAEJ,eAAe,gBAAAJ,OAAA,cAAC,mBAAc,IAAK,gBAAAA,OAAA,cAAC,gBAAW;AAAA,QAClD,IACE,iBAAiB,UAAa,gBAAgB,SAChD,gBAAAA,OAAA,cAAAA,OAAA,gBACG,YAAY,cAAc,YACzB,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,IAAI,EAAE,IAAI,IAAI;AAAA,YACd,OAAM;AAAA,YACN,UAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAc,CAACD,WACb,sBAAsBA,MAAY;AAAA,YAEpC,cAAc,MAAM,uBAAuB;AAAA;AAAA,QAC7C,GACA,gBAAAC,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,cACF,eAAe;AAAA,cACf,uBAAuB;AAAA,gBACrB,iBAAiB;AAAA,cACnB;AAAA,YACF;AAAA,YACA,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS;AAAA,YACT,cAAc;AAAA,cACZ,UAAU;AAAA,cACV,YAAY;AAAA,YACd;AAAA,YACA,iBAAiB;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,YACd;AAAA,YACA,qBAAmB;AAAA;AAAA,UAEnB,gBAAAA,OAAA,cAACE,aAAA,EAAW,eAAY,qBAAoB,GAAG,KAAI,YAAY,IAAK;AAAA,QACtE,CACF,IAGA,gBAAAF,OAAA,cAACG,UAAA,EAAQ,OAAO,YAAY,MAAM,WAAU,cAAa,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAG,EAAG,CAAE,EAAG,EAAG,KACpJ,gBAAAH,OAAA;AAAA,UAAC;AAAA;AAAA,YAEC,OAAM;AAAA,YACN,UAAS;AAAA;AAAA,QACX,CACF,CAEJ,IACE,iBAAiB,SACnB,2BAA2B,SACzB,eACE,eACF,gBAAAA,OAAA,cAAC,gBAAa,UAAS,SAAQ,IAC7B,OAEJ,EAEJ;AAAA,QAEF,OACE,QACI,SAASL,YAAW,cAAc,CAAC,eAAe,KAAK,MACvD;AAAA,QAEN,cAAcA,YAAW,aAAa,iBAAiB;AAAA;AAAA,IACzD;AAAA,EACF,IACE,iBAAiB,UAAaA,YAAW,eACzC,cACA,gBAAAK,OAAA,cAAAA,OAAA,gBACG,YAAY,cAAc,YACzB,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAW;AAAA,MACX,IAAI,EAAE,YAAY,MAAM;AAAA,MACxB,OAAM;AAAA,MACN,UAAS;AAAA,MACT,cAAc,CAACD,WAA2C,sBAAsBA,MAAY;AAAA,MAC5F,cAAc;AAAA;AAAA,EAChB,GACA,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MAEC,IAAI,EAAE,eAAe,OAAO;AAAA,MAC5B,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,iBAAiB;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,qBAAmB;AAAA;AAAA,IAEnB,gBAAAA,OAAA,cAACE,aAAA,EAAW,eAAY,qBAAoB,GAAG,KAAI,YAAY,IAAK;AAAA,EACtE,CACF,IAEA,gBAAAF,OAAA,cAACG,UAAA,EAAQ,OAAO,YAAY,MAAM,WAAU,cAAa,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAG,EAAG,CAAE,EAAG,EAAG,KACpJ,gBAAAH,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,EAAE,YAAY,MAAM;AAAA,MACxB,OAAM;AAAA,MACN,UAAS;AAAA;AAAA,EACX,CACF,CAEJ,IAEA,EAEJ,CACF;AAEJ;;;AI/XA,YAAYK,eAAc;AAGnB,SAAS,QAAQ,MAAqC;AAC3D,MAAI,CAAC,QAAQ,EAAE,QAAQA,YAAW;AAChC,WAAO;AAAA,EACT;AACA,SAAOA,UAAS,IAA6B;AAC/C;;;ACPA,OAAOC,UAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE3C,SAAS,cAAAC,aAAY,SAAAC,QAAO,WAAW,OAAAC,MAAK,WAAAC,UAAS,WAAAC,UAAS,WAAAC,UAAS,QAAAC,aAAY;AAEnF,SAAS,gBAAAC,qBAAoB;AAItB,IAAM,aAAa,CAAC;AAAA;AAAA,EAEvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA;AAAA,EAEZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,OAAO;AAAA,EACP;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACJ,MAAuB;AAGnB,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAiB,CAAC;AACxD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAkB,KAAK;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,OAAM,SAA6B,IAAI;AACrF,QAAM,gBAAgB,QAAQ,eAAe;AAG7C,EAAAC,WAAU,MAAM;AACZ,mBAAe,+BAAO,MAAM;AAAA,EAChC,GAAG,CAAC,KAAK,CAAC;AAGV,QAAM,YAAY,QAAQ,SAAS;AACnC,QAAM,aAAa,CAACC,WAAoE;AACpF,QAAI,YAAY,MAAM,KAAK,MAAM,IAAI;AACjC,oBAAc,IAAI;AAClB,iBAAW,MAAM;AACb,sBAAc,KAAK;AAAA,MACvB,GAAG,GAAI;AACP;AAAA,IACJ;AACA,QAAI,QAAQ;AACR,aAAOA,MAAK;AAAA,IAChB;AAAA,EACJ;AAEA,QAAM,sBAAsB,CAACA,WAAyC;AAClE,uBAAmBA,OAAM,aAAa;AAAA,EAC1C;AAEA,QAAM,uBAAuB,MAAM;AAC/B,uBAAmB,IAAI;AAAA,EAC3B;AAEA,SACI,gBAAAF,OAAA,cAAAA,OAAA,gBACI,gBAAAA,OAAA,cAACG,MAAA,EAAI,IAAI,EAAE,MAAa,KACpB,gBAAAH,OAAA,cAACI,OAAA,EAAK,WAAS,MAAC,IAAI,EAAE,YAAY,SAAS,GAAG,KAAK,OAC9C,aAAa,aACV,gBAAAJ,OAAA,cAACK,UAAA,EAAQ,OAAM,UAAS,UAAS,SAAQ,WAAW,WAAW,GAElE,SACG,gBAAAL,OAAA,cAACM,aAAA,EAAW,OAAO,cAAc,kBAAkB,SAAQ,eACtD,KACL,GACH,YACG,gBAAAN,OAAA,cAAAA,OAAA,gBACK,UAAU,cAAc,YACrB,gBAAAA,OAAA,cAAAA,OAAA,gBACI,gBAAAA,OAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACG,OAAM;AAAA,MACN,UAAS;AAAA,MACT,cAAc,CAACL,WACX,oBAAoBA,MAAY;AAAA,MAEpC,cAAc,MAAM,qBAAqB;AAAA;AAAA,EAC7C,GACA,gBAAAF,OAAA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACG,IAAI,EAAE,eAAe,OAAO;AAAA,MAC5B,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc;AAAA,QACV,UAAU;AAAA,QACV,YAAY;AAAA,MAChB;AAAA,MACA,iBAAiB;AAAA,QACb,UAAU;AAAA,QACV,YAAY;AAAA,MAChB;AAAA,MACA,qBAAmB;AAAA;AAAA,IAEnB,gBAAAR,OAAA,cAACM,aAAA,EAAW,IAAI,EAAE,GAAG,EAAE,KAClB,UAAU,IACf;AAAA,EACJ,CACJ,IAEA,gBAAAN,OAAA,cAACS,UAAA,EAAQ,OAAO,UAAU,MAAM,WAAU,gBAAe,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAG,EAAG,CAAE,EAAG,EAAG,KAClJ,gBAAAT,OAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACG,OAAM;AAAA,MACN,UAAS;AAAA;AAAA,EACb,CACJ,CAGR,IAEA,EAER,GACA,gBAAAP,OAAA,cAACU,QAAA,MACG,gBAAAV,OAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,IAAI,EAAE,IAAI,QAAQ,YAAY,cAAc,eAAe,cAAc,MAAM;AAAA,MAC/E,IAAG;AAAA,MACH;AAAA,MACA,WAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,MAAM;AACb,YAAI,UAAU;AACV,mBAAS,EAAE,OAAO,MAAM,UAAU,GAAG,SAAS,CAAC;AAAA,QACnD;AAAA,MACJ;AAAA,MACA,cAAa;AAAA;AAAA,EACjB,CACJ,GACA,gBAAAA,OAAA,cAACU,QAAA,MACG,gBAAAV,OAAA;AAAA,IAACM;AAAA,IAAA;AAAA,MACG,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAM;AAAA;AAAA,IAEL,cAAc,MAAM;AAAA,EACzB,CACJ,CACJ,CACJ;AAER;;;AC7JA,OAAOK,UAAS,aAAAC,kBAAiB;AAEjC,SAAS,cAAAC,aAAY,eAAAC,cAA6B,UAAiC,WAAAC,UAAS,cAAc,cAAqD,OAAAC,YAAmB;AAElL,OAAO,YAAmC;AAG1C,YAAYC,aAAY;AAmBjB,SAAS,SAAY;AAAA,EACxB,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAAqB;AAEjB,QAAM,eAAe,wCAAwC;AAE7D,QAAM,CAAC,UAAU,WAAW,IAAIC,OAAM,SAAS,IAAI;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAIA,OAAM,SAAS,KAAK;AAE9C,EAAAC,WAAU,MAAM;AACZ,QAAI,OAAO;AACP,iBAAW,MAAM;AACb,iBAAS,KAAK;AAAA,MAClB,GAAG,GAAI;AAAA,IACX;AAAA,EACJ,GAAG,CAAC,KAAK,CAAC;AACV,EAAAA,WAAU,MAAM;AACZ,QAAI,uBAAuB,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,IAAI;AAC3E,QAAI,wBAAwB,OAAO;AAC/B,eAAS,EAAE,aAAa,IAAI,WAAW,GAAG,CAAC;AAC3C,kBAAY,IAAI;AAAA,IACpB;AAAA,EACJ,GAAG,CAAC,IAAI,CAAC;AAGT,OAAK,IAAI,SAAU,QAAa,OAAO,OAAO;AAC1C,QAAI,iCAAQ,MAAM;AACd,WAAI,iCAAQ,KAAK,SAAQ,QAAW;AAChC,eAAO,OAAOC,QAAO,iCAAQ,IAA2B;AAAA,MAC5D,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,aAAa,MAAM;AACrB,UAAM,eAAe,MAAM,QAAQ,MAAM,WAAW,IAAI,MAAM,YAAY,CAAC,IAAI,MAAM;AACrF,UAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACnC,aAAS,QAAQ,OAAO,CAAC;AAAA,EAC7B;AAEA,QAAM,eAAe,CAACC,WAA6B;AAC/C,UAAM,gBAAgBA,OAAM,OAAO;AACnC,QAAI,eAAe;AACf,YAAM,iBAAiB,KAAK,KAAK,UAAQ,aAAa,IAAI,EAAE,UAAU,aAAa;AACnF,UAAI,gBAAgB;AAChB,cAAM,YAAY,aAAa,cAAc;AAC7C,iBAAS;AAAA,UACL,aAAa,UAAU;AAAA,UACvB,WAAW,UAAU;AAAA,QACzB,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAEA,SACI,gBAAAH,OAAA,cAAAA,OAAA,gBACK,QACG,gBAAAA,OAAA,cAACI,MAAA,EAAI,IAAI,EAAE,MAAa,KACpB,gBAAAJ,OAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACG,WAAW;AAAA,MACX,MAAM,OAAO,OAAO;AAAA,MACpB;AAAA;AAAA,IAEA,gBAAAL,OAAA;AAAA,MAACM;AAAA,MAAA;AAAA,QACG;AAAA;AAAA,MAEC,WAAW,gBAAAN,OAAA,cAAC,UAAK,yBAAyB,EAAE,QAAQ,aAAa,GAAG,IAAK;AAAA,IAC9E;AAAA,IACA,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACG,OAAO,MAAM,QAAQ,MAAM,WAAW,IAAI,MAAM,YAAY,CAAC,KAAK,KAAK,MAAM,eAAe,OAAO,MAAM,cAAc;AAAA,QACvH,OAAO,WAAW,gBAAAA,OAAA,cAAC,UAAK,yBAAyB,EAAE,QAAQ,aAAa,GAAG,IAAK;AAAA,QAChF,UAAU;AAAA,QACV,QAAQ;AAAA,QACR;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACP,YAAY;AAAA,YACR,IAAI;AAAA,cACA,WAAW;AAAA,cACX,UAAU;AAAA,YACd;AAAA,UACJ;AAAA,UACA,cAAc;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UAChB;AAAA,UACA,iBAAiB;AAAA,YACb,UAAU;AAAA,YACV,YAAY;AAAA,UAChB;AAAA,UACA,sBAAsB;AAAA,UACtB,iBAAiB;AAAA,QACrB;AAAA;AAAA,MAEC,KAAK,IAAI,CAAC,QAAQ,UAAU;AACzB,eACI,gBAAAA,OAAA,cAAC,YAAS,KAAK,OAAO,OAAO,aAAa,MAAM,EAAE,SAC7C,aAAa,MAAM,EAAE,QAAQ,SAC1B,gBAAAA,OAAA,cAAC,gBAAa,IAAI,EAAE,UAAU,kBAAkB,KAC5C,gBAAAA,OAAA,cAACO,UAAA,EAAQ,UAAS,SAAQ,OAAM,UAAS,WAAW,aAAa,MAAM,EAAE,MAAM,CACnF,IAAkB,IAEtB,gBAAAP,OAAA,cAAC,gBAAa,SAAS,aAAa,MAAM,EAAE,MAAM,OAAM,gBAAe,CAE3E;AAAA,MAER,CAAC;AAAA,IACL;AAAA,EACJ,CACJ,CAER;AAER;;;ACvJA,OAAOQ,UAAS,aAAAC,kBAAiB;AAEjC,SAAS,cAAc,UAAU,kBAAAC,iBAAgB,YAAAC,WAAU,aAAAC,YAAW,cAAAC,aAAY,WAAAC,UAAS,gBAAAC,eAAc,gBAAAC,eAAc,WAAAC,UAAS,oBAAAC,mBAAkB,cAAAC,aAAY,MAAM,OAAAC,MAAK,UAAAC,eAAc;AACvL,OAAOC,WAAU;AAEjB,SAAS,QAAQ,aAAa;AAC9B,YAAYC,aAAY;AAsBjB,SAAS,eAAkB;AAAA,EAChC,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,eAAe;AAAA,EACf,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AAGzB,QAAM,eAAe,wCAAwC;AAE7D,MAAI,QAAQ;AACZ,MAAI,aAAa;AAEjB,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,OAAM,SAAc,CAAC,CAAC;AACpE,QAAM,CAAC,UAAU,WAAW,IAAIA,OAAM,SAAS,IAAI;AACnD,QAAM,CAAC,cAAc,eAAe,IAAIA,OAAM,SAAS,IAAI;AAC3D,QAAM,CAAC,YAAY,aAAa,IAAIA,OAAM,SAAS,EAAE;AACrD,QAAM,CAAC,cAAc,eAAe,IAAIA,OAAM,SAAS,KAAK;AAG5D,EAAAC,WAAU,MAAM;AACd,UAAM,uBAAuB,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,IAAI;AAE7E,QAAI,CAAC,wBAAwB,CAAC,cAAc;AAC1C,eAAS,EAAE,aAAa,MAAM,WAAW,GAAG,CAAC;AAC7C,yBAAmB,CAAC,CAAC;AACrB,sBAAgB,IAAI;AAAA,IACtB,WAAW,CAAC,cAAc;AACxB,sBAAgB,IAAI;AAAA,IACtB;AACA,gBAAY,IAAI;AAAA,EAClB,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,EAAAA,WAAU,MAAM;AACd,QAAI,cAAc,eAAe;AAC/B,UAAI,MAAM,eAAe,QAAQ,MAAM,QAAQ,MAAM,WAAW,GAAG;AACjE,cAAM,qBAAqB,aAAa;AAAA,UAAO,CAAC,SAC9C,MAAM,YAAY,SAAS,aAAa,IAAI,EAAE,KAAK;AAAA,QACrD;AACA,2BAAmB,kBAAkB;AAAA,MACvC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,cAAc,UAAU,CAAC;AAGhD,EAAAA,WAAU,MAAM;AACd,QAAI,eAAe,IAAI;AACrB,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAGf,OAAK,IAAI,SAAU,QAAa;AAC1B,QAAI,iCAAQ,MAAM;AACd,WAAI,iCAAQ,KAAK,SAAQ,QAAW;AAChC,eAAO,OAAOC,QAAO,iCAAQ,IAA2B;AAAA,MAC5D,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAEH,QAAM,eAAe,CAACC,WAAe;AACnC,aAAS,EAAE,aAAa,MAAM,WAAW,GAAG,CAAC;AAC7C,uBAAmB,CAAC,CAAC;AACrB,kBAAc,EAAE;AAChB,oBAAgB,KAAK;AAAA,EACvB;AAEA,QAAM,iBAAiB,CAACA,WAA+C;AACrE,QAAIA,OAAM,OAAO,SAAS;AACxB,YAAM,gBAAgB,WAAW,KAAK,MAAM,GAAG,QAAQ,IAAI;AAE3D,yBAAmB,aAAa;AAChC,eAAS;AAAA,QACP,aAAa,cAAc,IAAI,UAAQ,aAAa,IAAI,EAAE,KAAK;AAAA,QAC/D,WAAW,cAAc,IAAI,UAAQ,aAAa,IAAI,EAAE,IAAI;AAAA,MAC9D,CAAC;AAAA,IACH,OAAO;AACL,yBAAmB,CAAC,CAAC;AACrB,eAAS,EAAE,aAAa,MAAM,WAAW,GAAG,CAAC;AAC7C,oBAAc,EAAE;AAChB,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AACA,QAAM,cAAc,KAAK,SAAS,KAAK,gBAAgB,WAAW,KAAK;AAEvE,QAAM,eAAe,CAACA,QAAY,UAAe;AAC/C,QAAI,eAAe,eAAe;AAC/B,UAAI,YAAY,MAAM,SAAS,UAAU;AACxC,gBAAQ,MAAM,MAAM,GAAG,QAAQ;AAAA,MACjC;AAEA,YAAM,MAAM,MAAM,IAAI,CAAC,MAAS,eAAe,aAAa,CAAC,EAAE,QAAQ,EAAE;AACzE,YAAM,QAAQ,MAAM,IAAI,CAAC,MAAS,eAAe,aAAa,CAAC,EAAE,OAAO,EAAE;AAC1E,yBAAmB,KAAK;AACxB,eAAS;AAAA,QACP,aAAa;AAAA,QACb,WAAW;AAAA,MACb,CAAC;AAAA,IACH,OAAO;AACL,eAAS;AAAA,QACP,aAAa,aAAa,KAAK,EAAE;AAAA,QACjC,WAAW,aAAa,KAAK,EAAE;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,gBACJ,eAAe,gBACX,kBACA,aAAa;AAAA,IACb,CAAC,SACC,aAAa,IAAI,EAAE,UAAU,MAAM;AAAA,EACvC,KAAK;AAGT,SACE,gBAAAH,OAAA,cAAAA,OAAA,gBACG,QACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,eAAe;AAAA,MACzB,eAAa;AAAA,MACb,eAAc;AAAA,MACd;AAAA,MACA,SAAS;AAAA,MACT,sBAAsB,CAAC,QAAQ,UAAU,aAAa,MAAM,EAAE,UAAU,aAAa,KAAK,EAAE;AAAA,MAC5F,eAAe,CAACG,QAAO,UAAU;AAC/B,sBAAc,KAAK;AACnB,wBAAgB,MAAM,SAAS,CAAC;AAChC,YAAI,aAAa;AACf,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB,CAAC,WAAc,aAAa,MAAM,EAAE;AAAA,MACpD,OAAO;AAAA,MACP,IAAI;AAAA,QACF,YAAY,cAAc;AAAA,QAC1B,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA,WAAW;AAAA,MACX,YAAY,CAAC,OAAO,gBAAgB;AAClC,cAAM,QAAQ;AACd,eACE,gBAAAH,OAAA,cAAAA,OAAA,gBACG,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,QAAQ,UAAU;AAC5C,gBAA8B,iBAAY,EAAE,MAAM,CAAC,GAA3C,MA5L1B,IA4LgD,IAAd,sBAAc,IAAd,CAAR;AACR,iBACE,gBAAAA,OAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,OAAM;AAAA,cACN,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,OAAO,aAAa,MAAM,EAAE;AAAA,eACxB,YANL;AAAA,cAOC,OAAO,EAAE,UAAU,KAAK,UAAU,UAAU,cAAc,YAAY,YAAY,SAAS;AAAA;AAAA,UAC7F;AAAA,QAEJ,CAAC,GACA,MAAM,SAAS,SACd,gBAAAA,OAAA,cAACI,MAAA,EAAI,IAAI,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,QAAQ,SAAS,QAAQ,YAAY,SAAS,KACpF,IAAI,MAAM,SAAS,KAAK,EAC3B,CAEJ;AAAA,MAEJ;AAAA,MACA,cAAc,CAAC,OAAO,WAAW;AAC/B,cAAgC,YAAxB,MAlNpB,IAkN4C,IAAhB,wBAAgB,IAAhB,CAAR;AACR,YAAI;AACJ,YAAI,aAAa;AAEjB,YAAI,cAAc,eAAe;AAC/B,uBAAa,gBAAgB;AAAA,YAC3B,CAAC,aAAa,aAAa,QAAQ,EAAE,UAAU,aAAa,MAAM,EAAE;AAAA,UACtE;AAEA,cAAI,YAAY,gBAAgB,UAAU,YAAY,CAAC,YAAY;AACjE,yBAAa;AAAA,UACf;AAAA,QACF;AACA,YAAI,aAAa;AACf,oBAAU,SAAU,OAA+B,WAAW;AAC9D,kBAAS,OAA+B,WAAW;AAAA,QACrD;AAEA,eACE,gBAAAJ,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAACA,OAAM,UAAN,EAAe,OACb,cAAc,CAAC,UAAU,gBAAAA,OAAA,cAACK,aAAA,EAAW,OAAM,kBAAiB,IAAI,EAAE,QAAQ,uBAAuB,UAAU,kBAAkB,KAAK,OAA+B,WAAW,CAAE,IAAgB,KAAK,IACpM,gBAAAL,OAAA;AAAA,UAACM;AAAA,UAAA,iCACK,cADL;AAAA,YAEC,UAAU;AAAA,YACV,OAAO;AAAA,cACL,YAAY,cAAc,gBAAgB,MAAM,eAAe,aAAa,MAAM,EAAE,QAAQ,YAAY,UAAU;AAAA,cAClH,SAAS;AAAA,cACT,SAAS,aAAa,MAAM;AAAA,YAC9B;AAAA;AAAA,UAEC,cAAc,iBAAiB,aAAa,MAAM,EAAE,QAAQ,SAAY,gBAAAN,OAAA,cAACO,eAAA,EAAa,IAAI,EAAE,UAAU,kBAAkB,KAAG,gBAAAP,OAAA,cAACQ,UAAA,EAAQ,UAAS,SAAQ,OAAM,UAAS,WAAW,aAAa,MAAM,EAAE,MAAM,CAAE,IAAkB;AAAA,UAC9N,cAAc,gBACb,gBAAAR,OAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,OAAO,aAAa,MAAM,EAAE;AAAA,cAC5B,OAAM;AAAA;AAAA,UACR,IACA;AAAA,UACF,gBAAAA,OAAA,cAACS,eAAA,EAAa,SAAS,aAAa,MAAM,EAAE,MAAM,OAAM,gBAAe;AAAA,UACtE,aAAa,MAAM,EAAE,aAAa,SACjC,aAAa,MAAM,EAAE,YACnB;AAAA,QAEN,CACF,CACF;AAAA,MAEJ;AAAA,MAEA,aAAa,CAAC,WACZ,gBAAAT,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,QAACU;AAAA,QAAA,iCACK,SADL;AAAA,UAEC,OAAO,WAAW,gBAAAV,OAAA,cAAC,UAAK,yBAAyB,EAAE,QAAQ,aAAa,GAAG,IAAK;AAAA,UAChF,aAAa,gBAAgB,UAAU,IAAI,gBAAa;AAAA,UACxD,YAAY,iCACP,OAAO,aADA;AAAA,YAEV,cACE,gBAAAA,OAAA,cAAAA,OAAA,gBACG,cAAc,WAAW,MAAM,YAAY,SAAS,KAAK,QAAQ,MAAM,YAAY,SAAS,KAAK,MAChG,gBAAAA,OAAA,cAACW,aAAA,EAAW,MAAK,SAAQ,SAAS,cAAc,IAAI,EAAE,YAAY,QAAQ,WAAW,SAAS,SAAS,MAAM,KAC3G,gBAAAX,OAAA,cAAC,SAAM,UAAS,SAAQ,CAC1B,IACE,IACJ,gBAAAA,OAAA,cAACY,iBAAA,EAAe,OAAO,EAAE,QAAQ,GAAG,UAAU,WAAW,GAAG,UAAS,SACnE,gBAAAZ,OAAA,cAAC,UAAO,UAAS,SAAQ,OAAM,UAAS,OAAO,EAAE,QAAQ,UAAU,GAAG,CACxE,CACF;AAAA,UAEJ;AAAA;AAAA,MACF,CACF;AAAA,MAGF,WAAW;AAAA,QACT,SAAS;AAAA,UACP,WAAWA,OAAM,WAAW,SAAS,iBAAiB,OAAY,KAAgC;AAChG,mBACE,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC;AAAA,iBACI,QAFL;AAAA,gBAGC,IAAI;AAAA,kBACF,UAAU;AAAA,kBACV,eAAe;AAAA,kBACf,iBAAiB;AAAA,mBACd,MAAM;AAAA;AAAA,cAGV,gBAAgB,cAAc,gBAC7B,gBAAAJ,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAACa,mBAAA,EAAiB,SAAS,gBAAAb,OAAA,cAAC,YAAS,SAAS,aAAa,eAAe,gBAAgB,SAAS,KAAK,gBAAgB,SAAS,KAAK,QAAQ,UAAU,gBAAgB,OAAM,WAAU,GAAI,OAAM,mBAAkB,IAAI,EAAE,YAAY,kBAAkB,aAAa,kBAAkB,SAAS,WAAW,GAAG,GAC9S,gBAAAA,OAAA,cAACc,UAAA,IAAQ,CACX,IACE;AAAA,cACH,MAAM;AAAA,cACN,cAAc,YAAY,YACzB,gBAAAd,OAAA;AAAA,gBAACe;AAAA,gBAAA;AAAA,kBAAK,WAAS;AAAA,kBACb,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,QAAQ;AAAA,oBACR,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,iBAAiB;AAAA,oBACjB,SAAS;AAAA,oBACT,WAAW;AAAA,oBACX,gBAAgB;AAAA,kBAClB;AAAA;AAAA,gBAEC,cAAc,WACb,gBAAAf,OAAA;AAAA,kBAACgB;AAAA,kBAAA;AAAA,oBAAO,SAAQ;AAAA,oBAAO,OAAM;AAAA,oBAAU,MAAK;AAAA,oBAC1C,SAAS,CAACb,WAAU;AAClB,sBAAAA,OAAM,gBAAgB;AACtB,mCAAaA,MAAK;AAAA,oBACpB;AAAA;AAAA,kBACD;AAAA,gBAED,IACE;AAAA,gBACH,aACC,gBAAAH,OAAA;AAAA,kBAACgB;AAAA,kBAAA;AAAA,oBAAO,SAAQ;AAAA,oBAAY,OAAM;AAAA,oBAAU,MAAK;AAAA,oBAC/C,SAAS;AAAA;AAAA,kBACV;AAAA,gBAED;AAAA,cAEJ,IACE;AAAA,YACN,CAEF;AAAA,UAEJ,CAAC;AAAA,QACH;AAAA,MACF;AAAA;AAAA,EACF,CAEJ;AAEJ;;;AC9VA,OAAOC,YAAW;AAElB,SAAS,OAAAC,MAAiB,kBAAAC,uBAAsB;AAChD,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,OAAO,WAAsB;AAC7B,OAAO;AACP,SAAS,mBAAmB;AAE5B,OAAO,eAAe;AAaf,IAAM,cAAa,CAAC;AAAA,EACvB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb;AAAA,EACA;AACJ,MAAwB;AAChB,cAAY;AAAA,IACR;AAAA,EACJ;AAGJ,QAAM,eAAe,YAAY,CAAC,MAAM,CAAC;AACzC,QAAM,aAAa,YAAY,CAAC,MAAM,CAAC;AACvC,QAAM,WAAW,gBAAgB;AAEjC,QAAM,mBAAmB,CAAC,aAAkB;AAExC,UAAM,iBAA+C;AAAA,MACjD,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,IAAI;AAAA,MACnC,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,IAAI;AAAA,IACvC;AACA,aAAS,cAAc;AAAA,EAC3B;AAGA,SACI,gBAAAF,OAAA,cAAC,wBAAqB,aAAa,cAAc,eAAc,QAC3D,gBAAAA,OAAA,cAACC,MAAA,EAAI,IAAI,EAAE,OAAO,OAAO,KACrB,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACG,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACH,OAAO;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACP,OAAO;AAAA,UACH,WAAW;AAAA,YACP,WAAW,CAAC,EAAE,SAAS,OAAsC;AAAA,cACzD,OAAO,aAAa,UAAU,mBAAmB;AAAA,cACjD,MAAM;AAAA,cACN,SAAS;AAAA,cACT;AAAA,cACA,OAAO,aAAa,UAAU,eAAe;AAAA,cAC7C,YAAY;AAAA,gBACR,cACI,gBAAAA,OAAA,cAACE,iBAAA,EAAe,UAAS,SACrB,gBAAAF,OAAA;AAAA,kBAAC;AAAA;AAAA,oBACG,OAAO,WAAW,UAAU;AAAA,oBAC5B,UAAS;AAAA;AAAA,gBACb,CACJ;AAAA,cAER;AAAA,cACA,IAAI;AAAA,gBACA,IAAI,aAAa,UAAU,IAAI;AAAA,gBAC/B,4BAA4B;AAAA,kBACxB,iBAAiB,eAAe,gBAAgB,gBAAgB;AAAA,gBACpE;AAAA,gBACA,6BAA6B;AAAA,kBACzB,OAAO;AAAA,gBACX;AAAA,gBACA,YAAY,kCAAc;AAAA,cAC9B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,IAAI;AAAA,QACA,SAAS;AAAA,QACT,KAAK;AAAA,QACL,OAAO;AAAA,MACX;AAAA;AAAA,EACJ,CACJ,CACJ;AAER;;;ACzGA,YAAYG,aAAY;AAEjB,IAAMC,WAAU,CAAC,aAA8B;AAClD,MAAI,YAAY,YAAYD,SAAQ;AAChC,WAAOA,QAAO,QAA+B;AAAA,EACjD;AACA,SAAO;AACX;;;ACJO,IAAM,iBAAiB,CAC5B,eACA,SACA,WACA,gBACA,mBACG;AATL;AAUE,MAAI,iBAAiB;AACrB,MAAI,eAAe;AAEnB,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,UAAM,UAAU,cAAc,CAAC;AAC/B,UAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,OAAO;AACzE,UAAM,cAAY,iBAAY,UAAZ,mBAAmB,eAAc,SAAY,QAAO,iBAAY,UAAZ,mBAAmB,SAAS,IAAI,OAAO,YAAY,KAAK;AAE9H,QAAI,2CAAa,UAAU;AACzB;AACA,UAAI,UAAU,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,KAAK;AACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAmB,cAAc;AACnC,cAAU;AACV,mBAAe,IAAI;AAAA,EACrB,OAAO;AACL,YAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,mBAAe,KAAK;AAAA,EACtB;AACF;;;ACrCA,OAAOE,aAAwD;AACxD,IAAM,uBAAuB,CAChC,YACC;AAHL;AAII,MAAI,aAAa;AACjB,MAAI,cAAc;AAElB,MAAI,QAAQ,QAAQ,aAAa;AAC7B,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,QAAS,QAAQ,UAAU,KAAa,QAAQ,eAAe;AACpI,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC,WAAW,QAAQ,QAAQ,YAAY;AACnC,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,QAAS,QAAQ,UAAU,KAAa,QAAQ,cAAc;AACnI,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC,WAAW,QAAQ,QAAQ,aAAa;AACpC,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,QAAS,QAAQ,UAAU,KAAa,QAAQ,eAAe;AACpI,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC,WAAW,QAAQ,QAAQ,gBAAgB;AACvC,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,QAAS,QAAQ,UAAU,KAAa,QAAQ,kBAAkB;AACvI,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC,WAAW,QAAQ,cAAc,eAAe;AAC5C,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,WAAU,wCAAS,cAAT,mBAAoB,OAAc,cAAc,eAAe;AAC9I,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC,WAAW,QAAQ,QAAQ,UAAU;AACjC,iBAAa;AACb,kBAAc;AAAA,EAClB,WAAWA,QAAM,eAAe,mCAAS,SAAS,KAAK,QAAQ,UAAU,QAAS,QAAQ,UAAU,KAAa,QAAQ,YAAY;AACjI,iBAAa;AACb,kBAAc,mCAAS,UAAU;AAAA,EACrC;AAEA,SAAO;AAAA,IACH;AAAA,IACA,SAAS;AAAA,EACb;AACJ;;;AZ5BO,SAAS,SAAY;AAAA;AAAA,EAExB;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA,SAAS;AAAA,EACT;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACJ,GAAmB;AAnCnB;AAqCI,QAAM,YAAYC,QAAuB,IAAI;AAG7C,QAAM,CAAC,YAAY,aAAa,IAAIC,QAAM,SAAS,IAAI;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAIA,QAAM,SAAqC,IAAI;AACzE,QAAM,CAAC,kBAAkB,cAAc,IAAIA,QAAM,SAAS,KAAK;AAC/D,QAAM,CAAC,aAAa,cAAc,IAAIA,QAAM,SAA8C,CAAC,CAAC;AAE5F,EAAAC,YAAU,MAAM;AACZ,QAAI,eAAe,QAAW;AAC1B,UAAI,YAAY,SAAS,GAAG;AACxB,uBAAe,CAAC,CAAC;AACjB,wBAAgB;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,WAAW,CAAC;AAEhB,EAAAA,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAa,IAAI;AAAA,IACrB,OACK;AACD,wBAAkB;AAAA,IACtB;AAAA,EACJ,GAAG,CAAC,IAAI,CAAC;AAGT,QAAM,oBAAoB,MAAM;AAC5B,kBAAc,KAAK;AACnB,QAAI,SAAS;AACT,cAAQ,KAAK;AAAA,IACjB;AAAA,EACJ;AACA,QAAM,eAAe,CAAC,YAAqB,MAAM;AAC7C,kBAAc,OAAO;AACrB,QAAI,SAAS;AACT,cAAQ,IAAI;AAAA,IAChB;AAAA,EACJ;AAEA,QAAM,aAAaC,SAAQ,6CAAc,IAAI;AAE7C,QAAM,oBAAoB,CAAC,iBAAsC;AAC7D,aAAS,IAAI;AACb,eAAW,MAAM;AACb,eAAS,YAAY;AAAA,IACzB,GAAG,EAAE;AAAA,EACT;AAEA,QAAM,kBAAkB,MAAM;AAtFlC,QAAAC,KAAAC,KAAA;AAuFQ,QAAI,eAAe,UAAa,YAAY,SAAS,GAAG;AAEpD,UAAI,eAAe,YAAY,SAAS,GAAG;AACvC,sBAAc,QAAQ,kBAAgB;AA1FtD,cAAAD,KAAAC,KAAAC;AA2FoB,gBAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,YAAY;AAE9E,cAAI,eAAuB;AAE3B,cAAI,eAAe,aAAa;AAC5B,gBAAI,YAAY,SAAS,YAAY,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,GAAG;AACnE,6BAAe,IAAGF,MAAA,YAAY,MAAM,CAAC,MAAnB,gBAAAA,IAAsB,OAAO,aAAa,OAAMC,MAAA,YAAY,MAAM,CAAC,MAAnB,gBAAAA,IAAsB,OAAO,aAAa;AAAA,YAChH;AAAA,UACJ,OAAO;AACH,6BAAeC,MAAA,YAAY,UAAZ,gBAAAA,IAAmB,eAAc,SAC1C,OAAO,YAAY,MAAM,SAAS,EAAE,KAAK,IACzC,OAAO,YAAY,KAAK,EAAE,KAAK;AAAA,UACzC;AAGA,sBAAY,QAAQ,gBAAc;AAC9B,kBAAM,YAAY,OAAO,UAAU,EAAE,KAAK;AAG1C,gBAAI,iBAAiB,aAAa,iBAAiB,MAAM,iBAAiB,KAAK;AAC3E,6BAAe,iBAAe;AAC1B,sBAAM,YAAY,EAAE,OAAO,cAAc,cAAc,YAAY;AAGnE,sBAAM,sBAAsB,YAAY;AAAA,kBAAU,YAC9C,OAAO,aAAa,UAAU,aAAa;AAAA,gBAC/C;AAEA,oBAAI,wBAAwB,IAAI;AAE5B,wBAAM,iBAAiB,CAAC,GAAG,WAAW;AACtC,iCAAe,mBAAmB,IAAI;AACtC,yBAAO;AAAA,gBACX,OAAO;AAEH,yBAAO,CAAC,GAAG,aAAa,SAAS;AAAA,gBACrC;AAAA,cACJ,CAAC;AAAA,YACL;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AAAA,IACJ,OAAO;AACH,YAAM,kBAAuD,CAAC;AAE9D,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC3C,cAAM,UAAU,cAAc,CAAC;AAC/B,cAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,OAAO;AACzE,cAAM,cAAYF,MAAA,YAAY,UAAZ,gBAAAA,IAAmB,eAAc,SAAY,QAAOC,MAAA,YAAY,UAAZ,gBAAAA,IAAmB,SAAS,IAAI,OAAO,YAAY,KAAK;AAE9H,YAAI,UAAU,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,KAAK;AACrD,cAAI;AACJ,kBAAQ,YAAY;AAAA,YAChB,KAAK;AACD,oBAAM,SAAS,IAAG,iBAAY,MAAM,CAAC,MAAnB,mBAAsB,OAAO,aAAa,OAAM,iBAAY,MAAM,CAAC,MAAnB,mBAAsB,OAAO,aAAa;AAC5G,0BAAY,EAAE,OAAO,QAAQ,cAAc,YAAY;AACvD;AAAA,YACJ;AACI,0BAAY,EAAE,OAAO,WAAW,cAAc,YAAY;AAC1D;AAAA,UACR;AAGA,gBAAM,wBAAwB,gBAAgB;AAAA,YAAK,YAC/C,OAAO,aAAa,UAAU,QAAQ;AAAA,UAC1C;AAEA,cAAI,uBAAuB;AAEvB,kCAAsB,QAAQ,UAAU;AACxC,kCAAsB,eAAe,UAAU;AAAA,UACnD,OAAO;AAEH,4BAAgB,KAAK,SAAS;AAAA,UAClC;AAAA,QACJ;AAAA,MACJ;AAGA,qBAAe,iBAAe;AAC1B,YAAI,iBAAiB,CAAC,GAAG,WAAW;AAEpC,wBAAgB,QAAQ,eAAa;AACjC,gBAAM,sBAAsB,eAAe;AAAA,YAAU,YACjD,OAAO,aAAa,UAAU,UAAU,aAAa;AAAA,UACzD;AAEA,cAAI,wBAAwB,IAAI;AAE5B,2BAAe,mBAAmB,IAAI;AAAA,UAC1C,OAAO;AAEH,2BAAe,KAAK,SAAS;AAAA,UACjC;AAAA,QACJ,CAAC;AAED,eAAO;AAAA,MACX,CAAC;AAED,qBAAe,eAAe,mBAAmB,mBAAmB,gBAAgB,cAAc;AAAA,IACtG;AAAA,EAEJ;AAEA,QAAM,qBAAqB,CAAC,iBAAsB,YAAoB,gBAAqB;AACvF,QAAI;AAEJ,YAAQ,YAAY;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AACD,uBAAe;AACf;AAAA,MACJ,KAAK;AACD,uBAAe,CAAC,MAAM,IAAI;AAC1B;AAAA,MACJ,KAAK;AACD,uBAAe,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,EAAE;AAChD;AAAA,MACJ;AACI,uBAAe,EAAE,aAAa,MAAM,WAAW,GAAG;AAAA,IAC1D;AAEA,QAAI,YAAY,UAAU;AACtB,kBAAY,SAAS,YAAY;AAAA,IACrC;AAAA,EACJ;AAEA,QAAM,eAAe,MAAM;AACvB,kBAAc,QAAQ,CAAC,YAAY;AAC/B,YAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,OAAO;AACzE,UAAI,YAAY,UAAU;AACtB,2BAAmB,SAAS,YAAY,WAAW;AAAA,MACvD;AAAA,IACJ,CAAC;AACD,mBAAe,CAAC,CAAC;AAAA,EACrB;AAEA,QAAM,eAAe,CAAC,YAAiB;AACnC,UAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,OAAO;AACzE,QAAI,YAAY,YAAY,mBAAmB,MAAM;AACjD,yBAAmB,SAAS,YAAY,WAAW;AAE/C;AAAA,QAAe,iBACX,YAAY,OAAO,YAAU,OAAO,aAAa,UAAU,QAAQ,KAAK;AAAA,MAC5E;AAAA,IACR;AAAA,EACJ;AAEA,QAAM,SAAS,CAAC,WAAgB;AAC5B,QAAI,UAAU,SAAS;AACnB,gBAAU,QAAQ,cAAc;AAAA,IACpC;AAAA,EACJ;AAGA,QAAM,mBAAmB,MAAM;AAC3B,WAAO,cAAc,KAAK,kBAAgB;AACtC,YAAM,EAAE,YAAY,SAAS,YAAY,IAAI,qBAAqB,YAAY;AAG9E,UAAI,YAAY,MAAM,cAAc,QAAW;AAC3C,eAAO,OAAO,YAAY,MAAM,SAAS,EAAE,KAAK,MAAM;AAAA,MAC1D,WAAW,eAAe,aAAa;AACnC,eAAO,YAAY,SACf,YAAY,MAAM,CAAC,MAAM,QACzB,YAAY,MAAM,CAAC,MAAM;AAAA,MACjC,OAAO;AACH,eAAO,OAAO,YAAY,KAAK,EAAE,KAAK,MAAM,MACxC,OAAO,YAAY,KAAK,EAAE,KAAK,MAAM;AAAA,MAC7C;AAAA,IACJ,CAAC;AAAA,EACL;AAGA,QAAM,kBAAkB,eAAe,UAAa,YAAY,SAAS,IAAI,OAAQ,qBAAqB,QAAQ,iBAAiB;AAInI,QAAM,WAAW,WAAW,QAAQ,QAAQ,WAAW,SAAY,UAAU,CAAC,EAAE,MAAM,mBAAmB,IAAI,gBAAgB,GAAG,EAAE,MAAM,mBAAmB,IAAI,aAAa,CAAC;AAE7K,SACI,gBAAAJ,QAAA,cAAAA,QAAA,gBACK,SAAS,gBAAAA,QAAA,cAAC,wCAAwB,MAAO,GAC1C,gBAAAA,QAAA,cAACM,OAAA,EAAK,WAAS,MAAC,gBAAe,cAAa,UAAS,UAAS,YAAW,UAAS,IAAI,EAAE,OAAO,OAAO,KACjG,mBACG,gBAAAN,QAAA,cAACO,MAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,IAAI,EAAE,UAAU,MAAM,KAC1D,gBAAAP,QAAA,cAACQ,aAAA,EAAW,SAAS,MAAM,OAAO,IAAI,GAAG,MAAK,WAC1C,gBAAAR,QAAA,cAAC,oBAAiB,UAAS,SAAQ,CACvC,GACA,gBAAAA,QAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACG,KAAK;AAAA,MACL,KAAK;AAAA,MACL,IAAI;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,wBAAwB,EAAE,SAAS,OAAO;AAAA,MAC9C;AAAA;AAAA,IAEC,2CAAa,IAAI,CAAC,UAAU,UACzB,gBAAAP,QAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACG,KAAK;AAAA,QACL,OAAO,SAAS;AAAA,SACX,SAAS,aAAa,YAAY,SAAS,SAAS,aAAa,YAAY,SAAa,EAAE,UAAU,MAAM,aAAa,SAAS,YAAY,EAAE,IAAI,CAAC,IAH7J;AAAA,QAIG,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,IAAI;AAAA,UACA,YAAY;AAAA,UACZ,UAAU;AAAA,QACd;AAAA;AAAA,IACJ;AAAA,EAER,GACA,gBAAAT,QAAA,cAACQ,aAAA,EAAW,SAAS,MAAM,OAAO,GAAG,GAAG,MAAK,WACzC,gBAAAR,QAAA,cAAC,uBAAoB,UAAS,SAAQ,CAC1C,CACJ,IAEH,6CAAc,SAAQ,SACnB,gBAAAA,QAAA;AAAA,IAACS;AAAA,IAAA;AAAA,MACG,SAAS,aAAa,IAAI;AAAA,MAC1B,OAAO,6CAAc;AAAA,MACrB,UAAS,6CAAc,YAAW,cAAc,WAAW;AAAA,MAC3D,QAAO,kDAAc,SAAd,YAAsB;AAAA,MAC7B,OAAM,6CAAc,kBAAiB,UAAU,aAAa,gBAAAT,QAAA,cAAC,cAAW,UAAS,SAAQ,IAAK;AAAA,MAC9F,aAAY,6CAAc,kBAAiB,WAAW,aAAa,gBAAAA,QAAA,cAAC,cAAW,UAAS,SAAQ,IAAK;AAAA,QAChG,6CAAc,kBAAiB,WAAW,aAAa,EAAE,UAAU,MAAM;AAAA,IAAE,EAAE,IAAI,CAAC,IAP1F;AAAA,MAQG,IAAI;AAAA,QACA,mBAAmB;AAAA,UACf,OAAO;AAAA,QACX;AAAA,QACA,eAAe;AAAA,MACnB;AAAA;AAAA,EACJ,IAEA,gBAAAA,QAAA;AAAA,IAACU;AAAA,IAAA;AAAA,MACG,eAAY;AAAA,MACZ,IAAI,EAAE,eAAe,aAAa;AAAA,MAClC,OAAO,6CAAc;AAAA,MACrB,SAAS,aAAa,IAAI;AAAA,MAC1B,MAAK;AAAA,MACL,UAAS,6CAAc,YAAW,SAAY,6CAAc,UAAU;AAAA,MACtE,aACK,6CAAc,kBAAiB,UAAU,EAAC,6CAAc,kBAAiB,aACpE,gBAAAV,QAAA,cAAC,cAAW,UAAS,SAAQ,IAC7B;AAAA,MAEV,UACI,6CAAc,kBAAiB,WAAW,aACpC,gBAAAA,QAAA,cAAC,cAAW,UAAS,SAAQ,IAC7B;AAAA;AAAA,KAGT,kDAAc,SAAd,YAAsB;AAAA,EAC3B,CAER,GACA,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS,aAAa,KAAK;AAAA,MAC3B,QAAQ,0BAAU;AAAA,MAClB,IAAI;AAAA,QACA,sBAAsB;AAAA,UAClB,OAAO,wBAAS;AAAA,UAChB,WAAW;AAAA,UACX,cAAc,WAAW,UAAU,oBAAoB;AAAA,QAC3D;AAAA,MACJ;AAAA;AAAA,IAEA,gBAAAA,QAAA,cAACW,QAAA,EAAM,eAAc,UAAS,QAAO,UACjC,gBAAAX,QAAA,cAACM,OAAA,EAAK,WAAS,MAAC,IAAI,EAAE,iBAAiB,cAAc,YAAY,UAAU,QAAQ,QAAQ,WAAW,QAAQ,SAAS,YAAY,gBAAgB,iBAAiB,cAAc,SAAS,KACvL,gBAAAN,QAAA,cAACY,aAAA,EAAW,SAAQ,MAAK,OAAO,cAAc,kBACzC,wBAAS,4BACd,GACA,gBAAAZ,QAAA,cAACQ,aAAA,EAAW,SAAS,qBACjB,gBAAAR,QAAA,cAAC,aAAU,eAAY,qBAAoB,IAAI,EAAE,OAAO,eAAe,GAAG,CAC9E,CACJ,GACA,gBAAAA,QAAA,cAACW,QAAA,EAAM,YAAW,cAAa,QAAO,QAAO,KAAI,QAAO,MAAM,GAAG,UAAS,QAAO,SAAQ,UACpF,+CAAe,IAAI,CAAC,cAAc,UAAO;AAnXlE,UAAAR,KAAAC,KAAA;AAoX4B,6BAAAJ,QAAA;AAAA,QAACO;AAAA,QAAA;AAAA,UACG,KAAK,UAASJ,MAAA,aAAa,SAAb,OAAAA,MAAqB,EAAE,KAAIC,MAAA,aAAa,UAAb,OAAAA,MAAsB,EAAE,GAAG,KAAK;AAAA,UACzE,IAAI,EAAE,OAAO,OAAO;AAAA;AAAA,QAEnB,aAAa,YACV,gBAAAJ,QAAA,cAACW,QAAA,EAAM,WAAU,OAAM,YAAW,QAAO,KAAK,KACzC,aAAa,SAClB,IACA,aAAa,SAAS,cACtB,gBAAAX,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,aAAa;AAAA,YACpB,WAAW,aAAa;AAAA,YACxB,WAAW,aAAa;AAAA,YACxB,OAAO,aAAa;AAAA,YACpB,aAAa,aAAa;AAAA,YAC1B,aAAa,aAAa;AAAA,YAC1B,gBAAgB,aAAa;AAAA,YAC7B,cAAc,aAAa;AAAA,YAC3B,WAAW,aAAa;AAAA,YACxB,SAAS,aAAa;AAAA,YACtB,QAAQ,aAAa;AAAA,YACrB,UAAU,aAAa;AAAA,YACvB,UAAU,aAAa;AAAA,YACvB,MAAM,aAAa;AAAA,YACnB,OAAO,aAAa;AAAA,YACpB,OAAO,aAAa;AAAA,YACpB,YAAY,aAAa;AAAA,YACzB,UAAU,aAAa;AAAA,YACvB,OAAO,aAAa,SAAS;AAAA,YAC7B,UAAU,aAAa;AAAA,YACvB,QAAQ,aAAa;AAAA,YACrB,WAAW,aAAa;AAAA;AAAA,QAC5B,IACA,aAAa,SAAS,aACtB,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,aAAa;AAAA,YACpB,WAAW,aAAa;AAAA,YACxB,WAAW,aAAa;AAAA,YACxB,OAAO,aAAa;AAAA,YACpB,aAAa,aAAa;AAAA,YAC1B,WAAW,aAAa;AAAA,YACxB,SAAS,aAAa;AAAA,YACtB,UAAU,aAAa;AAAA,YACvB,UAAU,aAAa;AAAA,YACvB,OAAO,aAAa;AAAA,YACpB,MAAM,aAAa;AAAA,YACnB,YAAY,aAAa;AAAA,YACzB,UAAU,aAAa;AAAA,YACvB,OAAO,aAAa,SAAS;AAAA,YAC7B,QAAQ,aAAa;AAAA;AAAA,QACzB,IACA,aAAa,SAAS,iBACtB,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,aAAa;AAAA,YACpB,OAAM,kBAAa,SAAb,YAAqB,CAAC;AAAA,YAC5B,aAAa,aAAa;AAAA,YAC1B,eAAc,kBAAa,iBAAb,YAA8B,OAAO,EAAE,MAAM,IAAI,OAAO,GAAG;AAAA,YACzE,YAAY,aAAa;AAAA,YACzB,cAAc,aAAa;AAAA,YAC3B,YAAY,aAAa;AAAA,YACzB,UAAU,aAAa;AAAA,YACvB,UAAU,aAAa;AAAA,YACvB,YAAY,aAAa;AAAA,YACzB,WAAW,aAAa;AAAA,YACxB,UAAU,aAAa;AAAA,YACvB,OAAO,aAAa,SAAS;AAAA,YAC7B,aAAa,aAAa;AAAA;AAAA,QAC9B,IACA,aAAa,SAAS,WACtB,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,aAAa;AAAA,YACpB,OAAM,kBAAa,SAAb,YAAqB,CAAC;AAAA,YAC5B,eAAc,kBAAa,iBAAb,YAA8B,OAAO,EAAE,MAAM,IAAI,OAAO,GAAG;AAAA,YACzE,OAAO,aAAa;AAAA,YACpB,MAAM,aAAa;AAAA,YACnB,SAAS,aAAa;AAAA,YACtB,UAAU,aAAa;AAAA,YACvB,UAAU,aAAa;AAAA,YACvB,YAAY,aAAa;AAAA,YACzB,WAAW,aAAa;AAAA,YACxB,UAAU,aAAa;AAAA,YACvB,OAAO,aAAa,SAAS;AAAA;AAAA,QACjC,IACA,aAAa,SAAS,cACtB,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,kBAAkB,aAAa;AAAA,YAC/B,gBAAgB,aAAa;AAAA,YAC7B,UAAU,aAAa;AAAA,YACvB,UAAU,aAAa;AAAA,YACvB,YAAY,aAAa;AAAA,YACzB,OAAO,aAAa,SAAS,CAAC;AAAA,YAC9B,UAAU,aAAa;AAAA;AAAA,QAC3B,IACA;AAAA,MACR;AAAA,MAER,GACC,YAAY,UAAa,YAAY,QAClC,MAAM,QAAQ,QAAQ,MAAK,qCAAU,UAAS,IAC1C,gBAAAA,QAAA;AAAA,MAACM;AAAA,MAAA;AAAA,QACG,IAAI,EAAE,WAAW,GAAG,aAAa,YAAY;AAAA,QAC7C,WAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAQ;AAAA,QACR,QAAO;AAAA,QACP,YAAW;AAAA,QACX,gBAAgB,SAAS,SAAS,IAAI,kBAAkB,CAAC,UAAU,UAAU,UAAU,aAAa;AAAA,QACpG,eAAe,UAAU,UAAU,gBAAgB;AAAA;AAAA,MAElD,SAAS,IAAI,CAAC,KAAK,UAChB,gBAAAN,QAAA;AAAA,QAACU;AAAA,QAAA;AAAA,UACG,KAAK;AAAA,UACL,SAAS,UAAU,KAAK,SAAS,SAAS,IAAI,cAAc;AAAA,UAC5D,OAAM;AAAA,UACN,SAAS,IAAI;AAAA,UACb,UAAU,IAAI,YAAY;AAAA,UAC1B,MAAK;AAAA;AAAA,QAEJ,IAAI;AAAA,MACT,CACH;AAAA,IACL,IACE,KACN,EACR;AAAA,EACJ,CACJ;AAER;;;AapfA,OAAOG,aAAW;AAClB,SAAS,QAAQ,SAAS,OAAAC,OAAK,cAAAC,oBAAkB;AAG1C,IAAM,eAAe,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAA+B;AAC3B,SACI,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,OAAM;AAAA,MACN,IAAI,EAAE,UAAU,WAAW,UAAU,aAAa,SAAS,MAAM,GAAG,OAAO,QAAQ,OAAO,QAAQ,KAAK,QAAQ,QAAQ,EAAE;AAAA;AAAA,IAEzH,gBAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG,IAAG;AAAA,QACH,IAAI,EAAE,KAAK,KAAK,WAAW,kBAAkB;AAAA;AAAA,MAE5C;AAAA,MAED,gBAAAA,QAAA,cAACC,OAAA,EAAI,UAAU,GAAG;AAAA,MAEjB,SACG,gBAAAD,QAAA,cAACE,cAAA,EAAW,SAAQ,SAAQ,OAAM,oBAC7B,KACL;AAAA,MAGH;AAAA,IACL;AAAA,EACJ;AAER;;;ACjCA,OAAOC,WAAS,aAAAC,aAAW,WAAAC,gBAAe;AAC1C,SAAS,UAAAC,SAAQ,YAAAC,WAAU,eAAAC,cAAa,kBAAAC,iBAAgB,gBAAAC,eAAc,YAAAC,WAAU,WAAAC,UAAS,SAAAC,QAAO,aAAAC,kBAAiB;AACjH,SAAS,sBAAsB;;;ACF/B,SAAS,eAAAC,cAAa,YAAAC,iBAAgB;AAE/B,SAAS,yBAA4B;AAC1C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAmC,IAAI;AACvE,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,KAAK;AACtC,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAAc,CAAC,CAAC;AAC1D,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AAEjD,QAAM,aAAaD,aAAY,CAAC,MAA2C;AACzE,gBAAY,EAAE,aAAa;AAC3B,YAAQ,IAAI;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,QAAM,cAAcA,aAAY,MAAM;AACpC,gBAAY,IAAI;AAChB,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,QAAM,qBAAqBA;AAAA,IACzB,CAAC,MAA2C;AAC1C,qBAAe,EAAE,OAAO,KAAK;AAAA,IAC/B;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,uBAAuBA,aAAY,CAAC,SAAY;AACpD;AAAA,MAAiB,CAAC,SAChB,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,IAAI;AAAA,IACvE;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC3CA,YAAYE,eAAc;AAC1B,SAAS,sBAAAC,2BAA0B;AAE5B,SAAS,mBAAmB,MAAc;AAC/C,SAAO,QAAQD,YACXA,UAAS,IAA6B,IACtCC;AACN;;;ACPA,SAAS,WAAAC,gBAAe;AAEjB,SAAS,iBACd,OACA,aACA,cACA,eACA;AACA,QAAM,gBAAgBA;AAAA,IACpB,MACE,MAAM;AAAA,MAAO,CAAC,SACZ,aAAa,IAAI,EAAE,YAAY,EAAE,SAAS,YAAY,YAAY,CAAC;AAAA,IACrE;AAAA,IACF,CAAC,OAAO,aAAa,YAAY;AAAA,EACnC;AAEA,QAAM,cAAcA,SAAQ,MAAM;AAChC,WAAO;AAAA,MACL,GAAG,cAAc,OAAO,CAAC,SAAS,cAAc,SAAS,IAAI,CAAC;AAAA,MAC9D,GAAG,cAAc,OAAO,CAAC,SAAS,CAAC,cAAc,SAAS,IAAI,CAAC;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,eAAe,aAAa,CAAC;AAEjC,SAAO,EAAE,eAAe,YAAY;AACtC;;;AHlBO,SAAS,YAAe;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA,EACZ;AAAa,GAAwB;AAfzC;AAgBI,QAAM;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAQ,IAAI,uBAA0B;AAE1C,EAAAC,YAAU,MAAM;AACZ,QAAI,SAAS,QAAW;AACpB,cAAQ,IAAI;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,EAAAA,YAAU,MAAM;AACZ,qBAAiB,CAAC,CAAC;AAAA,EACvB,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAE5B,QAAM,EAAE,eAAe,YAAY,IAAI,iBAAiB,OAAO,aAAa,cAAc,aAAa;AAEvG,QAAM,OAAOC,SAAQ,MAAG;AAxC5B,QAAAC;AAwC+B,+BAAmBA,MAAA,iCAAQ,SAAR,OAAAA,MAAgB,oBAAoB;AAAA,KAAG,CAAC,iCAAQ,IAAI,CAAC;AAEnG,QAAM,kBAAkB,MAAM;AAC1B,UAAMC,eAAc,cAAc,WAAW,cAAc;AAC3D,qBAAiBA,eAAc,CAAC,IAAI,aAAa;AAAA,EACrD;AAEA,QAAM,cACF,cAAc,SAAS,KACvB,cAAc,WAAW,cAAc;AAE3C,QAAM,kBAAkB,4BAAW;AAAA,IAC/B,EAAE,MAAM,WAAW,IAAI,YAAY;AAAA,IACnC,EAAE,MAAM,WAAW,IAAI,MAAM;AAAA,IAAE,EAAE;AAAA,EACrC;AAEA,SACI,gBAAAC,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,WAAQ;AAAA,MACR,QAAO,sCAAQ,UAAR,YAAiB;AAAA,MACxB,SAAS;AAAA,MACT,UAAS,sCAAQ,YAAR,YAAmB;AAAA,MAC5B,MAAK;AAAA,MACL,YAAW,iCAAQ,kBAAiB,UAAU,EAAC,iCAAQ,gBAAe,gBAAAD,QAAA,cAAC,UAAK,IAAK;AAAA,MACjF,UAAS,iCAAQ,kBAAiB,UAAU,gBAAAA,QAAA,cAAC,UAAK,IAAK;AAAA;AAAA,IAEtD,WAAW,kCAAc,aAAa;AAAA,EAC3C,GAEA,gBAAAA,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACG,WAAW;AAAA,MACX;AAAA,MACA,cAAc,EAAE,UAAU,UAAU,YAAY,OAAO;AAAA,MACvD,MAAM;AAAA,MACN,SAAS,MAAM,QAAQ,KAAK;AAAA;AAAA,IAE5B,gBAAAF,QAAA,cAACG,QAAA,EAAM,UAAS,SAAQ,eAAY,yBAAwB,SAAQ,SAAQ,WAAW,GAAG,cAAc,KACpG,gBAAAH,QAAA,cAACG,QAAA,EAAM,IAAI,GAAG,IAAI,KACb,8BACG,gBAAAH,QAAA,cAACI,cAAA,EAAY,WAAS,MAAC,MAAK,WACxB,gBAAAJ,QAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACG,eAAY;AAAA,QACZ,WAAS;AAAA,QACT,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,UACP,OAAO;AAAA,YACH,cACI,gBAAAL,QAAA,cAACM,iBAAA,EAAe,UAAS,SACrB,gBAAAN,QAAA,cAAC,kBAAe,UAAS,SAAQ,CACrC;AAAA,UAER;AAAA,QACJ;AAAA;AAAA,IACJ,CACJ,CAER,GAEA,gBAAAA,QAAA,cAACG,QAAA,EAAM,WAAU,SAAQ,UAAS,UAC7B,aACG,gBAAAH,QAAA,cAACO,WAAA,EAAS,OAAc,SAAS,mBAC7B,gBAAAP,QAAA,cAACQ,eAAA,MACG,gBAAAR,QAAA,cAACS,WAAA,EAAS,SAAS,aAAa,OAAM,WAAU,CACpD,GAAe,iBAEnB,GAEH,YAAY,SAAS,IAClB,YAAY,IAAI,CAAC,SACb,gBAAAT,QAAA;AAAA,MAACO;AAAA,MAAA;AAAA,QACG,KAAK,aAAa,IAAI;AAAA,QACtB;AAAA,QACA,SAAS,MAAM,qBAAqB,IAAI;AAAA;AAAA,MAExC,gBAAAP,QAAA,cAACQ,eAAA,MACG,gBAAAR,QAAA;AAAA,QAACS;AAAA,QAAA;AAAA,UACG,SAAS,cAAc,SAAS,IAAI;AAAA,UACpC,OAAM;AAAA;AAAA,MACV,CACJ;AAAA,MACC,aAAa,IAAI;AAAA,IACtB,CACH,IAED,gBAAAT,QAAA,cAACO,WAAA,EAAS,UAAQ,QAAC,8BAA4B,CAEvD,GAEA,gBAAAP,QAAA,cAACG,QAAA,EAAM,WAAU,OAAM,KAAK,GAAG,GAAG,GAAG,gBAAe,iBAAgB,SAAQ,aACvE,gBAAgB,IAAI,CAACO,SAAQ,UAAO;AAtI7D,UAAAZ;AAuI4B,6BAAAE,QAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAK;AAAA,UACL,SAAS,UAAU,KAAK,gBAAgB,SAAS,IAAI,SAAS;AAAA,UAC9D,SAASS,QAAO;AAAA,UAChB,WAAUZ,MAAAY,QAAO,aAAP,OAAAZ,MAAmB;AAAA,UAC7B,MAAK;AAAA;AAAA,QAEJ,WAAWY,QAAO,IAAI;AAAA,MAC3B;AAAA,KACH,CACL,CACJ;AAAA,EACJ,CACJ;AAER;;;AItJA,OAAOC,aAAW;AAClB,SAAS,SAAAC,QAAO,cAAAC,oBAAkB;AAG3B,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX,MAA4B;AAC1B,SACE,gBAAAF,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MAAM,eAAY;AAAA,MAAiB,gBAAgB;AAAA,MAAU,QAAQ;AAAA,MAAI,UAAU,QAAQ,UAAU;AAAA,MAAY,OAAO,QAAQ,SAAS;AAAA,MAAW,SAAQ;AAAA,MAAmB,QAAQ;AAAA,MACtL,IAAI,EAAE,WAAW,SAAS,CAAC,UAAU,MAAM,QAAQ,CAAC,IAAI,OAAO;AAAA;AAAA,IAC/D,gBAAAD,QAAA,cAACC,QAAA,EAAM,eAAY,uBAAsB,QAAQ,IAAI,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,WAAU,OAAM,YAAW,UAAS,gBAAe,mBACrI,gBAAAD,QAAA,cAACC,QAAA,EAAM,IAAG,gBAAe,WAAU,OAAM,YAAW,UAAS,KAAK,KAC/D,YACD,gBAAAD,QAAA,cAACC,QAAA,EAAM,IAAG,gBAAe,KAAK,OAC5B,gBAAAD,QAAA,cAACE,cAAA,EAAW,eAAY,qBAAoB,SAAQ,MAAK,OAAM,kBAC5D,KACH,GACC,YACC,gBAAAF,QAAA,cAACE,cAAA,EAAW,eAAY,wBAAuB,SAAQ,WAAU,OAAM,kBACpE,QACH,CAEJ,CACF,GAEC,WACC,gBAAAF,QAAA,cAACC,QAAA,EAAM,IAAG,iBAAgB,WAAU,OAAM,YAAW,UAAS,KAAK,KAChE,OACH,CAEJ;AAAA,EACF;AAEJ;;;ACrCA,OAAOE,WAAoB,YAAAC,iBAAoC;AAE/D,SAAiB,cAAAC,cAAY,cAAAC,aAAY,OAAAC,aAAW;AACpD,OAAOC,WAAU;AACjB,SAAS,sBAAsB;AAC/B,SAAS,wBAAAC,6BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,UAAU;AACnB,SAAS,QAAQ,aAAwB,SAAS,iBAAiB;AAGnE,OAAO,iCAAiC;AACxC,OAAO,+BAA+B;AAU/B,IAAM,sBAAsB,CAAC;AAAA;AAAA;AAAA,EAGhC;AAAA;AAAA,EAEA;AAAA,EACA;AACJ,MAAgC;AAE5B,MAAI;AAEJ,QAAM,CAAC,OAAO,QAAQ,IAAIC,UAAS,oBAAI,KAAK,CAAC;AAC7C,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,UAAS;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAIC,QAAM,SAAS,oBAAI,KAAK,CAAC;AACzD,QAAM,CAAC,cAAc,eAAe,IAAIA,QAAM,SAAS,KAAK;AAE5D,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,eAAe,YAAY,OAAO,EAAE,cAAc,EAAE,CAAC;AAC3D,QAAM,aAAa,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,QAAQ,cAAc,CAAC,CAAC;AAE/E,EAAAA,QAAM,UAAU,MAAM;AAClB,QAAI,SAAS,MAAM;AACf,yBAAmB,KAAK;AAAA,IAC5B;AAAA,EACJ,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,qBAAqB,CAACC,WAAe;AACvC,QAAIA,QAAO;AACP,UAAI,OAAOA,OAAM,QAAQ,IAAI,KAAK,MAAM,MAAMA,OAAM,QAAQ;AAC5D,UAAI,SAASA,OAAM,SAAS,IAAI,IAAI,KAAK,MAAM,OAAOA,OAAM,SAAS,IAAI;AACzE,UAAI,OAAOA,OAAM,YAAY;AAC7B,qBAAe,MAAM,MAAM,QAAQ,MAAM;AACzC,eAAS,YAAY;AACrB,eAASA,MAAK;AAAA,IAClB;AAAA,EACJ;AAEA,QAAM,iBAAiB,CAAC,YAAiB,MAAM;AAC3C,oBAAgB,OAAO;AAAA,EAC3B;AAEA,QAAM,SAAS,mBACR;AAOP,SACI,gBAAAD,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA,cAACE,uBAAA,EAAqB,aAAa,gBAAgB,eAAe,UAC7D,gBAAgB,QACb,gBAAAF,QAAA,cAACG,OAAA,EAAK,eAAY,mBAAkB,IAAI,EAAE,OAAO,QAAQ,YAAY,aAAa,aAAa,SAAS,SAAS,QAAQ,eAAe,UAAU,YAAY,SAAS,KACnK,gBAAAH,QAAA,cAACG,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,UAAU,SAAS,YAAY,cAAc,KACnE,gBAAAH,QAAA,cAACI,OAAA,EAAK,WAAS,MAAC,KAAK,KAAK,IAAI,EAAC,gBAAgB,iBAAiB,SAAS,YAAY,YAAY,cAAa,KACzG,WAAW,IAAI,CAAC,QACb,gBAAAJ,QAAA,cAACI,OAAA,EAAK,IAAI,EAAE,OAAO,OAAO,GAAG,KAAK,IAAI,SAAS,KAC3C,gBAAAJ,QAAA,cAACG,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,YAAY,UAAU,gBAAgB,SAAS,KACtG,gBAAAH,QAAA,cAACK,cAAA,EAAW,IAAI,EAAE,UAAU,mBAAmB,OAAO,YAAY,KAAI,OAAO,KAAK,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAE,CACtI,GACA,gBAAAL,QAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACG,SAAS,MAAM,SAAS,GAAG;AAAA,MAC3B,IAAI;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,iBAAiB,UAAU,KAAK,KAAK,IAAI,YAAY;AAAA,QACrD,QAAQ;AAAA,QACR,cAAc;AAAA;AAAA,QAEd,UAAU;AAAA;AAAA;AAAA,MAGd;AAAA;AAAA,IAEA,gBAAAH,QAAA,cAACK,cAAA,EAAW,IAAI,EAAE,UAAU,mBAAmB,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,YAAY,KAAI,OAAO,KAAK,GAAG,CAAE;AAAA,EAC7H,CACJ,CACH,CACL,GACA,gBAAAL,QAAA,cAACI,OAAA,EAAK,WAAS,MAAC,gBAAe,YAC3B,gBAAAJ,QAAA,cAACM,aAAA,EAAW,eAAY,wBAAuB,SAAS,eAAe,IAAI,KACvE,gBAAAN,QAAA,cAAC,iCAA4B,CACjC,CACJ,CACJ,CACJ,IAEA,gBAAAA,QAAA,cAACG,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,YAAY,QAAQ,KAC1C,gBAAAH,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,aAAY;AAAA,MACZ,QAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW,EAAE,SAAS,EAAE,QAAQ,KAAK,GAAG,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE;AAAA,MAEnE,IAAI,EAAE,UAAU,mBAAmB,QAAQ,oBAAoB,YAAY,aAAa,aAAa,SAAS,4BAA4B,EAAE,gBAAgB,gBAAgB,GAAG,mCAAmC,EAAE,gBAAgB,gBAAgB,GAAG,oCAAoC,EAAE,aAAa,OAAO,cAAc,OAAO,OAAO,YAAY,GAAG,yBAAyB,EAAE,UAAU,kBAAkB,GAAG,kCAAkC,EAAE,UAAU,kBAAkB,EAAG;AAAA,MACzd,UAAU,CAAC,aAAyB,SAAS,QAAQ;AAAA;AAAA,EACzD,GACA,gBAAAA,QAAA,cAACI,OAAA,EAAK,WAAS,MAAC,gBAAe,YAC3B,gBAAAJ,QAAA,cAACM,aAAA,EAAW,eAAY,yBAAwB,SAAS,eAAe,KAAK,KACzE,gBAAAN,QAAA,cAAC,+BAA0B,CAC/B,CACJ,CACJ,CAER,CACJ;AAER;;;AClIA,OAAOO,WAAS,aAAAC,aAAW,YAAAC,iBAAoC;AAE/D,SAAS,aAAyB,qBAAsE;AACxG,SAAS,eAAAC,oBAAmB;AAE5B,OAAO,2BAA2B;AAClC,OAAO,yBAAyB;AAChC,SAAS,gBAAgB;AAiBlB,SAAS,kBAAqB,EAAE,MAAM,SAAS,cAAc,WAAW,mBAAmB,OAAO,WAAW,QAAQ,GAA8B;AACtJ,EAAAA,aAAY;AAAA,IACR;AAAA,EACJ;AAGA,QAAM,QAAQ,SAAS;AACvB,QAAM,SAAS,cAAc;AAC7B,QAAM,kBAAkB,CAAC,WAA0B,OAAO,IAAI,kBAAkB,QAAQ,QAAQ;AAEhG,WAAS,mBAAmB;AACxB,WAAO,KAAK,MAAM,KAAK,OAAO,IAAI,GAAO;AAAA,EAC7C;AAEA,QAAM,mBAAmB,CAAC,QAAa;AAvC3C;AAwCS,UAAM,cAAc,kBAAgB,kBAAa,GAAG,MAAhB,mBAAmB;AAC5D,UAAM,cAAc,kBAAgB,kBAAa,GAAG,MAAhB,mBAAmB;AACvD,UAAM,aAAa,kBAAgB,kBAAa,GAAG,MAAhB,mBAAmB;AAElD,WAAO;AAAA,MACL,OAAO,eAAe,EAAE;AAAA,MACtB,GAAI,cAAc,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC;AAAA,MAC3C,GAAG,OAAO,cAAc,EAAE,CAAC,IAAI,iBAAiB,CAAC;AAAA,IACrD;AAAA,EACJ;AAEA,QAAM,kBAA8B;AAAA,IAChC,OAAO;AAAA,IACP,YAAY,eAAe,aAAa,KAAK,CAAC,CAAC,EAAE,wBAAwB;AAAA,IACzE,YAAY,CAAC,WAAgB;AAtDrC;AAuDY,UAAI,QAAQ,OAAO,MAAM,SAAS,EAAE,SAAS,GAAG,IAAI,OAAO,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,SAAS,IAAI,OAAO,MAAM,SAAS;AAElH,UAAI,WAAW;AACf,UAAI,gBAAgB,KAAK,SAAS,GAAG;AACjC,cAAM,aAAa,aAAa,KAAK,CAAC,CAAC;AACvC,YAAI,WAAW,YAAa;AAC5B,YAAI,WAAW,YAAa;AAC5B,mBAAW,KAAK,IAAI,GAAG,WAAW,CAAC;AAAA,MACvC;AAEA,UAAI,cAAc;AACd,YAAI,OAAO,QAAQ,UAAU,GAAG;AAC5B,cAAI,cAAc;AAClB,cAAI,cAAc;AACd,kBAAM,eAAe,KAAK;AAAA,cAAK,UAAK;AArE5D,oBAAAC;AAsE4B,+BAAOA,MAAA,aAAa,IAAI,MAAjB,gBAAAA,IAAoB,WAAW,MAAM;AAAA;AAAA,YAChD;AACA,gBAAI,cAAc;AACd,oBAAM,YAAY,aAAa,YAAY;AAC3C,4BAAc,UAAU,cAAc;AAAA,YAC1C;AAAA,UACJ;AAEA,gBAAM,YAAY,UACb,OAAO,OAAE;AA/ElC,gBAAAA;AAgF4B,mCAAgB,QAAOA,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,WAAW,MAAM;AAAA,WAAK,EACjE,IAAI,OAAE;AAjF/B,gBAAAA;AAkF4B,mCAAgB,QAAOA,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,WAAW;AAAA,WAAC;AAC5D,gBAAM,qBAAqB,UAAU,OAAO,CAAC,OAAO,cAAc,YAAY,QAAQ,QAAQ,KAAK,MAAM,YAAY;AACrH,kBAAQ,GAAG,WAAW,KAAK,mBAAmB,MAAM;AAAA,QACxD,aAAW,kBAAa,KAAK,CAAC,CAAC,MAApB,mBAAuB,gBAAe,OAAO,QAAQ,UAAU,GAAG;AACzE,gBAAM,kBAAiB,YAAO,IAAI,WAAW,OAAO,QAAQ,MAAM,MAA3C,mBAA8C,YAAY;AACjF,cAAI,cAAc;AAElB,cAAI,cAAc;AACd,kBAAM,eAAe,KAAK;AAAA,cAAK,UAAK;AA1F5D,oBAAAA;AA2F4B,+BAAOA,MAAA,aAAa,IAAI,MAAjB,gBAAAA,IAAoB,WAAW,MAAM;AAAA;AAAA,YAChD;AACA,gBAAI,cAAc;AACd,oBAAM,YAAY,aAAa,YAAY;AAC3C,4BAAc,UAAU,cAAc;AAAA,YAC1C;AAAA,UACJ;AAEA,gBAAM,qBAAqB,UAAU;AAAA,YACjC,OAAE;AApG1B,kBAAAA,KAAAC;AAoG6B,qCAAgB,QAAOD,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,WAAW,MAAM,kBAAkB,gBAAgB,QAAOC,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,WAAW,MAAM;AAAA;AAAA,UAC7I,EAAE;AACF,kBAAQ,GAAG,WAAW,KAAK,kBAAkB;AAAA,QACjD,OAAO;AACH,kBAAQ;AAAA,QACZ;AAAA,MACJ;AACA,aACI,gBAAAL,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,OAAO;AAAA,YACH,OAAO;AAAA,YACP,WAAW;AAAA,YACX,UAAU;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,aAAa,OAAO,QAAQ,SAAS,IAAI,QAAQ,OAAO,QAAQ,SAAS,IAAI,SAAS;AAAA,YACtF,iBAAiB,OAAO,QAAQ,SAAS,UAClC,MAAM,QAAQ,KAAa,OAAO,WAAW,OAAO,QAAQ,SAAS,GAAG,IACzE;AAAA,YACN,YAAY,OAAO,QAAQ,QAAQ,UAAU,QAAQ;AAAA,UACzD;AAAA;AAAA,QAEC,OAAO,QAAQ,SAAS,WACrB,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,OAAO;AAAA,cACH,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,YAAY;AAAA,YAChB;AAAA,YACA,SAAS,OAAK;AACV,gBAAE,gBAAgB;AAClB,qBAAO,IAAI,wBAAwB,OAAO,IAAI,CAAC,OAAO,QAAQ,gBAAgB;AAAA,YAClF;AAAA;AAAA,UAEC,OAAO,QAAQ,mBAAmB,gBAAAA,QAAA,cAAC,uBAAoB,UAAS,SAAQ,OAAM,UAAS,IAAK,gBAAAA,QAAA,cAAC,yBAAsB,UAAS,SAAQ,OAAM,UAAS;AAAA,QACxJ;AAAA,QAEH;AAAA,MACL;AAAA,IAER;AAAA,IACA,SAAS,CAAC,WAAgB;AAhJlC;AAiJY,YAAM,QAAQ,OAAO,MAAM;AAC3B,YAAM,iBAAiB,gBAAe,kBAAa,KAAK,CAAC,CAAC,MAApB,mBAAuB,cAAc;AAC3E,YAAM,iBAAiB,gBAAe,kBAAa,KAAK,CAAC,CAAC,MAApB,mBAAuB,cAAc;AAE3E,UAAI,YAAY;AAChB,UAAI,YAAY;AAEhB,UAAI,kBAAkB,QAAW;AAC7B,oBAAY,UAAU;AAAA,UAAK,SAAI;AAzJ/C,gBAAAI;AA0JoB,mCAAgB,QAAOA,MAAA,aAAa,GAAG,MAAhB,gBAAAA,IAAmB,WAAW,MAAM;AAAA;AAAA,QAC/D;AAAA,MACJ;AAEA,UAAI,kBAAkB,QAAW;AAC7B,oBAAY,UAAU;AAAA,UAAK,SAAI;AA/J/C,gBAAAA;AAgKqB,mCAAgB,QAAOA,MAAA,aAAa,GAAG,MAAhB,gBAAAA,IAAmB,WAAW,MAAM;AAAA;AAAA,QAChE;AAAA,MACJ;AAEA,UAAI,aAAa,WAAW;AACxB,eAAO,QAAQ,SAAS;AAAA,MAC5B,OAAO;AACH,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAGA,MAAI,qBAAqB,eAAe,OAAO;AAC/C,MAAI,8BAA8B,qBAAqB;AACvD,MAAI,eAAe,WAAW;AAC9B,MAAI,0BAA0B,iBAAiB,YAAY,SAAS,iBAAiB,aAAa,SAAS,iBAAiB,gBAAgB,SAAS;AACrJ,MAAI,iBAAiB,WAAW,YAAY,KAAK,WAAW,aAAa,KAAK,WAAW,gBAAgB,KAAK;AAC9G,MAAI,OAAO,YAAY,YAAY,sBAAsB,QAAQ,SAAS,KAAK,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,KAAK,SAAS,KAAK,OAAO,SAAS,CAAC,IAAI;AAC1J,MAAI,2BAA2B,mBAAmB,CAAC;AAGnD,QAAM,CAAC,iBAAiB,iBAAiB,IAAIF,UAAiB,CAAC;AAE/D,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAiB,IAAI;AACrD,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAqB,CAAC,CAAC;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,UAAsB,CAAC,CAAC;AAGpE,EAAAD,YAAU,MAAM;AACZ,SAAI,6BAAM,UAAS,GAAG;AAClB,sBAAgB,MAAM,MAAS;AAAA,IACnC;AAAA,EACJ,GAAG,CAAC,IAAI,CAAC;AAGT,QAAM,kBAAkB,CAACK,OAAW,aAAkB;AAClD,QAAI,cAA0B,CAAC;AAC/B,SAAIA,SAAA,gBAAAA,MAAM,UAAS,GAAG;AAClB,YAAM,WAAW,OAAO,KAAKA,MAAK,CAAC,CAAC;AACpC,MAAAA,MAAK,IAAI,CAAC,SAAc;AACpB,cAAM,UAAkC,CAAC;AACzC,YAAI,IAAI;AACR,YAAI,KAAK,YAAY,SAAS;AAC9B,aAAK,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AAClC,kBAAQ,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAAA,QAC3C;AACA,gBAAQ,KAAK,WAAW,KAAK,QAAQ,IAAI;AACzC,sBAAc,CAAC,GAAG,aAAa,OAAO;AAAA,MAC1C,CAAC;AAAA,IACL;AACA,iBAAa,WAAW;AAAA,EAC5B;AAEA,QAAM,wBAAwB,CAAC,iBAAwC;AACnE,QAAI,kBAAkB,KAAK,sBAAsB,MAAM;AACnD,UAAI,gBAAgB;AACpB,UAAI,qBAAkC,CAAC;AACvC,UAAI,cAA2B,CAAC;AAChC,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,YAAI,OAAO,aAAa,CAAC,MAAM,UAAU;AACrC,cAAK,aAAa,CAAC,EAAa,SAAS,yBAAyB,GAAG;AACjE,4BAAgB;AAAA,UACpB;AAAA,QACJ,OAAO;AACH,6BAAmB,KAAK,aAAa,CAAC,CAAC;AAAA,QAC3C;AAAA,MACJ;AAEA,gBAAU,QAAQ,CAAC,UAAe;AAC9B,YAAI,OAAO,aAAa,aAAa,MAAM,UAAU;AACjD,cAAK,aAAa,aAAa,EAAa,SAAS,MAAM,IAAI,GAAG;AAC9D,wBAAY,KAAK,MAAM,EAAE;AAAA,UAC7B;AAAA,QACJ;AAAA,MACJ,CAAC;AAGD,UAAI,gBAAgB,MAAM;AACtB,cAAM,aAAa,mBAAmB,OAAO,cAAY,CAAC,YAAY,SAAS,QAAQ,CAAC;AACxF,cAAM,oBAAoB,mBAAmB,KAAK,aAAW,YAAY,SAAS,OAAO,CAAC;AAC1F,YAAI,qBAAqB,MAAM;AAC3B,4BAAkB,CAAC,GAAG,UAAU,CAAC;AAAA,QACrC,OAAO;AACH,4BAAkB,CAAC,GAAG,oBAAoB,GAAG,WAAW,CAAC;AAAA,QAC7D;AAAA,MACJ;AAAA,IAEJ,OAAO;AACH,wBAAkB,CAAC,GAAG,YAAY,CAAC;AAAA,IACvC;AAAA,EACJ;AAEA,SACI,gBAAAN,QAAA,cAAAA,QAAA,gBACK,QACG,gBAAAA,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,SAAS,QAAQ,WAAW,YAAY,GAAG,SAAS,OAAO,OAAQ,KACpF,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,WAAW;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV,iBAAiB,sBAAsB,OAAO,mBAAmB;AAAA,MACjE,gBAAgB,sBAAsB,OAAO,2BAA2B;AAAA,MACxE,YAAU;AAAA,MACV,cAAc;AAAA,QACV,YAAY,EAAE,iBAAiB,EAAE,UAAU,KAAK,EAAE;AAAA,MACtD;AAAA,MAEA,mBAAmB;AAAA,MAEnB,mBAAmB;AAAA,MACnB,2BAA2B,CAAC,iBAAiB,sBAAsB,YAAY;AAAA,MAC/E;AAAA,MAEA,4BAA0B;AAAA,MAC1B,YAAY,sBAAsB,OAAO,OAAO;AAAA,MAChD,YAAY;AAAA,QACR,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,mBAAmB,WAAS,GAAG,MAAM,eAAe,CAAC;AAAA;AAAA,QACrD,oBAAoB;AAAA,UAChB,kBAAkB;AAAA,UAClB,oBAAoB,CAAC,EAAE,MAAM,IAAI,MAAM,MAAM,GAAG,IAAI,SAAI,EAAE,OAAO,UAAU,KAAK,QAAQ,aAAU,EAAE,EAAE;AAAA,QAC1G;AAAA,MACJ;AAAA,MACA,IAAI;AAAA,QACA,WAAW,YAAY,GAAG,SAAS,OAAO;AAAA,QAC1C,yBAAyB;AAAA,UACrB,SAAS;AAAA,QACb;AAAA,QACA,kCAAkC;AAAA,UAC9B,WAAW;AAAA,UACX,QAAQ;AAAA,QACZ;AAAA,QACA,iCAAiC;AAAA,UAC7B,WAAW;AAAA,UACX,QAAQ;AAAA,QACZ;AAAA,QACA,qDAAqD;AAAA,UACjD,SAAS;AAAA,QACb;AAAA,QAEA,sBAAsB;AAAA,UAClB,CAAC,+BAA+B,GAAG,GAAG,uBAAuB;AAAA,QACjE;AAAA,QAEA,yEAAyE;AAAA,UACrE,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,aAAa;AAAA,QACjB;AAAA,QACA,uBAAuB;AAAA,UACnB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB;AAAA,MACJ;AAAA;AAAA,EACJ,CACJ,CACJ,CAER;AAER;AAEO,IAAM,aAAaO,QAAM,KAAK,mBAAmB,CAAC,WAAW,cAAc;AAC9E,QAAM,UACF,UAAU,cAAc,UAAU,aAClC,UAAU,sBAAsB,UAAU,qBAC1C,UAAU,UAAU,UAAU,SAC9B,UAAU,cAAc,UAAU,aAClC,UAAU,YAAY,UAAU;AAEpC,SAAO;AACX,CAAC;;;ACjVD,OAAOC,aAAwC;AAE/C,SAAS,UAAAC,SAAQ,SAAAC,QAAO,cAAAC,oBAAkB;;;ACH1C,OAAOC,aAAW;AAEX,IAAM,SAAS,MAAM;AACxB,SACI,gBAAAA,QAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,gCAC9D,gBAAAA,QAAA,cAAC,OAAE,aAAU,4BACT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,mPAAkP,MAAK,WAAU,GAC/S,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,sPAAqP,MAAK,WAAU,GAClT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,qPAAoP,MAAK,WAAU,GACjT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,yPAAwP,MAAK,WAAU,GACrT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,sPAAqP,MAAK,WAAU,GAClT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,+OAA8O,MAAK,WAAU,GAC3S,gBAAAA,QAAA,cAAC,UAAK,GAAE,yJAAwJ,MAAK,WAAU,GAC/K,gBAAAA,QAAA,cAAC,UAAK,GAAE,mQAAkQ,MAAK,WAAU,GACzR,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,o+CAAm+C,MAAK,WAAU,CACpiD,GACA,gBAAAA,QAAA,cAAC,cACG,gBAAAA,QAAA,cAAC,cAAS,IAAG,sBACT,gBAAAA,QAAA,cAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,WAAU,sBAAqB,CAC7E,CACJ,CACJ;AAER;;;ACvBA,OAAOC,aAAW;AACX,IAAM,QAAQ,MAAM;AACvB,SACI,gBAAAA,QAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,gCAC9D,gBAAAA,QAAA,cAAC,OAAE,aAAU,4BACT,gBAAAA,QAAA,cAAC,UAAK,GAAE,qGAAoG,MAAK,WAAU,GAC3H,gBAAAA,QAAA,cAAC,UAAK,GAAE,mHAAkH,MAAK,WAAU,GACzI,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,okCAAmkC,MAAK,WAAU,GAChoC,gBAAAA,QAAA,cAAC,UAAK,GAAE,mNAAkN,MAAK,WAAU,CAC7O,GACA,gBAAAA,QAAA,cAAC,cACG,gBAAAA,QAAA,cAAC,cAAS,IAAG,sBACT,gBAAAA,QAAA,cAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,WAAU,sBAAqB,CAC7E,CACJ,CACJ;AAER;;;ACjBA,OAAOC,aAAW;AACX,IAAMC,SAAQ,MAAM;AACvB,SACI,gBAAAD,QAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,gCAC9D,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,0UAAyU,MAAK,WAAU,GACtY,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,wgBAAugB,MAAK,WAAU,GACpkB,gBAAAA,QAAA,cAAC,UAAK,GAAE,+PAA8P,MAAK,WAAU,CACzR;AAGR;;;ACVA,OAAOE,aAAW;AAEX,IAAMC,UAAS,MAAM;AACxB,SACI,gBAAAD,QAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,gCAC9D,gBAAAA,QAAA,cAAC,OAAE,aAAU,4BACT,gBAAAA,QAAA,cAAC,UAAK,GAAE,iPAAgP,MAAK,WAAU,GACvQ,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,meAAke,MAAK,WAAU,GAC/hB,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,woDAAuoD,MAAK,WAAU,CACxsD,GACA,gBAAAA,QAAA,cAAC,cACG,gBAAAA,QAAA,cAAC,cAAS,IAAG,sBACT,gBAAAA,QAAA,cAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,WAAU,sBAAqB,CAC7E,CACJ,CACJ;AAGR;;;AJYA,IAAM,sBAA8D;AAAA,EAClE,QAAQ,gBAAAE,QAAA,cAAC,YAAO;AAAA,EAChB,OAAO,gBAAAA,QAAA,cAACC,QAAA,IAAM;AAAA,EACd,UAAU,gBAAAD,QAAA,cAAC,WAAM;AAAA,EACjB,QAAQ,gBAAAA,QAAA,cAACE,SAAA,IAAO;AAClB;AAEA,IAAM,cAAc,CAAC;AAAA,EACnB,QAAQ;AAAA,EACR,OAAO;AACT,MAGM;AACJ,QAAM,OAAO,oBAAoB,KAAK;AAEtC,QAAM,WACJ,SAAS,UAAU,EAAE,OAAO,QAAQ,QAAQ,OAAO,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO;AACzF,SAAO,gBAAAF,QAAA,cAAC,aAAK,IAAK;AACpB;AAGO,IAAM,aAAa,CAAC;AAAA,EACzB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,OAAO,gBAAAA,QAAA,cAAC,eAAY,OAAc,MAAY;AAChD,MAA4B;AAG1B,QAAM,eAAe,SAAS,UAAU,cAAc;AACtD,QAAM,kBAAkB,SAAS,UAAU,YAAY;AAEvD,SACE,gBAAAA,QAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,eAAY;AAAA;AAAA,IAEX,QAAQ,gBAAAH,QAAA,cAACG,QAAA,MAAO,IAAK;AAAA,IAEtB,gBAAAH,QAAA,cAACG,QAAA,EAAM,KAAK,OACV,gBAAAH,QAAA,cAACI,cAAA,EAAW,OAAM,gBAAe,SAAS,cAAc,WAAU,YAC/D,KACH,GAEC,YACC,gBAAAJ,QAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAU;AAAA,QACV,OAAM;AAAA;AAAA,MAEL;AAAA,IACH,GAED,YAAW,mCAAS,UAAS,KAC5B,gBAAAJ,QAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAW;AAAA,QACX,gBAAe;AAAA;AAAA,MAEd,QAAQ,IAAI,CAAC,QAAQ,UAAO;AAjGzC;AAkGc,+BAAAH,QAAA;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,QAAO,YAAO,UAAP,YAAgB;AAAA,YACvB,UAAS,YAAO,YAAP,YAAkB;AAAA,YAC3B,OAAM,YAAO,SAAP,YAAe;AAAA,YACrB,WACE,OAAO,QAAQ,OAAO,iBAAiB,SACnC,gBAAAL,QAAA,cAAC,SAAI,KAAK,OAAO,MAAM,KAAI,QAAO,IAClC;AAAA,YAEN,SACE,OAAO,QAAQ,OAAO,iBAAiB,UACnC,gBAAAA,QAAA,cAAC,SAAI,KAAK,OAAO,MAAM,KAAI,QAAO,IAClC;AAAA,YAEN,SAAS,OAAO;AAAA;AAAA,UAEf,YAAW,YAAO,SAAP,YAAe,QAAQ;AAAA,QACrC;AAAA,OACD;AAAA,IACH,CAEJ;AAAA,EACF;AAEJ;;;AK1HA,OAAOM,WAAS,aAAAC,aAAW,YAAAC,kBAAgB;AAE3C,SAAS,UAAAC,UAAQ,cAAAC,cAAY,SAAAC,QAAO,QAAQ,eAAe,eAAe,aAAa,cAAAC,aAAY,WAAAC,UAAS,OAAAC,OAAK,WAAAC,gBAAe;AAChI,OAAOC,WAAU;AAGjB,OAAOC,gBAAe;AACtB,YAAYC,aAAY;AA8BjB,IAAM,WAAW,CAAC,EAAE,OAAO,WAAW,UAAU,SAAS,SAAS,cAAc,cAAc,UAAU,cAAc,eAAe,YAAY,SAAS,KAAK,MAAqB;AAEvL,MAAI,IAAI;AACR,MAAI,sBAAsB;AAC1B,MAAI;AACJ,MAAI;AAEJ,QAAM,CAAC,MAAM,OAAO,IAAIV,WAAS,IAAI;AAErC,EAAAD,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,iBAAW;AAAA,IACf,OACK;AACD,kBAAY;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,IAAI,CAAC;AAET,OAAI,6CAAc,SAAQ,QAAW;AACjC,QAAIW,QAAO,6CAAc,IAA2B,KAAK,QAAW;AAChE,mBAAa,6CAAc;AAAA,IAC/B,OAAO;AACH,mBAAaA,QAAO,6CAAc,IAA2B;AAAA,IACjE;AAAA,EACJ;AAGA,qCAAS,IAAI,SAAU,QAAgB,OAAO,OAAO;AAC9C,QAAI,iCAAQ,MAAM;AACd,WAAI,iCAAQ,KAAK,SAAQ,QAAW;AAChC,eAAO,OAAOA,QAAO,iCAAQ,IAA2B;AAAA,MAC5D,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEH,MAAI,WAAW;AACX,QAAIA,QAAO,SAAgC,KAAK,QAAW;AACvD,UAAI,aAAaZ,QAAM,eAAe,SAAS,KAAK,UAAU,QAAQ,QAAW;AAC7E,8BAAsB;AACtB,oBAAY;AAAA,MAChB,OAAO;AACH,8BAAsB;AACtB,oBAAY;AAAA,MAChB;AAAA,IACJ,OAAO;AACH,4BAAsB;AACtB,kBAAYY,QAAO,SAAgC;AAAA,IACvD;AAAA,EACJ;AAEA,QAAM,aAAa,MAAM;AACrB,YAAQ,IAAI;AACZ,QAAI,SAAS;AACT,cAAQ,IAAI;AAAA,IAChB;AAAA,EACJ;AAGA,QAAM,cAAc,MAAM;AACtB,YAAQ,KAAK;AACb,QAAI,SAAS;AACT,cAAQ,KAAK;AAAA,IACjB;AAAA,EACJ;AAGA,QAAM,gBAAgB,4BAAW,CAAC,EAAE,MAAM,UAAU,IAAI,YAAY,CAAC;AACrE,YAAU,4BAAW,EAAE,WAAW,gBAAAZ,QAAA,cAACQ,OAAA,MAAI,wBAAsB,EAAO;AAEpE,SACI,gBAAAR,QAAA,cAAC,aACI,eACG,gBAAAA,QAAA,cAAAA,QAAA,gBACK,aAAa,QAAQ,SAClB,gBAAAA,QAAA,cAACO,UAAA,EAAQ,WAAU,gBAAe,OAAO,aAAa,WAAW,SAAY,aAAa,UAAU,IAAI,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAG,EAAG,CAAE,EAAG,EAAG,KACjM,gBAAAP,QAAA,cAACG,UAAA,EAAO,MAAK,SAAQ,OAAO,aAAa,SAAS,SAAY,aAAa,QAAQ,WAAW,UAAS,6CAAc,YAAW,SAAY,6CAAc,UAAU,QAAQ,YAAW,6CAAc,iBAAgB,UAAY,6CAAc,iBAAgB,SAAS,gBAAAH,QAAA,cAAC,gBAAU,IAAK,KAAK,IAAI,UAAS,6CAAc,iBAAgB,UAAY,6CAAc,iBAAgB,UAAU,gBAAAA,QAAA,cAAC,gBAAW,IAAK,KAAK,IAAI,SAAS,cAAY,MAAE,6CAAc,SAAQ,SAAY,aAAa,OAAO,IAAG,GAAC,CAC3e,IAEA,gBAAAA,QAAA,cAACM,aAAA,EAAW,OAAO,EAAE,QAAQ,UAAU,GAAG,SAAS,cAC/C,gBAAAN,QAAA,cAACS,UAAA,EAAQ,UAAS,SAAQ,QAAO,6CAAc,UAAS,SAAY,6CAAc,QAAQ,UAAU,WAAW,YAAY,CAC/H,CAGR,IACE,IAEN,gBAAAT,QAAA,cAACK,QAAA,EAAM,MAAM,QAAQ,OAAO,SAAS,eACjC,gBAAAL,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,eAAY;AAAA,MACZ,MAAM,QAAQ;AAAA,MACd,SAAS,eAAe,SAAY;AAAA,MACpC,UAAU;AAAA,MACV,IAAI;AAAA,QACA,OAAO;AAAA,QACP,uBAAuB;AAAA,UACnB,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA;AAAA,IAEC,SACG,gBAAAA,QAAA,cAAC,eAAY,IAAI,EAAE,GAAG,GAAG,SAAS,oBAAoB,GAAG,eAAY,uBACjE,gBAAAA,QAAA,cAACU,OAAA,EAAK,WAAS,MAAC,MAAM,IAAI,IAAI,EAAE,gBAAgB,iBAAiB,UAAU,SAAS,KAChF,gBAAAV,QAAA,cAACU,OAAA,EAAK,WAAS,MAAC,MAAM,IAAI,IAAI,EAAE,YAAY,SAAS,KAChD,YACG,uBAAuB,UACnB,gBAAAV,QAAA,cAACQ,OAAA,EAAI,IAAI,EAAE,aAAa,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,cAAc,MAAM,KAC/E,gBAAAR,QAAA,cAAC,SAAI,KAAK,WAAW,OAAM,QAAO,QAAO,QAAO,CACpD,IAEA,gBAAAA,QAAA,cAACS,UAAA,EAAQ,OAAM,UAAS,UAAS,SAAQ,WAAW,WAAW,IAAI,EAAE,aAAa,OAAO,GAAG,IAC9F,IACN,gBAAAT,QAAA,cAACU,OAAA,MACG,gBAAAV,QAAA,cAACI,cAAA,EAAW,OAAM,gBAAe,SAAQ,MAAK,cAAY,QACrD,QAAQ,QAAQ,EACrB,GACA,gBAAAJ,QAAA,cAACI,cAAA,EAAW,OAAM,kBAAiB,SAAQ,SAAQ,cAAY,QAC1D,WACK,WACA,EACV,CACJ,CACJ,GACC,gBAAgB,OACb,gBAAAJ,QAAA,cAACM,aAAA,EAAW,eAAY,uBAAsB,SAAS,aAAa,MAAK,SAAQ,OAAM,WAAU,IAAI,EAAE,QAAQ,IAAI,OAAO,GAAG,KACzH,gBAAAN,QAAA,cAACW,YAAA,IAAU,CACf,IACE,EACV,CACJ;AAAA,IAEJ,gBAAAX,QAAA;AAAA,MAAC;AAAA;AAAA,QACG,eAAY;AAAA,QACZ,UAAU,WAAW,WAAW;AAAA,QAChC,IAAI;AAAA,UACA,GAAG;AAAA,UACH,SAAS;AAAA,UACT,YAAY,aAAa,aAAa;AAAA,UACtC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI;AAAA,UACnE,OAAQ,MAAM;AACV,oBAAQ,cAAc;AAAA,cAClB,KAAK;AACD,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,cACpC,KAAK;AACD,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,cACpC,KAAK;AACD,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,cACpC,KAAK;AACD,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,cACpC,KAAK;AACD,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,cACpC;AACI,uBAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,YACxC;AAAA,UACJ;AAAA,QACJ;AAAA;AAAA,MAEC,QAAQ,MACL,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,OAAO,EAAE,QAAQ,QAAQ,UAAU,QAAQ,WAAW,OAAO;AAAA,UAC7D,IAAG;AAAA,UACH,OAAM;AAAA,UACN,KAAK,QAAQ;AAAA;AAAA,MAChB,IAED,QAAQ;AAAA,IAEhB;AAAA,IACC,cAAc,SAAS,IACpB,gBAAAA,QAAA,cAAC,iBAAc,IAAI,EAAE,KAAK,GAAG,GAAG,GAAG,SAAS,uBAAuB,gBAAgB,cAAc,UAAU,IAAI,kBAAkB,WAAW,KACvI,cAAc,UAAU,IACrB,gBAAAA,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACG,SAAQ;AAAA,QACR,OAAO,cAAc,CAAC,EAAE,SAAS;AAAA,QACjC,MAAK;AAAA,QACL,SAAS,cAAc,CAAC,EAAE;AAAA,QAC1B,UAAU,cAAc,CAAC,EAAE,YAAY;AAAA,QACvC,WAAW,cAAc,CAAC,EAAE,OAAO,gBAAAH,QAAA,cAACS,UAAA,EAAQ,UAAS,SAAQ,WAAW,cAAc,CAAC,EAAE,MAAM,IAAK;AAAA;AAAA,MAEnG,cAAc,CAAC,EAAE;AAAA,IACtB,GAEA,gBAAAT,QAAA,cAACQ,OAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAE,KAC9B,cAAc,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,UAAU;AAC1C,aACI,gBAAAR,QAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACG,KAAK,QAAQ;AAAA,UACb,SAAS,UAAU,cAAc,SAAS,IAAI,cAAc;AAAA,UAC5D,OAAO,MAAM,SAAS;AAAA,UACtB,MAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,UAAU,MAAM,YAAY;AAAA,UAC5B,WAAW,MAAM,OAAO,gBAAAH,QAAA,cAACS,UAAA,EAAQ,UAAS,SAAQ,WAAW,MAAM,MAAM,IAAK;AAAA;AAAA,QAE7E,MAAM;AAAA,MACX;AAAA,IAER,CAAC,CACL,CACJ,IAEA,cAAc,IAAI,CAAC,OAAO,UAAU;AAChC,aACI,gBAAAT,QAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACG,KAAK;AAAA,UACL,SAAS,UAAU,cAAc,SAAS,IAAI,cAAc;AAAA,UAC5D,OAAO,MAAM,SAAS;AAAA,UACtB,MAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,UAAU,MAAM,YAAY;AAAA,UAC5B,WAAW,MAAM,OAAO,gBAAAH,QAAA,cAACS,UAAA,EAAQ,UAAS,SAAQ,WAAW,MAAM,MAAM,IAAK;AAAA;AAAA,QAE7E,MAAM;AAAA,MACX;AAAA,IAER,CAAC,CAET,IACE;AAAA,EACV,CACJ,CACJ;AAER;;;ACtQA,OAAOI,aAAwD;AAE/D,SAA4N,WAAAC,UAA6B,MAAgB,gBAAgB,gBAAAC,eAAc,gBAAAC,eAA8B,WAAAC,gBAA0D;AAC/X,OAAOC,WAAU;AAMjB,YAAYC,aAAY;AAuBjB,IAAM,gBAAgB,CAAC,EAAE,QAAQ,MAA0B;AAE9D,QAAM,CAAC,eAAe,gBAAgB,IAAIN,QAAM,SAAS,GAAG;AAC5D,QAAM,CAAC,OAAO,QAAQ,IAAIA,QAAM,SAAS,GAAG;AAE5C,UAAQ,IAAI,SAAU,QAAgB,OAAO,OAAO;AAChD,QAAI,iCAAQ,UAAU;AAClB,WAAI,iCAAQ,SAAS,SAAQ,QAAW;AACpC,eAAO,WAAWM,QAAO,iCAAQ,QAA+B;AAAA,MACpE,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,iCAAQ,WAAW;AACnB,WAAI,iCAAQ,UAAU,SAAQ,QAAW;AACrC,eAAO,YAAYA,QAAO,iCAAQ,SAAgC;AAAA,MACtE,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,SACI,gBAAAN,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA,cAAC,QAAK,IAAI,EAAE,OAAO,QAAQ,UAAU,KAAK,SAAS,oBAAoB,SAAS,iBAAiB,KAC5F,QAAQ,IAAI,CAAC,QAAQ,UAClB,gBAAAA,QAAA,cAACA,QAAM,UAAN,EAAe,KAAK,SACjB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,UAAU,OAAO;AAAA,MACjB,SAAS,OAAO;AAAA;AAAA,IAEf,OAAO,WACJ,gBAAAA,QAAA,cAACE,eAAA,EAAa,IAAI,EAAC,UAAU,kBAAiB,KAC1C,gBAAAF,QAAA,cAACI,UAAA,EAAQ,UAAS,SAAS,OAAO,OAAO,iBAAiB,UAAU,WAAW,OAAO,UAAU,CACpG,IACE;AAAA,IAEN,gBAAAJ,QAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QAAa,SAAS,OAAO;AAAA,QAC1B,WACI,gBAAAH,QAAA,cAACK,OAAA,EAAK,KAAK,OACP,gBAAAL,QAAA,cAACK,OAAA,EAAK,WAAS,MAAC,KAAK,OAChB,OAAO,QACZ,GACA,gBAAAL,QAAA,cAACK,OAAA,EAAK,WAAS,MAAC,KAAK,OAChB,OAAO,WACZ,CACJ;AAAA;AAAA,IACF;AAAA,IACL,OAAO,YACJ,gBAAAL,QAAA,cAACE,eAAA,EAAa,IAAI,EAAE,UAAU,iBAAgB,KAC1C,gBAAAF,QAAA,cAACI,UAAA,EAAQ,UAAS,SAAQ,OAAO,OAAO,kBAAkB,UAAU,WAAW,OAAO,WAAW,CACrG,IACE;AAAA,EACV,GAEI,OAAO,WAAW,OACd,gBAAAJ,QAAA,cAACC,UAAA,IAAQ,IACP,EAEd,CACH,CACL,CACJ;AAER;;;ACjGA,OAAOM,aAAW;AAElB,SAAS,OAAAC,OAAK,cAAAC,cAAY,SAAAC,QAAO,WAAAC,UAAS,YAAAC,WAAU,YAAAC,WAAU,gBAAAC,eAAc,WAAAC,gBAAe;AAC3F,OAAOC,WAAU;;;ACJjB,SAAS,YAAAC,YAAU,aAAAC,mBAAiB;AAEpC,SAAS,sBAAsB;AAC7B,QAAM,EAAE,YAAY,OAAO,aAAa,OAAO,IAAI;AACnD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEe,SAAR,sBAAuC;AAC5C,QAAM,CAAC,kBAAkB,mBAAmB,IAAID,WAAS,oBAAoB,CAAC;AAE9E,EAAAC,YAAU,MAAM;AACd,aAAS,eAAe;AACtB,0BAAoB,oBAAoB,CAAC;AAAA,IAC3C;AAEA,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ADfA,YAAYC,aAAY;AAyBjB,IAAM,SAAS,CAAC,EAAE,QAAQ,SAAS,eAAe,SAAS,WAAW,YAAY,UAAU,MAAmB;AAElH,QAAM,EAAE,QAAQ,MAAM,IAAI,oBAAoB;AAC9C,QAAM,WAAW,YAAY,SAAS,SAAS,IAAI;AACnD,QAAM,WAAW,YAAY,SAAS,SAAS,IAAI,QAAQ;AAC3D,QAAM,iBAAiB,WAAW;AAElC,MAAI,kBAAkB,aAAa,SAAS,UAAU,IAAI,SAAS;AAEnE,QAAM,CAAC,eAAe,gBAAgB,IAAIC,QAAM,SAAS,GAAG;AAC5D,QAAM,CAAC,OAAO,QAAQ,IAAIA,QAAM,SAAS,GAAG;AAE5C,EAAAA,QAAM,UAAU,MAAM;AAClB,sBAAkB,aAAa,SAAS,UAAU,IAAI,SAAS;AAAA,EACnE,GAAG,CAAC,MAAM,CAAC;AAEX,EAAAA,QAAM,UAAU,MAAM;AAClB,QAAI,eAAe;AACf,2BAAqB,OAAO,MAAS;AAAA,IACzC;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,UAAQ,IAAI,SAAU,QAAgB,OAAO,OAAO;AAChD,QAAI,iCAAQ,UAAU;AAClB,WAAI,iCAAQ,SAAS,SAAQ,QAAW;AACpC,eAAO,WAAWD,QAAO,iCAAQ,QAA+B;AAAA,MACpE,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,iCAAQ,WAAW;AACnB,WAAI,iCAAQ,UAAU,SAAQ,QAAW;AACrC,eAAO,YAAYA,QAAO,iCAAQ,SAAgC;AAAA,MACtE,OAAO;AACH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,uBAAuB,CAACE,QAAY,UAAe;AACrD,QAAI,iBAAiB,SAAS,QAAW;AACrC,uBAAiB,aAAa;AAC9B,eAAS,aAAa;AAAA,IAC1B,WAAW,SAAS,QAAW;AAC3B,uBAAiB,OAAO,QAAQ,CAAC,CAAC;AAClC,eAAS,OAAO,QAAQ,CAAC,CAAC;AAAA,IAC9B;AAAA,EACJ;AAGA,SACI,gBAAAD,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA,cAACE,OAAA,EAAK,WAAS,MAAC,IAAI,EAAE,QAAQ,iBAAiB,OAAO,gBAAgB,eAAe,SAAS,KAC1F,gBAAAF,QAAA,cAACG,QAAA,EAAM,eAAY,gBAAe,IAAI,EAAE,OAAO,UAAU,QAAQ,iBAAiB,UAAU,OAAO,KAC9F,UACG,OAAO,WAEX,gBAAAH,QAAA,cAACI,WAAA,EAAS,IAAI,EAAE,QAAQ,QAAQ,SAAS,IAAI,SAAS,UAAU,KAC3D,QAAQ,IAAI,CAAC,QAAQ,UAClB,gBAAAJ,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACG,UAAU,WAAW,OAAO,OAAO;AAAA,MACnC,KAAK;AAAA,MACL,UAAU,OAAO,QAAQ,CAAC,MAAM;AAAA,MAChC,SAAS,CAACJ,WAAU,qBAAqBA,QAAO,KAAK;AAAA;AAAA,IAEpD,OAAO,WACJ,gBAAAD,QAAA,cAACM,eAAA,EAAa,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,MAAM,gBAAgB,YAAY,SAAS,KAClF,gBAAAN,QAAA,cAACO,UAAA,EAAQ,UAAS,SAAQ,OAAO,OAAO,QAAQ,CAAC,MAAM,gBAAgB,YAAY,UAAU,WAAW,OAAO,UAAU,CAC7H,IACE;AAAA,IACN,gBAAAP,QAAA,cAACE,OAAA,EAAK,WAAS,MAAC,MAAM,IAAI,IAAI,EAAE,UAAU,KAAK,UAAU,UAAU,YAAY,SAAS,KACpF,gBAAAF,QAAA,cAACQ,cAAA,EAAW,QAAM,MAAC,SAAQ,WAAU,OAAO,OAAO,QAAQ,CAAC,MAAM,gBAAgB,YAAY,YAAW,OAAO,IAAK,GACpH,OAAO,YACJ,gBAAAR,QAAA,cAACM,eAAA,EAAa,IAAI,EAAE,UAAU,kBAAkB,OAAO,OAAO,QAAQ,CAAC,MAAM,gBAAgB,YAAY,SAAS,KAC9G,gBAAAN,QAAA,cAACO,UAAA,EAAQ,UAAS,SAAQ,OAAO,OAAO,QAAQ,CAAC,MAAM,gBAAgB,YAAY,UAAU,WAAW,OAAO,WAAW,CAC9H,IACE,EACV;AAAA,EACJ,GAEI,OAAO,WAAW,OACd,gBAAAP,QAAA,cAACS,UAAA,IAAQ,IACP,EAEd,CACH,CACL,CACJ,GACA,gBAAAT,QAAA,cAACE,OAAA,EAAK,WAAS,QACV,QAAQ,IAAI,CAAC,QAAQ,UAClB,OAAO,OACH,OAAO,QAAQ,CAAC,KAAK,QACjB,gBAAAF,QAAA,cAACU,OAAA,EAAI,eAAY,qBAAoB,IAAI,EAAE,SAAS,QAAQ,OAAO,UAAU,QAAQ,gBAAgB,GAAG,KAAK,SACxG,OAAO,IACZ,IACA,KACD,gBAAAV,QAAA,cAACQ,cAAA,EAAW,OAAM,WAAQ,iDAA+C,CACnF,CACL,CACJ,CACJ;AAER;;;AExIA,OAAOG,WAAmB,aAAAC,mBAAiB;AAE3C,SAAiB,cAAAC,cAAY,OAAAC,OAAK,WAAAC,UAAS,OAAAC,MAAK,QAAAC,OAAM,aAAa;AAEnE,OAAO,cAAc;AACrB,OAAO,gBAAgB;AAMvB,YAAYC,aAAY;AA4BjB,IAAM,SAAS,CAAC,EAAE,SAAS,eAAe,UAAU,YAAY,cAAc,UAAU,aAAa,SAAS,eAAe,SAAS,MAAmB;AAE5J,QAAM,CAAC,OAAO,QAAQ,IAAIC,QAAM,SAAqC,IAAI;AAEzE,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,mBAAmB;AAEvB,QAAM,CAAC,OAAO,QAAQ,IAAIA,QAAM,SAAS,GAAG;AAE5C,EAAAC,YAAU,MAAM;AACZ,QAAI,eAAe;AACf,mBAAa,OAAO,MAAS;AAAA,IACjC;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,UAAQ,IAAI,SAAU,QAAQ;AAC1B,UAAM,gBAAgB,QAAQ;AAC9B,QAAI,iCAAQ,aAAa;AACrB,UAAI,YAAY,QAAQ;AACpB,aAAI,iCAAQ,gBAAeC,WAAU,MAAM;AACvC,6BAAmB;AACnB,iBAAO,cAAcA,QAAO,iCAAQ,WAAkC;AAAA,QAC1E,OAAO;AACH,6BAAmB;AACnB,qBAAW,MAAM;AACb,qBAAS;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,UAAU;AAAA,cACV,MAAM;AAAA,YACV,CAAC;AAAA,UACL,GAAG,EAAE;AACL;AAAA,QACJ;AAAA,MACJ,WAAW,YAAY,SAAS;AAC5B,aAAI,iCAAQ,gBAAeA,WAAU,OAAO;AACxC,6BAAmB;AACnB;AAAA,QACJ,OAAO;AACH,6BAAmB;AACnB,qBAAW,MAAM;AACb,qBAAS;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,UAAU;AAAA,cACV,MAAM;AAAA,YACV,CAAC;AAAA,UACL,GAAG,EAAE;AACL;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,eAAe,CAACC,QAAY,aAAkB;AAChD,QAAI,iBAAiB,YAAY,QAAW;AACxC,eAAS,aAAa;AAAA,IAC1B,WAAW,YAAY,QAAW;AAC9B,eAAS,QAAQ;AAAA,IACrB;AAAA,EACJ;AAIA,SACI,gBAAAH,QAAA,cAAAA,QAAA,gBAEK,oBAAoB,OACjB,gBAAAA,QAAA,cAACI,OAAA,EAAI,IAAI,EAAE,QAAQ,eAAe,aAAa,SAAS,QAAQ,SAAS,QAAQ,eAAe,eAAe,aAAa,QAAQ,SAAS,GAAG,IAAG,cAC/I,gBAAAJ,QAAA,cAAC,cAAW,SACR,gBAAAA,QAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACD,eAAY;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,SAAS,UAAU,eAAe,cAAc,WAAW,cAAc,aAAa,UAAU;AAAA,MAChG,eAAe,iBAAiB,QAAQ,QAAQ;AAAA,MAChD,kBAAkB,iBAAiB,QAAQ,OAAO;AAAA,MAClD,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,aAAa,eAAe;AAAA,MAC5B,IAAI,EAAE,cAAc,eAAe,aAAa,IAAI,GAAG,aAAa,eAAe,aAAa,IAAI,GAAG,aAAa,WAAW,YAAY,cAAc,GAAG;AAAA;AAAA,IAE3J,QAAQ,IAAI,CAAC,WACV,gBAAAL,QAAA;AAAA,MAACM;AAAA,MAAA;AAAA,QACA,eAAY;AAAA,QACT,OAAO,OAAQ,IAAI,IAAI,CAAE;AAAA,QACzB,KAAM,IAAI,IAAI;AAAA,QACd,OAAO,OAAO,QAAQ;AAAA,QACtB,UAAU,OAAO,YAAY;AAAA,QAC7B,cAAc,gBAAgB;AAAA,QAC9B,MAAM,YAAY,UACd,gBAAAN,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,IAAI;AAAA,cACA,OAAO;AAAA,cAAQ,QAAQ;AAAA,cACvB,qBAAqB;AAAA,gBACjB,KAAK;AAAA,gBAAQ,OAAO;AAAA,cACxB;AAAA,YACJ;AAAA,YACA,SAAQ;AAAA,YACR,cAAc,OAAO;AAAA,YACrB,OAAO,SAAS,OAAO,CAAC,IAAI,WAAW,WAAW,YAAY;AAAA;AAAA,QAClE,IACE,YAAY,SACV,gBAAAA,QAAA,cAACO,UAAA,EAAQ,UAAS,SAAQ,WAAW,OAAO,aAAa,OAAO,SAAS,OAAO,CAAC,IAAI,WAAW,WAAW,YAAY,UAAU,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO,GAAG,IACtK;AAAA,QAEV,IAAI,EAAE,kBAAkB,EAAE,QAAQ,iBAAkB,GAAG,SAAS,aAAa,KAAK,MAAM;AAAA;AAAA,IAC5F,CACH;AAAA,EACL,GACC,UACA,QAAQ,IAAI,CAAC,WACV,gBAAAP,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,KAAM,IAAI,IAAI;AAAA,MACd,OAAO,OAAQ,IAAI,IAAI,CAAE;AAAA,MACzB,IAAI,EAAE,SAAS,OAAO;AAAA;AAAA,IAErB,OAAO,OACJ,OAAO,OAEP,gBAAAA,QAAA,cAACQ,cAAA,MAAW,kDAAgD;AAAA,EAEpE,CACH,CACL,CACJ,IAEA,gBAAAR,QAAA,cAACI,OAAA,EAAI,IAAI,EAAE,QAAQ,QAAQ,KAEtB,SAAS,gBAAAJ,QAAA,cAAC,sCAAoB,eAAY,uBAAwB,MAAO,CAC9E,CAER;AAER;;;AChLA,OAAOS,WAAS,aAAAC,aAAW,YAAAC,kBAAgB;AAE3C,SAAS,OAAAC,OAAK,oBAAAC,yBAAwB;;;ACFtC,OAAOC,WAAS,YAAAC,kBAAgB;AAEhC,SAAS,aAAa,cAAc,qBAAAC,oBAAmB,yBAAyB;AAChF,SAAS,OAAAC,OAAK,QAAAC,OAAM,cAAAC,cAAY,MAAM,YAAAC,WAAU,SAAAC,SAAO,cAAAC,oBAAkB;AAIzE,OAAOC,YAAsB;AAC7B,OAAO,kBAAkB;AACzB,OAAO;AACPA,OAAM,OAAO,IAAI;AAEjBA,OAAM,OAAO,YAAY;AACzBA,OAAM,aAAa,MAAM;AAAA,EACvB,WAAW;AAAA;AACb,CAAC;AAWM,IAAM,kBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAIR,WAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,iBAAiB,CAACS,WAAyC;AAC/D,gBAAYA,OAAM,aAAa;AAAA,EACjC;AAEA,QAAM,kBAAkB,MAAM;AAC5B,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,mBAAmB,CAAC,YAA0B;AAClD,WAAO,OAAO;AACd,oBAAgB;AAAA,EAClB;AAEA,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAAS,UAAU,IAAI,CAAC;AAE9B,QAAI,SAAS,SAAS;AACpB,YAAM,YAAY,UAAU,OAAO,WAAW;AAC9C,aAAO,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAAA,IAC9D;AACA,QAAI,SAAS,QAAQ;AACnB,aAAO,GAAG,UAAU,QAAQ,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAM,UAAU,MAAM,MAAM,EAAE,OAAO,aAAa,CAAC;AAAA,IACzG;AACA,WAAO,UAAU,OAAO,eAAe;AAAA,EACzC;AAEA,SAEE,gBAAAV,QAAA,cAACO,SAAA,EAAM,WAAU,OAAM,YAAW,UAAS,gBAAe,iBAAgB,KAAK,KAAI,IAAI,GAAG,IAAI,OAC5F,gBAAAP,QAAA,cAACG,OAAA,MACC,gBAAAH,QAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAM,gBAAAJ,QAAA,cAAC,qBAAkB,UAAS,SAAQ;AAAA,MAC1C,OAAM;AAAA,MACN,SAAS,MAAM,WAAW,OAAO;AAAA;AAAA,EACnC,CACF,GAEA,gBAAAA,QAAA,cAACO,SAAA,EAAM,WAAU,OAAM,YAAW,UAAS,KAAK,KAC9C,gBAAAP,QAAA,cAACK,cAAA,EAAW,cAAW,YAAW,SAAS,MAAM,WAAW,MAAM,GAAG,MAAK,SAAQ,OAAM,aACtF,gBAAAL,QAAA,cAAC,eAAY,UAAS,SAAQ,CAChC,GACA,gBAAAA,QAAA,cAACK,cAAA,EAAW,cAAW,aAAY,SAAS,MAAM,WAAW,MAAM,GAAG,MAAK,SAAQ,OAAM,aACvF,gBAAAL,QAAA,cAAC,gBAAa,UAAS,SAAQ,CACjC,GACA,gBAAAA,QAAA,cAACQ,cAAA,EAAW,SAAQ,MAAK,OAAM,WAAU,eAAY,iBAClD,iBAAiB,CACpB,GACA,gBAAAR,QAAA,cAACK,cAAA,EAAW,SAAS,gBAAgB,MAAK,SAAQ,OAAM,WAAU,cAAW,mBAC3E,gBAAAL,QAAA,cAACE,oBAAA,EAAkB,UAAS,SAAQ,CACtC,GACA,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,cAAc,EAAE,UAAU,UAAU,YAAY,SAAS;AAAA,MACzD,iBAAiB,EAAE,UAAU,OAAO,YAAY,SAAS;AAAA;AAAA,IAEzD,gBAAAA,QAAA,cAACM,WAAA,EAAS,SAAS,MAAM,iBAAiB,OAAO,KAAG,KAAG;AAAA,IACvD,gBAAAN,QAAA,cAACM,WAAA,EAAS,SAAS,MAAM,iBAAiB,MAAM,KAAG,QAAM;AAAA,IACzD,gBAAAN,QAAA,cAACM,WAAA,EAAS,SAAS,MAAM,iBAAiB,KAAK,KAAG,QAAG;AAAA,EACvD,CACF,GAGC,WAAW,gBAAAN,QAAA,cAACG,OAAA,MAAK,QAAS,IAAS,gBAAAH,QAAA,cAACG,OAAA,EAAI,OAAM,QAAO,GAAG,GAC3D;AAGJ;;;ACzGA,OAAOQ,aAAW;AAElB,SAAS,OAAAC,OAAK,cAAAC,cAAY,cAAAC,cAAY,SAAAC,QAAO,WAAAC,UAAS,SAAAC,SAAO,WAAAC,UAAS,oBAAAC,yBAAwB;AAC9F,OAAO,aAAa;AAEpB,OAAOC,YAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,eAAe;;;ACRtB,OAAOC,YAAsB;AAEtB,SAAS,aAAa,MAAa;AACxC,QAAM,QAAQ,KAAK,QAAQ,OAAO,EAAE,IAAI,CAAC;AACzC,QAAM,MAAM,KAAK,MAAM,OAAO,EAAE,IAAI,CAAC;AAErC,QAAM,OAAgB,CAAC;AACvB,MAAI,UAAU;AAEd,SAAO,QAAQ,SAAS,GAAG,KAAK,QAAQ,OAAO,KAAK,KAAK,GAAG;AAC1D,SAAK,KAAK,OAAO;AACjB,cAAU,QAAQ,IAAI,GAAG,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;AAEO,IAAM,UAAU,CAAC,SAAsB;AAC5C,SAAO,KAAK,OAAOA,OAAM,GAAG,KAAK;AACnC;AAEO,IAAM,cAAsC;AAAA,EACjD,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACZ;;;AC5BA,OAAOC,aAAW;AAClB,SAAS,OAAAC,OAAK,SAAAC,SAAO,cAAAC,cAAmB,WAAAC,UAAkB,WAAAC,gBAAe;AAYlE,IAAM,oBAAqC,CAAC,EAAE,OAAAC,QAAO,OAAO,IAAI,SAAS,QAAQ,MAAM;AAC1F,QAAM,CAAC,UAAU,WAAW,IAAIC,QAAM,SAA6B,IAAI;AAEvE,QAAM,oBAAoB,CAACD,WAAyC;AAChE,gBAAYA,OAAM,aAAa;AAAA,EACnC;AAEA,QAAM,qBAAqB,MAAM;AAC7B,gBAAY,IAAI;AAAA,EACpB;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,SACI,gBAAAC,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc;AAAA,MACd,YAAW;AAAA,MACX,WAAU;AAAA,MACV,aAAa,MAAM,mCAAUF;AAAA,MAC7B,SAAS,CAAC,MAAM;AACZ,UAAE,gBAAgB;AAClB,2CAAUA;AAAA,MACd;AAAA,MACA,IAAI,CAAC,UAAkB;AAAA,QACnB,iBAAiB,MAAM,QAAQ,OAAO;AAAA,QACtC,WAAW,MAAM,QAAQ,CAAC;AAAA,QAC1B,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,UAAU;AAAA,QACV,QAAQ,UAAU,YAAY;AAAA,SAC3B;AAAA;AAAA,IAGP,gBAAAC,QAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACG,aAAY;AAAA,QACZ,UAAQ;AAAA,QACR,IAAI;AAAA,UACA,OAAO;AAAA,UACP,iBAAiB,wBAAS;AAAA,UAC1B,cAAc;AAAA,QAClB;AAAA;AAAA,IACJ;AAAA,IAEA,gBAAAF,QAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACG,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,UAAU;AAAA,QACV,SAAQ;AAAA,QACR,YAAW;AAAA;AAAA,MAGX,gBAAAH,QAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,QAAM;AAAA,UACN,IAAI;AAAA,YACA,UAAU;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,UAChB;AAAA,UACA,cAAc;AAAA,UACd,cAAc;AAAA;AAAA,QAEbL,OAAM,MAAM,OAAO,CAAC,EAAE,YAAY,IAAIA,OAAM,MAAM,MAAM,CAAC,EAAE,YAAY;AAAA,MAE5E;AAAA,MAGA,gBAAAC,QAAA;AAAA,QAACK;AAAA,QAAA;AAAA,UACG,IAAG;AAAA,UACH,IAAI,EAAE,eAAe,OAAO;AAAA,UAC5B;AAAA,UACA;AAAA,UACA,cAAc;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UAChB;AAAA,UACA,iBAAiB;AAAA,YACb,UAAU;AAAA,YACV,YAAY;AAAA,UAChB;AAAA,UACA,SAAS;AAAA,UACT,qBAAmB;AAAA;AAAA,QAElB,UAAU,QAAQN,MAAK,IAAI;AAAA,MAChC;AAAA,IAEJ;AAAA,EACJ;AAER;;;ACxGA,OAAOO,aAAW;AAEX,IAAM,iBAAiB,MAAM;AAChC,SACI,gBAAAA,QAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,gCAC9D,gBAAAA,QAAA,cAAC,OAAE,aAAU,4BACT,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,8kBAA6kB,MAAK,WAAU,GAC1oB,gBAAAA,QAAA,cAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,8dAA6d,MAAK,WAAU,GAC1hB,gBAAAA,QAAA,cAAC,UAAK,GAAE,iOAAgO,MAAK,WAAU,GACvP,gBAAAA,QAAA,cAAC,UAAK,GAAE,kOAAiO,MAAK,WAAU,GACxP,gBAAAA,QAAA,cAAC,UAAK,GAAE,mUAAkU,MAAK,WAAU,GACzV,gBAAAA,QAAA,cAAC,UAAK,GAAE,+TAA8T,MAAK,WAAU,GACrV,gBAAAA,QAAA,cAAC,UAAK,GAAE,iRAAgR,MAAK,WAAU,GACvS,gBAAAA,QAAA,cAAC,UAAK,GAAE,mRAAkR,MAAK,WAAU,CAC7S,GACA,gBAAAA,QAAA,cAAC,cACG,gBAAAA,QAAA,cAAC,cAAS,IAAG,sBACT,gBAAAA,QAAA,cAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,WAAU,oBAAmB,CAC3E,CACJ,CACJ;AAGR;;;AHLAC,OAAM,OAAO,UAAU;AACvBA,OAAM,OAAO,SAAS;AAMf,IAAM,YAAY,CAAC,EAAE,QAAQ,WAAW,YAAY,aAAa,aAAa,cAAc,aAAa,MAAa;AAE3H,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,OAAO,aAAa,WAAW;AACrC,QAAM,WAAW,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAMA,OAAM,EAAE,IAAI,CAAC,CAAC;AAInE,QAAM,CAAC,YAAY,aAAa,IAAIC,QAAM,SAAS,KAAK;AACxD,QAAM,CAAC,aAAa,cAAc,IAAIA,QAAM,SAA6B,IAAI;AAC7E,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,QAAM,SAAwB,CAAC,CAAC;AAE5E,SACE,gBAAAA,QAAA,cAACC,OAAA,EAAI,OAAM,QAAO,IAAI,EAAE,WAAW,OAAO,KACxC,gBAAAD,QAAA,cAACC,OAAA,EAAI,UAAS,YAEZ,gBAAAD,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,qBAAoB,iCAAgC,KAAK,KAAK,IAAI,KACnF,SAAS,IAAI,CAAC,QACb,gBAAAD,QAAA,cAACC,OAAA,EAAI,KAAK,IAAI,IAAI,GAAG,WAAU,UAAS,IAAI,OAC1C,gBAAAD,QAAA,cAACE,cAAA,EAAW,SAAQ,WAAU,OAAM,oBACjC,IAAI,OAAO,MAAM,CACpB,CACF,CACD,CACH,GAGC,YACC,gBAAAF,QAAA,cAACC,OAAA,EAAI,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,OAAO,QAAQ,QAAQ,WAC3F,gBAAAD,QAAA,cAACG,mBAAA,EAAiB,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO,GAAG,SAAQ,iBAAgB,CACnF,IACE,CAAC,aAAa,WAChB,gBAAAH,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,MAAM,gBAAAA,QAAA,cAAC,oBAAe;AAAA;AAAA,EACxB,IAEA,gBAAAA,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,qBAAoB,iCAAgC,KAAK,OAC1E,KAAK,IAAI,CAAC,QAAQ;AACjB,UAAM,YAAY,OAAO;AAAA,MAAO,CAAC,MAC/B,IAAI,UAAU,EAAE,MAAM,QAAQ,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI;AAAA,IACtE;AACA,UAAM,iBAAiB,IAAI,MAAM,MAAM,YAAY,MAAM;AAEzD,WACE,gBAAAD,QAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,KAAK,IAAI,SAAS;AAAA,QAClB,SAAS,MAAM,yCAAa;AAAA,QAC5B,IAAI;AAAA,UACF,WAAW;AAAA,UACX,SAAS;AAAA,UACT,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,SAAS,iBAAiB,YAAY;AAAA,UACtC,QAAQ;AAAA,UACR,WAAW,EAAE,SAAS,aAAa;AAAA,UACnC,UAAU;AAAA,QACZ;AAAA;AAAA,MAEA,gBAAAJ,QAAA,cAACC,OAAA,EAAI,GAAG,GAAG,YAAY,KACrB,gBAAAD,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,gBAAe,gBACrD,gBAAAD,QAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,IAAI;AAAA,YACF,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,iBAAiB,QAAQ,GAAG,IAAI,iBAAiB;AAAA,YACjD,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,UAClB;AAAA;AAAA,QAEA,gBAAAD,QAAA;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,IAAI,EAAE,OAAO,QAAQ,GAAG,IAAI,UAAU,iBAAiB;AAAA;AAAA,UAEtD,IAAI,KAAK;AAAA,QACZ;AAAA,MACF,GAEC,UAAU,SAAS,KAClB,gBAAAF,QAAA,cAACK,UAAA,EAAQ,OAAM,oBACb,gBAAAL,QAAA;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,MAAK;AAAA,UACL,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,uDAAc,KAAK;AACnB,2BAAe,GAAG;AAClB,8BAAkB,SAAS;AAAA,UAC7B;AAAA;AAAA,QAEA,gBAAAN,QAAA,cAAC,WAAQ,UAAS,SAAQ;AAAA,MAC5B,CACF,CAEJ,CACF;AAAA,MAGA,gBAAAA,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,UAAS,YACxE,UAAU,MAAM,GAAG,CAAC,EAAE,IAAI,CAACM,WAC1B,gBAAAP,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK,GAAGO,OAAM,EAAE,IAAI,IAAI,SAAS,CAAC;AAAA,UAClC,OAAOA;AAAA,UACP,OAAO,YAAYA,OAAM,KAAK;AAAA,UAC9B,SAAS,MAAM,6CAAeA,QAAO;AAAA,UACrC,SAAS;AAAA;AAAA,MACX,CACD,CACH;AAAA,MAEC,UAAU,SAAS,KAClB,gBAAAP,QAAA;AAAA,QAACQ;AAAA,QAAA;AAAA,UAAM,cAAa;AAAA,UAAS,IAAI;AAAA,UAAG,IAAI;AAAA,UAAK,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,UAC7E,IAAI,EAAE,yBAAyB,EAAE,OAAO,OAAO,EAAE;AAAA;AAAA,QAEjD,gBAAAR,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,IAAI,OAAO,mBAAmB;AAAA,YACrC,MAAM;AAAA,YACN,cAAc,EAAE,MAAM,KAAK,UAAU,MAAM,GAAG;AAAA,YAC9C,QAAO;AAAA,YACP,SAAS;AAAA,YACT,eAAe,CAAC;AAAA,cACd,YAAY,MAAM;AAChB,sBAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AAEzB,uBACE,gBAAAA,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,OAAM,QAAO,eAAc,UAAS,QAAO,QAAO,IAAI,OACxE,gBAAAD,QAAA,cAACE,cAAA,EAAW,OAAO,QAAQ,OAAM,oBAAiB,kBAAgB,GACjE,SACC,gBAAAF,QAAA,cAACC,OAAA,EAAI,GAAG,GAAG,IAAI,GAAG,OAAO,UACvB,gBAAAD,QAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,oBACP,OAAO,YAAY,MAAM,KAAK;AAAA,oBAC9B,SAAS,MAAM,6CAAe,OAAO;AAAA,oBACrC,SAAS;AAAA,oBACT,IAAI;AAAA,sBACF,YAAY;AAAA,sBACZ,yBAAyB;AAAA,wBACvB,YAAY;AAAA,wBACZ,UAAU;AAAA,wBACV,cAAc;AAAA,sBAChB;AAAA,oBACF;AAAA;AAAA,gBACF,CACF,GAGF,gBAAAA,QAAA,cAACS,UAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,OAAO,OAAO,GAAG,GACzC,gBAAAT,QAAA,cAACE,cAAA,EAAW,OAAO,QAAQ,IAAI,GAAG,OAAM,oBAAiB,qBAAmB,GAG5E,gBAAAF,QAAA;AAAA,kBAACC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,MAAM;AAAA,oBACN,UAAS;AAAA,oBACT,GAAG;AAAA,oBACH,IAAI;AAAA,oBACJ,SAAQ;AAAA,oBACR,eAAc;AAAA,oBACd,KAAK;AAAA;AAAA,kBAEJ,KAAK,IAAI,CAACM,WACT,gBAAAP,QAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,KAAK,GAAGO,OAAM,EAAE,IAAI,IAAI,SAAS,CAAC;AAAA,sBAClC,OAAOA;AAAA,sBACP,OAAO,YAAYA,OAAM,KAAK;AAAA,sBAC9B,SAAS,MAAM,6CAAeA,QAAO;AAAA,sBACrC,SAAS;AAAA,sBACT,IAAI;AAAA,wBACF,YAAY;AAAA,wBACZ,yBAAyB;AAAA,0BACvB,YAAY;AAAA,0BACZ,UAAU;AAAA,0BACV,cAAc;AAAA,wBAChB;AAAA,sBACF;AAAA;AAAA,kBACF,CACD;AAAA,gBACH,CACF;AAAA,cAEJ,GAAG;AAAA,YACL,CAAC;AAAA;AAAA,QACH;AAAA,MAEF;AAAA,IAGJ;AAAA,EAEJ,CAAC,CACH,CAGJ,CACF;AAEJ;;;AIlOA,OAAOG,aAAW;AAElB,SAAS,OAAAC,OAAK,oBAAAC,mBAAkB,cAAAC,oBAAkB;AAElD,OAAOC,YAAW;AAClB,OAAOC,iBAAgB;AAOvBC,OAAM,OAAOC,WAAU;AAWhB,IAAM,WAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AACZ,MAAM;AACJ,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,cAAcD,OAAM,EAAE,OAAO,YAAY;AAE/C,QAAME,eAAc,YAAY,QAAQ,MAAM;AAC9C,QAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAMA,aAAY,IAAI,GAAG,KAAK,CAAC;AAG1E,QAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,UAAU,YAAY,EAAE,GAAG,CAAC,GAAG,MAAM,YAAY,CAAC;AAGrF,QAAM,oBAAoB,CAAC,UAAkB,cAA6B;AACxE,eAAWC,UAAS,WAAW;AAC7B,YAAM,QAAQA,OAAM,MAAM,KAAK,IAAIA,OAAM,MAAM,OAAO,IAAI;AAC1D,YAAM,MAAMA,OAAM,IAAI,KAAK,IAAIA,OAAM,IAAI,OAAO,IAAI;AACpD,YAAM,YAAY;AAClB,YAAM,UAAU,WAAW;AAE3B,UAAI,UAAU,SAAS,YAAY,KAAK;AACtC,YAAI,KAAK,IAAI,YAAY,KAAK,IAAI,QAAQ,KAAK,IAAI,UAAU,GAAG,IAAI,KAAM,QAAO;AACjF,YAAI,KAAK,IAAI,YAAY,KAAK,IAAI,KAAM,QAAO;AAC/C,YAAI,KAAK,IAAI,UAAU,GAAG,IAAI,KAAM,QAAO;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SACE,gBAAAC,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,QAAO,UAEhD,gBAAAD,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,SAAQ,iBAC1B,gBAAAD,QAAA,cAACC,OAAA,EAAI,OAAO,IAAI,SAAQ,eAAc,GACrC,KAAK,IAAI,CAAC,QAAQ;AACjB,UAAMC,WAAU,IAAI,OAAO,YAAY,MAAM;AAC7C,WACE,gBAAAF,QAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAK,IAAI,SAAS;AAAA,QAClB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,eAAc;AAAA,QACd,gBAAe;AAAA,QACf,YAAW;AAAA,QACX,SAASC,WAAU,gBAAgB;AAAA,QACnC,cAAcA,WAAU,gBAAgB;AAAA,QACxC,cAAcA,WAAU,IAAI;AAAA,QAC5B,aAAaA,WAAU,iBAAiB;AAAA;AAAA,MAExC,gBAAAF,QAAA,cAACG,cAAA,EAAW,SAAQ,MAAK,OAAM,kBAC5B,IAAI,OAAO,GAAG,CACjB;AAAA,MACA,gBAAAH,QAAA,cAACG,cAAA,EAAW,SAAQ,WAAU,OAAM,oBACjC,IAAI,OAAO,MAAM,CACpB;AAAA,IACF;AAAA,EAEJ,CAAC,CACH,GAEC,YACC,gBAAAH,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,gBAAe,UAAS,OAAM,QAAO,QAAO,WAClF,gBAAAD,QAAA,cAACI,mBAAA,EAAiB,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO,GAAG,SAAQ,iBAAgB,CACnF,IACE,CAAC,aAAa,WAChB,gBAAAJ,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,MAAM,gBAAAA,QAAA,cAAC,oBAAe;AAAA;AAAA,EACxB;AAAA;AAAA,IAGA,gBAAAA,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,MAAM,KAExB,gBAAAD,QAAA,cAACC,OAAA,EAAI,OAAO,IAAI,SAAQ,iBACrB,MAAM,IAAI,CAAC,MACV,gBAAAD,QAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,IAAI;AAAA,QACJ,aAAY;AAAA;AAAA,MAEZ,gBAAAD,QAAA,cAACG,cAAA,EAAW,SAAQ,WAAU,OAAM,oBACjCP,OAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,CAC/B;AAAA,IACF,CACD,CACH,GAGC,KAAK,IAAI,CAAC,QAAQ;AACjB,YAAM,YAAY,OACf;AAAA,QAAO,CAACG,WACP,IAAI,UAAUA,OAAM,MAAM,QAAQ,KAAK,GAAGA,OAAM,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI;AAAA,MAC9E,EACC,OAAO,CAACA,WAAU;AACjB,cAAM,gBAAgBA,OAAM,MAAM,KAAK,KAAK,aAAaA,OAAM,MAAM,KAAK,KAAK;AAC/E,cAAM,cAAcA,OAAM,IAAI,KAAK,KAAK,aAAaA,OAAM,IAAI,KAAK,KAAK;AACzE,eAAO,iBAAiB;AAAA,MAC1B,CAAC,EACA,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,QAAQ,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEvD,aACE,gBAAAC,QAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,KAAK,IAAI,SAAS;AAAA,UAClB,MAAM;AAAA,UACN,YAAW;AAAA,UACX,aAAY;AAAA,UACZ,UAAS;AAAA,UACT,eAAa,mBAAmB,IAAI,OAAO,YAAY,CAAC;AAAA,UACxD,SAAS,MAAM,yCAAa;AAAA;AAAA,QAG3B,MAAM,IAAI,CAAC,YAAY;AACtB,gBAAM,aAAa,kBAAkB,SAAS,SAAS;AACvD,iBACE,gBAAAD,QAAA;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,QAAQ;AAAA,cACR,WAAU;AAAA,cACV,aACE,eAAe,WAAW,eAAe,UAAU,eAAe,SAC9D,YACA;AAAA,cAEN,cACE,eAAe,SAAS,eAAe,SACnC,sBACA;AAAA;AAAA,UAER;AAAA,QAEJ,CAAC;AAAA,QAGA,UAAU,IAAI,CAACF,WAAU;AACxB,gBAAM,aAAa,IAAI,OAAOA,OAAM,OAAO,KAAK,IAC5CA,OAAM,QACN,IAAI,QAAQ,KAAK,EAAE,KAAK,SAAS,EAAE,OAAO,CAAC;AAE/C,gBAAM,WAAW,IAAI,OAAOA,OAAM,KAAK,KAAK,IACxCA,OAAM,MACN,IAAI,MAAM,KAAK,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE;AAE5C,gBAAM,gBACH,WAAW,KAAK,IAAI,aAAa,KAAK,WAAW,OAAO;AAC3D,gBAAM,kBAAkB,SAAS,KAAK,YAAY,QAAQ;AAE1D,iBACE,gBAAAC,QAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,GAAGD,OAAM,EAAE,IAAI,IAAI,SAAS,CAAC;AAAA,cAClC,OAAOA;AAAA,cACP,OAAO,YAAYA,OAAM,KAAK;AAAA,cAC9B,SAAS,MAAM,6CAAeA,QAAO;AAAA,cACrC,SAAS;AAAA,cACT,IAAI;AAAA,gBACF,UAAU;AAAA,gBACV,KAAK,GAAG,YAAY;AAAA,gBACpB,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,QAAQ,GAAG,eAAe;AAAA,cAC5B;AAAA;AAAA,UACF;AAAA,QAEJ,CAAC;AAAA,MACH;AAAA,IAEJ,CAAC,CACH;AAAA,GAEJ;AAEJ;;;ACjNA,OAAOM,aAAW;AAClB,SAAS,OAAAC,OAAK,oBAAAC,mBAAkB,cAAAC,oBAAkB;AAClD,OAAOC,YAAsB;AAkBtB,IAAM,UAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AACZ,MAAM;AACJ,QAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,UAAU,YAAY,EAAE,GAAG,CAAC,GAAG,MAAM,YAAY,CAAC;AAErF,QAAM,oBAAoB,CAAC,UAAkBC,eAA+B;AAC1E,eAAWC,UAASD,YAAW;AAC7B,YAAM,QAAQC,OAAM,MAAM,KAAK,IAAIA,OAAM,MAAM,OAAO,IAAI;AAC1D,YAAM,MAAMA,OAAM,IAAI,KAAK,IAAIA,OAAM,IAAI,OAAO,IAAI;AACpD,YAAM,YAAY;AAClB,YAAM,UAAU,WAAW;AAE3B,UAAI,UAAU,SAAS,YAAY,KAAK;AACtC,YAAI,KAAK,IAAI,YAAY,KAAK,IAAI,QAAQ,KAAK,IAAI,UAAU,GAAG,IAAI,KAAM,QAAO;AACjF,YAAI,KAAK,IAAI,YAAY,KAAK,IAAI,KAAM,QAAO;AAC/C,YAAI,KAAK,IAAI,UAAU,GAAG,IAAI,KAAM,QAAO;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAAO;AAAA,IAAO,CAAAA,WAC9B,YAAY,UAAUA,OAAM,MAAM,QAAQ,KAAK,GAAGA,OAAM,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI;AAAA,EACtF;AAEA,QAAM,WAAW,OAAO,WAAW;AAEnC,SACE,gBAAAC,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,QAAO,UAEhD,gBAAAD,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,cAAa,aAAY,aAAY,gBAAe,SAAQ,sBAC9E,gBAAAD,QAAA,cAACC,OAAA,EAAI,OAAO,IAAI,SAAQ,sBAAqB,cAAa,aAAY,aAAY,eAAc,GAChG,gBAAAD,QAAA,cAACC,OAAA,EAAI,MAAM,GAAG,SAAQ,QAAO,eAAc,UAAS,WAAU,SAAQ,KAAK,KAAK,IAAI,GAAG,SAAQ,gBAC7F,gBAAAD,QAAA,cAACE,cAAA,EAAW,SAAQ,MAAK,OAAM,oBAC5B,YAAY,OAAO,GAAG,CACzB,GACA,gBAAAF,QAAA,cAACE,cAAA,EAAW,SAAQ,WAAU,OAAM,oBACjC,YAAY,OAAO,MAAM,CAC5B,CACF,CACF,GAGC,YACC,gBAAAF,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,YAAW,UAAS,gBAAe,UAAS,OAAM,QAAO,QAAO,WAClF,gBAAAD,QAAA,cAACG,mBAAA,EAAiB,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAO,GAAG,SAAQ,iBAAgB,CACnF,IACE,WACF,gBAAAH,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,MAAM,gBAAAA,QAAA,cAAC,oBAAe;AAAA;AAAA,EACxB,IAEA,gBAAAA,QAAA,cAACC,OAAA,EAAI,SAAQ,QAAO,MAAM,KAExB,gBAAAD,QAAA,cAACC,OAAA,EAAI,OAAO,IAAI,SAAQ,wBACrB,MAAM,IAAI,OACT,gBAAAD,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,WAAU;AAAA,MACV,IAAI;AAAA,MACJ,WAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA;AAAA,IAEZ,gBAAAD,QAAA,cAACE,cAAA,EAAW,SAAQ,WAAU,OAAM,oBACjCE,OAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,CAC/B;AAAA,EACF,CACD,CACH,GAGA,gBAAAJ,QAAA,cAACC,OAAA,EAAI,MAAM,GAAG,UAAS,cACpB,MAAM,IAAI,aAAW;AACpB,UAAM,aAAa,kBAAkB,SAAS,SAAS;AACvD,WACE,gBAAAD,QAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,aACE,eAAe,WAAW,eAAe,UAAU,eAAe,SAC9D,YACA;AAAA,QAEN,cACE,eAAe,SAAS,eAAe,SAAS,sBAAsB;AAAA;AAAA,IAE1E;AAAA,EAEJ,CAAC,GAGA,UAAU,IAAI,CAAAF,WAAS;AAEtB,UAAM,aAAa,YAAY,OAAOA,OAAM,OAAO,KAAK,IACpDA,OAAM,QACN,YAAY,QAAQ,KAAK;AAE7B,UAAM,WAAW,YAAY,OAAOA,OAAM,KAAK,KAAK,IAChDA,OAAM,MACN,YAAY,MAAM,KAAK;AAE3B,UAAM,WAAW,YAAY,KAAK,SAAS,EAAE,OAAO,CAAC;AACrD,UAAM,SAAS,YAAY,KAAK,OAAO,EAAE,OAAO,CAAC;AAEjD,UAAM,eAAe,WAAW,SAAS,QAAQ,IAAI,WAAW;AAChE,UAAM,aAAa,SAAS,QAAQ,MAAM,IAAI,SAAS;AAEvD,UAAM,gBAAgB,aAAa,KAAK,IAAI,aAAa,KAAK,aAAa,OAAO;AAClF,UAAM,kBAAkB,WAAW,KAAK,cAAc,QAAQ;AAE9D,WACE,gBAAAC,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,GAAGD,OAAM,EAAE,IAAI,YAAY,SAAS,CAAC;AAAA,QAC1C,OAAOA;AAAA,QACP,OAAO,YAAYA,OAAM,KAAK;AAAA,QAC9B,SAAS,MAAM,6CAAeA,QAAO;AAAA,QACrC,SAAS;AAAA,QACT,IAAI;AAAA,UACF,UAAU;AAAA,UACV,KAAK,GAAG,YAAY;AAAA,UACpB,QAAQ,GAAG,eAAe;AAAA,UAC1B,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA;AAAA,IACF;AAAA,EAEJ,CAAC,CACH,CACF,CAEJ;AAEJ;;;APxJA,OAAOM,YAAW;AAEX,IAAM,WAAoC,CAAC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM,cAAc;AAAA,EACpB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EACZ,UAAU;AACd,MAAM;AACF,QAAM,CAAC,MAAM,OAAO,IAAIC,WAAuB,WAAW;AAC1D,QAAM,CAAC,aAAa,cAAc,IAAIA,WAASD,OAAM,CAAC;AAEtD,EAAAE,YAAU,MAAM;AACZ,iDAAe;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAmB,CAAC,YAA0B;AAChD,YAAQ,OAAO;AACf,iDAAe;AAAA,EACnB;AAEA,QAAM,iBAAiB,CAAC,WAAsC;AAC1D,QAAI,UAAU;AACd,UAAM,OAAO,SAAS,UAAU,UAAU;AAE1C,QAAI,WAAW,QAAQ;AACnB,UAAI,SAAS,MAAO,WAAU,YAAY,SAAS,GAAG,KAAK;AAC3D,UAAI,SAAS,OAAQ,WAAU,YAAY,SAAS,GAAG,MAAM;AAC7D,UAAI,SAAS,QAAS,WAAU,YAAY,SAAS,GAAG,OAAO;AAAA,IACnE,WACS,WAAW,QAAQ;AACxB,UAAI,SAAS,MAAO,WAAU,YAAY,IAAI,GAAG,KAAK;AACtD,UAAI,SAAS,OAAQ,WAAU,YAAY,IAAI,GAAG,MAAM;AACxD,UAAI,SAAS,QAAS,WAAU,YAAY,IAAI,GAAG,OAAO;AAAA,IAC9D,WACS,WAAW,QAAS,WAAUF,OAAM;AAE7C,mBAAe,OAAO;AACtB,iDAAe;AAAA,EACnB;AACA,SACI,gBAAAG,QAAA,cAACC,OAAA,MACG,gBAAAD,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA;AAAA,IAEX;AAAA,EACL,GACC,YACG,gBAAAA,QAAA,cAAAA,QAAA,gBACI,gBAAAA,QAAA,cAACC,OAAA,MACG,gBAAAD,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,SAAQ;AAAA,MACR,gBAAe;AAAA,MACf,YAAW;AAAA,MACX,QAAO;AAAA;AAAA,IAEP,gBAAAD,QAAA,cAACE,mBAAA,EAAiB,SAAQ,iBAAgB;AAAA,EAC9C,CACJ,CACJ,IAEC,gBAAAF,QAAA,cAAAA,QAAA,gBACI,SAAS,WACN,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACJ,GAGH,SAAS,UACN,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACJ,GAGH,SAAS,SACN,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACJ,CAER,CAIR;AAER;;;AQ3HA,OAAOG,WAAS,YAAAC,kBAAgB;AAEhC,SAAS,OAAAC,OAAiB,kBAAAC,iBAAgB,WAAAC,UAAS,qBAAAC,0BAAyB;AAC5E,SAAS,wBAAAC,6BAA4B;AACrC,SAAS,gBAAAC,qBAAoB;AAC7B,OAAOC,YAAsB;AAC7B,OAAO;AACP,SAAS,eAAAC,oBAAmB;AAE5B,OAAO,oBAAoB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAatB,IAAM,SAAS,CAAC;AAAA,EACnB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA;AACJ,MAAmB;AACf,EAAAA,aAAY;AAAA,IACR;AAAA,EACJ;AAEA,QAAM,cAAc,YAAY,CAAC;AACjC,QAAM,WAAW;AAEjB,QAAM,CAAC,UAAU,WAAW,IAAIR,WAA6B,IAAI;AACjE,QAAM,CAAC,eAAe,gBAAgB,IAAIA,WAAS,KAAK;AACxD,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,WAA2B,QAAQ;AAGnF,QAAM,kBAAkB,CAAC,YAAyB;AAC9C,UAAM,OAAO,QAAQ,sBAAsB;AAC3C,UAAM,eAAe,OAAO;AAC5B,UAAM,aAAa,eAAe,KAAK;AACvC,UAAM,aAAa,KAAK;AACxB,UAAM,gBAAgB;AAGtB,QAAI,aAAa,iBAAiB,aAAa,YAAY;AACvD,0BAAoB,KAAK;AAAA,IAC7B,OAAO;AACH,0BAAoB,QAAQ;AAAA,IAChC;AAAA,EACJ;AAGA,QAAM,uBAAuB,CAACS,WAAyC;AACnE,QAAI,CAAC,UAAU;AACX,YAAM,SAASA,OAAM;AACrB,kBAAY,MAAM;AAClB,sBAAgB,MAAM;AACtB,uBAAiB,IAAI;AAAA,IACzB;AAAA,EACJ;AAEA,QAAM,mBAAmB,CAAC,aAAkB;AACxC,UAAM,aAAa,WAAWF,OAAM,QAAQ,IAAI;AAChD,aAAS,UAAU;AACnB,qBAAiB,KAAK;AACtB,gBAAY,IAAI;AAAA,EACpB;AAEA,QAAM,cAAc,MAAM;AACtB,qBAAiB,KAAK;AACtB,gBAAY,IAAI;AAAA,EACpB;AAEA,SACI,gBAAAR,QAAA,cAACM,uBAAA,EAAqB,aAAaC,iBAC/B,gBAAAP,QAAA,cAACE,OAAA,EAAI,IAAI,EAAE,UAAU,YAAY,OAAO,QAAQ,KAC5C,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,QACP,WAAW;AAAA,UACP,YAAY;AAAA,YACR,cACI,gBAAAA,QAAA,cAACG,iBAAA,EAAe,UAAS,SACrB,gBAAAH,QAAA;AAAA,cAAC;AAAA;AAAA,gBACG,OAAO,WAAW,aAAa;AAAA,gBAC/B,IAAI,EAAE,QAAQ,WAAW,YAAY,UAAU;AAAA,gBAC/C,UAAS;AAAA;AAAA,YACb,CACJ;AAAA,YAEJ,IAAI;AAAA,cACA,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,QAAQ,WAAW,YAAY;AAAA,cAC/B,WAAW;AAAA,gBACP,QAAQ,WAAW,YAAY;AAAA,cACnC;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,IAAI;AAAA,QACA,OAAO;AAAA,QACP,yBAAyB;AAAA,UACrB,QAAQ,WAAW,YAAY;AAAA,QACnC;AAAA,QACA,iCAAiC;AAAA,UAC7B,SAAS;AAAA,QACb;AAAA,MACJ;AAAA;AAAA,EACJ,GACA,gBAAAA,QAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,QACV,UAAU,qBAAqB,QAAQ,QAAQ;AAAA,QAC/C,YAAY;AAAA,MAChB;AAAA,MACA,iBAAiB;AAAA,QACb,UAAU,qBAAqB,QAAQ,WAAW;AAAA,QAClD,YAAY;AAAA,MAChB;AAAA,MACA,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,WAAW;AAAA,QACP,OAAO;AAAA,UACH,IAAI;AAAA,YACA,WAAW;AAAA,YACX,cAAc;AAAA,YACd,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA;AAAA,IAEA,gBAAAJ,QAAA,cAACK,oBAAA,EAAkB,aAAa,eAC5B,gBAAAL,QAAA,cAACE,OAAA,EAAI,IAAI,EAAE,GAAG,EAAE,KACZ,gBAAAF,QAAA;AAAA,MAAC;AAAA;AAAA,QACG,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,IAAI;AAAA,UACA,mBAAmB;AAAA,YACf,WAAW;AAAA,YACX,UAAU;AAAA,UACd;AAAA,UACA,uBAAuB;AAAA,YACnB,UAAU;AAAA,YACV,IAAI;AAAA,UACR;AAAA,QACJ;AAAA;AAAA,IACJ,CACJ,CACJ;AAAA,EACJ,CACJ,CACJ;AAER;;;AC9KA,OAAOW,aAAoC;AAE3C,SAAiB,UAAAC,UAAuF,OAAAC,OAAK,WAAAC,gBAAe;AAE5H,OAAOC,kBAAqC;AAC5C,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,cAAc;AACrB,OAAO,oBAAoB;AAE3B,YAAYC,aAAY;AAejB,IAAM,SAAS,CAAC,EAAE,OAAO,OAAO,WAAW,cAAc,UAAU,SAAS,SAAS,OAAO,MAAmB;AAGlH,MAAI,sBAAsB;AAC1B,MAAI;AAEJ,QAAM,CAAC,UAAU,WAAW,IAAIL,QAAM,SAAS,KAAK;AAEpD,MAAI,WAAW;AACX,QAAIK,QAAO,SAAgC,KAAK,QAAW;AACvD,UAAI,aAAaL,QAAM,eAAe,SAAS,KAAK,UAAU,QAAQ,QAAW;AAC7E,8BAAsB;AACtB,oBAAY;AAAA,MAChB,OACK;AACD,8BAAsB;AACtB,oBAAY;AAAA,MAChB;AAAA,IACJ,OAAO;AACH,4BAAsB;AACtB,kBAAYK,QAAO,SAAgC;AAAA,IACvD;AAAA,EACJ;AAEA,QAAM,oBAAoB,MAAM;AAC5B,gBAAY,CAAC,QAAQ;AAAA,EACzB;AAGA,SACI,gBAAAL,QAAA,cAAC,QAAK,IAAI,EAAE,UAAU,IAAI,KACrB,SACG,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,QACI,YACM,wBAAwB,UAElB,gBAAAA,QAAA,cAACE,OAAA,EAAI,IAAI,EAAE,aAAa,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,cAAc,MAAM,KAC/E,gBAAAF,QAAA,cAAC,SAAI,KAAK,WAAW,OAAM,QAAO,QAAO,QAAO,CACpD,IAGA,gBAAAA,QAAA,cAACG,UAAA,EAAQ,OAAM,UAAS,UAAS,SAAQ,WAAW,WAAW,IAAI,EAAE,aAAa,OAAO,GAAG,IAElG;AAAA,MAEV,SACI,iCAAQ,aAAY,SAChB,iCAAQ,UAAS,SACb,gBAAAH,QAAA,cAACC,UAAA,EAAO,SAAS,mBAAmB,IAAI,EAAE,aAAa,OAAO,KAAG,UAEjE,KAEA,iCAAQ,UAAS,UACb,gBAAAD,QAAA,cAACI,cAAA,EAAW,SAAS,mBAAmB,IAAI,EAAE,aAAa,OAAO,GAAG,MAAK,WACtE,gBAAAJ,QAAA,cAAC,kBAAe,UAAS,SAAQ,CACrC,IAIR;AAAA,MAGR;AAAA,MACA,WAAW;AAAA,MACX,IAAI;AAAA,QACA,0BAA0B;AAAA,UACtB,UAAU;AAAA,UACV,OAAO;AAAA,QACX;AAAA,QACA,8BAA8B;AAAA,UAC1B,UAAU;AAAA,UACV,OAAO;AAAA,QACX;AAAA,QACA,2BAA2B;AAAA,UACvB,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,QAChB;AAAA,MACJ;AAAA;AAAA,EACJ,GAEH,SACG,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAU;AAAA,MACV,QAAO;AAAA,MACP;AAAA;AAAA,EACJ,GAEH,WACG,gBAAAA,QAAA,cAAC,eAAY,IAAI,EAAE,SAAS,sBAAsB,KAC7C,OACL,KAEF,iCAAQ,aAAY,YAAY,WAAW,WACzC,gBAAAA,QAAA,cAAC,eAAY,gBAAc,MAAC,IAAI,EAAE,gBAAgB,WAAW,MACxD,iCAAQ,cAAa,YAClB,iCAAQ,UAAS,SACb,gBAAAA,QAAA,cAACC,UAAA,EAAO,SAAS,mBAAmB,IAAI,EAAE,aAAa,OAAO,KAAG,UAEjE,KAEA,iCAAQ,UAAS,UACb,gBAAAD,QAAA,cAACI,cAAA,EAAW,SAAS,mBAAmB,IAAI,EAAE,aAAa,OAAO,KAC9D,gBAAAJ,QAAA,cAAC,oBAAe,CACpB,IAGR,MACH,WAAW,QAAQ,SAAS,IACzB,QAAQ,IAAI,CAAC,QAAa,UACtB,gBAAAA,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,KAAK;AAAA,MACL,MAAK;AAAA,MACL,OAAO,OAAO,SAAS;AAAA,MACvB,SAAS,OAAO,WAAW;AAAA,MAC3B,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO,YAAY;AAAA;AAAA,IAE5B,OAAO;AAAA,EACZ,CACH,IACC,EACV,GAEH,UACG,gBAAAD,QAAA,cAAC,YAAS,IAAI,UAAU,SAAQ,QAAO,eAAa,QAChD,gBAAAA,QAAA,cAAC,eAAY,IAAI,EAAE,SAAS,sBAAsB,KAC7C,OAAO,OACZ,CACJ,CAER;AAER;;;AClKA,OAAOM,WAAoB,YAAAC,kBAAoC;AAE/D,SAAiB,cAAAC,cAAY,cAAAC,cAAY,OAAAC,OAAK,SAAAC,cAAa;AAC3D,OAAOC,WAAU;AACjB,SAAS,kBAAAC,uBAAsB;AAC/B,SAAS,wBAAAC,6BAA4B;AACrC,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,MAAAC,WAAU;AACnB,SAAS,UAAAC,SAAQ,eAAAC,cAAwB,WAAAC,UAAS,aAAAC,kBAAiB;AAInE,OAAOC,kCAAiC;AACxC,OAAOC,gCAA+B;AACtC,OAAO,sBAAsB;AAC7B,OAAO,2BAA2B;AAa3B,IAAM,qBAAqB,CAAC;AAAA;AAAA;AAAA,EAGjC;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA+B;AAE7B,MAAI;AAEJ,QAAM,CAAC,OAAO,QAAQ,IAAIC,WAAS,oBAAI,KAAK,CAAC;AAC7C,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,WAAS;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAIC,QAAM,SAAS,oBAAI,KAAK,CAAC;AACzD,QAAM,CAAC,cAAc,eAAe,IAAIA,QAAM,SAAS,KAAK;AAE5D,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,eAAeC,aAAY,OAAO,EAAE,cAAc,EAAE,CAAC;AAC3D,QAAM,aAAa,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAMC,SAAQ,cAAc,CAAC,CAAC;AAE/E,EAAAF,QAAM,UAAU,MAAM;AACpB,QAAI,SAAS,MAAM;AACjB,yBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,qBAAqB,CAACG,WAAe;AACzC,QAAIA,QAAO;AACT,UAAI,OAAOA,OAAM,QAAQ,IAAI,KAAK,MAAM,MAAMA,OAAM,QAAQ;AAC5D,UAAI,SAASA,OAAM,SAAS,IAAI,IAAI,KAAK,MAAM,OAAOA,OAAM,SAAS,IAAI;AACzE,UAAI,OAAOA,OAAM,YAAY;AAC7B,qBAAe,MAAM,MAAM,QAAQ,MAAM;AACzC,eAAS,YAAY;AACrB,eAASA,MAAK;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,YAAiB,MAAM;AAC7C,oBAAgB,OAAO;AAAA,EACzB;AAEA,QAAM,SAAS,iCACVC,MADU;AAAA,IAEb,SAAS;AAAA,MACP,cAAc;AAAA;AAAA,IAChB;AAAA,EACF;AAEA,SACE,gBAAAJ,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACK,uBAAA,EAAqB,aAAaC,iBAAgB,eAAeF,OAC/D,gBAAgB,QACf,gBAAAJ,QAAA,cAACO,OAAA,EAAI,eAAY,mBAAkB,IAAI,EAAE,OAAO,QAAQ,YAAY,aAAa,aAAa,SAAS,SAAS,QAAQ,eAAe,UAAU,YAAY,SAAS,KACpK,gBAAAP,QAAA,cAACO,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,UAAU,SAAS,YAAY,cAAc,KACrE,gBAAAP,QAAA,cAACQ,OAAA,EAAK,WAAS,MAAC,KAAK,KAAK,IAAI,EAAE,gBAAgB,iBAAiB,SAAS,YAAY,YAAY,cAAc,KAC7G,WAAW,IAAI,CAAC,QACf,gBAAAR,QAAA,cAACQ,OAAA,EAAK,IAAI,EAAE,OAAO,OAAO,GAAG,KAAK,IAAI,SAAS,KAC7C,gBAAAR,QAAA,cAACO,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,YAAY,UAAU,gBAAgB,SAAS,KACxG,gBAAAP,QAAA,cAACS,cAAA,EAAW,IAAI,EAAE,UAAU,mBAAmB,OAAO,YAAY,KAAIC,QAAO,KAAK,QAAQ,EAAE,QAAQN,IAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAE,CACpI,GACA,gBAAAJ,QAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,SAAS,MAAM,SAAS,GAAG;AAAA,MAC3B,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,QACX,iBAAiBI,WAAU,KAAK,KAAK,IAAI,YAAY;AAAA,QACrD,QAAQ;AAAA,QACR,cAAc;AAAA;AAAA,QAEd,UAAU;AAAA;AAAA;AAAA,MAGZ;AAAA;AAAA,IAEA,gBAAAX,QAAA,cAACS,cAAA,EAAW,IAAI,EAAE,UAAU,mBAAmB,OAAOE,WAAU,KAAK,KAAK,IAAI,UAAU,YAAY,KAAID,QAAO,KAAK,GAAG,CAAE;AAAA,EAC3H,CACF,CACD,CACH,GACA,gBAAAV,QAAA,cAACQ,OAAA,EAAK,WAAS,MAAC,gBAAe,YAC7B,gBAAAR,QAAA,cAACY,cAAA,EAAW,eAAY,wBAAuB,SAAS,eAAe,IAAI,KACzE,gBAAAZ,QAAA,cAACa,8BAAA,EAA4B,OAAM,UAAQ,CAC7C,CACF,CACF,CACF,IAEA,gBAAAb,QAAA,cAACO,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,YAAY,QAAQ,KAC5C,gBAAAP,QAAA;AAAA,IAACc;AAAA,IAAA;AAAA,MACC,aAAY;AAAA,MACZ,QAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW,EAAE,SAAS,EAAE,QAAQ,KAAK,GAAG,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE;AAAA,MAEnE,IAAI,EAAE,UAAU,mBAAmB,QAAQ,oBAAoB,YAAY,aAAa,aAAa,SAAS,4BAA4B,EAAE,gBAAgB,gBAAgB,GAAG,mCAAmC,EAAE,gBAAgB,gBAAgB,GAAG,oCAAoC,EAAE,aAAa,OAAO,cAAc,OAAO,OAAO,YAAY,GAAG,yBAAyB,EAAE,UAAU,kBAAkB,GAAG,kCAAkC,EAAE,UAAU,kBAAkB,EAAG;AAAA,MACzd,UAAU,CAAC,aAAyB,SAAS,QAAQ;AAAA;AAAA,EACvD,GACA,gBAAAd,QAAA,cAACQ,OAAA,EAAK,WAAS,MAAC,gBAAe,YAC7B,gBAAAR,QAAA,cAACY,cAAA,EAAW,eAAY,yBAAwB,SAAS,eAAe,KAAK,KAC3E,gBAAAZ,QAAA,cAACe,4BAAA,EAA0B,OAAM,UAAQ,CAC3C,CACF,CACF,CAEJ,GACA,gBAAAf,QAAA,cAACO,OAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,QAAQ,eAAe,sBAAsB,qBAAqB,YAAY,SAAS,SAAS,QAAQ,eAAe,UAAU,WAAW,QAAQ,KAAK,OAAO,gBAAgB,eAAe,eAAe,OAAQ,KAE7O,WAAW,IAAI,CAAC,KAAK,aACpB,gBAAAP,QAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,KAAK;AAAA;AAAA,IAIL,gBAAAP,QAAA,cAACQ,OAAA,EAAK,WAAS,QACb,gBAAAR,QAAA,cAACS,cAAA,EAAW,SAAQ,aAAY,IAAI,EAAE,OAAOE,WAAU,KAAK,KAAK,IAAI,cAAc,iBAAkB,KAClG,IAAI,mBAAmB,SAAS;AAAA,MAC/B,KAAK;AAAA,IACP,CAAC,GACA,QACA,IAAI,mBAAmB,SAAS;AAAA,MAC/B,OAAO;AAAA,IACT,CAAC,GAAG,MACH,IAAI,mBAAmB,SAAS;AAAA,MAC/B,SAAS;AAAA,IACX,CAAC,CACH,CACF;AAAA,IAEA,gBAAAX,QAAA,cAACO,OAAA,EAAI,IAAI;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,IACjB,MACI,MAAM;AACN,YAAM,YAAY,IAAI,OAAO,MAAM;AACnC,YAAM,gBAAgB,OAAO;AAAA,QAAO,CAACS,WACnC,IAAI,KAAKA,OAAM,IAAI,EAAE,aAAa,MAAM,IAAI,aAAa;AAAA,MAC3D;AACA,UAAI,cAAc,SAAS,GAAG;AAC5B,eAAO,cAAc,IAAI,CAACA,QAAY,QACpC,gBAAAhB,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,SAAS,CAAC;AAAA,cACR,OAAOgB,OAAM;AAAA,cACb,UAAU,gBAAAhB,QAAA,cAAAA,QAAA,gBACP,mBACC,IAAI,KAAKgB,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,SAAS,MAAM,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAY,gBAAgB,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,KAC1J,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,SAAS,MAAM,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAY,gBAAgB,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,KACxJ,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,WAAW,MAAM,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAY,gBAAgB,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,KAC9J,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,WAAW,MAAM,IAAI,KAAKA,OAAM,KAAK,QAAQ,YAAY,gBAAgB,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAEhK,gBAAAhB,QAAA,cAAAA,QAAA,gBAAE,gBAAAA,QAAA,cAACS,cAAA,MAAW,aAAW,GAAa,gBAAAT,QAAA,cAAC,yBAAsB,UAAS,SAAQ,CAAE,IAEhF,gBAAAA,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACS,cAAA,MAAY,IAAI,KAAKO,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,MAAM,WAAW,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAE,GACpJ,gBAAAhB,QAAA,cAAC,oBAAiB,UAAS,SAAQ,GACnC,gBAAAA,QAAA,cAACS,cAAA,MAAY,IAAI,KAAKO,OAAM,KAAK,QAAQ,YAAYA,OAAM,SAAS,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,MAAM,WAAW,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAE,CACtJ,CAEJ;AAAA,cACA,eAAeA,OAAM,UAAU,eAAe,YAAY;AAAA,cAC1D,UAAUA,OAAM,UAAU,eAAe,gBAAgBA,OAAM,UAAU,aAAa,sBAAsBA,OAAM,UAAU,gBAAgB,oBAAoB;AAAA,cAChK,aACA,gBAAAhB,QAAA,cAAAA,QAAA,gBACEgB,OAAM,UAAU,cAAcA,OAAM,UAAU,iBAAiBA,OAAM,UAAU,kBAC/E,gBAAAhB,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACiB,QAAA,EAAM,SAAQ,OAAM,cAAc,IAAI,IAAI,EAAC,SAAS,QAAQ,YAAY,UAAS,qBAAqB,EAAE,KAAK,OAAM,WAAW,mBAAoB,GAAE,OAAO,SAAQ,GAAE,GACtK,gBAAAjB,QAAA,cAACS,cAAA,MAAYO,OAAM,SAAO,kBAAgB,cAAYA,OAAM,KAAM,CAClE,IAEA,IAEJ;AAAA,cACA,SAAS,cAAc,WAAW,MAAM,IAAI,QAAQ;AAAA,cACpD,SAAUA,OAAM,UAAU,gBAAgBA,OAAM,UAAU,cAAcA,OAAM,UAAU,gBAAiB,OAAO;AAAA,cAClH,IAAI,KAAK,MAAM,GAAGA,MAAK,IAAI;AAAA,YAC3B,CAAC;AAAA;AAAA,QAAG,CACP;AAAA,MACH,OAAO;AACL,eACE,gBAAAhB,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,CAAC;AAAA,cACR,OAAO,aAAa,OAAO,kBAAkB;AAAA,cAC7C,UAAU,aAAa,OAAO,kBAAkB;AAAA,cAChD,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,QAAG;AAAA,MAEV;AAAA,IACF,GAAG,CACL;AAAA,EACF,CACD,CACH,CACF;AAEJ;;;AClOA,SAAS,mBAAmB;;;ACA5B,OAAOkB,aAAW;AAGlB;AAAA,EACE,eAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,gBAAAC;AAAA,OACK;AAEA,IAAM,aAAgC;AAAA,EAC3C,WAAW;AAAA,IACT,gBAAgB;AAAA,MACd,UAAU;AAAA,QACR,cAAc;AAAA,MAChB;AAAA,MACA,cAAc;AAAA,QACZ,4CAA4C;AAAA,UAC1C,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,0CAA0C;AAAA,UACxC,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,cAAc;AAAA,QACZ,4CAA4C;AAAA,UAC1C,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACJ,UAAU;AAAA,QACV,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,oBAAoB;AAAA,IAClB,gBAAgB;AAAA,MACd,KAAK;AAAA,QACH,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,gBAAgB;AAAA,MACd,OAAO;AAAA,QACL,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd,KAAK;AAAA,QACH,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,gDAAgD;AAAA,UAC9C,WAAW;AAAA,UACX,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,gBAAgB;AAAA,MACd,WAAW;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,QACJ,eAAe;AAAA,QACf,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,cAAc;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,cAAc;AAAA,QACZ,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,UAAU;AAAA,YAC5B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,cAAc;AAAA,YAChC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,UAAU;AAAA,YAC5B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,cAAc;AAAA,YAChC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,qBAAqB;AAAA,QACnB,UAAU;AAAA,MACZ;AAAA,MACA,gCAAgC;AAAA,QAC9B,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,UAAU;AAAA,YAC5B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,cAAc;AAAA,YAChC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,mBAAmB;AAAA,QACjB,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,MAEjB;AAAA,MAEA,KAAK;AAAA,QACH,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,UAAU;AAAA,YAC5B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,cAAc;AAAA,YAChC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,UAAU;AAAA,YAC5B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,cAAc;AAAA,YAChC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA;AAAA,QAEA,uBAAuB;AAAA,UACrB,YAAY;AAAA,UACZ,eAAe;AAAA,QACjB;AAAA;AAAA,QAEA,qBAAqB;AAAA,UACnB,WAAW;AAAA,YACT,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA;AAAA,MAEA,gBAAgB;AAAA,QACd,KAAK;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAK;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,QACA,qBAAqB;AAAA,UACnB,WAAW;AAAA,UACX,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA;AAAA,QAGJ,sBAAsB;AAAA,UACpB,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,cAAc;AAAA,QAChB;AAAA;AAAA,QAEA,kDAAkD;AAAA,UAChD,aAAa;AAAA,QACf;AAAA;AAAA,QAEA,sCAAsC;AAAA,UACpC,oBAAoB;AAAA,YAClB,UAAU;AAAA,UACZ;AAAA,UACA,6BAA6B;AAAA,YAC3B,uBAAuB;AAAA,cACrB,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA,gBAAgB;AAAA,MACd,WAAW;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,MACA,YAAY;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MACA,WAAW;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,WACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,gBAAgB;AAAA,MACd,SAAS;AAAA,QACP,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,MACd,MAAM,CAAC,EAAE,MAAM,OAAO;AAAA,QACpB,WAAW;AAAA,QACX,uBAAuB;AAAA,UACrB,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa;AAAA,IACX,UAAU;AAAA,MACR;AAAA,QACE,OAAO,EAAE,MAAM,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,+BAA+B;AAAA,YAC7B,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,EAAE,MAAM,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,EAAE,MAAM,SAAS;AAAA,QACxB,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,gBAAgB;AAAA,MACd,WAAW;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,MACA,iBAAiB;AAAA,QACf,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MACA,kBAAkB;AAAA,QAChB,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MACA,kBAAkB,CAAC,EAAE,MAAM,OAAO;AAAA,QAChC,OAAO,MAAM,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA,cAAc,CAAC,EAAE,MAAM,OAAO;AAAA,QAC5B,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,QACvC,OAAO,MAAM,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA,YAAY,CAAC,EAAE,MAAM,OAAO;AAAA,QAC1B,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,SAAS;AAAA,YAC3B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,WAAW;AAAA,cAChC,SAAS;AAAA,YACX;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAY;AAAA,YAC9B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,SAAS;AAAA,cACT,UAAU;AAAA,gBACR,OAAO,MAAM,QAAQ,QAAQ;AAAA,gBAC7B,SAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,OAAO;AAAA,cAC5B,SAAS;AAAA,cACT,UAAU;AAAA,gBACR,OAAO,MAAM,QAAQ,OAAO;AAAA,gBAC5B,SAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,UAAU,OAAO,UAAU;AAAA,YAC7C,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAQ,CAAC,EAAE,MAAM,OAAO;AAAA,QACtB,YAAY;AAAA,QACZ,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,SAAS;AAAA,YAC3B,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,WAAW;AAAA,cAC1C,SAAS;AAAA,cACT,OAAO,MAAM,QAAQ,QAAQ;AAAA,YAC/B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,QAAQ;AAAA,YAC/B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,QAAQ;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,MAAM;AAAA,cACrC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,OAAO;AAAA,YAC5C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,KAAK;AAAA,cACpC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,KAAK,GAAG;AAAA,cACvC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,UAAU,OAAO,UAAU;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,WAAW;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,CAAC,EAAE,MAAM,MAAO,mBAClB,MAAM,WAAW;AAAA,MAEtB,MAAM,CAAC,EAAE,MAAM,OAAO;AAAA,QACpB,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,QAAQ,aAAa,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,cAC5C,iBAAiB;AAAA,cACjB,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,UAAU,OAAO,UAAU;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,KAAK,EAAE;AAAA,cACtC,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,KAAK,GAAG;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,UAAU,OAAO,UAAU;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,KAAK,EAAE;AAAA,cACtC,OAAO,MAAM,QAAQ,QAAQ;AAAA,cAC7B,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,KAAK,GAAG;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,QAAQ,KAAK;AAAA,YAC3C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,QAAQ;AAAA,YAC/B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,cACvC,OAAO,MAAM,QAAQ,QAAQ;AAAA,YAC/B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC3C,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC7C;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,YAAY;AAAA,YACjD,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,cAAc;AAAA,cAC7C,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,cAAc;AAAA,cAC/C;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,OAAO;AAAA,YAC5C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,SAAS;AAAA,cACxC,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,SAAS;AAAA,cAC1C;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,QAAQ;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,UAAU;AAAA,cACzC,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,UAAU;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC3C,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC7C;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC3C,UAAU;AAAA,gBACR,iBAAiB,MAAM,QAAQ,YAAY;AAAA,cAC7C;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,cAAc;AAAA,MACZ,aAAa;AAAA,QACX,SAASC,QAAM,cAAcC,mBAAkB;AAAA,QAC/C,OAAOD,QAAM,cAAcE,aAAY;AAAA,QACvC,SAASF,QAAM,cAAcG,eAAc;AAAA,QAC3C,MAAMH,QAAM,cAAcI,YAAW;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,MACR;AAAA,QACE,OAAO,EAAE,SAAS,SAAS;AAAA,QAC3B,OAAO;AAAA,UACL,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,EAAE,SAAS,WAAW;AAAA,QAC7B,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MAEd,SAAS,CAAC,EAAE,MAAM,OAAO;AAAA,QACvB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,KAAK;AAAA,YAC5B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,KAAK;AAAA,YAC5B;AAAA,UACF;AAAA,QAEF;AAAA,MACF;AAAA,MACA,MAAM,CAAC,EAAE,MAAM,OAAO;AAAA,QACpB,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ,GAAG;AAAA,YAC5C;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,QAAQ;AAAA,YAC7C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,MAAM,GAAG;AAAA,YAC1C;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,OAAO;AAAA,YAC5C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,KAAK,GAAG;AAAA,YACzC;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,YAC/C,OAAO;AAAA,cACL,iBAAiB,MAAM,QAAQ,QAAQ,GAAG;AAAA,YAC5C;AAAA,UACF;AAAA,QACF;AAAA,MAEF;AAAA,MACA,QAAQ,CAAC,EAAE,MAAM,OAAO;AAAA,QACtB,SAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,UACR;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,OAAO;AAAA,YAC9B;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAO,EAAE,SAAS,WAAW;AAAA,YAC7B,OAAO;AAAA,cACL,OAAO,MAAM,QAAQ,OAAO;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,cAAc;AAAA,QACd,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,eAAe;AAAA,IACb,cAAc;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,cAAc;AAAA,QACd,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,4BAA4B;AAAA,UAC1B,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MACA,SAAS;AAAA,QACP,aAAa;AAAA,MACf;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR,6BAA6B;AAAA,UAC3B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,8BAA8B;AAAA,UAC5B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,6BAA6B;AAAA,UAC3B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,6BAA6B;AAAA,UAC3B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,8BAA8B;AAAA,UAC5B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,6BAA6B;AAAA,UAC3B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR,6BAA6B;AAAA,UAC3B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,+BAA+B;AAAA,UAC7B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA,gBAAgB;AAAA,MACd,UAAU;AAAA,QACR,WACE;AAAA,QACF,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACV,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,KAAK;AAAA,QACL,WACE;AAAA,QACF,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,aAAa;AAAA,UACf;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACV,QAAQ;AAAA,UACR,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,aAAa;AAAA,UACf;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB;AAAA,IACd,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,mBAAmB;AAAA,IACjB,cAAc;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,gBAAgB;AAAA,MACd,eAAe;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,gBAAgB;AAAA,QACd,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,eAAe;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,eAAe;AAAA,IACb,cAAc;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,gBAAgB;AAAA,MACd,WAAW;AAAA,QACT,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,cAAc;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,wBAAwB;AAAA,UACtB,WAAW;AAAA,QACb;AAAA,QACA,uDAAuD;AAAA,UACrD,cAAc;AAAA,QAChB;AAAA,QACA,2BAA2B;AAAA,UACzB,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,gBAAgB;AAAA,MACd,gBAAgB;AAAA,QACd,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,iDAAiD;AAAA,UAC/C,SAAS;AAAA,QACX;AAAA,QACA,mCAAmC;AAAA,UACjC,KAAK;AAAA,UACL,WAAW;AAAA,QACb;AAAA,QACA,wEACA;AAAA,UACE,cAAc;AAAA,UACd,cAAc;AAAA,UACd,4DAA4D;AAAA,YAC1D,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,eAAe;AAAA,IACb,gBAAgB;AAAA,MACd,UAAU,CAAC,EAAE,MAAM,OAAO;AAAA,QACxB,OAAO,MAAM,QAAQ,MAAM;AAAA,MAC7B;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAe;AAAA,QACf,UAAU;AAAA,QACV,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,eAAe;AAAA,MACjB;AAAA,MACA,QAAQ;AAAA,QACN,6EACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,QACA,8EACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,+EACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,QACA,gFACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,MAEF;AAAA,MACA,UAAU;AAAA,QACR,qDAAqD;AAAA,UACnD,WAAW;AAAA,QACb;AAAA,QACA,6BAA6B;AAAA,UAC3B,WAAW;AAAA,UAEX,0BAA0B;AAAA,YACxB,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,UAAU;AAAA,QACV,WACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,eAAe;AAAA,IACb,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,OAAO,EAAE,MAAM,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,EAAE,MAAM,SAAS;AAAA,QACxB,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,EAAE,MAAM,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,+BAA+B;AAAA,YAC7B,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,UAAU;AAAA,MACR;AAAA,QACE,OAAO,EAAE,MAAM,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,yBAAyB;AAAA,YACvB,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO,EAAE,SAAS,WAAW;AAAA,QAC7B,OAAO;AAAA,UACL,mDAAmD;AAAA,YACjD,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,cAAc;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,gBAAgB;AAAA,MACd,SAAS;AAAA,QACP,wBAAwB;AAAA,UACtB,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,sBAAsB;AAAA,UACpB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,mBAAmB;AAAA,IACjB,gBAAgB;AAAA,MACd,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,8BAA8B;AAAA,UAC5B,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,gBAAgB;AAAA,MACd,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,+CAA+C;AAAA,UAC7C,YAAY;AAAA,UACZ,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,qBAAqB;AAAA,UACnB,QAAQ;AAAA,UACR,WAAW;AAAA,QACb;AAAA,QACA,+CAA+C;AAAA,UAC7C,YAAY;AAAA,UACZ,eAAe;AAAA,QACjB;AAAA,QACA,yBAAyB;AAAA,UACvB,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,8CAA8C;AAAA,UAC5C,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,MACd,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,QACJ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACF;;;ACvwCO,IAAM,eAAwC;AAAA,EACnD,SAAS;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,oBAAoB;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EACA,YAAY;AAAA,IACV,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,SAAS;AACX;AAEO,IAAM,aAA6B;AAAA,EACxC,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAEhB;AAAA,EACA,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,GACG;AAGE,IAAM,eAA+B;AAAA,EAC1C,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,GACG;AAGE,IAAM,aAA6B;AAAA,EACxC,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,GACG;;;AC/RL,SAAS,yBAAyB;AAE3B,IAAM,cAA2B,kBAAkB;AAAA,EACtD,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AACJ,CAAC;;;ACRM,IAAM,SAAiB;AAAA,EAC1B,SAAS;AAAA,IACL,WAAW;AAAA,IACX,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,MACtB,WAAW;AAAA,IACf;AAAA,EACJ;AACJ;;;ACTA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;;;ACFA,IAAM,aAAgC;AAAA,EAC3C,UAAU;AAAA,EACV,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,MACxB,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,4BAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AACF;;;ACvHO,IAAM,UAAmB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;;;AChBA,IAAM,aAAoC;AAAA,EACxC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,WAAyB;AAAA,EACpC,SAAS;AAAA,GACN;AAGE,IAAM,aAA2B;AAAA,EACtC,SAAS;AAAA,GACN;AAGE,IAAM,WAAyB;AAAA,EACpC,SAAS;AAAA,GACN;;;AR7BE,IAAM,aAAa,YAAY,mBACjC,SACJ;AAEM,IAAI,kBAAkB,YAAY,mBACpC,WACJ;AAEM,IAAI,gBAAgB,YAAY,mBAClC,SACJ;","names":["React","useEffect","useState","Box","Button","IconButton","Stack","Typography","useEffect","useState","useState","useEffect","React","React","useState","Box","Typography","IconButton","Button","Stack","Close","useState","React","Button","Box","Stack","Typography","IconButton","Close","useState","useEffect","event","React","Stack","Box","Typography","Button","IconButton","error","React","useEffect","useRef","Box","Typography","IconButton","Button","Stack","Chip","Grid","React","useEffect","useState","IconButton","Box","Typography","Tooltip","getIconComponent","event","format","event","format","useState","useEffect","getIconComponent","event","React","Box","Typography","Tooltip","IconButton","MuiIcons","React","useEffect","useState","Typography","Stack","Box","Popover","Tooltip","SvgIcon","Grid","InfoOutlined","useState","React","useEffect","event","Box","Grid","SvgIcon","Typography","InfoOutlined","Popover","Tooltip","Stack","React","useEffect","InputLabel","FormControl","SvgIcon","Box","Muicon","React","useEffect","Muicon","event","Box","FormControl","InputLabel","SvgIcon","React","useEffect","InputAdornment","MenuItem","TextField","Typography","SvgIcon","ListItemIcon","ListItemText","Divider","FormControlLabel","IconButton","Box","Button","Grid","Muicon","React","useEffect","Muicon","event","Box","Typography","MenuItem","ListItemIcon","SvgIcon","ListItemText","TextField","IconButton","InputAdornment","FormControlLabel","Divider","Grid","Button","React","Box","InputAdornment","Muicon","getIcon","React","useRef","React","useEffect","getIcon","_a","_b","_c","Grid","Box","IconButton","Chip","Button","Stack","Typography","React","Box","Typography","React","useEffect","useMemo","Button","Checkbox","FormControl","InputAdornment","ListItemIcon","MenuItem","Popover","Stack","TextField","useCallback","useState","MuiIcons","FilterListOutlined","useMemo","useEffect","useMemo","_a","allSelected","React","Button","Popover","Stack","FormControl","TextField","InputAdornment","MenuItem","ListItemIcon","Checkbox","button","React","Stack","Typography","React","useState","Typography","IconButton","Box","Grid","LocalizationProvider","useState","React","fecha","LocalizationProvider","Box","Grid","Typography","IconButton","React","useEffect","useState","LicenseInfo","_a","_b","data","React","React","Button","Stack","Typography","React","React","React","Error","React","Search","React","Error","Search","Stack","Typography","Button","React","useEffect","useState","Button","Typography","Modal","IconButton","Tooltip","Box","SvgIcon","Grid","CloseIcon","Muicon","React","Divider","ListItemIcon","ListItemText","SvgIcon","Grid","Muicon","React","Box","Typography","Paper","Divider","MenuList","MenuItem","ListItemIcon","SvgIcon","Grid","useState","useEffect","Muicon","React","event","Grid","Paper","MenuList","MenuItem","ListItemIcon","SvgIcon","Typography","Divider","Box","React","useEffect","Typography","Box","SvgIcon","Tab","Tabs","Muicon","React","useEffect","Muicon","event","Box","Tabs","Tab","SvgIcon","Typography","React","useEffect","useState","Box","CircularProgress","React","useState","KeyboardArrowDown","Box","Chip","IconButton","MenuItem","Stack","Typography","dayjs","event","React","Box","Typography","IconButton","Paper","Tooltip","Stack","Divider","CircularProgress","dayjs","dayjs","React","Box","Stack","Typography","Divider","Popover","event","React","Stack","Divider","Box","Typography","Popover","React","dayjs","React","Box","Typography","CircularProgress","Paper","Tooltip","IconButton","event","Stack","Divider","React","Box","CircularProgress","Typography","dayjs","localeData","dayjs","localeData","startOfWeek","event","React","Box","isToday","Typography","CircularProgress","React","Box","CircularProgress","Typography","dayjs","dayEvents","event","React","Box","Typography","CircularProgress","dayjs","dayjs","useState","useEffect","React","Box","CircularProgress","React","useState","Box","InputAdornment","Popover","ClickAwayListener","LocalizationProvider","AdapterDayjs","dayjs","LicenseInfo","event","React","Button","Box","SvgIcon","IconButton","Muicon","React","useState","Typography","IconButton","Box","Badge","Grid","AdapterDateFns","LocalizationProvider","StaticDatePicker","es","format","startOfWeek","addDays","isSameDay","KeyboardDoubleArrowDownIcon","KeyboardDoubleArrowUpIcon","useState","React","startOfWeek","addDays","fecha","es","LocalizationProvider","AdapterDateFns","Box","Grid","Typography","format","isSameDay","IconButton","KeyboardDoubleArrowDownIcon","StaticDatePicker","KeyboardDoubleArrowUpIcon","event","Badge","React","InfoRounded","CheckCircleRounded","WarningRounded","ErrorRounded","React","CheckCircleRounded","ErrorRounded","WarningRounded","InfoRounded"]}
|