@apia/components 0.1.1 → 0.1.3
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.d.ts +1 -3
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/forms/buttons/BaseButton.tsx","../src/components/forms/buttons/IconButton.tsx","../src/components/forms/buttons/SimpleButton.tsx","../src/components/buttons/useOtherTagButton.ts","../src/components/forms/Captcha.tsx","../src/components/forms/Checkbox.tsx","../src/globalFocus.ts","../src/hooks/useBodyScrollLock.ts","../src/components/modals/Overlay.tsx","../src/components/modals/layout/DialogHeader.tsx","../src/components/modals/Modal.tsx","../src/components/modals/CalendarModal.tsx","../src/components/modals/hooks/useModal.tsx","../src/components/modals/layout/DialogButtonBar.tsx","../src/components/modals/layout/Confirm.tsx","../src/components/loaders/LinearLoader.tsx","../src/components/modals/ScreenLock.tsx","../src/components/forms/FieldErrorMessage.tsx","../src/components/forms/IconInput.tsx","../src/components/forms/util/style.ts","../src/components/forms/DateInput.tsx","../src/components/forms/NumberInput.tsx","../src/components/forms/RequiredMark.tsx","../src/components/apia/ApiaDateFilter.tsx","../src/components/apia/ApiaFilter.tsx","../src/components/collapsiblePanel/styles.ts","../src/components/collapsiblePanel/index.tsx","../src/components/ListBox/common.ts","../src/components/ListBox/ListboxContext.tsx","../src/components/ListBox/ListboxItem.tsx","../src/components/waiAriaHelpers/typeAhead.ts","../src/components/ListBox/ListboxKeyhandler.tsx","../src/components/ListBox/Combobox.tsx","../src/components/ListBox/listbox.ts","../src/components/ListBox/operations.ts","../src/components/ListBox/useStore.ts","../src/components/ListBox/useShoutSelectionChange.ts","../src/components/ListBox/useIndexedChildren.ts","../src/components/ListBox/useListboxAutofocus.ts","../src/components/ListBox/useUpdateRowCount.ts","../src/components/ListBox/useListboxContextValue.ts","../src/components/ListBox/index.tsx","../src/components/loaders/ProgressBar.tsx","../src/components/responsive/makeResponsiveComponent.tsx","../src/components/IconsList/store/distinctors.ts","../src/components/IconsList/store/keysMaker.ts","../src/components/IconsList/store/operations.ts","../src/components/IconsList/store/state.ts","../src/components/IconsList/store/context.ts","../src/components/IconsList/store/useStore.tsx","../src/tooltip/types.ts","../src/tooltip/util.ts","../src/tooltip/Tooltip.tsx","../src/tooltip/index.tsx","../src/components/IconsList/KeyHandler.tsx","../src/components/IconsList/styles.ts","../src/components/IconsList/util.ts","../src/components/IconsList/context.tsx","../src/components/IconsList/Icon.tsx","../src/components/IconsList/IconWrapper.tsx","../src/components/IconsList/renderers/DefaultIconRenderer.tsx","../src/components/IconsList/index.tsx"],"sourcesContent":["import { Button, Spinner, Flex, ThemeUIStyleObject } from 'theme-ui';\nimport { TApiaButtonType } from '../../types';\nimport { getVariant, spacing } from '@apia/theme';\n\ninterface IBaseButton {\n text?: string;\n children?: string;\n loadingChildren?: string;\n id?: string;\n name?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n isLoading?: boolean;\n disabled?: boolean;\n variant?: TApiaButtonType | string;\n type?: 'button' | 'submit' | 'reset';\n SXProps?: ThemeUIStyleObject;\n}\n\n/**\n * The world's most **basic** button\n */\nexport const BaseButton = ({\n id,\n name,\n onClick = () => {},\n isLoading = false,\n loadingChildren,\n disabled = false,\n children = '',\n text = '',\n variant = 'primary',\n type = 'button',\n SXProps,\n ...buttonProps\n}: IBaseButton) => {\n return (\n <Button\n id={id}\n name={name}\n onClick={onClick}\n {...getVariant(variant)}\n type={type}\n title={children}\n disabled={isLoading || disabled}\n {...buttonProps}\n >\n <Flex\n as=\"span\"\n sx={{\n color: 'inherit',\n width: '100%',\n flexDirection: 'row',\n alignContent: 'center',\n justifyContent: 'center',\n alignItems: 'center',\n gap: spacing(3),\n ...SXProps,\n }}\n >\n {isLoading && (\n <>\n <Spinner size={20} color=\"inherit\" />\n {loadingChildren}\n </>\n )}\n {!isLoading && (children || text)}\n </Flex>\n </Button>\n );\n};\n","import * as React from 'react';\nimport {\n IconButton as IconButtonThemeUI,\n Spinner,\n IconButtonProps,\n ThemeUIStyleObject,\n} from 'theme-ui';\nimport { icons, TIconName, TIconType } from '@apia/icons';\nimport { getVariant } from '@apia/theme';\n\nexport type TIconSize = number | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport type TApiaIconButton =\n | 'icon'\n | 'icon-primary'\n | 'icon-outline'\n | 'icon-only';\n\nexport type TIconButton = IconButtonProps &\n React.AriaAttributes & {\n className?: string;\n /**\n * Es posible pasar explícitamente un ícono o el nombre del ícono de\n * acuerdo a la librería de la aplicación. Ver Icon.tsx\n */\n icon: TIconType | TIconName;\n iconSize?: TIconSize;\n id?: string;\n disabled?: boolean;\n href?: string;\n isLoading?: boolean;\n isToggled?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseOut?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n size?: TIconSize;\n title?: string;\n variant?: string;\n };\n\n/**\n * Renderiza un botón con un ícono adentro.\n *\n * La variante por defecto de este componente es buttons.icon\n *\n * Si se pasa solamente size, el iconSize será\n */\nexport const IconButton = React.forwardRef(\n (\n {\n className,\n disabled = false,\n icon,\n iconSize: outerIconSize,\n id,\n isLoading = false,\n isToggled = false,\n href,\n onClick = () => {},\n onMouseOver = () => {},\n onMouseOut = () => {},\n size = 'sm',\n title,\n type = 'button',\n variant = 'icon',\n ...rest\n }: TIconButton,\n ref: React.Ref<HTMLButtonElement>,\n ) => {\n const sizes = ['xs', 'sm', 'md', 'lg', 'xl'];\n const iconSize =\n outerIconSize ?? sizes[Math.max(0, sizes.indexOf(size as string) - 1)];\n\n const sx: ThemeUIStyleObject = React.useMemo(() => {\n return {\n width: `icon${size}`,\n minWidth: `icon${size}`,\n height: `icon${size}`,\n minHeight: `icon${size}`,\n svg: {\n width: `icon${iconSize}`,\n minWidth: `icon${iconSize}`,\n height: `icon${iconSize}`,\n minHeight: `icon${iconSize}`,\n },\n };\n }, [iconSize, size]);\n\n const ActualIcon = React.useMemo(() => {\n return typeof icon === 'string' ? icons[icon] : icon;\n }, [icon]);\n\n return (\n <IconButtonThemeUI\n id={id}\n ref={ref}\n onClick={React.useCallback(\n (ev: React.MouseEvent<HTMLButtonElement>) => {\n if (href) window.open(href, '_blank');\n onClick?.(ev);\n },\n [href, onClick],\n )}\n onMouseOver={onMouseOver}\n onMouseOut={onMouseOut}\n {...getVariant(variant)}\n sx={sx}\n disabled={isLoading || disabled}\n className={`${className ?? ''} iconButton ${\n isToggled ? 'isToggled' : ''\n }`}\n title={title}\n aria-label={\n rest['aria-label'] ?? (rest.as !== undefined ? undefined : title)\n }\n type={rest.as !== undefined ? undefined : type}\n role={href ? 'link' : undefined}\n {...rest}\n >\n {isLoading ? <Spinner color=\"inherit\" /> : <ActualIcon />}\n </IconButtonThemeUI>\n );\n },\n);\n\nIconButton.displayName = 'IconButton';\n","import { TIconType } from '@apia/icons';\nimport { getVariant, spacing } from '@apia/theme';\nimport * as React from 'react';\nimport {\n Box,\n Button,\n ButtonProps,\n Spinner,\n ThemeUICSSObject,\n ThemeUIStyleObject,\n} from 'theme-ui';\n\nexport interface ISimpleButton extends ButtonProps {\n icon?: TIconType;\n iconColor?: string;\n iconPosition?: 'left' | 'right';\n iconSize?: number;\n isLoading?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n size?: 'sm' | 'md' | 'lg';\n variant?: string;\n spinnerSize?: number;\n type?: 'button' | 'submit' | 'reset';\n}\n\nconst simpleButton: ThemeUICSSObject = {\n display: 'inline-flex',\n gap: spacing(3),\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n\n '.toggled': {\n backgroundColor: 'primary',\n },\n /* PREPEND HERE */\n};\n\nexport const SimpleButton = React.forwardRef(\n (\n {\n children = null,\n className,\n disabled = false,\n icon,\n iconColor,\n iconPosition = 'left',\n iconSize,\n id,\n isLoading,\n name,\n onClick,\n size,\n spinnerSize = 16,\n title,\n type = 'button',\n variant = 'primary',\n ...buttonProps\n }: ISimpleButton,\n ref: React.Ref<unknown>,\n ) => {\n const loadingSx = React.useMemo<ThemeUIStyleObject>(\n () => ({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n [],\n );\n const spanSx = React.useMemo(\n () => ({\n color: isLoading ? 'transparent' : undefined,\n }),\n [isLoading],\n );\n const Icon = React.useMemo(() => icon, [icon]);\n\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement>}\n id={id}\n name={name}\n title={title}\n aria-label={title}\n onClick={onClick}\n type={type}\n disabled={isLoading ?? disabled}\n className={className}\n {...getVariant(`${variant}${size !== 'md' && size ? `-${size}` : ''}`)}\n sx={simpleButton}\n {...buttonProps}\n >\n {Icon && iconPosition === 'left' && (\n <Icon title=\"\" size={iconSize} color={iconColor} />\n )}\n <Box as=\"span\" className=\"button__content\" sx={spanSx}>\n {children ?? title}\n </Box>\n {Icon && iconPosition === 'right' && (\n <Icon title=\"\" size={iconSize} color={iconColor} />\n )}\n {isLoading && (\n <Box className=\"spinner\" sx={loadingSx}>\n <Spinner size={spinnerSize} color=\"inherit\" />\n </Box>\n )}\n </Button>\n );\n },\n);\n\nSimpleButton.displayName = 'SimpleButton';\n","import { getSpecificParent } from '@apia/util';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\n\n/**\n * Este hook está pensado para crear un botón utilizando un tag cualquiera.\n *\n * @example\n *\n * const buttonProps = useOtherTagButton(React.useMemo(()=>({\n * onClick(ev) { console.log(ev.target) },\n * onKeyDown(ev) { console.log(ev.code) }\n * }),[])\n *\n * return <div {...buttonProps}>Esto es un botón</div>\n */\nexport function useOtherTagButton(\n props?: Partial<{\n className?: string;\n onClick: React.MouseEventHandler;\n onKeyDown: React.KeyboardEventHandler;\n }>,\n) {\n const specificClass = React.useMemo(() => `otherTag${uniqueId()}`, []);\n\n const actualOnClick = React.useCallback(\n (ev: React.MouseEvent) => {\n props?.onClick?.(ev);\n },\n [props],\n );\n const actualOnKeyDown = React.useCallback(\n (ev: React.KeyboardEvent) => {\n props?.onKeyDown?.(ev);\n if (ev.code === 'Enter' || ev.code === 'Space') {\n ev.preventDefault();\n const button = getSpecificParent(ev.target as HTMLElement, (current) =>\n current.classList.contains(specificClass),\n );\n if (button) button.click();\n }\n },\n [props, specificClass],\n );\n\n return {\n className: `${specificClass} ${props?.className ?? ''}`,\n onClick: actualOnClick,\n onKeyDown: actualOnKeyDown,\n role: 'button',\n tabIndex: 0,\n };\n}\n","import { Flex, Image, Input } from 'theme-ui';\nimport { useState } from 'react';\nimport { IconButton } from './buttons';\nimport { getVariant } from '@apia/theme';\n\nexport const Captcha = ({\n name,\n imageUrl,\n onChange,\n value,\n className,\n}: {\n name: string;\n className?: string;\n imageUrl: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n value: string;\n}) => {\n const [imgSrc, setImgSrc] = useState<string>(`${imageUrl}?t=${Date.now()}`);\n\n const handleSyncClick = () => {\n // IMG reload\n setImgSrc(`${imageUrl}?t=${Date.now()}`);\n };\n\n return (\n <Flex\n sx={{\n flexDirection: 'column',\n }}\n className=\"captcha__field\"\n {...getVariant('layout.common.forms.captcha')}\n >\n <Flex className=\"captcha__imageContainer\">\n <Image alt=\"\" src={imgSrc} />\n </Flex>\n <Flex className={`captcha__inputContainer ${className ?? ''}`}>\n <Input\n autoComplete=\"off\"\n name={name}\n onChange={onChange}\n value={value}\n />\n\n <Flex className=\"captcha__buttons\">\n <IconButton\n icon=\"Refresh\"\n type=\"button\"\n aria-label=\"TODO: Etiqueta activar audio\"\n onClick={handleSyncClick}\n ></IconButton>\n <IconButton\n icon=\"Volume\"\n type=\"button\"\n aria-label=\"TODO: Etiqueta activar audio\"\n onClick={() => {}}\n ></IconButton>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { Button, ButtonProps, Input, InputProps } from 'theme-ui';\nimport { TModify, getSpecificParent, useUpdateEffect } from '@apia/util';\nimport {\n ChangeEventHandler,\n forwardRef,\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { getVariant } from '@apia/theme';\nimport { Icon } from '@apia/icons';\n\nexport type TCheckbox = TModify<\n ButtonProps,\n {\n background?: string;\n checked?: boolean;\n color?: string;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n native?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n readOnly?: boolean;\n required?: boolean;\n type?: string;\n }\n>;\n\nexport const Checkbox = forwardRef<HTMLButtonElement, TCheckbox>(\n (\n {\n onChange,\n required,\n disabled,\n readOnly,\n name,\n native,\n indeterminate,\n ...props\n },\n ref,\n ) => {\n const [isChecked, setIsChecked] = useState(\n props.defaultChecked ?? props.checked ?? false,\n );\n\n const checkbox = useRef<HTMLInputElement>(null);\n\n useUpdateEffect(\n () => setIsChecked(props.checked ?? false),\n [props.checked],\n );\n\n const sx = useMemo(\n () => ({\n bg: props.background ?? undefined,\n color: props.color ?? undefined,\n '&[aria-checked=\"false\"]': {\n bg: props.background ?? undefined,\n color: 'transparent',\n },\n }),\n [props.background, props.color],\n );\n\n useEffect(() => {\n if (checkbox.current && indeterminate !== undefined)\n checkbox.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const nativeSx = useMemo(() => ({ variant: 'forms.checkbox' }), []);\n\n return native ? (\n // eslint-disable-next-line react/forbid-elements\n <input\n type=\"checkbox\"\n onClick={props.onClick as unknown as MouseEventHandler}\n aria-checked={isChecked}\n sx={nativeSx}\n ref={checkbox}\n disabled={disabled}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n className={` ${props.className ?? ''} nativeCheckbox `}\n {...(props as unknown as InputProps)}\n />\n ) : (\n <>\n <Button\n {...props}\n onClick={(ev) => {\n if (readOnly) {\n return;\n }\n if (\n getSpecificParent(\n ev.target as HTMLElement,\n (current) => (current as HTMLInputElement).type === 'button',\n )\n ) {\n if (props.onClick) props.onClick(ev);\n checkbox.current?.click();\n }\n }}\n type=\"button\"\n {...getVariant('forms.customCheckbox')}\n role=\"checkbox\"\n aria-checked={isChecked}\n sx={sx}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n title=\"\"\n name=\"Check\"\n sx={{ pointerEvents: 'none', opacity: isChecked ? 1 : 0 }}\n size=\"32px\"\n />\n </Button>\n <Input\n type=\"checkbox\"\n sx={{ display: 'none' }}\n ref={checkbox}\n onClick={(ev) => {\n ev.stopPropagation();\n }}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n disabled={disabled}\n />\n </>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { TFocusRetriever, debugDispatcher } from '@apia/util';\nimport { isFunction } from 'lodash';\n\nconst historySize = 50;\n\n/**\n * The GlobalFocus helper keeps a list of the last focused elements and allows\n * to retrieve the last focused element which matches against a query selector.\n */\nconst globalFocus = new (class {\n focused: (HTMLElement | TFocusRetriever)[] = [];\n\n #onFocusCallbacks: (() => unknown)[] = [];\n\n offFocus(cb: () => unknown) {\n this.#onFocusCallbacks = this.#onFocusCallbacks.filter((current) => {\n return current !== cb;\n });\n }\n\n onFocus(cb: () => unknown) {\n this.#onFocusCallbacks.push(cb);\n\n return () => {\n this.offFocus(cb);\n };\n }\n\n constructor() {\n debugDispatcher.on(\n 'focusHistory',\n () => {\n console.info(this.focused);\n },\n 'Muestra el historial de elementos que recibieron foco.',\n );\n }\n\n inDocument(el: HTMLElement | TFocusRetriever) {\n return (\n el instanceof Function ||\n (el instanceof HTMLElement && el.offsetParent !== null)\n );\n }\n\n set focus(element: HTMLElement | TFocusRetriever) {\n this.focused = this.focused.filter((el) => {\n const existsInDocument = this.inDocument(el) && element !== el;\n\n return existsInDocument;\n });\n this.focused.unshift(element);\n if (this.focused.length > historySize) {\n this.focused = this.focused.splice(0, historySize);\n }\n\n this.#onFocusCallbacks.forEach((cb) => {\n return cb();\n });\n }\n\n get list() {\n return [...this.focused];\n }\n\n /**\n * @param querySelector A query selector against which the element should match\n * @returns The last HTMLElement if no querySelector argument provided or else, the last which matches\n * against that query selector.\n * */\n last(querySelector?: string, omit = 0) {\n if (querySelector)\n for (let i = omit; i <= this.focused.length; i++) {\n const storedElement = this.focused[i];\n const element =\n // eslint-disable-next-line no-nested-ternary\n (storedElement as HTMLElement)?.id !== undefined\n ? (storedElement as HTMLElement)\n : isFunction(storedElement)\n ? storedElement(false)\n : null;\n\n if (\n element &&\n this.inDocument(element) &&\n element.matches &&\n element.matches(querySelector)\n )\n return element;\n }\n else return this.focused[this.focused.length - 1];\n return null;\n }\n})();\n\nexport default globalFocus;\n","import { useEffect } from 'react';\n\nclass BodyScrollLocker {\n #isLocked = false;\n #onChangeCb: () => unknown = () => {};\n #onDestroyCb: () => unknown = () => {};\n\n get isLocked() {\n return this.#isLocked;\n }\n\n destroy() {\n this.#onDestroyCb();\n }\n\n lock() {\n this.#isLocked = true;\n this.#onChangeCb();\n }\n\n unlock() {\n this.#isLocked = false;\n this.#onChangeCb();\n }\n\n onChange(cb: () => unknown) {\n this.#onChangeCb = cb;\n\n return () => (this.#onChangeCb = () => {});\n }\n\n onDestroy(cb: () => unknown) {\n this.#onDestroyCb = cb;\n\n return () => (this.#onDestroyCb = () => {});\n }\n}\n\nconst BodyScrollLock = new (class BodyScrollLockClass {\n lockers: BodyScrollLocker[] = [];\n #evaluate() {\n const willLock =\n this.lockers.filter((current) => current.isLocked).length > 0;\n\n document.body.style.maxHeight = '100vh';\n\n if (willLock && document.body.scrollHeight > document.body.clientHeight)\n document.body.style.paddingRight = '10px';\n\n document.body.style.overflow = willLock ? 'hidden' : 'auto';\n\n if (!(willLock && document.body.scrollHeight > document.body.clientHeight))\n document.body.style.paddingRight = '0px';\n }\n\n getLocker() {\n const locker = new BodyScrollLocker();\n locker.onChange(() => this.#evaluate());\n locker.onDestroy(() => {\n this.lockers = this.lockers.filter((current) => current !== locker);\n this.#evaluate();\n });\n this.lockers.push(locker);\n\n return locker;\n }\n})();\n\nexport function useBodyScrollLock(isLocked: boolean) {\n useEffect(() => {\n const locker = BodyScrollLock.getLocker();\n if (isLocked) locker.lock();\n else locker.unlock();\n\n return () => {\n locker.destroy();\n };\n }, [isLocked]);\n}\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, BoxProps } from 'theme-ui';\nimport ReactFocusLock from 'react-focus-lock';\nimport { getVariant } from '@apia/theme';\nimport { useCombinedRefs } from '@apia/util';\nimport { useBodyScrollLock } from '../../hooks';\n\nexport interface IOverlay extends BoxProps {\n children: React.ReactNode;\n className?: string;\n onOverlayClicked: (event: React.MouseEvent<HTMLDivElement>) => void;\n /**\n * Permite pasar un callback que será llamado una vez que el overlay termine\n * de cerrarse.\n */\n onExited: () => void;\n isOpen?: boolean;\n shouldAvoidInitialFocusTrap?: boolean;\n stretch?: boolean;\n transitionDuration?: number;\n}\n\nexport const Overlay = React.forwardRef<unknown, IOverlay>(\n (\n {\n children,\n className = '',\n onExited,\n onOverlayClicked,\n isOpen: open = false,\n shouldAvoidInitialFocusTrap,\n stretch,\n transitionDuration = 150,\n ...props\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const assignRefs = useCombinedRefs(innerRef, ref);\n useBodyScrollLock(open);\n return (\n <CSSTransition\n in={open}\n timeout={transitionDuration}\n onExited={onExited}\n classNames=\"overlayAnimation\"\n appear\n unmountOnExit\n >\n <Box\n className={`${className} overlay`}\n ref={assignRefs}\n {...props}\n data-type=\"overlay\"\n role=\"presentation\"\n onClick={React.useCallback(\n (ev: React.MouseEvent<HTMLDivElement>) => {\n if (ev.target === innerRef.current) onOverlayClicked(ev);\n },\n [onOverlayClicked],\n )}\n {...getVariant(\n props.variant ??\n `layout.common.modals.overlay${stretch ? '--stretch' : ''}`,\n )}\n >\n <ReactFocusLock\n autoFocus={shouldAvoidInitialFocusTrap ? false : undefined}\n returnFocus={false}\n crossFrame={false}\n disabled={\n document.activeElement?.classList.contains('filter') &&\n document.activeElement.tagName === 'INPUT'\n }\n >\n {children}\n </ReactFocusLock>\n </Box>\n </CSSTransition>\n );\n },\n);\n\nOverlay.displayName = 'Overlay';\n","import { Box, Close, Heading } from 'theme-ui';\nimport { useBreakpointIndex } from '@theme-ui/match-media';\nimport React, { FC } from 'react';\nimport { responsive, spacing } from '@apia/theme';\n\nexport interface IDialogHeader {\n className?: string;\n close: () => void;\n hideCloseButton?: boolean;\n id?: string;\n NavBar?: React.ReactNode;\n title?: string;\n}\n\nconst DialogHeader: FC<IDialogHeader> = ({\n className,\n close,\n hideCloseButton,\n id,\n NavBar,\n title = '',\n}) => {\n const breakpointIndex = useBreakpointIndex();\n\n const Title = (\n <Heading\n as=\"h3\"\n sx={{\n wordBreak: 'break-word',\n m: '0',\n flex: '2 0',\n color: 'title',\n }}\n className=\"modal__title\"\n id={id ? `modal-${id}-title` : ''}\n >\n {title}\n </Heading>\n );\n\n const CloseButton = React.useMemo(\n () =>\n hideCloseButton ? null : (\n <Close\n role=\"button\"\n type=\"button\"\n aria-label={window.BTN_CLOSE}\n onClick={close}\n title={window.BTN_CLOSE}\n sx={{\n mr: 'unset',\n }}\n className=\"modal__closeButton\"\n />\n ),\n [close, hideCloseButton],\n );\n\n const NavBarElement = NavBar && (\n <Box\n sx={{\n display: 'flex',\n gap: responsive({ 0: 2, 1: '3px', 2: 2 }),\n justifyContent: 'end',\n flexDirection: responsive({ 0: 'row', 1: 'column', 3: 'row' }),\n width: responsive({ 0: 'auto', 1: '100%', 2: 'auto' }),\n flexBasis: 'max-content',\n height: '100%',\n }}\n className=\"modal__headerBar\"\n >\n {NavBar}\n </Box>\n );\n\n return breakpointIndex > 3 ? (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'start',\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n flexWrap: 'nowrap',\n }}\n >\n {Title}\n {NavBarElement}\n {CloseButton}\n </Box>\n ) : (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: responsive({ 0: 'center', 2: 'end' }),\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n }}\n >\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n }}\n >\n {Title}\n {CloseButton}\n </Box>\n {NavBarElement}\n </Box>\n );\n};\n\nexport default DialogHeader;\n","import React, { useEffect, useState, useCallback, forwardRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box } from 'theme-ui';\nimport { uniqueId } from 'lodash';\nimport {\n focus,\n focusSelector,\n getFocusSelector,\n useCombinedRefs,\n IOnFocusConfiguration,\n TFocusRetriever,\n} from '@apia/util';\nimport { getVariant } from '@apia/theme';\nimport { Overlay } from './Overlay';\nimport { TModalSize } from '../types';\nimport DialogHeader, { IDialogHeader } from './layout/DialogHeader';\n\nexport type TModalContext = {\n /**\n * Se debe usar para dotar de una descripción al cuadro de diálogo\n */\n descriptionId: string;\n};\nexport const ModalContext = React.createContext<TModalContext>(\n {} as TModalContext,\n);\n\nexport type TModal = {\n animationDuration?: number;\n children?: React.ReactNode;\n className?: string;\n id?: string;\n initialFocusConfiguration?: IOnFocusConfiguration;\n /**\n * Este retriever será pasado al método focus.on para realizar el foco en el\n * elemento inicial del modal.\n *\n * @see focus\n */\n initialFocusGetter?: (\n modalInnerRef: HTMLElement,\n ) => ReturnType<TFocusRetriever>;\n /**\n * Si se pasa un ref, el modal hará foco sobre el elemento una vez que haya\n * abierto.\n */\n initialFocusRef?: React.RefObject<unknown>;\n /**\n * Controla el estado del modal, indicando a la transición de apertura o\n * cierre que debe comenzar, dependiendo de si cambia a true o false\n * respectivamente.\n */\n isOpen?: boolean;\n maxWidth?: number | string;\n /**\n * Permite pasar un componente React que se mostrará a la derecha del título,\n * con el fin de incorporar botones en el header del modal.\n */\n NavBar?: React.ReactNode;\n noFocus?: boolean;\n noHeader?: boolean;\n /**\n * Permite definir un callback que será llamado solamente cuando el modal se\n * cierre por medio del click en el overlay, al presionar escape o mediante\n * el botón cerrar del header (La X).\n */\n onClose?: () => void;\n /**\n * Permite definir un callback que será llamado siempre que el modal se\n * cierre, una vez que la animación haya terminado.\n */\n onExited?: () => unknown;\n /**\n * Al pasar un Portal, el modal se abrirá dentro de éste y no directamente en\n * la posición actual dentro del árbol de componentes. Normalmente, este\n * Portal es pasado automáticamente por el hook useModal (No el de la\n * librería, sino el nuestro).\n *\n * @see useModal\n */\n Portal?: React.FC<{\n children: React.ReactNode;\n }>;\n /**\n * Si es true, el modal será cerrado al presionar escape.\n */\n shouldCloseOnEsc?: boolean;\n /**\n * Si es true, el modal será cerrado al hacer clic en el overlay.\n */\n shouldCloseOnOverlayClick?: boolean;\n size?: TModalSize;\n stretch?: boolean;\n title?: string;\n variant?: string;\n} & Pick<IDialogHeader, 'hideCloseButton'>;\n\nexport const Modal = forwardRef(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n hideCloseButton,\n id,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n isOpen = false,\n maxWidth,\n NavBar,\n noFocus,\n noHeader = false,\n onClose = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n shouldCloseOnOverlayClick = true,\n size = 'md',\n stretch,\n title = '',\n variant,\n }: TModal,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [isOpenInner, setIsOpen] = useState(isOpen);\n const innerId = React.useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n const [overlayElement, setInnerRef] = React.useState<HTMLElement>();\n const assignRefs = useCombinedRefs(\n setInnerRef as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n );\n\n const overlayClickedHandle = (event: React.MouseEvent<HTMLDivElement>) => {\n if (shouldCloseOnOverlayClick) {\n if (\n (event.target as HTMLDivElement).getAttribute('data-type') ===\n 'overlay'\n ) {\n closeHandler();\n }\n }\n };\n\n useEffect(() => {\n function handleEscape(event: KeyboardEvent) {\n const overlays = [...document.querySelectorAll('.overlay')];\n\n if (\n overlays.length > 0 &&\n overlays[overlays.length - 1]?.id === innerId &&\n event.key === 'Escape'\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n closeHandler();\n\n return false;\n }\n\n return true;\n }\n if (isOpenInner && shouldCloseOnEsc)\n document.addEventListener('keydown', handleEscape, false);\n return () => {\n document.removeEventListener('keydown', handleEscape, false);\n };\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, innerId]);\n\n React.useEffect(\n () => {\n if (!noFocus && isOpenInner) {\n if (overlayElement) {\n void focus.on(\n () => {\n if (initialFocusGetter)\n return initialFocusGetter(overlayElement);\n if (initialFocusRef?.current)\n return (\n (initialFocusRef?.current || overlayElement) as HTMLElement\n ).querySelector(focusSelector) as HTMLElement;\n return overlayElement.querySelector(\n getFocusSelector(':not(.modal__closeButton)'),\n ) as HTMLElement;\n },\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\n );\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [overlayElement],\n );\n\n const Wrapper = React.useMemo(() => {\n return Portal ?? React.Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ModalContext.Provider\n value={React.useMemo(() => {\n return { descriptionId: `${innerId}_Description` };\n }, [innerId])}\n >\n <Wrapper>\n <Overlay\n onOverlayClicked={overlayClickedHandle}\n isOpen={isOpen}\n className={className}\n stretch={stretch}\n ref={assignRefs}\n onExited={onExited}\n id={innerId}\n shouldAvoidInitialFocusTrap={noFocus}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n >\n <Box\n className=\"modal__variantWrapper\"\n {...(variant ? getVariant(variant) : {})}\n >\n <Box\n id={id}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n aria-describedby={`${innerId}_Description`}\n aria-hidden=\"false\"\n className=\"modal__main\"\n // allows scrolling within element, despite body lock\n data-scroll-lock-scrollable\n sx={React.useMemo(() => {\n return {\n variant: `layout.common.modals.${size}`,\n ...(maxWidth !== undefined ? { maxWidth } : {}),\n };\n }, [maxWidth, size])}\n data-variant={`layout.common.modals.${size}`}\n >\n {!noHeader && (\n <DialogHeader\n className=\"modal__header\"\n NavBar={NavBar}\n title={title}\n close={closeHandler}\n hideCloseButton={hideCloseButton}\n id={`${innerId}_Header`}\n />\n )}\n <Box\n className=\"modal__content\"\n id={\n typeof children === 'string'\n ? `${innerId}_Description`\n : undefined\n }\n >\n {children}\n </Box>\n </Box>\n </Box>\n </CSSTransition>\n </Overlay>\n </Wrapper>\n </ModalContext.Provider>\n );\n },\n);\n\nModal.displayName = 'Modal';\n","import React from 'react';\nimport Calendar from 'react-calendar';\nimport { Modal, TModal } from './Modal';\n\nexport interface ICalendarModal extends TModal {\n handleClickDay: (date: Date) => void;\n onCancel: () => void;\n calValue?: Date;\n locale: string;\n}\n\nexport const CalendarModal = React.forwardRef<HTMLDivElement, ICalendarModal>(\n ({ handleClickDay, onCancel, calValue, locale, size, ...props }, ref) => {\n return (\n <Modal\n noHeader\n size={size ?? 'cal'}\n shouldCloseOnEsc\n shouldCloseOnOverlayClick\n ref={ref}\n {...props}\n initialFocusGetter={(modalRef) => {\n return modalRef?.querySelector(\n '.react-calendar__tile--active',\n ) as HTMLElement;\n }}\n >\n <Calendar\n onClickDay={handleClickDay}\n locale={locale}\n value={calValue ?? new Date()}\n nextLabel=\"›\"\n next2Label=\"»\"\n prevLabel=\"‹\"\n prev2Label=\"«\"\n />\n </Modal>\n );\n },\n);\n\nCalendarModal.displayName = 'CalendarModal';\n","import { useUpdateEffect } from '@apia/util';\nimport React from 'react';\nimport usePortal, { Args } from 'react-cool-portal';\nimport { TModal } from '../Modal';\n\nexport type TUseModalConfiguration = Pick<TModal, 'onClose' | 'onExited'> & {\n debugPerformanceName?: string;\n isDefaultOpen?: boolean;\n onOpen?: () => unknown;\n portalArgs?: Omit<Args, 'containerId'>;\n preFetcher?: () => Promise<void>;\n};\n\n/**\n * Este hook provee una forma muy sencilla de utilizar nuestro modal. Provee\n * varias funcionalidades interesantes para poder manipular el modal en\n * distintas circunstancias:\n *\n * Objeto parámetro:\n *\n * - **defaultOpen**, Boolean, si es true el modal aparecerá abierto al montar\n * y sino aparecerá cerrado.\n * - **onOpen**: Event listener que será llamado en el momento exacto en que la\n * orden de apertura del modal fue dada.\n * - **onClose**: Event listener que será llamado en el momento exacto en que\n * el modal es cerrado, ya sea por un click en el overlay o porque la tecla\n * escape fue presionada.\n * - **onExited**, Event listener que será llamado luego de que la animación de\n * cierre del modal terminó.\n * - **preFetcher**, este método deberá devolver una promesa y en dicha promesa\n * deberá realizar cualquier operación que fuera necesaria antes de abrir el\n * modal, ejemplo: cargar la información que el modal debe mostrar. Si este\n * método es pasado, será llamado antes de abrir el modal y la vista se pondrá\n * en modo de carga (la propiedad isLoading devuelta y la propiedad isLoading\n * del OpenModalContextProvider estarán en true), hasta que la promesa sea\n * resuelta, momento en que se abrirá el modal e isLoading será puesto en false.\n * - **portalArgs**, objeto de configuración aceptado por el hook usePortal de\n * **react-cool-portal**.\n *\n * Objeto devuelto:\n *\n * - Para un modal en donde el botón de abrir el modal esté inserto dentro del\n * componente que lo utiliza, se devuelven los métodos **show** y **hide**.\n * - Para un modal en donde el botón de abrir el modal esté fuera del\n * componente, se devuelve **openModalContextValue**, que es el valor que debe\n * pasarse al contexto de tipo OpenModalContextProvider, un contexto que\n * puede ser utilizado para renderizar el botón encargado de abrir el modal,\n * fuera del alcance del componente que define el modal en sí. Se muestra un\n * ejemplo más abajo.\n * - Todos los demás elementos devueltos son para pasar directamente al modal,\n * entre ellos se encuentran las propiedades que el modal utiliza para saber si\n * debe estar abierto, los event listeners correspondientes y un portal, que el\n * modal usará para mostrarse dentro del área de modales, lo cual es sumamente\n * importante para que el focusController funcione correctamente.\n *\n * @see OpenModalContextProvider\n * @see usePortal\n *\n * @example\n *\n const { openModalContextValue, ...modalProps } = useModal(\n React.useMemo(() => ({\n onClose: () => console.log(\"Al presionar en cerrar.\"),\n onExited: () => console.log(\"Al terminar la animación de cierre.\"),\n onOpen: () => console.log(\"Al abrir.\"),\n }), [])\n );\n\n return (\n <OpenModalContext.Provider value={openModalContextValue}>\n <OpenModalContext.Consumer>\n {({ isLoading, show }) => (\n <Button isLoading={isLoading} onClick={show}>Open modal</Button>\n )}\n </OpenModalContext.Consumer>\n <Modal shouldCloseOnEsc shouldCloseOnOverlayClick {...modalProps}>\n Hello world\n </Modal>\n </OpenModalContext.Provider>\n );\n */\nexport function useModal(configuration?: TUseModalConfiguration) {\n const [isLoading, setIsLoading] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(\n configuration?.portalArgs?.defaultShow ??\n configuration?.isDefaultOpen ??\n false,\n );\n\n const {\n Portal,\n hide: hidePortal,\n show: showPortal,\n } = usePortal({\n ...configuration?.portalArgs,\n containerId: 'AppModals',\n autoRemoveContainer: false,\n escToHide: false,\n clickOutsideToHide: false,\n defaultShow: false,\n internalShowHide: false,\n });\n\n const hide = React.useCallback(() => {\n setIsOpen(false);\n }, []);\n const show = React.useCallback(() => {\n if (configuration?.preFetcher) {\n setIsLoading(true);\n configuration\n .preFetcher()\n .then(() => {\n setIsOpen(true);\n setIsLoading(false);\n })\n .catch(console.error);\n } else setIsOpen(true);\n }, [configuration]);\n const onClose = React.useCallback(() => {\n setIsOpen(false);\n if (configuration?.onClose) configuration.onClose();\n }, [configuration]);\n const onExited = React.useCallback(() => {\n hidePortal();\n if (configuration?.onExited) configuration.onExited();\n }, [configuration, hidePortal]);\n const openModalContextValue = React.useMemo(() => {\n return {\n isLoading,\n show,\n };\n }, [isLoading, show]);\n\n useUpdateEffect(() => {\n if (isOpen) {\n if (configuration?.onOpen) configuration.onOpen();\n showPortal();\n } else onClose?.();\n }, [isOpen]);\n\n return {\n hide,\n isLoading,\n isOpen,\n onClose,\n onExited,\n openModalContextValue,\n Portal,\n show,\n };\n}\n","import { getVariant } from '@apia/theme';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\n\nexport interface IDialogButtonBar {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const DialogButtonBar: React.FC<IDialogButtonBar> = ({\n children,\n className,\n}) => {\n return (\n <Box\n className={`${className ?? ''} buttonsBar`}\n {...getVariant('layout.common.modals.buttonsBar')}\n >\n {children}\n </Box>\n );\n};\n","import { getVariant } from '@apia/theme';\nimport { getSpecificParent } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\nimport { SimpleButton } from '../../forms/buttons/SimpleButton';\nimport { TApiaButtonType } from '../../types';\nimport { ModalContext } from '../Modal';\nimport { DialogButtonBar } from './DialogButtonBar';\n\nexport function getConfirmButton(ref: HTMLElement) {\n return ref?.querySelector('button[type=\"submit\"]') as HTMLElement;\n}\n\nexport interface IConfirm {\n additionalButtons?: React.ReactNode;\n additionalButtonsOnRight?: React.ReactNode;\n cancelButtonText?: string;\n children: React.ReactNode;\n className?: string;\n confirmButtonText?: string;\n confirmButtonVariant?: TApiaButtonType;\n contentRef?: React.Ref<HTMLDivElement>;\n disabled?: boolean;\n hideCancelButton?: boolean;\n hideConfirmButton?: boolean;\n isLoading?: boolean;\n onConfirm?: (ev: React.MouseEvent) => unknown;\n onCancel?: (ev: React.MouseEvent) => unknown;\n variant?: string;\n}\n\ndeclare global {\n interface Window {\n [key: string]: string;\n }\n}\n\nexport const Confirm: React.FC<IConfirm> = ({\n additionalButtons,\n additionalButtonsOnRight,\n children,\n confirmButtonText: confirmText = window.BTN_CONFIRM,\n cancelButtonText: cancelText = window.BTN_CANCEL,\n confirmButtonVariant: confirmType = 'primary',\n disabled,\n hideCancelButton,\n hideConfirmButton,\n onConfirm: onConfirmOk,\n onCancel: onConfirmCancel,\n isLoading,\n contentRef,\n className,\n variant,\n}) => {\n const { descriptionId } = React.useContext(ModalContext);\n\n return (\n <Box\n {...getVariant(variant ?? 'layout.common.modals.confirm')}\n className={`${className ?? ''} confirm`}\n >\n <Box ref={contentRef} className=\"confirm__content\" id={descriptionId}>\n {children}\n </Box>\n <DialogButtonBar className=\"confirm__buttonBar\">\n <Box\n className=\"confirm__customButtons\"\n onClick={React.useCallback(\n (ev: React.MouseEvent) => {\n if (\n getSpecificParent(ev.target as HTMLElement, (current) => {\n return current.tagName === 'BUTTON';\n })\n )\n onConfirmCancel?.(ev);\n },\n [onConfirmCancel],\n )}\n >\n {additionalButtons}\n </Box>\n\n <Box className=\"confirm__defaultButtons\">\n <Box\n className=\"confirm__customButtonsOnRight\"\n onClick={React.useCallback(\n (ev: React.MouseEvent) => {\n if (\n getSpecificParent(ev.target as HTMLElement, (current) => {\n return current.tagName === 'BUTTON';\n })\n )\n onConfirmCancel?.(ev);\n },\n [onConfirmCancel],\n )}\n >\n {additionalButtonsOnRight}\n </Box>\n {!hideConfirmButton && (\n <SimpleButton\n onClick={onConfirmOk}\n title={confirmText}\n variant={confirmType}\n disabled={isLoading ?? disabled}\n isLoading={isLoading}\n className=\"confirm__confirmButton\"\n type=\"submit\"\n >\n {confirmText}\n </SimpleButton>\n )}\n {onConfirmCancel && !hideCancelButton && (\n <SimpleButton\n onClick={onConfirmCancel}\n title={cancelText}\n {...getVariant('secondary')}\n disabled={isLoading}\n className=\"confirm__cancelButton\"\n >\n {cancelText}\n </SimpleButton>\n )}\n </Box>\n </DialogButtonBar>\n </Box>\n );\n};\n","\n\nimport { getColor } from '@theme-ui/color';\nimport { BarLoader } from 'react-spinners';\nimport { Box, useThemeUI } from 'theme-ui';\n\nconst LinearLoader = () => {\n const theme = useThemeUI();\n return (\n <Box\n sx={{\n '*': { height: '6.5px !important' },\n }}\n >\n <Box\n sx={{\n zIndex: 'tooltip',\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n }}\n className=\"linearLoader\"\n >\n <BarLoader\n width=\"100%\"\n color={getColor(theme.theme, 'palette.primary.main') as string}\n />\n </Box>\n </Box>\n );\n};\n\nexport default LinearLoader;\n","import React, { useState } from 'react';\nimport { Box, Spinner } from 'theme-ui';\nimport { screenLocker } from '@apia/util';\nimport LinearLoader from '../loaders/LinearLoader';\nimport { Overlay } from './Overlay';\n\n/**\n * Implementación de la clase screenLocker que maneja tres tipos de bloqueo:\n * common, linear, y white. El caso del forced lo trata como common.\n */\nexport const ScreenLock = () => {\n const ref = React.useRef<SVGSVGElement>(null);\n const [hasReleasedFirstTime, setHasReleasedFirstTime] = useState(false);\n const [locks, setLocks] = useState({\n common: false,\n forced: false,\n linear: false,\n white: false,\n });\n\n React.useEffect(() => {\n const suscriptions = [\n screenLocker.on('lockStateChange', (ev) => {\n setLocks((current) => ({ ...current, [ev.lockName]: ev.isLocked }));\n setHasReleasedFirstTime(ev.hasReleasedFirstTime);\n }),\n screenLocker.on('forcedStateChange', (ev) => {\n setLocks((current) => ({ ...current, forced: ev.isForced }));\n setHasReleasedFirstTime(ev.hasReleasedFirstTime);\n }),\n ];\n\n return () => suscriptions.forEach((current) => current());\n }, []);\n\n const overlaySx = React.useMemo(() => {\n return {\n backgroundColor: 'transparent',\n '&:not(body.editionForm *)': {\n // eslint-disable-next-line no-nested-ternary\n backgroundColor: locks.linear\n ? 'transparent'\n : hasReleasedFirstTime\n ? 'palette.background.overlay'\n : 'palette.background.default',\n },\n };\n }, [locks.linear, hasReleasedFirstTime]);\n\n if (!locks.linear && !locks.common && !locks.white && !locks.forced)\n return null;\n\n return (\n <Box>\n <Overlay\n isOpen\n onExited={() => {}}\n onOverlayClicked={() => {}}\n sx={overlaySx}\n className={`${hasReleasedFirstTime ? '' : 'not-released'} screenLock`}\n transitionDuration={hasReleasedFirstTime ? undefined : 0}\n >\n {locks.linear ? (\n <LinearLoader />\n ) : (\n <Spinner ref={ref} sx={{ '*': { color: 'primary' } }} />\n )}\n <Box tabIndex={0} title={window.WAIT_A_SECOND} />\n </Overlay>\n </Box>\n );\n};\n","import { customEvents } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\n\nexport interface IFieldErrorMessage {\n children: React.ReactNode | string;\n name?: string;\n}\n\nexport const FieldErrorMessage = ({ children, name }: IFieldErrorMessage) => {\n const [ref, setRef] = React.useState<null | HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (children) {\n const event = new CustomEvent(customEvents.focus, { bubbles: true });\n ref?.dispatchEvent(event);\n }\n }, [children, ref]);\n\n if (children) {\n return (\n <Box\n ref={setRef}\n role=\"alert\"\n data-testid={name ? `err_${name}` : null}\n sx={{\n mb: '0',\n color: 'danger',\n pt: '2',\n }}\n >\n {children}\n </Box>\n );\n }\n return null;\n};\n","import { getVariant } from '@apia/theme';\nimport { isChild, useCombinedRefs } from '@apia/util';\nimport React from 'react';\nimport ReactInputMask from 'react-input-mask';\nimport { Box, InputProps } from 'theme-ui';\nimport { TIconName, TIconType } from '@apia/icons';\nimport { IconButton } from './buttons';\n\nexport interface IField {\n className?: string;\n disabled?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n}\n\nexport interface IIconInput extends IField {\n additionalButtons?: React.ReactNode;\n buttonProps?: Partial<React.ComponentProps<typeof IconButton>>;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n hideButton?: boolean;\n icon?: TIconType | TIconName;\n inputProps?: Partial<InputProps>;\n inputRef?: React.RefObject<HTMLInputElement>;\n mask?: string;\n onClick?: (ev: React.MouseEvent) => void;\n onBlur?: React.FocusEventHandler;\n [key: string]: unknown;\n}\n\nexport const IconInput = ({\n additionalButtons,\n buttonProps,\n buttonRef,\n className,\n disabled,\n hideButton,\n icon = 'Search',\n inputProps,\n inputRef,\n isLoading,\n mask,\n onClick,\n onBlur,\n readOnly,\n ...rest\n}: IIconInput) => {\n const { sx: inputSx, ...actualInputProps } = inputProps ?? {};\n const innerButtonRef = React.useRef<HTMLButtonElement>(null);\n const assignButtonRef = useCombinedRefs(buttonRef, innerButtonRef);\n\n const innerInputRef = React.useRef<HTMLInputElement>(null);\n const assignInputRef = useCombinedRefs(inputRef, innerInputRef);\n\n const [parentRef, setParentRef] = React.useState<HTMLElement | null>(null);\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n onBlur &&\n (!ev.relatedTarget ||\n (ev.relatedTarget &&\n !isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === parentRef,\n )))\n )\n onBlur(ev);\n },\n [onBlur, parentRef],\n );\n\n return (\n <Box\n {...getVariant('forms.iconInput')}\n className={`${className ?? ''} iconInput`}\n ref={setParentRef}\n >\n <ReactInputMask\n mask={mask ?? ''}\n onBlur={handleBlur}\n disabled={isLoading ?? disabled}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\n ref={assignInputRef as any}\n readOnly={readOnly}\n sx={{ variant: 'forms.input', ...inputSx }}\n data-variant=\"forms.input\"\n {...rest}\n {...actualInputProps}\n maxLength={mask ? undefined : inputProps?.maxLength}\n />\n {additionalButtons}\n {!hideButton && (\n <IconButton\n onBlur={handleBlur}\n onClick={onClick}\n icon={icon}\n disabled={readOnly ?? disabled}\n isLoading={isLoading}\n ref={assignButtonRef as React.Ref<HTMLButtonElement>}\n {...buttonProps}\n />\n )}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from 'theme-ui';\n\nexport const getFieldErrorStyles = (isValid: boolean): ThemeUICSSObject => {\n return {\n borderLeftStyle: !isValid ? 'solid' : null,\n borderLeftWidth: !isValid ? '4px' : null,\n borderLeftColor: !isValid ? 'danger' : undefined,\n };\n};\n\nexport const getFieldTouchedStyles = (isTouched: boolean): ThemeUICSSObject => {\n return {\n borderStyle: isTouched ? 'solid' : null,\n borderWidth: isTouched ? '1px' : null,\n borderColor: isTouched ? 'orange' : undefined,\n };\n};\n","import { getVariant } from '@apia/theme';\nimport {\n getDateFormat,\n isChild,\n TDateFormat,\n TModify,\n useUpdateEffect,\n} from '@apia/util';\nimport dayjs from 'dayjs';\nimport { uniqueId } from 'lodash';\nimport React from 'react';\nimport { Box, Close, InputProps } from 'theme-ui';\nimport { icons } from '@apia/icons';\nimport globalFocus from '../../globalFocus';\nimport { useModal } from '../modals';\nimport { CalendarModal } from '../modals/CalendarModal';\nimport { FieldErrorMessage } from './FieldErrorMessage';\nimport { IconInput, IIconInput } from './IconInput';\nimport { getFieldErrorStyles } from './util/style';\n\nconst DEFAULT_LOCALE = window.LANG_CODE;\nconst DEFAULT_MASK_PLACEHOLDER = '_';\n\nconst dateFormat: TDateFormat = getDateFormat();\n\nconst getMaskForDateFormat = (): string => {\n if (dateFormat === 'YYYY/MM/DD') return '9999/99/99';\n return '99/99/9999';\n};\n\nexport type TDateProps = TModify<\n InputProps,\n {\n allowPickBeforeToday?: boolean;\n error?: string | null;\n /**\n * Con esta propiedad se puede proveer una función que será utilizada para\n * determinar qué máscara debe utilizar el input\n */\n getCustomMask?: () => string;\n isLoading?: boolean;\n /**\n * Recibe la nueva fecha. En caso de devolver\n * false desde este método, el nuevo valor no\n * se persistirá.\n */\n onChange?: (newValue: string) => boolean | string | void;\n /**\n * Es llamado cada vez que alguien presiona el botón de eliminar fecha.\n */\n onDelete?: () => void;\n onError?: (error: string | null) => unknown;\n /**\n * Con esta propiedad se puede proveer una función que recibirá como\n * parámetro el valor actual del cmapo y debe devolver el valor a mostrar.\n */\n renderLabel?: (value: string) => string;\n value?: string;\n }\n> &\n Pick<IIconInput, 'buttonProps'>;\n\nexport const DateInput = React.forwardRef<HTMLInputElement, TDateProps>(\n (\n {\n allowPickBeforeToday,\n buttonProps: outerButtonProps,\n className,\n error,\n getCustomMask,\n isLoading,\n onBlur,\n onChange,\n onDelete,\n onError,\n renderLabel,\n value: outerValue,\n ...props\n },\n ref,\n ) => {\n const id = React.useMemo(uniqueId, []);\n const [inputValue, setInputValue] = React.useState(outerValue ?? '');\n const [calValue, setCalValue] = React.useState<Date>();\n const boxRef = React.useRef<HTMLElement | null>(null);\n const { show, hide, ...modalProps } = useModal({\n preFetcher() {\n globalFocus.focus = () =>\n boxRef.current?.querySelector('.iconButton') as HTMLElement;\n return new Promise((resolve) => {\n let currentSelectedDate = dayjs(inputValue, dateFormat);\n if (!currentSelectedDate.isValid())\n currentSelectedDate = dayjs(new Date());\n setCalValue(currentSelectedDate.toDate());\n resolve();\n });\n },\n });\n const [stateError, setError] = React.useState<null | string>(error ?? null);\n\n const lastEmittedValue = React.useRef(outerValue ?? '');\n useUpdateEffect(() => {\n setInputValue(outerValue ?? '');\n lastEmittedValue.current = outerValue as string;\n }, [outerValue]);\n\n useUpdateEffect(() => {\n setError(error ?? null);\n }, [error]);\n\n useUpdateEffect(() => {\n if (onError) onError(stateError);\n }, [stateError]);\n\n const shoutOnChange = React.useCallback(\n (newValue: string) => {\n if (newValue !== lastEmittedValue.current && onChange) {\n lastEmittedValue.current = newValue;\n return onChange(newValue);\n }\n return true;\n },\n [onChange],\n );\n\n const setCalendarValue = React.useCallback(\n (value: string, nocheck?: boolean) => {\n if (value === '') {\n void shoutOnChange('');\n setInputValue('');\n return;\n }\n let newDate: dayjs.Dayjs;\n if (value !== '') {\n // format cal needs: Tue Feb 09 2021 00:00:00 GMT-0300\n newDate = dayjs(value, dateFormat);\n if (!newDate.isValid()) newDate = dayjs(new Date());\n } else {\n newDate = dayjs(new Date());\n }\n const formattedDate = newDate.format(dateFormat);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (formattedDate !== inputValue && nocheck !== true) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_INVALID_DATE);\n } else if (allowPickBeforeToday === false && newDate.isBefore(today)) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_FEC_FIN_MAY_FEC_INI);\n } else {\n const shoutResult = shoutOnChange(value === '' ? '' : formattedDate);\n if (shoutResult === false) {\n setInputValue(shoutResult || '');\n setError(null);\n } else if (typeof shoutResult === 'string') {\n setInputValue('');\n setError(shoutResult);\n } else {\n setInputValue(formattedDate);\n setError(null);\n }\n }\n },\n [allowPickBeforeToday, inputValue, shoutOnChange],\n );\n\n const selectDate = React.useCallback(\n (val: Date): void => {\n hide();\n const newValue = dayjs(val).format(dateFormat);\n setCalendarValue(newValue, true);\n },\n [hide, setCalendarValue],\n );\n\n const onCloseCalendarModal = React.useCallback(() => {\n hide();\n }, [hide]);\n\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n if (\n onBlur &&\n !isChild(ev.relatedTarget as HTMLElement, (current) => {\n return (\n current.id === `DateModal${id}` || current.id === `DateInput${id}`\n );\n })\n ) {\n onBlur(ev);\n }\n },\n [id, onBlur],\n );\n\n const inputProps = React.useMemo(\n () => ({\n ...props,\n className: 'dateInput',\n value: renderLabel ? renderLabel(inputValue) : inputValue,\n ref,\n onChange: (ev: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(ev.target.value);\n if (\n getMaskForDateFormat().replaceAll('9', DEFAULT_MASK_PLACEHOLDER) !==\n ev.target.value &&\n ev.target.value !== ''\n )\n setError(null);\n },\n onBlur: (ev: React.FocusEvent<HTMLInputElement>) => {\n if (!(props.readOnly || getCustomMask))\n setCalendarValue(ev.target.value);\n handleBlur(ev);\n },\n onKeyDown: (ev: React.KeyboardEvent) => {\n if (ev.key === 'Enter') setCalendarValue(inputValue);\n },\n }),\n [\n getCustomMask,\n handleBlur,\n inputValue,\n props,\n ref,\n renderLabel,\n setCalendarValue,\n ],\n );\n\n const buttonProps = React.useMemo(\n () => ({\n disabled: props.disabled ?? props.readOnly,\n 'aria-label': window.LBL_PICK_DATE,\n ...outerButtonProps,\n }),\n [outerButtonProps, props.disabled, props.readOnly],\n );\n\n const additionalButtons = React.useMemo(\n () => (\n <Close\n className=\"delete_date_button\"\n onClick={() => {\n setCalendarValue('');\n onDelete?.();\n (\n document.querySelector(\n `#DateInput${id} input`,\n ) as HTMLInputElement\n )?.focus();\n }}\n type=\"button\"\n />\n ),\n [id, onDelete, setCalendarValue],\n );\n\n return (\n <>\n <CalendarModal\n {...modalProps}\n calValue={calValue}\n locale={DEFAULT_LOCALE}\n handleClickDay={selectDate}\n onCancel={onCloseCalendarModal}\n id={`DateModal${id}`}\n />\n <Box\n {...getVariant('forms.dateInput')}\n className={`${className ?? ''} dateInput`}\n id={`DateInput${id}`}\n ref={boxRef}\n >\n <IconInput\n additionalButtons={\n inputValue &&\n inputValue !==\n getMaskForDateFormat().replaceAll(\n '9',\n DEFAULT_MASK_PLACEHOLDER,\n ) &&\n !props.readOnly &&\n !props.disabled\n ? additionalButtons\n : undefined\n }\n isLoading={isLoading}\n maskPlaceholder={DEFAULT_MASK_PLACEHOLDER}\n mask={getCustomMask ? getCustomMask() : getMaskForDateFormat()}\n icon={icons.Calendar}\n onBlur={handleBlur}\n buttonProps={buttonProps}\n inputProps={inputProps}\n readOnly={props.readOnly}\n sx={getFieldErrorStyles(stateError === null)}\n onClick={show}\n />\n {stateError && <FieldErrorMessage>{stateError}</FieldErrorMessage>}\n </Box>\n </>\n );\n },\n);\n\nDateInput.displayName = 'DateInput';\n","/**\n * El NumberInput respeta los parámetros de ambiente:\n * - AMOUNT_DECIMAL_SEPARATOR\n * - AMOUNT_DECIMAL_ZEROS\n * - CHAR_DECIMAL_SEPARATOR\n * - CHAR_THOUS_SEPARATOR\n * - ADD_THOUSAND_SEPARATOR\n */\n\nimport React from 'react';\nimport { Input, InputProps } from 'theme-ui';\n\nexport type TNumberInputChangeEvent = { error: boolean; value: string };\n\nexport type TNumberInput = Omit<\n InputProps,\n 'type' | 'onChange' | 'onBlur' | 'value' | 'defaultValue'\n> & {\n onChange?: (ev: TNumberInputChangeEvent) => unknown;\n value?: string;\n defaultValue?: string;\n avoidDecimalRestriction?: boolean;\n};\n\nfunction fillZeros(amount: number) {\n return Array(Math.max(0, amount)).fill(0).join('');\n}\n\nfunction fillThousandsZeros(value: number) {\n const stringValue = String(value);\n return `${fillZeros(3 - stringValue.length)}${String(value)}`;\n}\n\nconst decimalCount = Number(window.AMOUNT_DECIMAL_SEPARATOR);\nconst decimalZeros = Number(window.AMOUNT_DECIMAL_ZEROS);\nconst decimalSeparator = window.CHAR_DECIMAL_SEPARATOR;\nconst thousandsSeparator = window.CHAR_THOUS_SEPARATOR;\nconst regexpThousandsSeparator =\n thousandsSeparator === '.' ? '\\\\.' : thousandsSeparator;\nconst regexpDecimalSeparator =\n decimalSeparator === '.' ? '\\\\.' : decimalSeparator;\nconst shouldRound = false;\n\nexport function parseNumberInputValueToNumber(value: string): number {\n return Number.parseFloat(\n value.replaceAll(thousandsSeparator, '').replaceAll(decimalSeparator, '.'),\n );\n}\n\nexport function parseNumberValueToNumberInput(value: string | number): string {\n const stringNumber = String(value);\n const result = stringNumber.match(/(-?)(\\d+)(?:\\.(\\d+))/);\n if (!result) return '';\n\n const isNegative = !!result[1];\n const integer = result[2];\n const decimals = result[3] as string | null;\n const decimalsString = decimals ? `${regexpDecimalSeparator}${decimals}` : '';\n\n return (\n formatValueToShow(`${isNegative ? '-' : ''}${integer}${decimalsString}`) ??\n ''\n );\n}\n\nfunction formatValueToShow(\n value: string,\n avoidDecimalRestriction = false,\n): string | null {\n const result = value.match(\n new RegExp(\n `^(-)?((?:(?:\\\\d{1,3})${regexpThousandsSeparator}(?:\\\\d{3}${regexpThousandsSeparator})*(?:\\\\d{3}))?|(?:\\\\d*))(?:(?:${regexpDecimalSeparator})(\\\\d+))?$`,\n ),\n );\n if (!result) return null;\n\n const isNegative = !!result[1];\n let module = Number(result[2].replaceAll(thousandsSeparator, ''));\n const slicedDecimals = avoidDecimalRestriction\n ? result[3]\n : result[3]?.slice(0, decimalCount + 1) ?? '';\n let decimalsString: string;\n if (!avoidDecimalRestriction) {\n const noZeroDecimals =\n (slicedDecimals\n ? `${String(\n Math.round(\n Number(\n `${slicedDecimals}${fillZeros(\n (shouldRound ? decimalCount + 1 : decimalCount) -\n slicedDecimals.length,\n )}`,\n ) / (shouldRound ? 10 : 1),\n ),\n )}`\n : ''\n )\n .slice(0, decimalCount)\n .match(/(\\d*[1-9])0*/)?.[1] ?? '';\n decimalsString = `${noZeroDecimals}${fillZeros(\n decimalZeros - noZeroDecimals.length,\n )}`;\n } else {\n decimalsString = slicedDecimals;\n }\n\n const finalNumberString: string[] = [];\n while (module >= 1000) {\n module /= 1000;\n const truncedInteger = Math.trunc(module);\n finalNumberString.unshift(\n fillThousandsZeros(Math.round((module - truncedInteger) * 1000)),\n );\n module = truncedInteger;\n }\n finalNumberString.unshift(String(module));\n\n return `${isNegative ? '-' : ''}${finalNumberString.join(\n window.ADD_THOUSAND_SEPARATOR ? window.CHAR_THOUS_SEPARATOR : '',\n )}${decimalsString.length > 0 ? `${decimalSeparator}${decimalsString}` : ''}`;\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, TNumberInput>(\n ({ value, avoidDecimalRestriction, ...props }, ref) => {\n const [actualValue, setActualValue] = React.useState<string>('');\n const [showValue, setShowValue] = React.useState<string>('');\n const lastEmittedValue = React.useRef<string>('');\n\n const setValue = React.useCallback(\n (newValue: string) => {\n if (newValue === '') {\n if (newValue === lastEmittedValue.current) return;\n setActualValue('');\n setShowValue('');\n props.onChange?.({ value: '', error: false });\n } else {\n const parsedValue = formatValueToShow(\n newValue,\n avoidDecimalRestriction,\n );\n if (parsedValue === null) {\n setActualValue('');\n setShowValue('');\n props.onChange?.({ value: '', error: true });\n } else {\n if (newValue === lastEmittedValue.current) return;\n setActualValue(newValue);\n setShowValue(parsedValue);\n props.onChange?.({ value: parsedValue, error: false });\n }\n }\n lastEmittedValue.current = newValue;\n },\n [avoidDecimalRestriction, props],\n );\n\n React.useEffect(() => {\n if (value !== actualValue) setValue((value as string) ?? '');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <Input\n {...props}\n onFocus={React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n props.onFocus?.(ev);\n setShowValue(\n String(actualValue).replaceAll(thousandsSeparator, ''),\n );\n },\n [actualValue, props],\n )}\n onBlur={React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n setValue(ev.target.value);\n },\n [setValue],\n )}\n onChange={React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>) => {\n setShowValue(ev.target.value);\n },\n [],\n )}\n type=\"text\"\n ref={ref}\n value={showValue}\n />\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n","import { getLabel } from '@apia/util';\n\nexport interface IRequiredMark {\n isFormReadonly?: boolean;\n isRequired?: boolean;\n isReadonly?: boolean;\n}\n\n/**\n * Muestra el * en los campos de requerido.\n */\nexport const RequiredMark = ({\n isFormReadonly = false,\n isRequired = false,\n isReadonly = false,\n}: IRequiredMark) => {\n return isRequired && !isReadonly && !isFormReadonly ? (\n <abbr className=\"required\" title={getLabel('MSG_REQ_FIELD').text}>\n *\n </abbr>\n ) : null;\n};\n","import { useUpdateEffect } from 'ahooks';\nimport * as React from 'react';\nimport { IApiaFilter } from './ApiaFilter';\nimport { DateInput, getFieldErrorStyles } from '../forms';\n\nconst NoMemoApiaDateFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<string>(String(filter.currentValue));\n const [lastDispatchedValue, setLastDispatchedValue] = React.useState<string>(\n String(filter.currentValue),\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n useUpdateEffect(() => {\n setValue(filter.currentValue as string);\n }, [filter.currentValue]);\n\n return (\n <DateInput\n value={value}\n sx={getFieldErrorStyles(!filter.error)}\n aria-label={filter.toolTip}\n ref={ref as React.Ref<HTMLInputElement>}\n placeholder={filter.placeholder}\n onChange={(ev) => {\n if (onChange) {\n const result = onChange(String(ev));\n if (result === true) {\n setValue(ev);\n return true;\n }\n return result as string | false | void;\n }\n return false;\n }}\n onClick={handleClick}\n onBlur={() => {\n if (value !== lastDispatchedValue && onBlur) {\n setLastDispatchedValue(value);\n setValue(value);\n onBlur(value);\n }\n }}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter' && onPressEnter) {\n setLastDispatchedValue(value);\n onPressEnter(value);\n }\n }}\n />\n );\n};\n\nexport const ApiaDateFilter = React.forwardRef(NoMemoApiaDateFilter);\n","import { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ForwardedRef } from 'react';\nimport * as React from 'react';\nimport { Input, Select } from 'theme-ui';\nimport { getVariant } from '@apia/theme';\nimport {\n TNumberInputChangeEvent,\n NumberInput,\n getFieldErrorStyles,\n} from '../forms';\nimport { ApiaDateFilter } from './ApiaDateFilter';\n\nexport interface IApiaFilter {\n filter: TApiaFilter;\n onBlur?: (ev: TApiaFilterValue) => void;\n onChange?: (\n ev: TApiaFilterValue,\n ) => void | boolean | string | Promise<boolean | string>;\n onPressEnter?: (ev: TApiaFilterValue) => void;\n}\n\nconst NoMemoApiaFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<TApiaFilterValue>(\n filter.currentValue ?? '',\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n const [lastEmittedValue, setLastEmittedValue] =\n React.useState<TApiaFilterValue>(filter.currentValue);\n\n const filterCurrentValue = filter?.currentValue;\n React.useEffect(() => {\n if (filterCurrentValue === '') {\n setValue(String(filterCurrentValue));\n setLastEmittedValue(String(filterCurrentValue));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter?.deleteFiltersTimestamp]);\n\n if (filter) {\n const handleChange = (\n ev: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n ) => {\n if (\n (onChange && onChange(String(ev.target.value)) !== false) ||\n !onChange\n )\n setValue(String(ev.target.value));\n };\n const handleNumberChange = (ev: TNumberInputChangeEvent) => {\n if ((onChange && onChange(String(ev.value)) !== false) || !onChange)\n setValue(String(ev.value));\n };\n const handleBlur = (\n ev:\n | React.ChangeEvent<HTMLInputElement | HTMLSelectElement>\n | React.KeyboardEvent,\n ) => {\n if (onBlur && lastEmittedValue !== value) {\n setLastEmittedValue(value);\n onBlur((ev.target as HTMLInputElement).value);\n }\n };\n\n const sortedOptions = filter.sortCombo\n ? [...(filter.options ?? [])].sort((a, b) => (a.label > b.label ? 1 : -1))\n : filter.options;\n const options = sortedOptions?.map((option) => {\n return (\n <option value={option.value} key={option.value ?? option.label ?? ' '}>\n {option.label}\n </option>\n );\n });\n\n if (filter.type === 'date' || filter.type === 'D')\n return (\n <ApiaDateFilter\n filter={filter}\n onChange={onChange}\n onBlur={onBlur}\n onPressEnter={onPressEnter}\n ref={ref}\n />\n );\n\n if (filter.type === 'apiaNumber') {\n return (\n <NumberInput\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value as string}\n placeholder={filter.placeholder}\n onChange={handleNumberChange}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n\n return filter.options ? (\n <Select\n aria-readonly={filter.readonly}\n disabled={filter.readonly}\n onChange={handleChange}\n onBlur={handleBlur}\n value={value}\n className={`\"filter\" ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLSelectElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n onClick={handleClick}\n placeholder={filter.placeholder}\n sx={getFieldErrorStyles(!filter.error)}\n name={filter.id as string}\n >\n {options}\n </Select>\n ) : (\n <Input\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value}\n type={(filter.type === 'N' ? 'number' : filter.type) ?? 'text'}\n placeholder={filter.placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n return null;\n};\n\nexport const ApiaFilter = React.memo(React.forwardRef(NoMemoApiaFilter));\n","import { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {};\n","import React from 'react';\nimport { Box, Button } from 'theme-ui';\nimport { isFunction, uniqueId } from 'lodash-es';\nimport {\n customEvents,\n persistentStorage,\n enableChildrenFocus,\n disableChildrenFocus as disableChildrenFocusMethod,\n useUpdateEffect,\n} from '@apia/util';\nimport { getVariant, injectStyles } from '@apia/theme';\nimport AnimateHeight from 'react-animate-height';\nimport { styles } from './styles';\nimport { ICollapsiblePanel } from './types';\nimport { Icon } from '@apia/icons';\n\ninjectStyles('layout.common.components.collapsiblePanel', styles);\n\nexport const CollapsiblePanel = React.forwardRef<\n HTMLDivElement,\n ICollapsiblePanel\n>(\n (\n {\n children,\n className,\n closedIcon = 'ArrowDown',\n collapsed,\n defaultCollapsed,\n disableChildrenFocus,\n iconSize = 'iconxs',\n id,\n onClose,\n onOpen,\n openIcon = 'ArrowRight',\n label,\n titleButtons,\n minHeight = 0,\n },\n outerRef,\n ) => {\n const prefix = React.useMemo(() => uniqueId(), []);\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n defaultCollapsed ??\n collapsed ??\n (persistentStorage[`collapsiblePanel${actualId}`] as boolean),\n );\n\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n\n const callOnOpen = React.useCallback(\n (updateState: unknown, ev?: React.MouseEvent) => {\n const onOpenResult = onOpen ? onOpen(ev) : null;\n if (onOpenResult) {\n void onOpenResult.then((result) => {\n if (result) if (updateState) setIsCollapsed((current) => !current);\n });\n } else if (updateState) setIsCollapsed((current) => !current);\n },\n [onOpen],\n );\n\n useUpdateEffect(() => {\n if (collapsed !== undefined) setIsCollapsed(collapsed);\n if (collapsed === false) callOnOpen(false);\n }, [collapsed]);\n\n useUpdateEffect(() => {\n if (isCollapsed) {\n if (onClose) onClose();\n persistentStorage[`collapsiblePanel${actualId}`] = true;\n if (ref && disableChildrenFocus)\n disableChildrenFocusMethod(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n } else {\n persistentStorage[`collapsiblePanel${actualId}`] = false;\n if (ref && disableChildrenFocus)\n enableChildrenFocus(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n }\n }, [isCollapsed]);\n\n React.useEffect(() => {\n const handleCustomFocus = () => setIsCollapsed(false);\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.addEventListener(customEvents.focus, handleCustomFocus);\n return () => {\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.removeEventListener(customEvents.focus, handleCustomFocus);\n };\n }, [id, isCollapsed, onClose, onOpen, ref]);\n\n return (\n <Box\n className={`collapsiblePanel ${className ?? ''}`}\n {...getVariant('layout.common.components.collapsiblePanel')}\n ref={(el: HTMLDivElement) => {\n if (isFunction(outerRef)) outerRef(el);\n setRef(el);\n }}\n >\n <Box className=\"collapsiblePanel__label\">\n <Button\n {...getVariant('inherit')}\n aria-expanded={!isCollapsed}\n onClick={(ev) => callOnOpen(true, ev)}\n type=\"button\"\n className=\"collapsiblePanel__label__button\"\n onKeyDown={console.log}\n >\n {isCollapsed ? (\n <Icon title=\"\" icon={openIcon} size={iconSize} />\n ) : (\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\n )}\n {label}\n </Button>\n {titleButtons}\n </Box>\n <AnimateHeight\n id={actualId}\n duration={150}\n height={isCollapsed ? minHeight : 'auto'}\n sx={{ '&>div': { display: 'block ' } }}\n aria-hidden={isCollapsed}\n className=\"collapsiblePanel__content\"\n >\n {children}\n </AnimateHeight>\n </Box>\n );\n },\n);\n\nCollapsiblePanel.displayName = 'CollapsiblePanel';\n","import { findScrollContainer } from '@apia/util';\r\nimport { TDistinctors } from '@apia/dom-store';\r\n\r\nexport type TRowDistinctions = {\r\n rowIndex: number;\r\n};\r\n\r\nexport type TListboxState = {\r\n /**\r\n * El múltipleSearch está de acuerdo a la especificación de wai-aria. Está\r\n * habilitado por defecto e implica que si el usuario presiona una \"rápida\r\n * sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la cadena\r\n * introducida.\r\n */\r\n allowMultipleCharacterSearch?: boolean;\r\n allowSelection: boolean;\r\n /**\r\n * El singleCharacterSearch está de acuerdo a la especificación de wai-aria.\r\n * Está habilitado por defecto e implica que si el usuario presiona una\r\n * \"lenta sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la letra\r\n * introducida.\r\n */\r\n allowSingleCharacterSearch?: boolean;\r\n focusedRow: number;\r\n hiddenRows: number[];\r\n id: string;\r\n isEverythingSelected: boolean;\r\n isMultipleSelection: boolean;\r\n lastSelectedRow: number;\r\n rowsCount: number;\r\n /**\r\n * La función de búsqueda debe tomar el label de un campo y el texto\r\n * introducido en el campo de búsqueda y determinar si el mismo debe ser\r\n * mostrado o no. Por defecto, se usa una función de matcheo estricto.\r\n */\r\n searchFunction: (label: string, searchString: string) => boolean;\r\n selectedRows: number[];\r\n shownRows: number[];\r\n showSearchbox: boolean;\r\n /**\r\n * Este método permite determinar si un elemento comienza con una cadena de\r\n * texto en particular. Por defecto se usa String.startsWith, sin embargo se\r\n * permite el pasaje de este método para situaciones particulares, ejemplo\r\n * si se deseara incluir elementos sin tomar en cuenta los espacios.\r\n */\r\n startsWithFunction: (label: string, searchString: string) => boolean;\r\n typing: string | null;\r\n};\r\n\r\nexport function makeRowKey(rowIndex: TRowDistinctions | number) {\r\n return `row_${typeof rowIndex === 'number' ? rowIndex : rowIndex.rowIndex}`;\r\n}\r\n\r\nlet uniqueidIndex = 0;\r\nexport function uniqueId(prefix?: string) {\r\n return `${prefix ?? ''}${uniqueidIndex++}`;\r\n}\r\n\r\nfunction getDistinctors(storeId: string): TDistinctors<TListboxState> {\r\n return {\r\n listbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n etc: {\r\n 'aria-activedescendant': `${storeId}__row__${state.focusedRow}`,\r\n },\r\n };\r\n },\r\n ],\r\n row: [\r\n (distinctions: TRowDistinctions, state) => {\r\n return {\r\n classList: {\r\n add: [\r\n 'listbox__row',\r\n state.focusedRow === distinctions.rowIndex ? 'focused' : '',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? 'selected'\r\n : '',\r\n ],\r\n remove: [\r\n state.focusedRow === distinctions.rowIndex ? '' : 'focused',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? ''\r\n : 'selected',\r\n ],\r\n },\r\n dataset: {\r\n add: {\r\n focused: state.focusedRow === distinctions.rowIndex,\r\n },\r\n },\r\n etc: {\r\n ...(state.allowSelection\r\n ? {\r\n 'aria-selected': state.selectedRows.includes(\r\n distinctions.rowIndex,\r\n ),\r\n }\r\n : null),\r\n id: `${storeId}__row__${distinctions.rowIndex}`,\r\n },\r\n };\r\n },\r\n (prevState: TListboxState, nextState: TListboxState) => {\r\n const element = document.querySelector<HTMLElement>(\r\n `#${storeId} .listbox__row[data-focused=\"true\"]`,\r\n );\r\n\r\n if (element) {\r\n element.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n\r\n if (prevState.focusedRow > nextState.focusedRow) {\r\n const scrollContainer = findScrollContainer(element);\r\n\r\n if (scrollContainer) {\r\n scrollContainer.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n const elRect = element.getBoundingClientRect();\r\n const contRect = scrollContainer.getBoundingClientRect();\r\n\r\n if (elRect.top - contRect.top < elRect.height)\r\n scrollContainer.scrollTop -= elRect.height;\r\n }\r\n }\r\n }\r\n },\r\n ],\r\n searchbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n classList: { add: ['listbox__searchbox'] },\r\n etc: {\r\n 'aria-activedescendant': `${storeId}__row__${state.focusedRow}`,\r\n },\r\n };\r\n },\r\n ],\r\n };\r\n}\r\nconst defaultState: Omit<\r\n TListboxState,\r\n 'id' | 'showSearchbox' | 'shownRows' | 'searchFunction' | 'startsWithFunction'\r\n> = {\r\n allowSelection: true,\r\n focusedRow: 0,\r\n hiddenRows: [],\r\n isEverythingSelected: false,\r\n isMultipleSelection: false,\r\n lastSelectedRow: -1,\r\n rowsCount: 0,\r\n selectedRows: [],\r\n typing: null,\r\n};\r\n\r\nconst keysMakers = {\r\n row: makeRowKey,\r\n listbox: () => 'listbox',\r\n searchbox: () => 'searchbox',\r\n};\r\n\r\nfunction getInitialState(\r\n initialState: Partial<TListboxState> &\r\n Pick<TListboxState, 'id' | 'showSearchbox'>,\r\n): TListboxState {\r\n return {\r\n ...defaultState,\r\n ...initialState,\r\n\r\n searchFunction:\r\n initialState.searchFunction ??\r\n ((label, searchString) => !!label.match(new RegExp(searchString))),\r\n\r\n startsWithFunction:\r\n initialState.startsWithFunction ??\r\n ((label, searchString) => {\r\n return label.startsWith(searchString);\r\n }),\r\n\r\n shownRows: new Array(initialState.rowsCount ?? 0).fill(1).map((_, i) => i),\r\n };\r\n}\r\n\r\nexport { getDistinctors, getInitialState, keysMakers };\r\n","import { KeyboardEvent, MouseEvent, ReactNode, createContext } from 'react';\r\nimport {\r\n TActionsMap,\r\n TUseProperties,\r\n TDistinctorProperties,\r\n} from '@apia/dom-store';\r\nimport { TListboxState, TRowDistinctions } from './common';\r\nimport { operations } from './operations';\r\nimport { TOnConfirmSelection, TOnSelectionChange } from '.';\r\nimport { BoxProps } from 'theme-ui';\r\n\r\nexport type TListbox = {\r\n children: ReactNode | ReactNode[];\r\n className?: string;\r\n /**\r\n * Permite remover los estilos por defecto de la lista a fin de personalizar\r\n * su aspecto\r\n */\r\n unstyled?: boolean;\r\n onClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n onDoubleClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n /**\r\n * Este evento es lanzado cuando el usuario estando en foco en la lista\r\n * presiona:\r\n *\r\n * - Enter si la selección múltiple está deshabilitada\r\n * - ctrl+Enter si la selección múltiple está habilitada\r\n */\r\n onConfirmSelection?: (ev: TOnConfirmSelection) => unknown;\r\n onPressEnterOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onPressKeyOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onSelectionChange?: (ev: TOnSelectionChange) => unknown;\r\n /**\r\n * onKeyDown e id no son permitidas dado que se usan para generar el\r\n * comportamiento correcto del componente\r\n */\r\n ulProps?: Omit<BoxProps, 'id' | 'onKeyDown'>;\r\n} & Partial<\r\n Pick<\r\n TListboxState,\r\n | 'allowMultipleCharacterSearch'\r\n | 'allowSelection'\r\n | 'allowSingleCharacterSearch'\r\n | 'isMultipleSelection'\r\n | 'searchFunction'\r\n | 'startsWithFunction'\r\n | 'showSearchbox'\r\n >\r\n>;\r\n\r\nexport type TListboxContext = {\r\n getState: () => TListboxState;\r\n id: string;\r\n listboxActions: TActionsMap<TListboxState, typeof operations>;\r\n useListbox: TUseProperties<\r\n TListboxState,\r\n {\r\n row: [\r\n (\r\n distinctions: TRowDistinctions,\r\n state: TListboxState,\r\n ) => TDistinctorProperties,\r\n ];\r\n searchbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n listbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n }\r\n >;\r\n variant: string;\r\n} & Pick<\r\n TListbox,\r\n | 'onClickNode'\r\n | 'onConfirmSelection'\r\n | 'onDoubleClickNode'\r\n | 'onPressEnterOnNode'\r\n | 'onPressKeyOnNode'\r\n>;\r\n\r\nconst ListboxContext = createContext<TListboxContext>({} as TListboxContext);\r\n\r\nexport { ListboxContext };\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n FC,\r\n MouseEvent,\r\n ReactNode,\r\n memo,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext } from './ListboxContext';\r\nimport { BoxProps } from 'theme-ui';\r\n\r\nexport type TListboxItem = {\r\n children: ReactNode;\r\n rowIndex?: number;\r\n} & BoxProps & {\r\n /**\r\n * El label se usa en aria-label por motivos de accesibilidad y además en\r\n * la funcionalidad de búsqueda.\r\n */\r\n label: string;\r\n };\r\n\r\nexport const ListboxItem: FC<TListboxItem> = memo(\r\n ({ children, rowIndex: outerRowIndex, label, ...domProps }) => {\r\n const {\r\n getState,\r\n listboxActions,\r\n onDoubleClickNode,\r\n onClickNode,\r\n useListbox,\r\n } = useContext(ListboxContext);\r\n const rowIndex = useMemo(() => outerRowIndex ?? -1, [outerRowIndex]);\r\n const ref = useListbox<HTMLLIElement>('row', { rowIndex });\r\n\r\n return (\r\n <li\r\n {...(domProps as any)}\r\n ref={ref}\r\n role=\"option\"\r\n onDoubleClick={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n ev.preventDefault();\r\n onDoubleClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n },\r\n [onDoubleClickNode],\r\n )}\r\n onClick={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n ev.preventDefault();\r\n onClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n },\r\n [onClickNode],\r\n )}\r\n onMouseDown={useCallback(\r\n (ev: MouseEvent) => {\r\n if (\r\n (getState().isMultipleSelection && ev.shiftKey) ||\r\n ev.detail > 1\r\n )\r\n ev.preventDefault();\r\n listboxActions.updateFocusByClickEvent({\r\n rowIndex,\r\n isCtrlKey: ev.ctrlKey,\r\n isShiftKey: ev.shiftKey,\r\n });\r\n },\r\n [getState, listboxActions, rowIndex],\r\n )}\r\n aria-label={label}\r\n title={label}\r\n >\r\n {children}\r\n </li>\r\n );\r\n },\r\n);\r\n\r\nListboxItem.displayName = 'ListboxItem';\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Type-ahead is a behavior pattern which helps the user in the lists and trees\n * (and literally says: \"especially those with more than seven options\")\n * navigation. The literal description in Wai-Aria documentation is:\n *\n * - Type a character: focus moves to the next item with a name that starts\n * with the typed character.\n *\n * - Type multiple characters in rapid succession:\n * focus moves to the next item with a name that starts with the string of\n * characters typed.\n *\n * It is a little arbitrary what is rapid succession. As I couln't find any\n * documentation about what rapid succession means, I will make some tests in\n * order to determine what is more comfortable to accomplish one situation or\n * the other.\n *\n * To callibrate this function it is suficient to override the frequency\n * parameter, which after some tests I understand is best at 2.5 (keys per\n * second).\n */\n\nimport { EventEmitter } from '@apia/util';\nimport { KeyboardEvent } from 'react';\n\nclass WaiTypeAhead extends EventEmitter<{\n multipleKeys: string;\n singleKey: string;\n typeUpdate: string;\n}> {\n frequency = 2.5; // Keys per second\n timeout = 0;\n typing = '';\n\n constructor(props?: {\n onMultipleKeys?: (value: string) => unknown;\n onSingleKey?: (value: string) => unknown;\n onTypeUpdate?: (value: string) => unknown;\n }) {\n super();\n\n const { onMultipleKeys, onSingleKey, onTypeUpdate } = props ?? {};\n\n if (onMultipleKeys) this.on('multipleKeys', onMultipleKeys);\n if (onSingleKey) this.on('singleKey', onSingleKey);\n if (onTypeUpdate) this.on('typeUpdate', onTypeUpdate);\n }\n\n #restoreTimeout() {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(\n this.#shout.bind(this),\n 1000 / this.frequency,\n ) as any;\n }\n\n #shout({ clear } = { clear: true }) {\n if (this.typing.length === 1) {\n this.emit('singleKey', this.typing);\n } else if (this.typing.length > 1) {\n this.emit('multipleKeys', this.typing);\n }\n if (clear) {\n this.typing = '';\n }\n }\n\n type(ev: KeyboardEvent) {\n if (ev.key.match(/^[\\p{L}\\d ]$/u)) {\n ev.preventDefault();\n this.typing = this.typing + ev.key;\n this.emit('typeUpdate', this.typing);\n this.#restoreTimeout();\n } else if (ev.code === 'Backspace') {\n ev.preventDefault();\n this.typing = this.typing.slice(0, -1);\n this.emit('typeUpdate', this.typing);\n this.#restoreTimeout();\n }\n }\n}\n\nexport { WaiTypeAhead };\n","import {\r\n FC,\r\n KeyboardEvent,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { Box } from 'theme-ui';\r\nimport { getVariant } from '@apia/theme';\r\nimport { WaiTypeAhead } from '../waiAriaHelpers';\r\n\r\nconst ListboxKeyhandler: FC<\r\n {\r\n children: ReactNode;\r\n className: string;\r\n } & TListbox['ulProps']\r\n> = ({ children, className }) => {\r\n const {\r\n listboxActions,\r\n id,\r\n getState,\r\n onConfirmSelection,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n variant,\r\n } = useContext(ListboxContext);\r\n\r\n const typer = useMemo(\r\n () =>\r\n getState().showSearchbox\r\n ? null\r\n : new WaiTypeAhead({\r\n onMultipleKeys(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n onSingleKey(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n }),\r\n [getState, listboxActions],\r\n );\r\n\r\n const shoutConfirmSelection = useCallback(\r\n (ev: KeyboardEvent) => {\r\n onConfirmSelection?.({\r\n originalEvent: ev,\r\n selectedElements: !getState().allowSelection\r\n ? []\r\n : getState().selectedRows.map(\r\n (current) =>\r\n document.querySelector<HTMLElement>(\r\n `#${id}__row__${current}`,\r\n ) as HTMLElement,\r\n ),\r\n focusedElement: document.querySelector<HTMLElement>(\r\n `#${id}__row__${getState().focusedRow}`,\r\n ) as HTMLElement,\r\n });\r\n },\r\n [getState, id, onConfirmSelection],\r\n );\r\n\r\n return (\r\n <Box\r\n {...getVariant(variant)}\r\n className={className}\r\n id={id}\r\n onKeyDown={useCallback(\r\n (ev: KeyboardEvent) => {\r\n const cell = (ev.target as HTMLElement)\r\n .closest<HTMLElement>('.listbox')\r\n ?.querySelector<HTMLElement>('.listbox__row.focused');\r\n if (!cell)\r\n throw new Error(\r\n 'There is no cell on keydown event, it must be an error.',\r\n );\r\n\r\n const state = getState();\r\n onPressKeyOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n\r\n if (ev.key === 'Enter') {\r\n onPressEnterOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n }\r\n\r\n if (ev.isDefaultPrevented() || ev.isPropagationStopped()) return;\r\n\r\n if (\r\n ['ArrowDown', 'ArrowUp', 'PageUp', 'PageDown'].includes(ev.code) ||\r\n (['Home', 'End'].includes(ev.code) && ev.ctrlKey) ||\r\n // La selección múltiple cuando no se muestra el searchbox se hace\r\n // con espacio\r\n (['Space'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n !state.showSearchbox) ||\r\n // La selección múltiple siempre puede hacerse con Enter\r\n (['Enter'].includes(ev.code) && state.isMultipleSelection) ||\r\n (['KeyA'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n ev.ctrlKey)\r\n ) {\r\n ev.preventDefault();\r\n\r\n switch (ev.code) {\r\n case 'KeyA':\r\n listboxActions.selectAll();\r\n break;\r\n case 'ArrowDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'next',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'ArrowUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'previous',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Home':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'first',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'End':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'last',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Enter':\r\n if (ev.ctrlKey) {\r\n shoutConfirmSelection(ev);\r\n break;\r\n }\r\n case 'Space':\r\n listboxActions.updateFocusBySpaceEvent({\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageUp',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageDown',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n }\r\n } else if (\r\n ev.code === 'Enter' &&\r\n (!state.allowSelection || !state.isMultipleSelection)\r\n ) {\r\n shoutConfirmSelection(ev);\r\n } else if (typer) {\r\n typer.type(ev);\r\n }\r\n },\r\n [\r\n getState,\r\n listboxActions,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n shoutConfirmSelection,\r\n typer,\r\n ],\r\n )}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nexport { ListboxKeyhandler };\r\n","import { ChangeEvent, FC, ReactNode, useCallback, useContext } from 'react';\nimport { ListboxContext } from './ListboxContext';\nimport { useDebouncedCallback } from '@apia/util';\nimport { Box, BoxProps, Input } from 'theme-ui';\n\nconst Combobox: FC<{ children: ReactNode } & BoxProps> = ({\n children,\n ...props\n}) => {\n const { id, listboxActions, useListbox } = useContext(ListboxContext);\n const run = useDebouncedCallback((ev: ChangeEvent<HTMLInputElement>) => {\n listboxActions.filter({ searchString: ev.target.value });\n });\n\n const ref = useListbox<HTMLInputElement>('searchbox', null);\n\n return (\n <>\n <Input\n ref={ref}\n type=\"text\"\n id={`${id}__searchbox`}\n placeholder=\"Search...\"\n aria-autocomplete=\"list\"\n aria-controls={`${id}__list__container`}\n role=\"combobox\"\n aria-expanded\n aria-haspopup=\"listbox\"\n onChange={run}\n autoComplete=\"off\"\n />\n <Box\n as=\"ul\"\n id={`${id}__list__container`}\n role=\"listbox\"\n className=\"listbox__list\"\n {...props}\n onClick={useCallback(() => {\n if (\n document.activeElement !==\n document.getElementById(`${id}__searchbox`)\n )\n document.getElementById(`${id}__searchbox`)?.focus();\n }, [id])}\n >\n {children}\n </Box>\n </>\n );\n};\n\nexport { Combobox };\n","import { focusOutline, getColorState } from '@apia/theme';\nimport { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {\n '&:focus-within': {\n '.listbox__list': {\n outline: 'none',\n },\n\n '.focused': focusOutline,\n\n '&.withSearchbox': {\n '.focused': {\n outline: '1px solid',\n outlineColor: 'palette.border.field',\n outlineOffset: 0,\n },\n '.listbox__searchbox': focusOutline,\n },\n },\n\n '.listbox__list': {\n listStyle: 'none',\n m: 0,\n p: 0,\n },\n\n '&.withSearchbox': {\n '.listbox__list': {\n maxHeight: 'calc(100vh - 80px)',\n overflow: 'auto',\n },\n },\n\n '.listbox__row': {\n '&:hover': getColorState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n },\n};\n","import { Draft, TKeysDefine } from '@apia/dom-store';\nimport { TListboxState, makeRowKey } from './common';\nimport { addBoundary, getIndex } from '@apia/util';\n\ntype TListboxOperation<Payload> = (\n state: Draft<TListboxState>,\n payload: Payload,\n keys: TKeysDefine,\n) => void;\n\nconst filter: TListboxOperation<{\n searchString: string;\n}> = makeOperation((state, { searchString }, keys) => {\n let focusChanged = false;\n const rows = new Array(state.rowsCount).fill(1).map((_, i) => i);\n\n const shownRows: number[] = [];\n const hiddenRows = rows.filter((_, i) => {\n const el = document.getElementById(`${state.id}__row__${i}`);\n if (!el) {\n console.warn('Element not found', `${state.id}__row__${i}`);\n return false;\n }\n\n const matches = state.searchFunction(el.ariaLabel ?? '', searchString);\n\n if (matches) {\n el.style.display = 'block';\n } else {\n el.style.display = 'none';\n }\n\n if (matches) shownRows.push(i);\n else if (state.focusedRow === i) {\n focusChanged = true;\n }\n\n return !matches;\n });\n keys.set(hiddenRows.map((current) => makeRowKey(current)));\n state.hiddenRows = hiddenRows;\n state.shownRows = shownRows;\n\n if (focusChanged) {\n for (const row of rows) {\n if (!hiddenRows.includes(row)) {\n state.focusedRow = row;\n keys.push(makeRowKey(row));\n keys.push(makeRowKey(state.focusedRow));\n break;\n }\n }\n }\n});\n\nfunction makeOperation<T>(operation: TListboxOperation<T>) {\n const method: TListboxOperation<T> = (state, payload, keys) => {\n keys.push('searchbox');\n keys.push('listbox');\n operation(state, payload, keys);\n };\n return method;\n}\n\nconst moveFocusAndToggleSelection: TListboxOperation<{\n isShiftKey: boolean;\n which: 'next' | 'previous' | 'first' | 'last' | 'pageUp' | 'pageDown';\n}> = makeOperation((state, { isShiftKey, which }, keys) => {\n if (state.shownRows.length <= 1) {\n keys.push(makeRowKey(state.focusedRow));\n state.focusedRow = state.shownRows[0];\n\n if (state.shownRows.length === 1) keys.push(makeRowKey(state.focusedRow));\n\n return;\n }\n\n switch (which) {\n case 'first':\n {\n const newFocused = state.shownRows[0];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n const selectedElements = new Array(state.focusedRow + 1)\n .fill(1)\n .map((_, i) => i);\n keys.set(selectedElements.map((_, i) => makeRowKey(i)));\n state.selectedRows = selectedElements;\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n case 'last':\n {\n const newFocused = state.shownRows[state.shownRows.length - 1];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n const selectedElements = new Array(\n state.rowsCount - state.focusedRow,\n )\n .fill(1)\n .map((_, i) => i + Math.min(newFocused, state.focusedRow));\n keys.push(...selectedElements.map((i) => makeRowKey(i)));\n state.selectedRows = selectedElements;\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n case 'previous':\n case 'next':\n case 'pageDown':\n case 'pageUp':\n {\n const sum = getIndex(\n [-1, 1, -10, 10],\n [\n which === 'previous',\n which === 'next',\n which === 'pageUp',\n which === 'pageDown',\n ],\n );\n\n const currentIndex = state.shownRows.findIndex(\n (current) => state.focusedRow === current,\n );\n const newFocused =\n state.shownRows[\n addBoundary({\n number: currentIndex + sum,\n min: 0,\n max: state.shownRows.length - 1,\n })\n ];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n if (state.selectedRows.includes(newFocused)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== newFocused,\n );\n } else {\n state.selectedRows.push(newFocused);\n }\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n }\n state.isEverythingSelected = false;\n});\n\nconst searchElementsByStartingCharacters: TListboxOperation<{\n characters: string;\n}> = makeOperation((state, payload, keys) => {\n const currentIndex = state.shownRows.findIndex(\n (current) => current === state.focusedRow,\n );\n\n function match(rowIndex: number) {\n keys.push(makeRowKey(state.focusedRow));\n\n state.focusedRow = rowIndex;\n\n if (!state.isMultipleSelection) {\n keys.push(...state.selectedRows.map((current) => makeRowKey(current)));\n state.selectedRows = [rowIndex];\n }\n\n keys.push(makeRowKey(state.focusedRow));\n }\n\n function tryIndex(rowIndex: number) {\n const el = document.getElementById(`${state.id}__row__${rowIndex}`);\n if (!el) {\n console.warn('Element not found', `${state.id}__row__${rowIndex}`);\n return false;\n }\n\n const matches = state.startsWithFunction(\n el.ariaLabel ?? '',\n payload.characters,\n );\n\n if (matches) {\n match(state.shownRows[rowIndex]);\n return true;\n }\n\n return false;\n }\n\n for (let i = currentIndex + 1; i < state.shownRows.length; i++) {\n if (tryIndex(i)) return;\n }\n\n for (let i = 0; i < currentIndex; i++) {\n if (tryIndex(i)) return;\n }\n});\n\n/**\n * No actualiza ningún key porque al llamar a selectAll, todos los elementos\n * son afectados y el comportamiento por defecto del store es actualizar todo\n */\nconst selectAll: TListboxOperation<void> = makeOperation(\n (state, payload, keys) => {\n keys.push(...state.selectedRows.map(makeRowKey));\n if (state.isEverythingSelected) {\n state.isEverythingSelected = false;\n state.selectedRows = [];\n } else {\n state.isEverythingSelected = true;\n state.selectedRows = state.shownRows;\n }\n state.lastSelectedRow = state.focusedRow;\n keys.push(...state.shownRows.map(makeRowKey));\n },\n);\n\nconst setState: TListboxOperation<\n Partial<TListboxState> & { affectedKeys: string[] }\n> = makeOperation((state, { affectedKeys, ...payload }, keys) => {\n const newRowsCount = payload.rowsCount ?? state.rowsCount;\n if (state.rowsCount < newRowsCount) {\n for (let i = state.rowsCount; i < (payload.rowsCount as number); i++) {\n state.shownRows.push(i);\n }\n } else if (state.rowsCount > newRowsCount) {\n state.shownRows = state.shownRows.filter(\n (current) => current < newRowsCount,\n );\n if (state.focusedRow > newRowsCount - 1) {\n state.focusedRow = newRowsCount - 1;\n keys.push(makeRowKey(state.focusedRow));\n }\n state.selectedRows = state.selectedRows.filter(\n (current) => current < newRowsCount,\n );\n }\n\n Object.assign(state, payload);\n keys.set(affectedKeys);\n state.isEverythingSelected = false;\n});\n\nconst updateFocusByClickEvent: TListboxOperation<{\n rowIndex: number;\n isCtrlKey: boolean;\n isShiftKey: boolean;\n}> = makeOperation((state, payload, keys) => {\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(payload.rowIndex));\n\n state.focusedRow = payload.rowIndex;\n if (payload.isShiftKey) {\n updateFocusBySpaceEvent(state, { isShiftKey: payload.isShiftKey }, keys);\n } else {\n state.lastSelectedRow = payload.rowIndex;\n if (payload.isCtrlKey) {\n if (state.selectedRows.includes(payload.rowIndex)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== payload.rowIndex,\n );\n } else {\n state.selectedRows.push(payload.rowIndex);\n }\n } else {\n keys.push(...state.selectedRows.map((current) => makeRowKey(current)));\n state.selectedRows = [state.focusedRow];\n }\n }\n});\n\nconst updateFocusBySpaceEvent: TListboxOperation<{\n isShiftKey: boolean;\n}> = makeOperation((state, { isShiftKey }, keys) => {\n const rowIndex = state.focusedRow;\n keys.push(makeRowKey(rowIndex));\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n if (state.lastSelectedRow === -1) {\n state.selectedRows.push(rowIndex);\n } else {\n const newSelection = new Array(\n Math.abs(state.lastSelectedRow - rowIndex),\n )\n .fill(1)\n .map(\n (_, i) =>\n i +\n Math.min(rowIndex, state.lastSelectedRow) +\n (state.lastSelectedRow > rowIndex ? 0 : 1),\n );\n keys.push(...newSelection.map((current) => makeRowKey(current)));\n newSelection.forEach((current) => {\n if (!state.shownRows.includes(current)) return;\n\n if (state.selectedRows.includes(current)) {\n state.selectedRows = state.selectedRows.filter(\n (search) => search !== current,\n );\n } else {\n state.selectedRows.push(current);\n }\n });\n }\n } else {\n if (state.selectedRows.includes(rowIndex)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== rowIndex,\n );\n } else {\n state.selectedRows.push(rowIndex);\n }\n }\n }\n state.lastSelectedRow = rowIndex;\n});\n\nconst operations = {\n filter,\n /**\n // eslint-disable-next-line comment-length/limit-multi-line-comments\n * **Este método debe llamarse solamente cuando se efectúan acciones desde el\n * teclado**. Su función es controlar el flujo correcto de foco y selección de\n * acuerdo a las especificaciones de wai-aria.\n */\n moveFocusAndToggleSelection,\n /**\n * Este método debe utilizarse para la búsqueda por caracter simple o\n * múltiple en cuanto a la implementación de las funcionalidades\n * especificadas por wai-aria.\n */\n searchElementsByStartingCharacters,\n /**\n * **Método empleado cuando se presiona ctrl+shift+A**. Su función es\n * controlar el flujo correcto de foco y selección de acuerdo a las\n * especificaciones de wai-aria.\n */\n selectAll,\n /**\n * Permite alterar el estado en forma arbitraria. Debe pasarse un array con\n * los keys afectados por la acción efectuada.\n */\n setState,\n /**\n * **Este método debe llamarse solamente cuando se efectúan acciones con el\n * mouse**. Su función es controlar el flujo correcto de foco y selección de\n * acuerdo a las especificaciones de wai-aria.\n */\n updateFocusByClickEvent,\n /**\n * **Este método debe llamarse solamente cuando se efectúan acciones con la\n * tecla espacio**. Su función es controlar el flujo correcto de foco y\n * selección de acuerdo a las especificaciones de wai-aria.\n */\n updateFocusBySpaceEvent,\n};\nexport { operations };\n","import { createFAsomeStore } from '@apia/dom-store';\nimport { useMemo } from 'react';\nimport { getInitialState, getDistinctors, keysMakers } from './common';\nimport { operations } from './operations';\nimport { TListbox } from './ListboxContext';\n\nexport function useStore(\n storeId: string,\n {\n allowMultipleCharacterSearch,\n allowSelection,\n allowSingleCharacterSearch,\n isMultipleSelection,\n searchFunction,\n showSearchbox,\n startsWithFunction,\n }: TListbox,\n) {\n return useMemo(() => {\n const newStore = createFAsomeStore({\n initialState: getInitialState({\n allowSelection: allowSelection ?? true,\n allowMultipleCharacterSearch:\n (allowMultipleCharacterSearch ?? true) && !showSearchbox,\n allowSingleCharacterSearch:\n (allowSingleCharacterSearch ?? true) && !showSearchbox,\n id: storeId,\n isMultipleSelection: !!isMultipleSelection,\n searchFunction,\n showSearchbox: showSearchbox ?? false,\n startsWithFunction,\n }),\n operations,\n distinctors: getDistinctors(storeId),\n keysMakers,\n });\n\n return newStore;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from 'react';\nimport { TRegisterStateChangeListener } from '@apia/dom-store';\nimport { TListbox } from './ListboxContext';\nimport { TListboxState } from './common';\n\nexport function useShoutSelectionChange(\n onSelectionChange: TListbox['onSelectionChange'],\n registerCallback: TRegisterStateChangeListener<TListboxState>,\n) {\n useMemo(\n function shoutSelectionChange() {\n registerCallback((state, previousState) => {\n if (state.selectedRows !== previousState.selectedRows) {\n onSelectionChange?.({\n focusedElement: document.querySelector<HTMLElement>(\n `#${state.id}__row__${state.focusedRow}`,\n ) as HTMLElement,\n selectedElements: state.selectedRows.map((current) => {\n return document.querySelector<HTMLElement>(\n `#${state.id}__row__${current}`,\n ) as HTMLElement;\n }),\n });\n }\n });\n },\n [onSelectionChange, registerCallback],\n );\n}\n","import {\n useMemo,\n Children,\n isValidElement,\n cloneElement,\n ReactElement,\n} from 'react';\nimport { ListboxItem, TListboxItem } from './ListboxItem';\n\nexport function useIndexedChildren(\n children: React.ReactNode | React.ReactNode[],\n) {\n return useMemo(\n function makeChildrenIndices() {\n return Children.map(children, (child, rowIndex) => {\n if (isValidElement(child) && child.type === ListboxItem) {\n return cloneElement<TListboxItem>(\n child as ReactElement<TListboxItem>,\n {\n rowIndex,\n },\n );\n }\n return child;\n });\n },\n [children],\n );\n}\n","import { TGetState } from '@apia/dom-store';\nimport { useCallback } from 'react';\nimport { TListboxState } from './common';\nimport { findScrollContainer } from '@apia/util';\n\nexport function useListboxAutofocus(\n storeId: string,\n getState: TGetState<TListboxState>,\n) {\n return {\n onClick: useCallback(() => {\n if (\n document.activeElement !==\n document.querySelector(`#${storeId} .listbox__list`)\n ) {\n document\n .querySelector<HTMLElement>(`#${storeId} .listbox__list`)\n ?.focus();\n }\n }, [storeId]),\n onFocus: useCallback(() => {\n const focusedRowId = getState().focusedRow + 1;\n const focusedRow = document.querySelector<HTMLElement>(\n `#${storeId} .listbox__list .listbox__row:nth-child(${focusedRowId})`,\n );\n\n if (focusedRow) {\n focusedRow.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n });\n const scrollContainer = findScrollContainer(focusedRow);\n\n if (scrollContainer) {\n scrollContainer.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n });\n const elRect = focusedRow.getBoundingClientRect();\n const contRect = scrollContainer.getBoundingClientRect();\n\n if (elRect.top - contRect.top < elRect.height)\n scrollContainer.scrollTop -= elRect.height;\n }\n }\n }, [getState, storeId]),\n };\n}\n","import { Children, isValidElement, useMemo } from 'react';\nimport { ListboxItem } from './ListboxItem';\nimport { TActionsMap } from '@apia/dom-store';\nimport { TListboxState } from './common';\nimport { operations } from './operations';\n\nexport function useUpdateRowCount(\n children: React.ReactNode | React.ReactNode[],\n listboxActions: TActionsMap<TListboxState, typeof operations>,\n) {\n useMemo(\n function updateRowCount() {\n let count = 0;\n Children.forEach(children, (current) => {\n if (isValidElement(current) && current.type === ListboxItem) count++;\n });\n listboxActions.setState({ rowsCount: count, affectedKeys: [] });\n },\n [listboxActions, children],\n );\n}\n","import { useMemo } from 'react';\nimport { TListboxContext } from './ListboxContext';\n\nexport function useListboxContextValue(props: TListboxContext) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => props, [...Object.values(props)]);\n}\n","import { KeyboardEvent, memo, MouseEvent, useMemo } from 'react';\r\nimport { uniqueId } from './common';\r\nimport { ListboxItem } from './ListboxItem';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { ListboxKeyhandler } from './ListboxKeyhandler';\r\nimport { Combobox } from './Combobox';\r\nimport { makeStyledComponent } from '@apia/theme';\r\nimport { Box } from 'theme-ui';\r\nimport { styles } from './listbox';\r\nimport { useStore } from './useStore';\r\nimport { useShoutSelectionChange } from './useShoutSelectionChange';\r\nimport { useIndexedChildren } from './useIndexedChildren';\r\nimport { useListboxAutofocus } from './useListboxAutofocus';\r\nimport { useUpdateRowCount } from './useUpdateRowCount';\r\nimport { useListboxContextValue } from './useListboxContextValue';\r\n\r\nexport type TOnConfirmSelection = {\r\n originalEvent: KeyboardEvent;\r\n\r\n selectedElements: HTMLElement[];\r\n focusedElement: HTMLElement;\r\n};\r\n\r\nexport type TOnSelectionChange = {\r\n focusedElement: HTMLElement;\r\n selectedElements: HTMLElement[];\r\n};\r\n\r\nexport type TOnClickNode = MouseEvent;\r\n\r\nexport type { TListbox };\r\n\r\nconst NoMemoListbox = makeStyledComponent<TListbox>(\r\n 'Listbox',\r\n 'layout.components.listbox',\r\n styles,\r\n (props: TListbox) => {\r\n const storeId = useMemo(() => uniqueId('Listbox'), []);\r\n const [listboxActions, useListbox, getState, registerCallback] = useStore(\r\n storeId,\r\n props,\r\n );\r\n\r\n useShoutSelectionChange(props.onSelectionChange, registerCallback);\r\n useUpdateRowCount(props.children, listboxActions);\r\n\r\n const indexedChildren = useIndexedChildren(props.children);\r\n const { onClick, onFocus } = useListboxAutofocus(storeId, getState);\r\n const ref = useListbox<HTMLElement>('listbox', null);\r\n const variant = props.unstyled ? '' : 'layout.components.listbox';\r\n const contextValue = useListboxContextValue({\r\n getState,\r\n id: storeId,\r\n listboxActions,\r\n onClickNode: props.onClickNode,\r\n onConfirmSelection: props.onConfirmSelection,\r\n onDoubleClickNode: props.onDoubleClickNode,\r\n onPressEnterOnNode: props.onPressEnterOnNode,\r\n onPressKeyOnNode: props.onPressKeyOnNode,\r\n useListbox,\r\n variant,\r\n });\r\n\r\n return (\r\n <ListboxContext.Provider value={contextValue}>\r\n <ListboxKeyhandler\r\n className={`listbox ${props.showSearchbox ? 'withSearchbox' : ''} ${\r\n props.className ?? ''\r\n }`}\r\n {...props.ulProps}\r\n >\r\n {props.showSearchbox ? (\r\n <Combobox {...props.ulProps}>{indexedChildren}</Combobox>\r\n ) : (\r\n <Box\r\n ref={ref}\r\n as=\"ul\"\r\n className=\"listbox__list\"\r\n role=\"listbox\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onFocus={onFocus}\r\n {...props.ulProps}\r\n >\r\n {indexedChildren}\r\n </Box>\r\n )}\r\n </ListboxKeyhandler>\r\n </ListboxContext.Provider>\r\n );\r\n },\r\n true,\r\n);\r\n\r\nconst Listbox = memo(NoMemoListbox);\r\n\r\nexport { Listbox, ListboxItem };\r\n","import { getVariant } from '@apia/theme';\nimport { FC } from 'react';\nimport { Progress, Label } from 'theme-ui';\n\nexport interface IProgressBar {\n id: string;\n progress?: number;\n loading?: boolean;\n}\n\nconst ProgressBar: FC<IProgressBar> = ({\n id,\n progress = 0,\n loading = false,\n}) => {\n return (\n <>\n <Label\n htmlFor={id}\n sx={{\n display: loading ? 'block' : 'none',\n m: '0px',\n }}\n >\n {`${progress}%`}\n </Label>\n <Progress\n id={id}\n max={100}\n value={progress}\n {...getVariant('styles.progress')}\n sx={{\n display: loading ? 'block' : 'none',\n }}\n >\n {`${progress}%`}\n </Progress>\n </>\n );\n};\n\nexport default ProgressBar;\n","import {\n FunctionComponent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Box } from 'theme-ui';\n\ninterface IMakeResponsiveComponent<P extends Record<string, unknown>> {\n breakPoints: number[];\n Component: FunctionComponent<\n P & { breakPoint: number; breakPointWidth: number; containerWidth: number }\n >;\n /**\n * Este HOC hace un setState cada vez que cambia el ancho del contenedor. Hay\n * situaciones en las que es deseable agregar un debounce a este\n * comportamiento para mejorar la performance. *Por defecto usa 100*\n */\n debounce?: number;\n /**\n * Por defecto usa 4.\n */\n defaultBreakpoint?: number;\n}\n\nfunction calcBreakPoint(currentWidth: number, breakPoints: number[]) {\n let currentIndex = 0;\n\n while (\n currentIndex < breakPoints.length &&\n currentWidth > breakPoints[currentIndex]\n )\n currentIndex++;\n\n return currentIndex;\n}\n\n/**\n * El método makeResponsiveComponent agrega un wrapper alrededor de un\n * componente para conocer el ancho del contenedor del mismo. De esta forma, es\n * fácil predecir qué ancho dispone el mismo para renderizarse y de esa forma\n * poder tomar decisiones de responsividad que no dependen del ancho de la\n * pantalla sino del espacio donde se encuentra.\n */\nexport const makeResponsiveComponent = <P extends Record<string, unknown>>({\n breakPoints,\n Component,\n debounce,\n defaultBreakpoint,\n}: IMakeResponsiveComponent<P>) => {\n return function ResponsiveComponent(\n props: P & { breakPoints?: number[]; defaultBreakPoint?: number },\n ) {\n const [breakPoint, setCurrentBreakpoint] = useState<number>(\n props.defaultBreakPoint ?? defaultBreakpoint ?? 4,\n );\n const containerWidth = useRef(\n breakPoints[props.defaultBreakPoint ?? defaultBreakpoint ?? 4],\n );\n const observer = useRef<ResizeObserver | null>(null);\n const timeout = useRef<number>(0);\n const shouldDisconnect = useRef(false);\n const ref = useCallback(\n (element: HTMLElement) => {\n observer.current?.disconnect();\n observer.current = new ResizeObserver((resizeProps) => {\n if (resizeProps[0].contentRect.width === 0) return;\n\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n containerWidth.current = resizeProps[0].contentRect.width;\n setCurrentBreakpoint(\n calcBreakPoint(\n resizeProps[0].contentRect.width,\n props.breakPoints ?? breakPoints,\n ),\n );\n }, debounce ?? 100) as unknown as number;\n });\n\n if (element) observer.current.observe(element);\n },\n [props.breakPoints],\n );\n\n useEffect(() => {\n shouldDisconnect.current = false;\n\n return () => {\n shouldDisconnect.current = true;\n setTimeout(() => {\n if (shouldDisconnect.current) {\n observer.current?.disconnect();\n }\n /**\n * El timeout tiene un tiempo arbitrariamente alto ya que de esta\n * forma el observer se va a desconectar una vez que el componente\n * se desmonte. Si pusiera un tiempo menor, caería en el riesgo de\n * que se desconecte aún cuando el componente está montado\n */\n }, 2000);\n };\n }, [props.breakPoints]);\n\n return (\n <Box ref={ref}>\n <Component\n {...props}\n breakPoint={breakPoint}\n breakPointWidth={breakPoints[breakPoint]}\n containerWidth={containerWidth.current}\n />\n </Box>\n );\n };\n};\n","import { TDistinctors } from '@apia/dom-store';\nimport { TCellDistinctions, TState } from './types';\n\nexport const distinctors: TDistinctors<TState> = {\n grid: [\n (_: void, state) => {\n return {\n etc: {\n 'aria-activedescendant': `${state.storeId}__${state.focusedRow}__${state.focusedColumn}`,\n },\n };\n },\n ],\n cell: [\n (distinctions: TCellDistinctions, state) => {\n const isFocused =\n state.focusedColumn === distinctions.columnIndex &&\n state.focusedRow === distinctions.rowIndex;\n return {\n etc: {\n id: `${state.storeId}__${distinctions.rowIndex}__${distinctions.columnIndex}`,\n },\n classList: {\n add: isFocused ? ['focused'] : undefined,\n remove: isFocused ? undefined : ['focused'],\n },\n };\n },\n (_: TState, state: TState) => {\n const focusedCell = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow}\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n );\n\n focusedCell?.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'nearest',\n });\n },\n ],\n};\n","import { TDistinctors, TKeysMaker } from '@apia/dom-store';\nimport { TState } from './types';\n\nexport const makeCellKey = (distinctions: {\n columnIndex: number;\n rowIndex: number;\n}) => `${distinctions.columnIndex}__${distinctions.rowIndex}`;\n\nexport const keysMakers: TKeysMaker<TState, TDistinctors<TState>> = {\n cell: makeCellKey,\n grid: () => 'grid',\n};\n","import { noNaN } from '@apia/util';\nimport { makeCellKey } from './keysMaker';\nimport { TIconsListOperation, TState } from './types';\n\nfunction assignSelectedIndexId(state: TState) {\n const element = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow}\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n state.focusedId = element.dataset.id as string;\n }\n}\n\nconst arrowDown: TIconsListOperation<void> = (state: TState, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow + 1\n }\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow + 1,\n }),\n 'grid',\n ]);\n state.focusedRow++;\n\n assignSelectedIndexId(state);\n};\nconst arrowUp: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedRow > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n state.focusedRow--;\n\n assignSelectedIndexId(state);\n }\n};\nconst arrowLeft: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedColumn > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn - 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn--;\n\n assignSelectedIndexId(state);\n }\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* else if (state.focusedRow > 1) {\n const focusedRow = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow - 1}\"]`,\n );\n\n if (focusedRow instanceof HTMLElement) {\n const colIndex = noNaN(\n focusedRow.querySelector('[aria-colIndex]:last-of-type')?.ariaColIndex,\n -1,\n );\n\n if (colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n\n state.focusedRow--;\n state.focusedColumn = colIndex;\n\n assignSelectedIndexId(state);\n }\n }\n } */\n};\nconst arrowRight: TIconsListOperation<void> = (state, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow\n }\"] [aria-colindex=\"${state.focusedColumn + 1}\"]`,\n )\n ) {\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* const newFocusedId = noNaN(state.focusedId) + 1;\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${newFocusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: rowIndex,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n\n assignSelectedIndexId(state);\n }\n } */\n\n return;\n }\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn + 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn++;\n assignSelectedIndexId(state);\n};\nconst setFocused: TIconsListOperation<{\n rowIndex: number;\n colIndex: number;\n}> = (state, payload, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${payload.rowIndex}\"] [aria-colindex=\"${payload.colIndex}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({ columnIndex: payload.colIndex, rowIndex: payload.rowIndex }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = payload.colIndex;\n state.focusedRow = payload.rowIndex;\n\n assignSelectedIndexId(state);\n};\n\nconst recalculateIndexByResize: TIconsListOperation<void> = (\n state: TState,\n _: void,\n keys,\n) => {\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${state.focusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({ columnIndex: colIndex, rowIndex }),\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n }\n }\n};\n\nexport const operations = {\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n setFocused,\n recalculateIndexByResize,\n};\n","import { TState } from './types';\n\nexport const getInitialState = (props: Pick<TState, 'storeId'>): TState => ({\n focusedColumn: 1,\n focusedRow: 1,\n focusedId: 0,\n ...props,\n});\n","import { createContext, useContext } from 'react';\nimport {\n TActionsMap,\n TDistinctorProperties,\n TGetState,\n TRegisterStateChangeListener,\n TUseProperties,\n} from '@apia/dom-store';\nimport { TCellDistinctions, TState } from './types';\nimport { operations } from './operations';\n\nexport type TStoreContext = {\n actions: TActionsMap<TState, typeof operations>;\n useProps: TUseProperties<\n TState,\n {\n cell: [\n (\n distinctions: TCellDistinctions,\n state: TState,\n ) => TDistinctorProperties,\n ];\n grid: [(distinctions: null, state: TState) => TDistinctorProperties];\n }\n >;\n getState: TGetState<TState>;\n registerStateChangeListener: TRegisterStateChangeListener<TState>;\n};\n\nexport const StoreContext = createContext<TStoreContext>({} as TStoreContext);\n\nexport const useIconsListStoreContext = () => {\n return useContext(StoreContext);\n};\n","import { createFAsomeStore } from '@apia/dom-store';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { distinctors } from './distinctors';\nimport { operations } from './operations';\nimport { keysMakers } from './keysMaker';\nimport { getInitialState } from './state';\nimport { StoreContext, TStoreContext } from './context';\nimport { TState } from './types';\n\nexport const useStore = ({\n storeId,\n}: Pick<TState, 'storeId'>): [\n TStoreContext['actions'],\n TStoreContext['useProps'],\n TStoreContext['getState'],\n TStoreContext['registerStateChangeListener'],\n ({ children }: { children: ReactNode }) => JSX.Element,\n] => {\n const [actions, useProps, getState, registerStateChangeListener] = useMemo(\n () =>\n createFAsomeStore({\n initialState: getInitialState({\n storeId,\n }),\n distinctors,\n keysMakers,\n operations,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const ContextProvider = useCallback(\n ({ children }: { children: ReactNode }) => {\n return (\n <StoreContext.Provider\n value={{\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n }}\n >\n {children}\n </StoreContext.Provider>\n );\n },\n [actions, getState, registerStateChangeListener, useProps],\n );\n\n return [\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n ContextProvider,\n ];\n};\n","import { ReactNode, RefObject } from 'react';\nimport { getParamNames } from './util';\n\nexport type TAttachToElement = (() => HTMLElement) | RefObject<HTMLElement>;\nexport function isAttachToElementAFunction(\n attachToElement: TAttachToElement,\n): attachToElement is () => HTMLElement {\n return (\n attachToElement instanceof Function &&\n getParamNames(attachToElement).length === 0\n );\n}\n\nexport type TPreferredOrientationX = 'left' | 'right';\nexport type TPreferredOrientationY = 'top' | 'bottom';\nexport type TSize = { width: number; height: number };\nexport type TSizeWithAuto = { width: number | 'auto'; height: number | 'auto' };\nexport type TPosition = { left: number; top: number };\nexport type TTooltipPosition = TPosition & TSizeWithAuto;\nexport type TAttachToElementAnchorPoint =\n | 'center'\n | 'topLeft'\n | 'topRight'\n | 'bottomLeft'\n | 'bottomRight';\n\nexport type TTooltip = {\n /** Define el contenido del tooltip */\n children?: ReactNode;\n\n /**\n * Indica si el tooltip se cierra con escape. Valor por defecto: true.\n */\n closeOnEscape?: boolean;\n /**\n * Indica si el tooltip se cierra al desplazar el puntero del mouse fuera del\n * tooltip. Valor por defecto: true.\n */\n closeOnMouseLeaveTooltip?: boolean;\n /**\n * Indica si el tooltip se cierra al desplazar el puntero del mouse fuera del\n * elemento al que el tooltip está anclado. Valor por defecto: true.\n */\n closeOnMouseLeaveAttachedElement?: boolean;\n /**\n * Indica si el tooltip se cierra al hacerle click. Valor por defecto: false.\n */\n closeOnClick?: boolean;\n /**\n * Indica si el tooltip se cierra al hacer click fuera de él. Valor por\n * defecto: true.\n */\n closeOnClickOut?: boolean;\n /**\n * Indica si el tooltip se cierra al hacer scroll en un elemento externo al\n * tooltip. Valor por defecto: true.\n */\n closeOnScrollOut?: boolean;\n\n /**\n * Permite determinar sobre qué elemento se abre el tooltip\n */\n attachToElement?: TAttachToElement;\n /**\n * Cuando se desea hacer attach a un elemento, es posible posicionar el menú\n * en cualquiera de los cuatro vétices definidos por el box que lo contiene o\n * bien ubicarlo exactamente en el centro.\n *\n * Por defecto se colocará en topRight.\n *\n * Además el tooltip se extenderá según la orientación definida en los\n * parámetros preferredOrientationX y preferredOrientationY.\n */\n attachToElementAnchorPoint?: TAttachToElementAnchorPoint;\n /**\n * Permite indicar que el tooltip se abrirá en un punto específico. En caso\n * de no indicar anchorPoint ni attachToElement se abrirá en {0,0}\n */\n anchorPoint?: TPosition;\n\n /**\n * El minSize define el espacio mínimo que debe existir para mostrar el\n * tooltip. En caso de que en la orientación definida no exista espacio\n * suficiente, el tooltip se mostrará en otra orientación que si lo permita.\n */\n minSize?: TSize;\n /**\n * El preferredSize define el espacio deseado que debería ocupar el tooltip.\n * En caso de no haber espacio suficiente para cubrir este espacio en la\n * orientación definida, se cubrirá todo el espacio disponible, siempre y\n * cuando sea mayor o igual que minSize, en cuyo caso entrará en juego el\n * comportamiento de minSize.\n *\n * Por defecto usa { height: 'auto', width: 'auto' }.\n */\n preferredSize?: TSizeWithAuto;\n\n /**\n * Posición en la que el tooltip se muestra en caso de que haya espacio\n * suficiente, por defecto usa right.\n */\n preferredOrientationX?: TPreferredOrientationX;\n /**\n * Posición en la que el tooltip se muestra en caso de que haya espacio\n * suficiente, por defecto usa bottom.\n */\n preferredOrientationY?: TPreferredOrientationY;\n\n /**\n * Permite agregar classNames al box contenedor.\n */\n className?: string;\n /**\n * Será llamado cuando el tooltip sea cerrado.\n */\n onClose?: () => unknown;\n /**\n * Variante del box contenedor. Por defecto usa\n * layout.common.tooltips.primary.\n */\n variant?: string;\n};\n","import { isChild, useMount } from '@apia/util';\nimport { TPosition, TTooltip, isAttachToElementAFunction } from './types';\nimport { ThemeUICSSObject } from 'theme-ui';\nimport React, { useCallback, useRef } from 'react';\nimport { tooltipsHandler } from '.';\n\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\n\nexport function getParamNames(func: object) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const fnStr = func.toString().replace(STRIP_COMMENTS, '');\n let result: string[] | RegExpMatchArray | null = fnStr\n .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES);\n if (result === null) result = [];\n\n return result;\n}\n\nfunction determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n}: Pick<TTooltip, 'attachToElementAnchorPoint'> &\n Required<Pick<TTooltip, 'attachToElement'>>) {\n let actualAnchorPoint: TPosition = { left: 0, top: 0 };\n\n const element = isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current;\n\n if (element) {\n const rect = element.getBoundingClientRect();\n\n const point = attachToElementAnchorPoint ?? 'topRight';\n\n switch (point) {\n case 'bottomLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.bottom,\n };\n break;\n case 'bottomRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.bottom,\n };\n break;\n case 'center':\n actualAnchorPoint = {\n left: (rect.left + rect.right) / 2,\n top: (rect.bottom + rect.top) / 2,\n };\n break;\n case 'topLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.top,\n };\n break;\n case 'topRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.top,\n };\n break;\n }\n } else {\n console.warn(\n 'Cannot resolve element, will use default positioning ',\n attachToElement,\n );\n }\n\n return actualAnchorPoint;\n}\n\nexport function calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize = { height: 'auto', width: 'auto' },\n}: Pick<\n TTooltip,\n | 'anchorPoint'\n | 'attachToElement'\n | 'attachToElementAnchorPoint'\n | 'minSize'\n | 'preferredOrientationX'\n | 'preferredOrientationY'\n | 'preferredSize'\n>): ThemeUICSSObject {\n let actualAnchorPoint = anchorPoint;\n\n if (attachToElement) {\n actualAnchorPoint = determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n });\n }\n\n if (actualAnchorPoint) {\n const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;\n const availableTopSpace = actualAnchorPoint.top;\n const availableLeftSpace = actualAnchorPoint.left;\n const availableRightSpace = window.innerWidth - actualAnchorPoint.left;\n\n const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;\n const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;\n const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;\n const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;\n\n const preferredWidth =\n preferredSize.width === 'auto' ? Infinity : preferredSize.width;\n const preferredHeight =\n preferredSize.height === 'auto' ? Infinity : preferredSize.height;\n\n const position: ThemeUICSSObject = {\n '& > *': {\n width: '100%',\n height: '100%',\n },\n width: preferredSize.width === 'auto' ? 'auto' : '100%',\n height: preferredSize.height === 'auto' ? 'auto' : '100%',\n };\n\n if (preferredOrientationX === 'left') {\n if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n } else {\n if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n }\n\n if (preferredOrientationY === 'top') {\n if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n } else {\n if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n }\n\n position.minHeight =\n typeof position.maxHeight === 'number'\n ? Math.min(position.maxHeight, minSize?.height ?? 0)\n : minSize?.height ?? 0;\n position.minWidth =\n typeof position.minWidth === 'number'\n ? Math.min(position.minWidth, minSize?.width ?? 0)\n : minSize?.width ?? 0;\n\n return position;\n }\n\n return { left: 0, top: 0, width: 'auto', height: 'auto' };\n}\n\nexport function useHandlers({\n attachToElement,\n closeOnClick,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n}: Pick<\n TTooltip,\n | 'attachToElement'\n | 'closeOnClick'\n | 'closeOnClickOut'\n | 'closeOnEscape'\n | 'closeOnMouseLeaveTooltip'\n | 'closeOnMouseLeaveAttachedElement'\n | 'closeOnScrollOut'\n>) {\n const hasInited = useRef(false);\n const close = useCallback(() => {\n tooltipsHandler('close', undefined);\n }, []);\n\n useMount(() => {\n function handleEscape(ev: KeyboardEvent) {\n if (ev.code === 'Escape' && closeOnEscape) {\n close();\n }\n }\n function handleMouseDownOut(ev: MouseEvent) {\n if (!hasInited.current) return;\n if (\n closeOnClickOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n function handleScroll(ev: Event) {\n if (!hasInited.current) return;\n if (\n closeOnScrollOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n\n function handleMouseLeave(event: MouseEvent) {\n if (\n !hasInited.current ||\n (!closeOnMouseLeaveAttachedElement && !closeOnMouseLeaveTooltip)\n )\n return;\n\n const resolvedAttachToElement = attachToElement\n ? isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current\n : null;\n\n const isTooltipTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n const isAttachedTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n const isTooltipRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n\n const isAttachedRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n if (\n !isTooltipTheTarget &&\n !isAttachedTheTarget &&\n !closeOnMouseLeaveAttachedElement &&\n !closeOnMouseLeaveTooltip\n )\n return;\n if (isTooltipRelated || isAttachedRelated) return;\n if (isAttachedTheTarget && !closeOnMouseLeaveAttachedElement) return;\n if (isTooltipTheTarget && !closeOnMouseLeaveTooltip) return;\n\n close();\n }\n\n document.addEventListener('keydown', handleEscape);\n document.addEventListener('mousedown', handleMouseDownOut);\n document.addEventListener('scroll', handleScroll);\n document.addEventListener('mouseout', handleMouseLeave);\n\n setTimeout(() => {\n hasInited.current = true;\n }, 0);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.removeEventListener('click', handleMouseDownOut);\n document.removeEventListener('scroll', handleScroll);\n document.removeEventListener('mouseout', handleMouseLeave);\n };\n });\n\n return {\n handleOnClick: useCallback(\n (ev: React.MouseEvent) => {\n ev.stopPropagation();\n if (closeOnClick) {\n close();\n }\n },\n [close, closeOnClick],\n ),\n };\n}\n","/* eslint-disable no-param-reassign */\nimport { TTooltip } from './types';\nimport { Box, ThemeUICSSObject } from 'theme-ui';\nimport { getVariant } from '@apia/theme';\nimport { calculateTooltipPosition, useHandlers } from './util';\n\nexport const Tooltip = ({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n children,\n className,\n closeOnClick = false,\n closeOnClickOut = true,\n closeOnEscape = true,\n closeOnMouseLeaveTooltip = true,\n closeOnMouseLeaveAttachedElement = true,\n closeOnScrollOut = true,\n minSize,\n preferredOrientationX = 'right',\n preferredOrientationY = 'bottom',\n preferredSize = { height: 'auto', width: 'auto' },\n variant = 'layout.common.tooltips.primary',\n}: TTooltip) => {\n const calculatedPosition = calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize,\n });\n\n const sx = {\n position: 'fixed',\n ...calculatedPosition,\n } as ThemeUICSSObject;\n\n const { handleOnClick } = useHandlers({\n attachToElement,\n closeOnEscape,\n closeOnClickOut,\n closeOnClick,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n });\n\n return (\n <Box\n className={`tooltip__wrapper ${className ?? ''}`}\n {...getVariant(variant)}\n sx={sx}\n onClick={handleOnClick}\n >\n {children}\n </Box>\n );\n};\n","import { TTooltip } from './types';\nimport { useCallback, useRef, useState } from 'react';\nimport { Tooltip } from './Tooltip';\nimport { injectStyles } from '@apia/theme';\nimport {\n makeSingleImperativeComponent,\n useImperativeComponentEvents,\n useLatest,\n} from '@apia/util';\n\nexport type { TTooltip };\n\ninjectStyles('layout.common.tooltips.primary', {\n background: 'white',\n border: '1px solid #ccc',\n p: 3,\n zIndex: 'tooltip',\n});\n\nexport type TTooltipEvents = {\n open: TTooltip;\n close: void;\n};\n\nexport const [, tooltipsHandler, TooltipsProvider] =\n makeSingleImperativeComponent<object, TTooltipEvents>()({\n Component: () => {\n const [tooltip, setTooltip] = useState<null | TTooltip>(null);\n const tooltipRef = useLatest(tooltip);\n\n useImperativeComponentEvents<TTooltipEvents>({\n open: setTooltip,\n close() {\n tooltipRef.current?.onClose?.();\n setTooltip(null);\n },\n });\n\n if (!tooltip) return null;\n\n return <Tooltip {...tooltip} />;\n },\n });\n\nexport function useTooltip(tooltip?: TTooltip) {\n const isOpen = useRef(false);\n\n const open = useCallback(\n (otherProps?: Partial<TTooltip>) => {\n setTimeout(() => {\n isOpen.current = true;\n if (!tooltip && !otherProps?.children)\n throw new Error('There is no children set for the current tooltip');\n tooltipsHandler('open', {\n ...(tooltip as TTooltip),\n ...otherProps,\n onClose() {\n tooltip?.onClose?.();\n otherProps?.onClose?.();\n isOpen.current = false;\n },\n });\n }, 0);\n },\n [tooltip],\n );\n\n return {\n close: useCallback(() => {\n tooltipsHandler('close', undefined);\n }, []),\n open,\n toggle: useCallback(\n (otherProps?: Partial<TTooltip>) => {\n if (isOpen.current) {\n tooltipsHandler('close', undefined);\n } else open(otherProps);\n },\n [open],\n ),\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Box } from 'theme-ui';\nimport {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n} from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { isChild, TId, noNaN } from '@apia/util';\nimport { TIcon, TIconsList } from './types';\nimport { useTooltip } from '../../tooltip';\n\nfunction findIcon(icons: TIcon[], arg: EventTarget | TId) {\n const iconId =\n arg instanceof HTMLElement\n ? arg.closest<HTMLElement>('.iconsList__iconWrapper[data-id]')?.dataset\n ?.id\n : arg;\n\n if (iconId !== undefined) {\n const icon = icons.find((current) => String(current.id) === iconId);\n\n return icon ?? null;\n }\n}\n\nexport const KeyHandler = ({\n children,\n icons,\n onIconClick,\n onIconDoubleClick,\n onIconGetDetails,\n onIconKeyDown,\n storeId,\n}: { children: ReactNode; storeId: TId } & Pick<\n TIconsList<any>,\n | 'icons'\n | 'onIconClick'\n | 'onIconDoubleClick'\n | 'onIconGetDetails'\n | 'onIconKeyDown'\n>) => {\n const { actions, getState, useProps } = useIconsListStoreContext();\n\n const ref = useProps('grid', null);\n\n const { open } = useTooltip({\n minSize: { width: 200, height: 0 },\n });\n const showIconDetails = useCallback(\n (icon: TIcon) => {\n if (onIconGetDetails) {\n open({\n children: onIconGetDetails(icon),\n attachToElement: () =>\n document.querySelector(\n `#${storeId} .iconsList__iconWrapper[data-id=\"${icon.id}\"]`,\n ) as HTMLElement,\n closeOnClick: false,\n });\n }\n },\n [onIconGetDetails, open, storeId],\n );\n\n return (\n <Box\n ref={ref}\n className=\"iconsList__keyHandler\"\n tabIndex={0}\n onFocus={useCallback(\n (ev: FocusEvent) => {\n if (\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('iconsList__keyHandler'),\n )\n )\n return;\n const icon = findIcon(icons, getState().focusedId);\n if (icon) {\n showIconDetails(icon);\n }\n },\n [getState, icons, showIconDetails],\n )}\n onMouseDown={useCallback(\n (ev: MouseEvent) => {\n if (ev.target instanceof HTMLElement) {\n const colIndex = noNaN(\n ev.target.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n const rowIndex = noNaN(\n ev.target.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n\n if (colIndex >= 0 && rowIndex >= 0) {\n actions.setFocused({\n colIndex,\n rowIndex,\n });\n }\n }\n },\n [actions],\n )}\n onClick={useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n const icon = findIcon(icons, ev.target);\n\n if (icon) showIconDetails(icon);\n if (onIconClick && icon) {\n onIconClick(ev, icon);\n }\n },\n [icons, onIconClick, showIconDetails],\n )}\n onDoubleClick={useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n if (onIconDoubleClick) {\n const icon = findIcon(icons, ev.target);\n if (icon) onIconDoubleClick(ev, icon);\n }\n },\n [icons, onIconDoubleClick],\n )}\n onKeyDown={useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n function showIconByFocusChange() {\n const icon = findIcon(icons, getState().focusedId);\n\n if (icon) showIconDetails(icon);\n if (icon && onIconKeyDown) {\n onIconKeyDown(ev, icon);\n }\n }\n\n switch (ev.code) {\n case 'ArrowUp':\n actions.arrowUp();\n showIconByFocusChange();\n break;\n case 'ArrowDown':\n actions.arrowDown();\n showIconByFocusChange();\n break;\n case 'ArrowRight':\n actions.arrowRight();\n showIconByFocusChange();\n break;\n case 'ArrowLeft':\n actions.arrowLeft();\n showIconByFocusChange();\n break;\n }\n },\n [actions, getState, icons, onIconKeyDown, showIconDetails],\n )}\n >\n {children}\n </Box>\n );\n};\n","import { focusOutline, getPalette } from '@apia/theme';\nimport { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {\n '&, *': {\n textAlign: 'center',\n },\n\n '.iconsList__icon__image__wrapper': {\n boxShadow: '1px 1px 3px #0001',\n },\n\n '.iconsList__icon__wrapper': {\n p: 2,\n\n '&:hover': {\n ...getPalette().getOneState(\n { backgroundColor: getPalette().background.paper },\n 'hover',\n ),\n },\n },\n\n '.iconsList__icon__label': {\n wordBreak: 'break-word',\n },\n\n '.iconsList__keyHandler:focus': {\n outline: 'none',\n\n '.focused .iconsList__icon__wrapper': {\n ...focusOutline,\n },\n },\n};\n","import { useMemo } from 'react';\nimport { TIcon } from './types';\n\nexport function getBreakpoints(blockWidth: number) {\n return Array(Math.floor(4000 / blockWidth))\n .fill(1)\n .map((_, i) => (i + 1) * blockWidth);\n}\n\nexport function useStyles({\n containerWidth,\n iconWidth,\n breakPoint,\n verticalGap,\n removeHorizontalPadding,\n}: {\n containerWidth: number;\n iconWidth: number;\n breakPoint: number;\n verticalGap?: number;\n removeHorizontalPadding?: boolean;\n}) {\n const gap =\n (containerWidth - iconWidth * breakPoint) /\n (breakPoint + (removeHorizontalPadding ? -1 : 1));\n const sx = useMemo(\n () => ({\n justifyContent: 'space-evenly',\n gridTemplateColumns: `repeat(${breakPoint}, 1fr)`,\n rowGap: verticalGap ?? 0,\n columnGap: `${gap}px`,\n px: removeHorizontalPadding ? 0 : `${gap}px`,\n }),\n [removeHorizontalPadding, breakPoint, gap, verticalGap],\n );\n\n return sx;\n}\n\nexport const justToFillTheRow = 'JUST TO FILL THE ROW';\n\nexport function getRowIcons<P>({\n breakPoint,\n icons,\n i,\n}: {\n breakPoint: number;\n icons: TIcon<P>[];\n i: number;\n}) {\n const actualIcons: (string | TIcon<P>)[] = icons.slice(\n i * breakPoint,\n (i + 1) * breakPoint,\n );\n if (actualIcons.length < breakPoint)\n actualIcons.push(\n ...(Array(breakPoint - actualIcons.length).fill(\n justToFillTheRow,\n ) as string[]),\n );\n\n return actualIcons;\n}\n","import { createContext, useContext } from 'react';\nimport { TIconRenderer } from './types';\n\nexport const IconRendererContext = createContext<TIconRenderer | null>(null);\n\nexport function useIconRendererContext() {\n const context = useContext(IconRendererContext);\n\n if (!context) throw new Error('There is no IconRendererContext');\n\n return context;\n}\n","import { Box } from 'theme-ui';\nimport { TIcon } from '.';\nimport { useMemo } from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { useIconRendererContext } from './context';\n\nexport const Icon = (\n props: TIcon & { rowIndex: number; colIndex: number; width: number },\n) => {\n const { useProps } = useIconsListStoreContext();\n\n const ref = useProps<HTMLElement>('cell', {\n columnIndex: props.colIndex,\n rowIndex: props.rowIndex,\n });\n\n const Renderer = useIconRendererContext();\n\n return (\n <Box\n ref={ref}\n role=\"gridcell\"\n data-id={props.id}\n className={`iconsList__iconWrapper ${props.className ?? ''}`}\n aria-label={props.ariaLabel}\n sx={useMemo(\n () => ({\n width: `${props.width}px`,\n }),\n [props.width],\n )}\n aria-colindex={props.colIndex}\n >\n <Renderer {...props} />\n </Box>\n );\n};\n","import { Box } from 'theme-ui';\nimport { TIcon } from '.';\nimport { Icon } from './Icon';\nimport { justToFillTheRow } from './util';\n\nexport const IconWrapper = <P extends Record<string, unknown>>({\n icon,\n iconWidth,\n rowIndex,\n colIndex,\n}: {\n icon: string | TIcon<P>;\n iconWidth: number;\n rowIndex: number;\n colIndex: number;\n}) => {\n return icon === justToFillTheRow ? (\n <Box\n key={colIndex}\n sx={{ width: `${iconWidth}px` }}\n className=\"fill__the__row\"\n />\n ) : (\n <Icon\n rowIndex={rowIndex}\n colIndex={colIndex}\n width={iconWidth}\n {...(icon as TIcon<P>)}\n />\n );\n};\n","import { TIconRenderer } from '../types';\nimport { Box, Image } from 'theme-ui';\nimport { memo } from 'react';\n\nconst DefaultIconRendererNoMemo: TIconRenderer = (props) => {\n return (\n <Box className=\"iconsList__icon__wrapper\">\n <Box className=\"iconsList__icon__image__wrapper\">\n <Image\n className=\"iconsLIst__icon__image\"\n src={props.imageUrl}\n role=\"decoration\"\n />\n </Box>\n <Box className=\"iconsList__icon__label\">{props.label}</Box>\n </Box>\n );\n};\n\nexport const DefaultIconRenderer = memo(DefaultIconRendererNoMemo);\n","import { Box, Grid } from 'theme-ui';\nimport { ForwardedRef, forwardRef, useEffect, useMemo } from 'react';\nimport { makeResponsiveComponent } from '../responsive';\nimport { useStore } from './store/useStore';\nimport { uniqueId } from '../ListBox/common';\nimport { makeStyledComponent } from '@apia/theme';\nimport { KeyHandler } from './KeyHandler';\nimport { styles } from './styles';\nimport { getBreakpoints, getRowIcons, useStyles } from './util';\nimport { IconWrapper } from './IconWrapper';\nimport { DefaultIconRenderer } from './renderers/DefaultIconRenderer';\nimport { TIconsList, TIcon, TIconRenderer } from './types';\nimport { IconRendererContext } from './context';\n\nexport type { TIcon, TIconRenderer, TIconsList };\n\nconst IconsListNonForwarded = <P extends Record<string, unknown>>(\n props: TIconsList<P>,\n ref: ForwardedRef<HTMLDivElement>,\n) => {\n const storeId = useMemo(() => uniqueId('IconsList'), []);\n const [actions, , , , Context] = useStore({ storeId });\n\n const ResponsiveContainer = useMemo(() => {\n const iconWidth = props.iconWidth ?? 100;\n const minGap = props.minHorizontalGap ?? 30;\n\n const IconRenderer = props.iconRenderer ?? DefaultIconRenderer;\n\n const blockWidth = iconWidth + minGap;\n return makeStyledComponent(\n 'IconsList',\n 'layout.common.components.iconsList',\n styles,\n makeResponsiveComponent({\n breakPoints: getBreakpoints(blockWidth),\n Component: ({ breakPoint, containerWidth }) => {\n const rows = Math.ceil(props.icons.length / breakPoint);\n const sx = useStyles({\n breakPoint,\n containerWidth,\n iconWidth,\n verticalGap: props.verticalGap,\n removeHorizontalPadding: props.removeHorizontalPadding,\n });\n\n useEffect(() => {\n actions.recalculateIndexByResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakPoint]);\n\n return (\n <IconRendererContext.Provider value={IconRenderer}>\n <Context>\n <KeyHandler\n icons={props.icons}\n onIconClick={props.onIconClick}\n onIconDoubleClick={props.onIconDoubleClick}\n onIconGetDetails={props.onIconGetDetails}\n onIconKeyDown={props.onIconKeyDown}\n storeId={storeId}\n >\n <Box\n id={storeId}\n role=\"grid\"\n aria-rowcount={rows}\n aria-colcount={breakPoint}\n >\n {Array(rows)\n .fill(1)\n .map((_, i) => {\n const icons = getRowIcons({\n breakPoint,\n i,\n icons: props.icons,\n });\n return (\n <Grid\n aria-rowindex={i + 1}\n role=\"row\"\n key={i}\n ref={ref}\n sx={sx}\n >\n {icons.map((current, j) => (\n <IconWrapper\n key={\n typeof current === 'string'\n ? j + 1\n : current.id\n }\n colIndex={j + 1}\n icon={current}\n iconWidth={iconWidth}\n rowIndex={i + 1}\n />\n ))}\n </Grid>\n );\n })}\n </Box>\n </KeyHandler>\n </Context>\n </IconRendererContext.Provider>\n );\n },\n debounce: 50,\n }),\n );\n }, [\n Context,\n actions,\n props.iconRenderer,\n props.iconWidth,\n props.icons,\n props.minHorizontalGap,\n props.onIconClick,\n props.onIconDoubleClick,\n props.onIconGetDetails,\n props.onIconKeyDown,\n props.removeHorizontalPadding,\n props.verticalGap,\n ref,\n storeId,\n ]);\n return <ResponsiveContainer />;\n};\n\nIconsListNonForwarded.displayName = 'IconsList';\n\nexport const IconsList = forwardRef(\n IconsListNonForwarded,\n) as typeof IconsListNonForwarded;\n"],"names":["C","I","S","o","c","m","p","t","e","n","r","a","u","i","BaseButton","_a","_b","id","name","onClick","isLoading","loadingChildren","disabled","children","text","variant","type","SXProps","buttonProps","__objRest","jsx","Button","__spreadProps","__spreadValues","getVariant","jsxs","Flex","spacing","Fragment","Spinner","A","U","P","b","h","M","d","y","IconButton","React","ref","className","icon","outerIconSize","isToggled","href","onMouseOver","onMouseOut","size","title","rest","sizes","iconSize","sx","ActualIcon","icons","IconButtonThemeUI","ev","v","z","E","x","T","simpleButton","SimpleButton","iconColor","iconPosition","spinnerSize","loadingSx","spanSx","Icon","Box","useOtherTagButton","props","specificClass","uniqueId","actualOnClick","actualOnKeyDown","button","getSpecificParent","current","_","l","Captcha","imageUrl","onChange","value","imgSrc","setImgSrc","useState","handleSyncClick","Image","Input","w","N","k","H","Checkbox","forwardRef","required","readOnly","native","indeterminate","_c","isChecked","setIsChecked","checkbox","useRef","useUpdateEffect","useMemo","useEffect","nativeSx","_onFocusCallbacks","historySize","globalFocus","__privateAdd","debugDispatcher","cb","__privateSet","__privateGet","el","element","querySelector","omit","storedElement","isFunction","_isLocked","_onChangeCb","_onDestroyCb","_evaluate","evaluate_fn","BodyScrollLock","locker","BodyScrollLocker","__privateMethod","willLock","useBodyScrollLock","isLocked","F","g","R","s","Overlay","onExited","onOverlayClicked","open","shouldAvoidInitialFocusTrap","stretch","transitionDuration","innerRef","assignRefs","useCombinedRefs","CSSTransition","ReactFocusLock","DialogHeader","close","hideCloseButton","NavBar","breakpointIndex","useBreakpointIndex","Title","Heading","CloseButton","Close","NavBarElement","responsive","ModalContext","Modal","animationDuration","initialFocusConfiguration","initialFocusGetter","initialFocusRef","isOpen","maxWidth","noFocus","noHeader","onClose","Portal","shouldCloseOnEsc","shouldCloseOnOverlayClick","isOpenInner","setIsOpen","innerId","closeHandler","useCallback","overlayElement","setInnerRef","overlayClickedHandle","event","handleEscape","overlays","focus","focusSelector","getFocusSelector","Wrapper","CalendarModal","handleClickDay","onCancel","calValue","locale","modalRef","Calendar","useModal","configuration","setIsLoading","hidePortal","showPortal","usePortal","hide","show","openModalContextValue","B","DialogButtonBar","getConfirmButton","Confirm","additionalButtons","additionalButtonsOnRight","confirmText","cancelText","confirmType","hideCancelButton","hideConfirmButton","onConfirmOk","onConfirmCancel","contentRef","descriptionId","LinearLoader","theme","useThemeUI","BarLoader","getColor","ScreenLock","hasReleasedFirstTime","setHasReleasedFirstTime","locks","setLocks","suscriptions","screenLocker","overlaySx","FieldErrorMessage","setRef","customEvents","IconInput","buttonRef","hideButton","inputProps","inputRef","mask","onBlur","inputSx","actualInputProps","innerButtonRef","assignButtonRef","innerInputRef","assignInputRef","parentRef","setParentRef","handleBlur","isChild","ReactInputMask","getFieldErrorStyles","isValid","getFieldTouchedStyles","isTouched","at","ot","lt","G","q","DEFAULT_LOCALE","DEFAULT_MASK_PLACEHOLDER","dateFormat","getDateFormat","getMaskForDateFormat","DateInput","allowPickBeforeToday","outerButtonProps","error","getCustomMask","onDelete","onError","renderLabel","outerValue","inputValue","setInputValue","setCalValue","boxRef","resolve","currentSelectedDate","dayjs","modalProps","stateError","setError","lastEmittedValue","shoutOnChange","newValue","setCalendarValue","nocheck","newDate","formattedDate","today","shoutResult","selectDate","val","onCloseCalendarModal","D","V","L","$","O","fillZeros","amount","fillThousandsZeros","stringValue","decimalCount","decimalZeros","decimalSeparator","thousandsSeparator","regexpThousandsSeparator","regexpDecimalSeparator","parseNumberInputValueToNumber","parseNumberValueToNumberInput","result","isNegative","integer","decimals","decimalsString","formatValueToShow","avoidDecimalRestriction","_d","module","slicedDecimals","noZeroDecimals","finalNumberString","truncedInteger","NumberInput","actualValue","setActualValue","showValue","setShowValue","setValue","parsedValue","RequiredMark","isFormReadonly","isRequired","isReadonly","getLabel","NoMemoApiaDateFilter","filter","onPressEnter","lastDispatchedValue","setLastDispatchedValue","handleClick","ApiaDateFilter","J","NoMemoApiaFilter","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","setLastEmittedValue","filterCurrentValue","handleChange","handleNumberChange","sortedOptions","options","option","Select","ApiaFilter","styles","injectStyles","CollapsiblePanel","closedIcon","collapsed","defaultCollapsed","disableChildrenFocus","onOpen","openIcon","label","titleButtons","minHeight","outerRef","actualId","isCollapsed","setIsCollapsed","persistentStorage","callOnOpen","updateState","onOpenResult","disableChildrenFocusMethod","enableChildrenFocus","handleCustomFocus","AnimateHeight","makeRowKey","rowIndex","uniqueidIndex","prefix","getDistinctors","storeId","distinctions","state","prevState","nextState","scrollContainer","findScrollContainer","elRect","contRect","defaultState","keysMakers","getInitialState","initialState","searchString","ListboxContext","createContext","ListboxItem","memo","outerRowIndex","domProps","getState","listboxActions","onDoubleClickNode","onClickNode","useListbox","useContext","_restoreTimeout","restoreTimeout_fn","_shout","shout_fn","m$6","EventEmitter","onMultipleKeys","onSingleKey","onTypeUpdate","clear","ListboxKeyhandler","onConfirmSelection","onPressEnterOnNode","onPressKeyOnNode","typer","WaiTypeAhead","characters","shoutConfirmSelection","cell","f","Combobox","run","useDebouncedCallback","focusOutline","getColorState","makeOperation","keys","focusChanged","rows","shownRows","hiddenRows","matches","row","operation","payload","moveFocusAndToggleSelection","isShiftKey","which","newFocused","selectedElements","sum","getIndex","currentIndex","addBoundary","searchElementsByStartingCharacters","match","tryIndex","selectAll","setState","affectedKeys","newRowsCount","updateFocusByClickEvent","updateFocusBySpaceEvent","newSelection","search","operations","useStore","allowMultipleCharacterSearch","allowSelection","allowSingleCharacterSearch","isMultipleSelection","searchFunction","showSearchbox","startsWithFunction","createFAsomeStore","useShoutSelectionChange","onSelectionChange","registerCallback","previousState","useIndexedChildren","Children","child","isValidElement","cloneElement","useListboxAutofocus","focusedRowId","focusedRow","useUpdateRowCount","count","useListboxContextValue","NoMemoListbox","makeStyledComponent","indexedChildren","onFocus","contextValue","Listbox","ProgressBar","progress","loading","Label","Progress","calcBreakPoint","currentWidth","breakPoints","makeResponsiveComponent","Component","debounce","defaultBreakpoint","breakPoint","setCurrentBreakpoint","containerWidth","observer","timeout","shouldDisconnect","resizeProps","distinctors","isFocused","focusedCell","makeCellKey","assignSelectedIndexId","arrowDown","arrowUp","arrowLeft","arrowRight","setFocused","recalculateIndexByResize","noNaN","colIndex","StoreContext","useIconsListStoreContext","actions","useProps","registerStateChangeListener","ContextProvider","isAttachToElementAFunction","attachToElement","getParamNames","STRIP_COMMENTS","ARGUMENT_NAMES","func","fnStr","determineAnchorPoint","attachToElementAnchorPoint","actualAnchorPoint","rect","calculateTooltipPosition","anchorPoint","minSize","preferredOrientationX","preferredOrientationY","preferredSize","availableBottomSpace","availableTopSpace","availableLeftSpace","availableRightSpace","isEnoughToRight","isEnoughToLeft","isEnoughToBottom","isEnoughToTop","preferredWidth","preferredHeight","position","useHandlers","closeOnClick","closeOnClickOut","closeOnEscape","closeOnMouseLeaveTooltip","closeOnMouseLeaveAttachedElement","closeOnScrollOut","hasInited","tooltipsHandler","useMount","handleMouseDownOut","handleScroll","handleMouseLeave","resolvedAttachToElement","isTooltipTheTarget","isAttachedTheTarget","isTooltipRelated","isAttachedRelated","Tooltip","calculatedPosition","handleOnClick","TooltipsProvider","makeSingleImperativeComponent","tooltip","setTooltip","tooltipRef","useLatest","useImperativeComponentEvents","useTooltip","otherProps","findIcon","arg","iconId","KeyHandler","onIconClick","onIconDoubleClick","onIconGetDetails","onIconKeyDown","showIconDetails","showIconByFocusChange","getPalette","getBreakpoints","blockWidth","useStyles","iconWidth","verticalGap","removeHorizontalPadding","gap","justToFillTheRow","getRowIcons","actualIcons","IconRendererContext","useIconRendererContext","context","Renderer","IconWrapper","DefaultIconRendererNoMemo","DefaultIconRenderer","IconsListNonForwarded","Context","ResponsiveContainer","minGap","IconRenderer","Grid","j","IconsList"],"mappings":"g1DA4DU,IAAAA,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAAC,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAAC,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAAC,EAAAC,EAAAC,IAAAD,KAAAD,EAAAP,GAAAO,EAAAC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAF,EAAAC,CAAA,EAAAC,EAAAC,GAAA,CAAAH,EAAAC,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAJ,GAAA,KAAAI,EAAAC,CAAA,GAAAH,GAAAC,EAAAE,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAN,GAAA,QAAAM,KAAAN,GAAAK,CAAA,EAAAH,GAAA,KAAAG,EAAAC,CAAA,GAAAH,GAAAC,EAAAE,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAF,CAAA,EAAAI,GAAA,CAAAJ,EAAAC,IAAAP,GAAAM,EAAAL,GAAAM,CAAA,CAAA,EAAAI,GAAA,CAAAL,EAAAC,IAAA,CAAA,IAAAC,EAAA,CAAA,EAAA,QAAAI,KAAAN,EAAAH,GAAA,KAAAG,EAAAM,CAAA,GAAAL,EAAA,QAAAK,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAN,EAAAM,CAAA,GAAA,GAAAN,GAAA,MAAAJ,GAAA,QAAAU,KAAAV,GAAAI,CAAA,EAAAC,EAAA,QAAAK,CAAA,EAAA,GAAAR,GAAA,KAAAE,EAAAM,CAAA,IAAAJ,EAAAI,CAAA,EAAAN,EAAAM,CAAA,GAAA,OAAAJ,CAAA,EAvCH,MAAMK,GAAcC,GAaR,CAbQ,IAAAC,EAAAD,EACzB,CAAA,GAAAE,EACA,KAAAC,EACA,QAAAC,EAAU,IAAM,CAAA,EAChB,UAAAC,EAAY,GACZ,gBAAAC,EACA,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,KAAAC,EAAO,GACP,QAAAC,EAAU,UACV,KAAAC,EAAO,SACP,QAAAC,CAhCF,EAqB2BX,EAYtBY,EAAAC,GAZsBb,EAYtB,CAXH,KACA,OACA,UACA,YACA,kBACA,WACA,WACA,OACA,UACA,OACA,SAGA,CAAA,EAAA,OACEc,EAACC,GAAAC,GAAAC,GAAAD,GAAAC,GAAA,CACC,GAAIhB,EACJ,KAAMC,EACN,QAASC,CACLe,EAAAA,EAAWT,CAAO,CAJvB,EAAA,CAKC,KAAMC,EACN,MAAOH,EACP,SAAUH,GAAaE,IACnBM,CARL,EAAA,CAUC,SAAAO,EAACC,GAAA,CACC,GAAG,OACH,GAAIH,GAAA,CACF,MAAO,UACP,MAAO,OACP,cAAe,MACf,aAAc,SACd,eAAgB,SAChB,WAAY,SACZ,IAAKI,EAAQ,CAAC,CACXV,EAAAA,CAAAA,EAGJ,UAAAP,GACCe,EAAAG,GAAA,CACE,UAAAR,EAACS,GAAA,CAAQ,KAAM,GAAI,MAAM,SAAA,CAAU,EAClClB,CAAAA,CAAAA,CACH,EAED,CAACD,IAAcG,GAAYC,EAAAA,CAAAA,CAC9B,GACF,CAEJ,ECkDqB,IAAAgB,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAA9B,GAAA,OAAA,sBAAA+B,GAAA,OAAA,UAAA,eAAAC,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAApC,EAAAD,EAAAD,IAAAC,KAAAC,EAAA+B,GAAA/B,EAAAD,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAD,CAAA,CAAA,EAAAE,EAAAD,CAAA,EAAAD,EAAAuC,GAAA,CAAArC,EAAAD,IAAA,CAAA,QAAAD,KAAAC,IAAAA,EAAA,IAAAmC,GAAA,KAAAnC,EAAAD,CAAA,GAAAsC,GAAApC,EAAAF,EAAAC,EAAAD,CAAA,CAAA,EAAA,GAAAK,GAAA,QAAAL,KAAAK,GAAAJ,CAAA,EAAAoC,GAAA,KAAApC,EAAAD,CAAA,GAAAsC,GAAApC,EAAAF,EAAAC,EAAAD,CAAA,CAAA,EAAA,OAAAE,CAAA,EAAAJ,GAAA,CAAAI,EAAAD,IAAAiC,GAAAhC,EAAAiC,GAAAlC,CAAA,CAAA,EAAAuC,GAAA,CAAAtC,EAAAD,IAAA,CAAA,IAAAD,EAAA,GAAA,QAAAJ,KAAAM,EAAAkC,GAAA,KAAAlC,EAAAN,CAAA,GAAAK,EAAA,QAAAL,CAAA,EAAA,IAAAI,EAAAJ,CAAA,EAAAM,EAAAN,CAAA,GAAA,GAAAM,GAAA,MAAAG,GAAA,QAAAT,KAAAS,GAAAH,CAAA,EAAAD,EAAA,QAAAL,CAAA,EAAA,GAAAyC,GAAA,KAAAnC,EAAAN,CAAA,IAAAI,EAAAJ,CAAA,EAAAM,EAAAN,CAAA,GAAA,OAAAI,CAAA,EAxER,MAAAyC,GAAaC,EAAM,WAC9B,CACElC,EAkBAmC,IACG,CAnBH,IAAAlC,EAAAD,EACE,CAAAoC,UAAAA,EACA,SAAA7B,EAAW,GACX,KAAA8B,EACA,SAAUC,EACV,GAAApC,EACA,UAAAG,EAAY,GACZ,UAAAkC,EAAY,GACZ,KAAAC,EACA,QAAApC,EAAU,IAAM,GAChB,YAAAqC,EAAc,IAAM,CACpB,EAAA,WAAAC,EAAa,IAAM,CAAA,EACnB,KAAAC,EAAO,KACP,MAAAC,EACA,KAAAjC,EAAO,SACP,QAAAD,EAAU,MAhEhB,EAiDIT,EAgBK4C,EAAA/B,GAhBLb,EAgBK,CAfH,YACA,WACA,OACA,WACA,KACA,YACA,YACA,OACA,UACA,cACA,aACA,OACA,QACA,OACA,SAAA,CAAA,EAhEND,EAqEI,MAAM8C,EAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,IAAI,EACrCC,EACJT,GAAiBQ,EAAM,KAAK,IAAI,EAAGA,EAAM,QAAQH,CAAc,EAAI,CAAC,CAAC,EAEjEK,EAAyBd,EAAM,QAAQ,KACpC,CACL,MAAO,OAAOS,IACd,SAAU,OAAOA,IACjB,OAAQ,OAAOA,IACf,UAAW,OAAOA,IAClB,IAAK,CACH,MAAO,OAAOI,IACd,SAAU,OAAOA,IACjB,OAAQ,OAAOA,IACf,UAAW,OAAOA,GACpB,CACF,GACC,CAACA,EAAUJ,CAAI,CAAC,EAEbM,EAAaf,EAAM,QAAQ,IACxB,OAAOG,GAAS,SAAWa,GAAMb,CAAI,EAAIA,EAC/C,CAACA,CAAI,CAAC,EAET,OACEtB,EAACoC,GAAAlC,GAAAC,GAAAD,GAAAC,GAAA,CACC,GAAIhB,EACJ,IAAKiC,EACL,QAASD,EAAM,YACZkB,GAA4C,CACvCZ,GAAM,OAAO,KAAKA,EAAM,QAAQ,EACpCpC,IAAUgD,CAAAA,CACZ,EACA,CAACZ,EAAMpC,CAAO,CAChB,EACA,YAAaqC,EACb,WAAYC,CACRvB,EAAAA,EAAWT,CAAO,CAAA,EAZvB,CAaC,GAAIsC,EACJ,SAAU3C,GAAaE,EACvB,UAAW,GAAG6B,GAAa,iBACzBG,EAAY,YAAc,KAE5B,MAAOK,EACP,cACE5C,EAAA6C,EAAK,YAAY,IAAjB,KAAA7C,EAAuB6C,EAAK,KAAO,OAAY,OAAYD,EAE7D,KAAMC,EAAK,KAAO,OAAY,OAAYlC,EAC1C,KAAM6B,EAAO,OAAS,SAClBK,CAxBL,EAAA,CA0BE,SAAAxC,EAAYU,EAACS,GAAA,CAAQ,MAAM,UAAU,EAAKT,EAACkC,EAAA,EAAW,CACzD,CAAA,CAAA,CAEJ,CACF,EAEAhB,GAAW,YAAc,aC1CnB,IAAAoB,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAA3D,GAAA,OAAA,sBAAA4D,GAAA,OAAA,UAAA,eAAAtE,GAAA,OAAA,UAAA,qBAAA8C,GAAA,CAAAxC,EAAAC,EAAA,IAAAA,KAAAD,EAAA6D,GAAA7D,EAAAC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAA,EAAAJ,GAAA,CAAAG,EAAAC,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,IAAA+D,GAAA,KAAA/D,EAAA,CAAA,GAAAuC,GAAAxC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,GAAAG,GAAA,QAAA,KAAAA,GAAAH,CAAA,EAAAP,GAAA,KAAAO,EAAA,CAAA,GAAAuC,GAAAxC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAK,GAAA,CAAAL,EAAAC,IAAA6D,GAAA9D,EAAA+D,GAAA9D,CAAA,CAAA,EAAAgE,GAAA,CAAAjE,EAAAC,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAC,KAAAF,EAAAgE,GAAA,KAAAhE,EAAAE,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAF,EAAAE,CAAA,GAAA,GAAAF,GAAA,MAAAI,GAAA,QAAAF,KAAAE,GAAAJ,CAAA,EAAAC,EAAA,QAAAC,CAAA,EAAA,GAAAR,GAAA,KAAAM,EAAAE,CAAA,IAAA,EAAAA,CAAA,EAAAF,EAAAE,CAAA,GAAA,OAAA,CAAA,EA1DN,MAAMgE,GAAiC,CACrC,QAAS,cACT,IAAKpC,EAAQ,CAAC,EACd,SAAU,WACV,WAAY,SACZ,eAAgB,SAEhB,WAAY,CACV,gBAAiB,SACnB,CAEF,EAEaqC,GAAezB,EAAM,WAChC,CACElC,EAmBAmC,IACG,CApBH,IAAAlC,EAAAD,EACE,CAAA,SAAAQ,EAAW,KACX,UAAA4B,EACA,SAAA7B,EAAW,GACX,KAAA8B,EACA,UAAAuB,EACA,aAAAC,EAAe,OACf,SAAAd,EACA,GAAA7C,EACA,UAAAG,EACA,KAAAF,EACA,QAAAC,EACA,KAAAuC,EACA,YAAAmB,EAAc,GACd,MAAAlB,EACA,KAAAjC,EAAO,SACP,QAAAD,EAAU,SAxDhB,EAwCIT,EAiBKY,EAAAC,GAjBLb,EAiBK,CAhBH,WACA,YACA,WACA,OACA,YACA,eACA,WACA,KACA,YACA,OACA,UACA,OACA,cACA,QACA,OACA,SAAA,CAAA,EAKF,MAAM8D,EAAY7B,EAAM,QACtB,KAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,QAAS,OACT,eAAgB,SAChB,WAAY,QACd,GACA,CAAA,CACF,EACM8B,EAAS9B,EAAM,QACnB,KAAO,CACL,MAAO7B,EAAY,cAAgB,MACrC,GACA,CAACA,CAAS,CACZ,EACM4D,EAAO/B,EAAM,QAAQ,IAAMG,EAAM,CAACA,CAAI,CAAC,EAE7C,OACEjB,EAACJ,GAAAC,GAAAC,GAAAD,GAAAC,GAAA,CACC,IAAKiB,EACL,GAAIjC,EACJ,KAAMC,EACN,MAAOyC,EACP,aAAYA,EACZ,QAASxC,EACT,KAAMO,EACN,SAAUN,GAAaE,EACvB,UAAW6B,CAAAA,EACPjB,EAAW,GAAGT,IAAUiC,IAAS,MAAQA,EAAO,IAAIA,IAAS,IAAI,GAVtE,CAWC,GAAIe,EACA7C,CAAAA,EAAAA,CAAAA,EAZL,CAcE,SAAA,CAAAoD,GAAQJ,IAAiB,QACxB9C,EAACkD,EAAA,CAAK,MAAM,GAAG,KAAMlB,EAAU,MAAOa,CAAW,CAAA,EAEnD7C,EAACmD,EAAA,CAAI,GAAG,OAAO,UAAU,kBAAkB,GAAIF,EAC5C,SAAAxD,GAAYoC,CAAAA,CACf,EACCqB,GAAQJ,IAAiB,SACxB9C,EAACkD,EAAA,CAAK,MAAM,GAAG,KAAMlB,EAAU,MAAOa,CAAAA,CAAW,EAElDvD,GACCU,EAACmD,EAAA,CAAI,UAAU,UAAU,GAAIH,EAC3B,SAAAhD,EAACS,GAAA,CAAQ,KAAMsC,EAAa,MAAM,SAAU,CAAA,CAAA,CAC9C,CAEJ,CAAA,CAAA,CAAA,CAEJ,CACF,EAEAH,GAAa,YAAc,eCpGpB,SAASQ,GACdC,EAKA,CAtBF,IAAApE,EAuBE,MAAMqE,EAAgBnC,EAAM,QAAQ,IAAM,WAAWoC,GAAc,IAAA,EAAE,EAE/DC,EAAgBrC,EAAM,YACzBkB,GAAyB,CA1B9B,IAAApD,GA2BMA,EAAAoE,GAAO,UAAP,MAAApE,EAAA,KAAAoE,EAAiBhB,CAAAA,CACnB,EACA,CAACgB,CAAK,CACR,EACMI,EAAkBtC,EAAM,YAC3BkB,GAA4B,CAhCjC,IAAApD,EAkCM,IADAA,EAAAoE,GAAO,YAAP,MAAApE,EAAA,KAAAoE,EAAmBhB,CAAAA,EACfA,EAAG,OAAS,SAAWA,EAAG,OAAS,QAAS,CAC9CA,EAAG,iBACH,MAAMqB,EAASC,GAAkBtB,EAAG,OAAwBuB,GAC1DA,EAAQ,UAAU,SAASN,CAAa,CAC1C,EACII,GAAQA,EAAO,MAEvB,EAAA,EACA,CAACL,EAAOC,CAAa,CACvB,EAEA,MAAO,CACL,UAAW,GAAGA,MAAiBrE,EAAAoE,GAAO,YAAP,KAAApE,EAAoB,KACnD,QAASuE,EACT,UAAWC,EACX,KAAM,SACN,SAAU,CACZ,CACF,CClBQ,IAAAvF,GAAA,OAAA,eAAA2F,GAAA,OAAA,iBAAApB,GAAA,OAAA,0BAAA7D,GAAA,OAAA,sBAAAT,GAAA,OAAA,UAAA,eAAA0C,GAAA,OAAA,UAAA,qBAAAiD,GAAA,CAAAnF,EAAA,EAAAE,IAAA,KAAAF,EAAAT,GAAAS,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAE,CAAA,CAAA,EAAAF,EAAA,CAAA,EAAAE,EAAAN,GAAA,CAAAI,EAAA,IAAA,CAAA,QAAAE,KAAA,IAAA,EAAA,CAAA,GAAAV,GAAA,KAAA,EAAAU,CAAA,GAAAiF,GAAAnF,EAAAE,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAD,GAAA,QAAAC,KAAAD,GAAA,CAAA,EAAAiC,GAAA,KAAA,EAAAhC,CAAA,GAAAiF,GAAAnF,EAAAE,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAF,CAAA,EAAAG,GAAA,CAAAH,EAAA,IAAAkF,GAAAlF,EAAA8D,GAAA,CAAA,CAAA,QA7BKsB,GAAU,CAAC,CACtB,KAAA3E,EACA,SAAA4E,EACA,SAAAC,EACA,MAAAC,EACA,UAAA7C,CACF,IAMM,CACJ,KAAM,CAAC8C,EAAQC,CAAS,EAAIC,EAAiB,GAAGL,OAAc,KAAK,IAAI,GAAG,EAEpEM,EAAkB,IAAM,CAE5BF,EAAU,GAAGJ,OAAc,KAAK,IAAI,GAAG,CACzC,EAEA,OACE3D,EAACC,GAAAJ,GAAAC,GAAA,CACC,GAAI,CACF,cAAe,QACjB,EACA,UAAU,gBAAA,EACNC,EAAW,6BAA6B,CAL7C,EAAA,CAOC,SAAAJ,CAAAA,EAACM,GAAA,CAAK,UAAU,0BACd,SAAAN,EAACuE,GAAA,CAAM,IAAI,GAAG,IAAKJ,CAAQ,CAAA,CAAA,CAC7B,EACA9D,EAACC,GAAA,CAAK,UAAW,2BAA2Be,GAAa,KACvD,SAAArB,CAAAA,EAACwE,GAAA,CACC,aAAa,MACb,KAAMpF,EACN,SAAU6E,EACV,MAAOC,CAAAA,CACT,EAEA7D,EAACC,GAAA,CAAK,UAAU,mBACd,SAAA,CAAAN,EAACkB,GAAA,CACC,KAAK,UACL,KAAK,SACL,aAAW,+BACX,QAASoD,CACV,CAAA,EACDtE,EAACkB,GAAA,CACC,KAAK,SACL,KAAK,SACL,aAAW,+BACX,QAAS,IAAM,EAAC,CACjB,CACH,CAAA,CAAA,CAAA,CAAA,CACF,IACF,CAEJ,ECeM,IAAAuD,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAtG,GAAA,OAAA,0BAAAuG,GAAA,OAAA,sBAAA5D,GAAA,OAAA,UAAA,eAAA6D,GAAA,OAAA,UAAA,qBAAApC,GAAA,CAAA,EAAA7D,EAAAF,IAAAE,KAAA,EAAA8F,GAAA,EAAA9F,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAF,CAAA,CAAA,EAAA,EAAAE,CAAA,EAAAF,EAAAqF,GAAA,CAAA,EAAAnF,IAAA,CAAA,QAAAF,KAAAE,IAAAA,EAAA,CAAA,GAAAoC,GAAA,KAAApC,EAAAF,CAAA,GAAA+D,GAAA,EAAA/D,EAAAE,EAAAF,CAAA,CAAA,EAAA,GAAAkG,GAAA,QAAAlG,KAAAkG,GAAAhG,CAAA,EAAAiG,GAAA,KAAAjG,EAAAF,CAAA,GAAA+D,GAAA,EAAA/D,EAAAE,EAAAF,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAoC,GAAA,CAAA,EAAAlC,IAAA+F,GAAA,EAAAtG,GAAAO,CAAA,CAAA,EAAA+D,GAAA,CAAA,EAAA/D,IAAA,CAAA,IAAAF,EAAA,CAAA,EAAA,QAAAI,KAAA,EAAAkC,GAAA,KAAA,EAAAlC,CAAA,GAAAF,EAAA,QAAAE,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAA8F,GAAA,QAAA9F,KAAA8F,GAAA,CAAA,EAAAhG,EAAA,QAAAE,CAAA,EAAA,GAAA+F,GAAA,KAAA,EAAA/F,CAAA,IAAAJ,EAAAI,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAJ,CAAA,EA9CO,MAAAoG,GAAWC,GACtB,CACE7F,EAUAmC,IACG,CAXH,IAAAlC,EAAAD,EACE,UAAAgF,EACA,SAAAc,EACA,SAAAvF,EACA,SAAAwF,EACA,KAAA5F,EACA,OAAA6F,EACA,cAAAC,CAvCN,EAgCIhG,EAQKmE,EAAAtD,GARLb,EAQK,CAPH,WACA,WACA,WACA,WACA,OACA,SACA,eAAA,CAAA,EAvCND,EAAAC,EAAAiG,EA4CI,KAAM,CAACC,EAAWC,CAAY,EAAIhB,GAChCnF,GAAAD,EAAAoE,EAAM,iBAAN,KAAApE,EAAwBoE,EAAM,UAA9B,KAAAnE,EAAyC,EAC3C,EAEMoG,EAAWC,EAAyB,IAAI,EAE9CC,EACE,IAAG,CAnDT,IAAAvG,EAmDY,OAAAoG,GAAapG,EAAAoE,EAAM,UAAN,KAAApE,EAAiB,EAAK,CAAA,EACzC,CAACoE,EAAM,OAAO,CAChB,EAEA,MAAMpB,EAAKwD,EACT,IAAG,CAxDT,IAAAxG,EAAAC,EAAAiG,EAwDa,MAAA,CACL,IAAIlG,EAAAoE,EAAM,aAAN,KAAApE,EAAoB,OACxB,OAAOC,EAAAmE,EAAM,QAAN,KAAAnE,EAAe,OACtB,0BAA2B,CACzB,IAAIiG,EAAA9B,EAAM,aAAN,KAAA8B,EAAoB,OACxB,MAAO,aACT,CACF,GACA,CAAC9B,EAAM,WAAYA,EAAM,KAAK,CAChC,EAEAqC,EAAU,IAAM,CACVJ,EAAS,SAAWJ,IAAkB,SACxCI,EAAS,QAAQ,cAAgBJ,EACrC,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMS,EAAWF,EAAQ,KAAO,CAAE,QAAS,gBAAiB,GAAI,CAAE,CAAA,EAElE,OAAOR,EAELjF,EAAC,QAAAG,GAAA,CACC,KAAK,WACL,QAASkD,EAAM,QACf,eAAc+B,EACd,GAAIO,EACJ,IAAKL,EACL,SAAU9F,EACV,KAAMJ,EACN,QAASgG,EACT,SAAW/C,GAAO,CACZgB,EAAM,UAAY,QAAWgC,EAAahD,EAAG,OAAO,OAAO,EAC3D4B,GAAUA,EAAS5B,CAAE,CAC3B,EACA,SAAU0C,EACV,UAAW,KAAII,EAAA9B,EAAM,YAAN,KAAA8B,EAAmB,oBAAA,EAC7B9B,EACP,EAEAhD,EAAAG,GAAA,CACE,SAAA,CAAAR,EAACC,GAAAC,GAAAC,GAAAD,GAAAC,GAAA,GACKkD,CADL,EAAA,CAEC,QAAUhB,GAAO,CAjG3B,IAAApD,EAkGgB+F,GAIFrB,GACEtB,EAAG,OACFuB,GAAaA,EAA6B,OAAS,QACtD,IAEIP,EAAM,SAASA,EAAM,QAAQhB,CAAE,GACnCpD,EAAAqG,EAAS,UAAT,MAAArG,EAAkB,MAAA,EAEtB,EACA,KAAK,QAAA,CAAA,EACDmB,EAAW,sBAAsB,CAAA,EAjBtC,CAkBC,KAAK,WACL,eAAcgF,EACd,GAAInD,EACJ,IAAKb,EACL,SAAU5B,EAEV,SAAAQ,EAACkD,GAAA,CACC,MAAM,GACN,KAAK,QACL,GAAI,CAAE,cAAe,OAAQ,QAASkC,EAAY,EAAI,CAAE,EACxD,KAAK,OACP,CACF,CAAA,CAAA,EACApF,EAACwE,GAAA,CACC,KAAK,WACL,GAAI,CAAE,QAAS,MAAO,EACtB,IAAKc,EACL,QAAUjD,GAAO,CACfA,EAAG,gBAAA,CACL,EACA,KAAMjD,EACN,QAASgG,EACT,SAAW/C,GAAO,CACZgB,EAAM,UAAY,QAAWgC,EAAahD,EAAG,OAAO,OAAO,EAC3D4B,GAAUA,EAAS5B,CAAE,CAC3B,EACA,SAAU0C,EACV,SAAUvF,CACZ,CAAA,CAAA,CAAA,CACF,CAEJ,CACF,EAEAqF,GAAS,YAAc,gWCnJvBe,GAAA3G,GAGA,MAAM4G,GAAc,GAMdC,GAAc,IAAK7G,GAAA,KAAM,CAmB7B,aAAc,CAlBd,KAA6C,QAAA,CAAA,EAE7C8G,GAAA,KAAAH,GAAuC,CAAA,GAiBrCI,GAAgB,GACd,eACA,IAAM,CACJ,QAAQ,KAAK,KAAK,OAAO,CAC3B,EACA,wDACF,CACF,CAtBA,SAASC,EAAmB,CAC1BC,GAAA,KAAKN,GAAoBO,GAAA,KAAKP,IAAkB,OAAQhC,GAC/CA,IAAYqC,CACpB,CAAA,CACH,CAEA,QAAQA,EAAmB,CACzB,OAAAE,GAAA,KAAKP,IAAkB,KAAKK,CAAE,EAEvB,IAAM,CACX,KAAK,SAASA,CAAE,CAClB,CACF,CAYA,WAAWG,EAAmC,CAC5C,OACEA,aAAc,UACbA,aAAc,aAAeA,EAAG,eAAiB,IAEtD,CAEA,IAAI,MAAMC,EAAwC,CAChD,KAAK,QAAU,KAAK,QAAQ,OAAQD,GACT,KAAK,WAAWA,CAAE,GAAKC,IAAYD,CAG7D,EACD,KAAK,QAAQ,QAAQC,CAAO,EACxB,KAAK,QAAQ,OAASR,KACxB,KAAK,QAAU,KAAK,QAAQ,OAAO,EAAGA,EAAW,GAGnDM,GAAA,KAAKP,EAAAA,EAAkB,QAASK,GACvBA,EACR,CAAA,CACH,CAEA,IAAI,MAAO,CACT,MAAO,CAAC,GAAG,KAAK,OAAO,CACzB,CAOA,KAAKK,EAAwBC,EAAO,EAAG,CACrC,GAAID,EACF,QAASvH,EAAIwH,EAAMxH,GAAK,KAAK,QAAQ,OAAQA,IAAK,CAChD,MAAMyH,EAAgB,KAAK,QAAQzH,CAAC,EAC9BsH,EAEHG,GAA+B,KAAO,OAClCA,EACDC,GAAWD,CAAa,EACxBA,EAAc,EAAK,EACnB,KAEN,GACEH,GACA,KAAK,WAAWA,CAAO,GACvBA,EAAQ,SACRA,EAAQ,QAAQC,CAAa,EAE7B,OAAOD,MAER,QAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAChD,OAAO,IACT,CACF,EAjFET,GAAA,IAHuB3G,QAAAA,yYCTzByH,GAAAC,GAAAC,GAAAC,GAAAC,GAAA7H,UAEA,KAAuB,CAAvB,aACE8G,CAAAA,GAAA,KAAAW,GAAY,EACZX,EAAAA,GAAA,KAAAY,GAA6B,IAAM,EACnCZ,EAAAA,GAAA,KAAAa,GAA8B,IAAM,IAEpC,IAAI,UAAW,CACb,OAAOT,GAAA,KAAKO,EACd,CAAA,CAEA,SAAU,CACRP,GAAA,KAAKS,EAAL,EAAA,KAAA,IAAA,CACF,CAEA,MAAO,CACLV,GAAA,KAAKQ,GAAY,EACjBP,EAAAA,GAAA,KAAKQ,EAAAA,EAAL,KACF,IAAA,CAAA,CAEA,QAAS,CACPT,GAAA,KAAKQ,GAAY,EACjBP,EAAAA,GAAA,KAAKQ,EAAAA,EAAL,KACF,IAAA,CAAA,CAEA,SAASV,EAAmB,CAC1B,OAAAC,GAAA,KAAKS,GAAcV,CAAAA,EAEZ,IAAOC,GAAA,KAAKS,GAAc,IAAM,EACzC,CAAA,CAEA,UAAUV,EAAmB,CAC3B,OAAAC,GAAA,KAAKU,GAAeX,CAAAA,EAEb,IAAOC,GAAA,KAAKU,GAAe,IAAM,CAC1C,CAAA,CAAA,CACF,EAjCEF,GAAA,IACAC,QAAAA,GAAA,IACAC,QAAAA,GAAA,IAiCF,QAAA,MAAMG,GAAiB,IAAK9H,GAAA,KAA0B,CAA1B,aAAA,CAE1B8G,GAAA,KAAAc,EADA,EAAA,KAAA,QAA8B,CAAC,CAAA,CAgB/B,WAAY,CACV,MAAMG,EAAS,IAAIC,GACnB,OAAAD,EAAO,SAAS,IAAME,GAAA,KAAKL,GAAAC,EAAL,EAAA,KAAA,IAAA,CAAgB,EACtCE,EAAO,UAAU,IAAM,CACrB,KAAK,QAAU,KAAK,QAAQ,OAAQpD,GAAYA,IAAYoD,CAAM,EAClEE,GAAA,KAAKL,GAAAC,EAAAA,EAAL,KACF,IAAA,CAAA,CAAC,EACD,KAAK,QAAQ,KAAKE,CAAM,EAEjBA,CACT,CACF,EA1BEH,GAAA,IAAAC,QAAAA,GAAS,UAAG,CACV,MAAMK,EACJ,KAAK,QAAQ,OAAQvD,GAAYA,EAAQ,QAAQ,EAAE,OAAS,EAE9D,SAAS,KAAK,MAAM,UAAY,QAE5BuD,GAAY,SAAS,KAAK,aAAe,SAAS,KAAK,eACzD,SAAS,KAAK,MAAM,aAAe,QAErC,SAAS,KAAK,MAAM,SAAWA,EAAW,SAAW,OAE/CA,GAAY,SAAS,KAAK,aAAe,SAAS,KAAK,eAC3D,SAAS,KAAK,MAAM,aAAe,MACvC,EAf0BlI,IA8BZ,SAAAmI,GAAkBC,EAAmB,CACnD3B,EAAU,IAAM,CACd,MAAMsB,EAASD,GAAe,UAAU,EACxC,OAAIM,EAAUL,EAAO,KAAA,EAChBA,EAAO,OAAO,EAEZ,IAAM,CACXA,EAAO,QAAA,CACT,CACF,EAAG,CAACK,CAAQ,CAAC,CACf,CCXU,IAAA1C,GAAA,OAAA,eAAA2C,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAA5I,GAAA,OAAA,sBAAA6I,GAAA,OAAA,UAAA,eAAAhF,GAAA,OAAA,UAAA,qBAAAvB,GAAA,CAAA,EAAA5C,EAAAI,IAAAJ,KAAA,EAAAsG,GAAA,EAAAtG,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAI,CAAA,CAAA,EAAA,EAAAJ,CAAA,EAAAI,EAAAG,GAAA,CAAA,EAAAP,IAAA,CAAA,QAAAI,KAAAJ,IAAAA,EAAA,CAAA,GAAAmJ,GAAA,KAAAnJ,EAAAI,CAAA,GAAAwC,GAAA,EAAAxC,EAAAJ,EAAAI,CAAA,CAAA,EAAA,GAAAE,GAAA,QAAAF,KAAAE,GAAAN,CAAA,EAAAmE,GAAA,KAAAnE,EAAAI,CAAA,GAAAwC,GAAA,EAAAxC,EAAAJ,EAAAI,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAgJ,GAAA,CAAA,EAAApJ,IAAAiJ,GAAA,EAAAC,GAAAlJ,CAAA,CAAA,EAAAoE,GAAA,CAAA,EAAApE,IAAA,CAAA,IAAAI,EAAA,CAAA,EAAA,QAAAI,KAAA,EAAA2I,GAAA,KAAA,EAAA3I,CAAA,GAAAR,EAAA,QAAAQ,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAF,GAAA,QAAAE,KAAAF,GAAA,CAAA,EAAAN,EAAA,QAAAQ,CAAA,EAAA,GAAA2D,GAAA,KAAA,EAAA3D,CAAA,IAAAJ,EAAAI,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAJ,CAAA,EA5CG,MAAAiJ,GAAUvG,EAAM,WAC3B,CACElC,EAWAmC,IACG,CAZH,IAAAlC,EAAAD,EACE,UAAAQ,EACA,UAAA4B,EAAY,GACZ,SAAAsG,EACA,iBAAAC,EACA,OAAQC,EAAO,GACf,4BAAAC,EACA,QAAAC,EACA,mBAAAC,EAAqB,GAjC3B,EAyBI9I,EASKmE,EAAAtD,GATLb,EASK,CARH,WACA,YACA,WACA,mBACA,SACA,8BACA,UACA,oBAAA,CAAA,EAjCND,EAAAC,EAsCI,MAAM+I,EAAW9G,EAAM,OAAuB,IAAI,EAC5C+G,EAAaC,GAAgBF,EAAU7G,CAAG,EAChD,OAAAgG,GAAkBS,CAAI,EAEpB7H,EAACoI,GAAA,CACC,GAAIP,EACJ,QAASG,EACT,SAAUL,EACV,WAAW,mBACX,OAAM,GACN,cAAa,GAEb,SAAA3H,EAACmD,EAAAjD,GAAAC,GAAAD,GAAAC,GAAA,CACC,UAAW,GAAGkB,YACd,IAAK6G,CACD7E,EAAAA,CAAAA,EAHL,CAIC,YAAU,UACV,KAAK,eACL,QAASlC,EAAM,YACZkB,GAAyC,CACpCA,EAAG,SAAW4F,EAAS,SAASL,EAAiBvF,CAAE,CACzD,EACA,CAACuF,CAAgB,CACnB,IACIxH,GACFnB,EAAAoE,EAAM,UAAN,KAAApE,EACE,+BAA+B8I,EAAU,YAAc,IAC3D,CAAA,EAfD,CAiBC,SAAA/H,EAACqI,GAAA,CACC,UAAWP,EAA8B,GAAQ,OACjD,YAAa,GACb,WAAY,GACZ,WACE5I,EAAA,SAAS,gBAAT,KAAA,OAAAA,EAAwB,UAAU,SAAS,YAC3C,SAAS,cAAc,UAAY,QAGpC,SAAAO,EACH,CACF,CAAA,CAAA,CAAA,CACF,CAEJ,CACF,EAEAiI,GAAQ,YAAc,UCtEtB,MAAMY,GAAkC,CAAC,CACvC,UAAAjH,EACA,MAAAkH,EACA,gBAAAC,EACA,GAAArJ,EACA,OAAAsJ,EACA,MAAA5G,EAAQ,EACV,IAAM,CACJ,MAAM6G,EAAkBC,KAElBC,EACJ5I,EAAC6I,GAAA,CACC,GAAG,KACH,GAAI,CACF,UAAW,aACX,EAAG,IACH,KAAM,MACN,MAAO,OACT,EACA,UAAU,eACV,GAAI1J,EAAK,SAASA,UAAa,GAE9B,SAAA0C,CACH,CAAA,EAGIiH,EAAc3H,EAAM,QACxB,IACEqH,EAAkB,KAChBxI,EAAC+I,GAAA,CACC,KAAK,SACL,KAAK,SACL,aAAY,OAAO,UACnB,QAASR,EACT,MAAO,OAAO,UACd,GAAI,CACF,GAAI,OACN,EACA,UAAU,oBAAA,CACZ,EAEJ,CAACA,EAAOC,CAAe,CACzB,EAEMQ,EAAgBP,GACpBzI,EAACmD,EAAA,CACC,GAAI,CACF,QAAS,OACT,IAAK8F,GAAW,CAAE,EAAG,EAAG,EAAG,MAAO,EAAG,CAAE,CAAC,EACxC,eAAgB,MAChB,cAAeA,GAAW,CAAE,EAAG,MAAO,EAAG,SAAU,EAAG,KAAM,CAAC,EAC7D,MAAOA,GAAW,CAAE,EAAG,OAAQ,EAAG,OAAQ,EAAG,MAAO,CAAC,EACrD,UAAW,cACX,OAAQ,MACV,EACA,UAAU,mBAET,SAAAR,CAAAA,CACH,EAGF,OAAOC,EAAkB,EACvBrI,EAAC8C,EAAA,CACC,UAAW9B,EACX,GAAI,CACF,QAAS,OACT,cAAe,MACf,WAAY,QACZ,GAAId,EAAQ,CAAC,EACb,eAAgB,gBAChB,MAAO,OACP,IAAKA,EAAQ,CAAC,EACd,SAAU,QACZ,EAEC,SAAAqI,CAAAA,EACAI,EACAF,CAAAA,CAAAA,CACH,EAEAzI,EAAC8C,EAAA,CACC,UAAW9B,EACX,GAAI,CACF,QAAS,OACT,cAAe,SACf,WAAY4H,GAAW,CAAE,EAAG,SAAU,EAAG,KAAM,CAAC,EAChD,GAAI1I,EAAQ,CAAC,EACb,eAAgB,gBAChB,MAAO,OACP,IAAKA,EAAQ,CAAC,CAChB,EAEA,SAAAF,CAAAA,EAAC8C,EAAA,CACC,GAAI,CACF,QAAS,OACT,MAAO,MACT,EAEC,SAAA,CAAAyF,EACAE,CAAAA,CAAAA,CACH,EACCE,CAAAA,CAAAA,CACH,CAEJ,ibC/FO,MAAME,GAAe/H,EAAM,cAChC,CAAA,CACF,EAwEagI,GAAQrE,GACnB,CACE,CACE,kBAAAsE,EAAoB,IACpB,SAAA3J,EAAW,KACX,UAAA4B,EACA,gBAAAmH,EACA,GAAArJ,EACA,0BAAAkK,EACA,mBAAAC,EACA,gBAAAC,EACA,OAAAC,EAAS,GACT,SAAAC,EACA,OAAAhB,EACA,QAAAiB,EACA,SAAAC,EAAW,GACX,QAAAC,EAAU,IAAM,CAAC,EACjB,SAAAjC,EAAW,IAAM,CACjB,EAAA,OAAAkC,EACA,iBAAAC,EAAmB,GACnB,0BAAAC,EAA4B,GAC5B,KAAAnI,EAAO,KACP,QAAAmG,EACA,MAAAlG,EAAQ,GACR,QAAAlC,CACF,EACAyB,IACG,CACH,KAAM,CAAC4I,EAAaC,CAAS,EAAI5F,EAASmF,CAAM,EAC1CU,EAAU/I,EAAM,QAAQ,IACrB,QAAQoC,OACd,CAAA,CAAE,EAELmC,EAAU,IAAM,CACduE,EAAUT,CAAM,CAClB,EAAG,CAACA,CAAM,CAAC,EAEX,MAAMW,EAAeC,EAAY,IAAM,CACrCH,EAAU,EAAK,EACfL,EACF,CAAA,EAAG,CAACA,CAAO,CAAC,EACN,CAACS,EAAgBC,CAAW,EAAInJ,EAAM,SAAsB,EAC5D+G,EAAaC,GACjBmC,EACAlJ,CACF,EAEMmJ,EAAwBC,GAA4C,CACpET,GAECS,EAAM,OAA0B,aAAa,WAAW,IACzD,WAEAL,EAGN,CAAA,EAEAzE,EAAU,IAAM,CACd,SAAS+E,EAAaD,EAAsB,CA5JlD,IAAAvL,GA6JQ,MAAMyL,GAAW,CAAC,GAAG,SAAS,iBAAiB,UAAU,CAAC,EAE1D,OACEA,GAAS,OAAS,KAClBzL,GAAAyL,GAASA,GAAS,OAAS,CAAC,IAA5B,KAAA,OAAAzL,GAA+B,MAAOiL,GACtCM,EAAM,MAAQ,UAEdA,EAAM,eACNA,EAAAA,EAAM,gBAAgB,EAEtBL,EAAa,EAEN,IAGF,EACT,CACA,OAAIH,GAAeF,GACjB,SAAS,iBAAiB,UAAWW,EAAc,EAAK,EACnD,IAAM,CACX,SAAS,oBAAoB,UAAWA,EAAc,EAAK,CAC7D,CACF,EAAG,CAACX,EAAkBE,EAAaG,EAAcD,CAAO,CAAC,EAEzD/I,EAAM,UACJ,IAAM,CACA,CAACuI,GAAWM,GACVK,GACGM,GAAM,GACT,IACMrB,EACKA,EAAmBe,CAAc,EACtCd,GAAA,MAAAA,EAAiB,SAEhBA,GAAiB,SAAWc,GAC7B,cAAcO,EAAa,EACxBP,EAAe,cACpBQ,GAAiB,2BAA2B,CAC9C,EAEF3K,GAAAC,GAAA,CAAKkJ,EAAAA,CAAAA,EAAL,CAAgC,0BAA2B,EAAK,CAClE,CAAA,CAGN,EAEA,CAACgB,CAAc,CACjB,EAEA,MAAMS,EAAU3J,EAAM,QAAQ,IACrB0I,GAAU1I,EAAM,SAEtB,CAAA,CAAE,EAEL,OACEnB,EAACkJ,GAAa,SAAb,CACC,MAAO/H,EAAM,QAAQ,KACZ,CAAE,cAAe,GAAG+I,eAAsB,GAChD,CAACA,CAAO,CAAC,EAEZ,SAAAlK,EAAC8K,EAAA,CACC,SAAA9K,EAAC0H,GAAA,CACC,iBAAkB6C,EAClB,OAAQf,EACR,UAAWnI,EACX,QAAS0G,EACT,IAAKG,EACL,SAAUP,EACV,GAAIuC,EACJ,4BAA6BR,EAE7B,SAAA1J,EAACoI,GAAA,CACC,GAAIoB,EACJ,QAASJ,EACT,WAAW,QACX,OAAM,GACN,cAAa,GAEb,SAAApJ,EAACmD,EAAAjD,GAAAC,GAAA,CACC,UAAU,uBAAA,EACLR,EAAUS,EAAWT,CAAO,EAAI,CAAC,CAAA,EAFvC,CAIC,SAAAU,EAAC8C,EAAA,CACC,GAAIhE,EACJ,KAAK,SACL,aAAW,OACX,aAAY0C,EACZ,mBAAkB,GAAGqI,gBACrB,cAAY,QACZ,UAAU,cAEV,8BAA2B,GAC3B,GAAI/I,EAAM,QAAQ,IACThB,GAAA,CACL,QAAS,wBAAwByB,GAAAA,EAC7B6H,IAAa,OAAY,CAAE,SAAAA,CAAS,EAAI,CAAA,CAE7C,EAAA,CAACA,EAAU7H,CAAI,CAAC,EACnB,eAAc,wBAAwBA,IAErC,SAAC+H,CAAAA,CAAAA,GACA3J,EAACsI,GAAA,CACC,UAAU,gBACV,OAAQG,EACR,MAAO5G,EACP,MAAOsI,EACP,gBAAiB3B,EACjB,GAAI,GAAG0B,UACT,CAAA,EAEFlK,EAACmD,EAAA,CACC,UAAU,iBACV,GACE,OAAO1D,GAAa,SAChB,GAAGyK,gBACH,OAGL,SAAAzK,CAAAA,CACH,CACF,CAAA,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,CACF,CACF,CAAA,CAAA,CACF,CAEJ,CACF,EAEA0J,GAAM,YAAc,0lBCpRb,MAAM4B,GAAgB5J,EAAM,WACjC,CAAClC,EAAgEmC,IAAQ,CAAxE,IAAAlC,EAAAD,EAAE,gBAAA+L,EAAgB,SAAAC,EAAU,SAAAC,EAAU,OAAAC,EAAQ,KAAAvJ,CAZjD,EAYG1C,EAAuDmE,EAAAtD,GAAvDb,EAAuD,CAArD,iBAAgB,WAAU,WAAU,SAAQ,MAC7C,CAAA,EAAA,OACEc,EAACmJ,GAAAjJ,GAAAC,GAAA,CACC,SAAQ,GACR,KAAMyB,GAAQ,MACd,iBAAgB,GAChB,0BAAyB,GACzB,IAAKR,GACDiC,CANL,EAAA,CAOC,mBAAqB+H,GACZA,GAAU,cACf,+BAIJ,EAAA,SAAApL,EAACqL,GAAA,CACC,WAAYL,EACZ,OAAQG,EACR,MAAOD,GAAY,IAAI,KACvB,UAAU,SACV,WAAW,OACX,UAAU,SACV,WAAW,MAAA,CACb,GACF,CAEJ,CACF,EAEAH,GAAc,YAAc,+bCwCrB,SAASO,GAASC,EAAwC,CAjFjE,IAAAtM,EAAAC,EAAAiG,EAkFE,KAAM,CAAC7F,EAAWkM,CAAY,EAAIrK,EAAM,SAAS,EAAK,EAChD,CAACqI,EAAQS,CAAS,EAAI9I,EAAM,UAChCgE,GAAAjG,GAAAD,EAAAsM,GAAe,aAAf,KAAA,OAAAtM,EAA2B,cAA3B,KAAAC,EACEqM,GAAe,gBADjB,KAAApG,EAEE,EACJ,EAEM,CACJ,OAAA0E,EACA,KAAM4B,EACN,KAAMC,CACR,EAAIC,GAAUzL,GAAAC,GAAA,CAAA,EACToL,GAAe,UADN,EAAA,CAEZ,YAAa,YACb,oBAAqB,GACrB,UAAW,GACX,mBAAoB,GACpB,YAAa,GACb,iBAAkB,EACpB,CAAA,CAAC,EAEKK,EAAOzK,EAAM,YAAY,IAAM,CACnC8I,EAAU,EAAK,CACjB,EAAG,CAAA,CAAE,EACC4B,EAAO1K,EAAM,YAAY,IAAM,CAC/BoK,GAAA,MAAAA,EAAe,YACjBC,EAAa,EAAI,EACjBD,EACG,WACA,EAAA,KAAK,IAAM,CACVtB,EAAU,EAAI,EACduB,EAAa,EAAK,CACpB,CAAC,EACA,MAAM,QAAQ,KAAK,GACjBvB,EAAU,EAAI,CACvB,EAAG,CAACsB,CAAa,CAAC,EACZ3B,EAAUzI,EAAM,YAAY,IAAM,CACtC8I,EAAU,EAAK,EACXsB,GAAA,MAAAA,EAAe,SAASA,EAAc,QAAA,CAC5C,EAAG,CAACA,CAAa,CAAC,EACZ5D,EAAWxG,EAAM,YAAY,IAAM,CACvCsK,EACIF,EAAAA,GAAA,MAAAA,EAAe,UAAUA,EAAc,UAC7C,EAAG,CAACA,EAAeE,CAAU,CAAC,EACxBK,EAAwB3K,EAAM,QAAQ,KACnC,CACL,UAAA7B,EACA,KAAAuM,CACF,GACC,CAACvM,EAAWuM,CAAI,CAAC,EAEpB,OAAArG,EAAgB,IAAM,CAChBgE,GACE+B,GAAA,MAAAA,EAAe,QAAQA,EAAc,OAAO,EAChDG,EACK9B,GAAAA,IACT,CAAA,EAAG,CAACJ,CAAM,CAAC,EAEJ,CACL,KAAAoC,EACA,UAAAtM,EACA,OAAAkK,EACA,QAAAI,EACA,SAAAjC,EACA,sBAAAmE,EACA,OAAAjC,EACA,KAAAgC,CACF,CACF,CCxII,IAAAnN,GAAA,OAAA,eAAAH,GAAA,OAAA,iBAAAO,GAAA,OAAA,0BAAAD,GAAA,OAAA,sBAAAP,GAAA,OAAA,UAAA,eAAAiJ,GAAA,OAAA,UAAA,qBAAA5I,GAAA,CAAAF,EAAAJ,EAAAO,IAAAP,KAAAI,EAAAC,GAAAD,EAAAJ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAO,CAAA,CAAA,EAAAH,EAAAJ,CAAA,EAAAO,EAAAmN,GAAA,CAAAtN,EAAAJ,IAAA,CAAA,QAAAO,KAAAP,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAO,CAAA,GAAAD,GAAAF,EAAAG,EAAAP,EAAAO,CAAA,CAAA,EAAA,GAAAC,GAAA,QAAAD,KAAAC,GAAAR,CAAA,EAAAkJ,GAAA,KAAAlJ,EAAAO,CAAA,GAAAD,GAAAF,EAAAG,EAAAP,EAAAO,CAAA,CAAA,EAAA,OAAAH,CAAA,EAAAM,GAAA,CAAAN,EAAAJ,IAAAE,GAAAE,EAAAK,GAAAT,CAAA,CAAA,EALS,MAAA2N,GAA8C,CAAC,CAC1D,SAAAvM,EACA,UAAA4B,CACF,IAEIrB,EAACmD,EAAAjD,GAAAC,GAAA,CACC,UAAW,GAAGkB,GAAa,iBACvBjB,EAAW,iCAAiC,CAFjD,EAAA,CAIE,SAAAX,CACH,CAAA,CAAA,ibCVG,SAASwM,GAAiB7K,EAAkB,CACjD,OAAOA,GAAK,cAAc,uBAC5B,CAAA,CA0Ba,MAAA8K,GAA8B,CAAC,CAC1C,kBAAAC,EACA,yBAAAC,EACA,SAAA3M,EACA,kBAAmB4M,EAAc,OAAO,YACxC,iBAAkBC,EAAa,OAAO,WACtC,qBAAsBC,EAAc,UACpC,SAAA/M,EACA,iBAAAgN,EACA,kBAAAC,EACA,UAAWC,EACX,SAAUC,EACV,UAAArN,EACA,WAAAsN,EACA,UAAAvL,EACA,QAAA1B,CACF,IAAM,CACJ,KAAM,CAAE,cAAAkN,CAAc,EAAI1L,EAAM,WAAW+H,EAAY,EAEvD,OACE7I,EAAC8C,EAAAjD,GAAAC,GAAA,CAAA,EACKC,EAAWT,GAAW,8BAA8B,CADzD,EAAA,CAEC,UAAW,GAAG0B,GAAa,aAE3B,SAAArB,CAAAA,EAACmD,EAAA,CAAI,IAAKyJ,EAAY,UAAU,mBAAmB,GAAIC,EACpD,SAAApN,CAAAA,CACH,EACAY,EAAC2L,GAAA,CAAgB,UAAU,qBACzB,SAAA,CAAAhM,EAACmD,EAAA,CACC,UAAU,yBACV,QAAShC,EAAM,YACZkB,GAAyB,CAEtBsB,GAAkBtB,EAAG,OAAwBuB,GACpCA,EAAQ,UAAY,QAC5B,GAED+I,IAAkBtK,CAAAA,CACtB,EACA,CAACsK,CAAe,CAClB,EAEC,SAAAR,CAAAA,CACH,EAEA9L,EAAC8C,EAAA,CAAI,UAAU,0BACb,SAAAnD,CAAAA,EAACmD,EAAA,CACC,UAAU,gCACV,QAAShC,EAAM,YACZkB,GAAyB,CAEtBsB,GAAkBtB,EAAG,OAAwBuB,GACpCA,EAAQ,UAAY,QAC5B,GAED+I,IAAkBtK,CAAAA,CACtB,EACA,CAACsK,CAAe,CAClB,EAEC,SAAAP,CACH,CAAA,EACC,CAACK,GACAzM,EAAC4C,GAAA,CACC,QAAS8J,EACT,MAAOL,EACP,QAASE,EACT,SAAUjN,GAAaE,EACvB,UAAWF,EACX,UAAU,yBACV,KAAK,SAEJ,SAAA+M,CAAAA,CACH,EAEDM,GAAmB,CAACH,GACnBxM,EAAC4C,GAAA1C,GAAAC,GAAA,CACC,QAASwM,EACT,MAAOL,CACHlM,EAAAA,EAAW,WAAW,CAAA,EAH3B,CAIC,SAAUd,EACV,UAAU,wBAET,SAAAgN,CACH,CAAA,CAAA,CAAA,CAAA,CAEJ,CACF,CAAA,CAAA,CAAA,CAAA,CAAA,CACF,CAEJ,ECzHMQ,GAAe,IAAM,CACzB,MAAMC,EAAQC,KACd,OACEhN,EAACmD,EAAA,CACC,GAAI,CACF,IAAK,CAAE,OAAQ,kBAAmB,CACpC,EAEA,SAAAnD,EAACmD,EAAA,CACC,GAAI,CACF,OAAQ,UACR,SAAU,QACV,IAAK,EACL,KAAM,EACN,MAAO,CACT,EACA,UAAU,eAEV,SAAAnD,EAACiN,GAAA,CACC,MAAM,OACN,MAAOC,GAASH,EAAM,MAAO,sBAAsB,CACrD,CAAA,CAAA,CACF,CACF,CAAA,CAEJ,ibCrBa,MAAAI,GAAa,IAAM,CAC9B,MAAM/L,EAAMD,EAAM,OAAsB,IAAI,EACtC,CAACiM,EAAsBC,CAAuB,EAAIhJ,EAAS,EAAK,EAChE,CAACiJ,EAAOC,CAAQ,EAAIlJ,EAAS,CACjC,OAAQ,GACR,OAAQ,GACR,OAAQ,GACR,MAAO,EACT,CAAC,EAEDlD,EAAM,UAAU,IAAM,CACpB,MAAMqM,EAAe,CACnBC,GAAa,GAAG,kBAAoBpL,GAAO,CACzCkL,EAAU3J,GAAa1D,GAAAC,GAAA,CAAKyD,EAAAA,CAAAA,EAAL,CAAc,CAACvB,EAAG,QAAQ,EAAGA,EAAG,QAAS,CAAE,CAAA,EAClEgL,EAAwBhL,EAAG,oBAAoB,CACjD,CAAC,EACDoL,GAAa,GAAG,oBAAsBpL,GAAO,CAC3CkL,EAAU3J,GAAa1D,GAAAC,GAAA,CAAA,EAAKyD,CAAL,EAAA,CAAc,OAAQvB,EAAG,QAAS,CAAA,CAAE,EAC3DgL,EAAwBhL,EAAG,oBAAoB,CACjD,CAAC,CACH,EAEA,MAAO,IAAMmL,EAAa,QAAS5J,GAAYA,EAAAA,CAAS,CAC1D,EAAG,CAAA,CAAE,EAEL,MAAM8J,EAAYvM,EAAM,QAAQ,KACvB,CACL,gBAAiB,cACjB,4BAA6B,CAE3B,gBAAiBmM,EAAM,OACnB,cACAF,EACA,6BACA,4BACN,CACF,GACC,CAACE,EAAM,OAAQF,CAAoB,CAAC,EAEvC,MAAI,CAACE,EAAM,QAAU,CAACA,EAAM,QAAU,CAACA,EAAM,OAAS,CAACA,EAAM,OACpD,KAGPtN,EAACmD,EAAA,CACC,SAAA9C,EAACqH,GAAA,CACC,OAAM,GACN,SAAU,IAAM,CAAA,EAChB,iBAAkB,IAAM,GACxB,GAAIgG,EACJ,UAAW,GAAGN,EAAuB,GAAK,4BAC1C,mBAAoBA,EAAuB,OAAY,EAEtD,SAAAE,CAAAA,EAAM,OACLtN,EAAC8M,GAAA,CAAA,CAAa,EAEd9M,EAACS,GAAA,CAAQ,IAAKW,EAAK,GAAI,CAAE,IAAK,CAAE,MAAO,SAAU,CAAE,CAAG,CAAA,EAExDpB,EAACmD,EAAA,CAAI,SAAU,EAAG,MAAO,OAAO,aAAA,CAAe,CACjD,CAAA,CAAA,CAAA,CACF,CAEJ,EC9DawK,GAAoB,CAAC,CAAE,SAAAlO,EAAU,KAAAL,CAAK,IAA0B,CAC3E,KAAM,CAACgC,EAAKwM,CAAM,EAAIzM,EAAM,SAAgC,IAAI,EAShE,OAPAA,EAAM,UAAU,IAAM,CACpB,GAAI1B,EAAU,CACZ,MAAM+K,EAAQ,IAAI,YAAYqD,GAAa,MAAO,CAAE,QAAS,EAAK,CAAC,EACnEzM,GAAK,cAAcoJ,CAEvB,EAAA,EAAG,CAAC/K,EAAU2B,CAAG,CAAC,EAEd3B,EAEAO,EAACmD,EAAA,CACC,IAAKyK,EACL,KAAK,QACL,cAAaxO,EAAO,OAAOA,IAAS,KACpC,GAAI,CACF,GAAI,IACJ,MAAO,SACP,GAAI,GACN,EAEC,SAAAK,CAAAA,CACH,EAGG,IACT,olBCPa,MAAAqO,GAAa7O,GAgBR,CAhBQ,IAAAC,EAAAD,EACxB,CAAA,kBAAAkN,EACA,YAAArM,EACA,UAAAiO,EACA,UAAA1M,EACA,SAAA7B,EACA,WAAAwO,EACA,KAAA1M,EAAO,SACP,WAAA2M,EACA,SAAAC,EACA,UAAA5O,EACA,KAAA6O,EACA,QAAA9O,EACA,OAAA+O,EACA,SAAApJ,CA3CF,EA6B0B9F,EAerB4C,EAAA/B,GAfqBb,EAerB,CAdH,oBACA,cACA,YACA,YACA,WACA,aACA,OACA,aACA,WACA,YACA,OACA,UACA,SACA,UAAA,CAAA,EAGA,MAA6CD,EAAAgP,GAAc,CAAA,EAAnD,CAAII,GAAAA,CA9Cd,EA8C+CpP,EAArBqP,EAAAvO,GAAqBd,EAArB,CAAhB,IACFsP,CAAAA,EAAAA,EAAiBpN,EAAM,OAA0B,IAAI,EACrDqN,EAAkBrG,GAAgB4F,EAAWQ,CAAc,EAE3DE,EAAgBtN,EAAM,OAAyB,IAAI,EACnDuN,EAAiBvG,GAAgB+F,EAAUO,CAAa,EAExD,CAACE,EAAWC,CAAY,EAAIzN,EAAM,SAA6B,IAAI,EACnE0N,EAAa1N,EAAM,YACtBkB,GAAyB,CAEtB+L,IACC,CAAC/L,EAAG,eACFA,EAAG,eACF,CAACyM,EACCzM,EAAG,cACFuB,GAAYA,IAAY+K,CAC3B,IAEJP,EAAO/L,CAAE,CACb,EACA,CAAC+L,EAAQO,CAAS,CACpB,EAEA,OACEtO,EAAC8C,EAAAjD,GAAAC,GAAA,GACKC,EAAW,iBAAiB,CADjC,EAAA,CAEC,UAAW,GAAGiB,GAAa,eAC3B,IAAKuN,EAEL,SAAA5O,CAAAA,EAAC+O,GAAA7O,GAAAC,GAAA7B,GAAA,CACC,KAAM6P,GAAQ,GACd,OAAQU,EACR,SAAUvP,GAAaE,EAEvB,IAAKkP,EACL,SAAU1J,EACV,GAAI7E,GAAA,CAAE,QAAS,aAAkBkO,EAAAA,CAAAA,EACjC,eAAa,aAAA,EACTvM,CACAwM,EAAAA,CAAAA,EAVL,CAWC,UAAWH,GAAmBF,GAAA,KAAZ,OAAYA,EAAY,SAC5C,CAAA,CAAA,EACC9B,EACA,CAAC6B,GACAhO,EAACkB,GAAAf,GAAA,CACC,OAAQ0O,EACR,QAASxP,EACT,KAAMiC,EACN,SAAU0D,GAAYxF,EACtB,UAAWF,EACX,IAAKkP,CAAAA,EACD1O,CACN,CAAA,CAAA,CAAA,CAAA,CAEJ,CAEJ,ECrGakP,GAAuBC,IAC3B,CACL,gBAAkBA,EAAoB,KAAV,QAC5B,gBAAkBA,EAAkB,KAAR,MAC5B,gBAAkBA,EAAqB,OAAX,QAC9B,GAGWC,GAAyBC,IAC7B,CACL,YAAaA,EAAY,QAAU,KACnC,YAAaA,EAAY,MAAQ,KACjC,YAAaA,EAAY,SAAW,MACtC,GCoOM,IAAAC,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAA5M,GAAA,OAAA,sBAAA6M,GAAA,OAAA,UAAA,eAAA5O,GAAA,OAAA,UAAA,qBAAA6O,GAAA,CAAA,EAAA7Q,EAAAE,IAAAF,KAAA,EAAAyQ,GAAA,EAAAzQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAE,CAAA,CAAA,EAAA,EAAAF,CAAA,EAAAE,EAAA0I,GAAA,CAAA,EAAA5I,IAAA,CAAA,QAAAE,KAAAF,IAAAA,EAAA,CAAA,GAAA4Q,GAAA,KAAA5Q,EAAAE,CAAA,GAAA2Q,GAAA,EAAA3Q,EAAAF,EAAAE,CAAA,CAAA,EAAA,GAAA6D,GAAA,QAAA7D,KAAA6D,GAAA/D,CAAA,EAAAgC,GAAA,KAAAhC,EAAAE,CAAA,GAAA2Q,GAAA,EAAA3Q,EAAAF,EAAAE,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA4F,GAAA,CAAA,EAAA9F,IAAA0Q,GAAA,EAAAC,GAAA3Q,CAAA,CAAA,EAAA6I,GAAA,CAAA,EAAA7I,IAAA,CAAA,IAAAE,EAAA,CAAA,EAAA,QAAAR,KAAA,EAAAkR,GAAA,KAAA,EAAAlR,CAAA,GAAAM,EAAA,QAAAN,CAAA,EAAA,IAAAQ,EAAAR,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAqE,GAAA,QAAArE,KAAAqE,GAAA,CAAA,EAAA/D,EAAA,QAAAN,CAAA,EAAA,GAAAsC,GAAA,KAAA,EAAAtC,CAAA,IAAAQ,EAAAR,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAQ,CAAA,EA/NR,MAAM4Q,GAAiB,OAAO,UACxBC,GAA2B,IAE3BC,GAA0BC,KAE1BC,GAAuB,IACvBF,KAAe,aAAqB,aACjC,aAmCIG,GAAY3O,EAAM,WAC7B,CACElC,EAeAmC,IACG,CAhBH,IAAAlC,EAAAD,EACE,CAAA,qBAAA8Q,EACA,YAAaC,EACb,UAAA3O,EACA,MAAA4O,EACA,cAAAC,EACA,UAAA5Q,EACA,OAAA8O,EACA,SAAAnK,EACA,SAAAkM,EACA,QAAAC,EACA,YAAAC,EACA,MAAOC,CA5Eb,EAgEIpR,EAaKmE,EAAAtD,GAbLb,EAaK,CAZH,uBACA,cACA,YACA,QACA,gBACA,YACA,SACA,WACA,WACA,UACA,cACA,OAAA,CAAA,EAKF,MAAMC,EAAKgC,EAAM,QAAQoC,GAAU,CAAE,CAAA,EAC/B,CAACgN,EAAYC,CAAa,EAAIrP,EAAM,SAASmP,GAAc,EAAE,EAC7D,CAACpF,EAAUuF,CAAW,EAAItP,EAAM,WAChCuP,EAASvP,EAAM,OAA2B,IAAI,EACdlC,EAAAqM,GAAS,CAC7C,YAAa,CACX,OAAAxF,GAAY,MAAQ,IAAG,CAvF/B,IAAA7G,EAwFU,OAAAA,EAAAyR,EAAO,UAAP,KAAA,OAAAzR,EAAgB,cAAc,aAAA,CAAA,EACzB,IAAI,QAAS0R,GAAY,CAC9B,IAAIC,EAAsBC,GAAMN,EAAYZ,EAAU,EACjDiB,EAAoB,YACvBA,EAAsBC,GAAM,IAAI,IAAM,GACxCJ,EAAYG,EAAoB,QAAQ,EACxCD,EACF,CAAA,CAAC,CACH,CACF,CAAC,EAZO,CAAA9E,KAAAA,EAAM,KAAAD,CArFlB,EAqF0C3M,EAAf6R,EAAA/Q,GAAed,EAAf,CAAf,OAAM,SAaR,CAAC8R,EAAYC,CAAQ,EAAI7P,EAAM,SAAwB8O,GAAS,IAAI,EAEpEgB,EAAmB9P,EAAM,OAAOmP,GAAc,EAAE,EACtD9K,EAAgB,IAAM,CACpBgL,EAAcF,GAAc,EAAE,EAC9BW,EAAiB,QAAUX,CAC7B,EAAG,CAACA,CAAU,CAAC,EAEf9K,EAAgB,IAAM,CACpBwL,EAASf,GAAS,IAAI,CACxB,EAAG,CAACA,CAAK,CAAC,EAEVzK,EAAgB,IAAM,CAChB4K,GAASA,EAAQW,CAAU,CACjC,EAAG,CAACA,CAAU,CAAC,EAEf,MAAMG,EAAgB/P,EAAM,YACzBgQ,GACKA,IAAaF,EAAiB,SAAWhN,GAC3CgN,EAAiB,QAAUE,EACpBlN,EAASkN,CAAQ,GAEnB,GAET,CAAClN,CAAQ,CACX,EAEMmN,EAAmBjQ,EAAM,YAC7B,CAAC+C,EAAemN,IAAsB,CACpC,GAAInN,IAAU,GAAI,CACXgN,EAAc,EAAE,EACrBV,EAAc,EAAE,EAChB,OAEF,IAAIc,EACApN,IAAU,IAEZoN,EAAUT,GAAM3M,EAAOyL,EAAU,EAC5B2B,EAAQ,QAAQ,IAAGA,EAAUT,GAAM,IAAI,IAAM,IAElDS,EAAUT,GAAM,IAAI,IAAM,EAE5B,MAAMU,GAAgBD,EAAQ,OAAO3B,EAAU,EACzC6B,GAAQ,IAAI,KAElB,GADAA,GAAM,SAAS,EAAG,EAAG,EAAG,CAAC,EACrBD,KAAkBhB,GAAcc,IAAY,GACzCH,EAAc,EAAE,EACrBV,EAAc,EAAE,EAChBQ,EAAS,OAAO,gBAAgB,UACvBjB,IAAyB,IAASuB,EAAQ,SAASE,EAAK,EAC5DN,EAAc,EAAE,EACrBV,EAAc,EAAE,EAChBQ,EAAS,OAAO,uBAAuB,MAClC,CACL,MAAMS,GAAcP,EAAchN,IAAU,GAAK,GAAKqN,EAAa,EAC/DE,KAAgB,IAClBjB,EAAciB,IAAe,EAAE,EAC/BT,EAAS,IAAI,GACJ,OAAOS,IAAgB,UAChCjB,EAAc,EAAE,EAChBQ,EAASS,EAAW,IAEpBjB,EAAce,EAAa,EAC3BP,EAAS,IAAI,GAGnB,EACA,CAACjB,EAAsBQ,EAAYW,CAAa,CAClD,EAEMQ,EAAavQ,EAAM,YACtBwQ,GAAoB,CACnB/F,EAAAA,EACA,MAAMuF,EAAWN,GAAMc,CAAG,EAAE,OAAOhC,EAAU,EAC7CyB,EAAiBD,EAAU,EAAI,CACjC,EACA,CAACvF,EAAMwF,CAAgB,CACzB,EAEMQ,EAAuBzQ,EAAM,YAAY,IAAM,CACnDyK,GACF,EAAG,CAACA,CAAI,CAAC,EAEHiD,EAAa1N,EAAM,YACtBkB,GAA2C,CAExC+L,GACA,CAACU,EAAQzM,EAAG,cAA+BuB,GAEvCA,EAAQ,KAAO,YAAYzE,KAAQyE,EAAQ,KAAO,YAAYzE,GAEjE,GAEDiP,EAAO/L,CAAE,CAEb,EACA,CAAClD,EAAIiP,CAAM,CACb,EAEMH,GAAa9M,EAAM,QACvB,IAAOjB,GAAAC,GAAA,GACFkD,CAAAA,EADE,CAEL,UAAW,YACX,MAAOgN,EAAcA,EAAYE,CAAU,EAAIA,EAC/C,IAAAnP,EACA,SAAWiB,GAA4C,CACrDmO,EAAcnO,EAAG,OAAO,KAAK,EAE3BwN,GAAqB,EAAE,WAAW,IAAKH,EAAwB,IAC7DrN,EAAG,OAAO,OACZA,EAAG,OAAO,QAAU,IAEpB2O,EAAS,IAAI,CACjB,EACA,OAAS3O,GAA2C,CAC5CgB,EAAM,UAAY6M,GACtBkB,EAAiB/O,EAAG,OAAO,KAAK,EAClCwM,EAAWxM,CAAE,CACf,EACA,UAAYA,GAA4B,CAClCA,EAAG,MAAQ,SAAS+O,EAAiBb,CAAU,CACrD,CACF,CAAA,EACA,CACEL,EACArB,EACA0B,EACAlN,EACAjC,EACAiP,EACAe,CACF,CACF,EAEMtR,GAAcqB,EAAM,QACxB,IAAG,CAzOT,IAAAlC,EAyOa,OAAAkB,GAAA,CACL,UAAUlB,EAAAoE,EAAM,WAAN,KAAApE,EAAkBoE,EAAM,SAClC,aAAc,OAAO,eAClB2M,CAEL,CAAA,EAAA,CAACA,EAAkB3M,EAAM,SAAUA,EAAM,QAAQ,CACnD,EAEM8I,GAAoBhL,EAAM,QAC9B,IACEnB,EAAC+I,GAAA,CACC,UAAU,qBACV,QAAS,IAAM,CArPzB,IAAA9J,EAsPYmS,EAAiB,EAAE,EACnBjB,OAEElR,EAAA,SAAS,cACP,aAAaE,SACf,IAFA,MAAAF,EAGC,MAAA,CACL,EACA,KAAK,QAAA,CACP,EAEF,CAACE,EAAIgR,EAAUiB,CAAgB,CACjC,EAEA,OACE/Q,EAAAG,GAAA,CACE,SAAA,CAAAR,EAAC+K,GAAA7K,GAAAC,GAAA,CACK2Q,EAAAA,CAAAA,EADL,CAEC,SAAU5F,EACV,OAAQuE,GACR,eAAgBiC,EAChB,SAAUE,EACV,GAAI,YAAYzS,KAClB,EACAkB,EAAC8C,EAAAjD,GAAAC,GAAA,GACKC,EAAW,iBAAiB,GADjC,CAEC,UAAW,GAAGiB,GAAa,eAC3B,GAAI,YAAYlC,IAChB,IAAKuR,EAEL,SAAA1Q,CAAAA,EAAC8N,GAAA,CACC,kBACEyC,GACAA,IACEV,KAAuB,WACrB,IACAH,EACF,GACF,CAACrM,EAAM,UACP,CAACA,EAAM,SACH8I,GACA,OAEN,UAAW7M,EACX,gBAAiBoQ,GACjB,KAAMQ,EAAgBA,EAAc,EAAIL,KACxC,KAAM1N,GAAM,SACZ,OAAQ0M,EACR,YAAa/O,GACb,WAAYmO,GACZ,SAAU5K,EAAM,SAChB,GAAI2L,GAAoB+B,IAAe,IAAI,EAC3C,QAASlF,CAAAA,CACX,EACCkF,GAAc/Q,EAAC2N,GAAA,CAAmB,SAAAoD,EAAW,CAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CACF,CAEJ,CACF,EAEAjB,GAAU,YAAc,YCjJlB,IAAA+B,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAAlR,GAAA,OAAA,sBAAA3C,GAAA,OAAA,UAAA,eAAAC,GAAA,OAAA,UAAA,qBAAA6T,GAAA,CAAAvT,EAAAE,EAAAD,IAAAC,KAAAF,EAAAoT,GAAApT,EAAAE,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAD,CAAA,CAAA,EAAAD,EAAAE,CAAA,EAAAD,EAAA+F,GAAA,CAAAhG,EAAAE,IAAA,CAAA,QAAAD,KAAAC,IAAAA,EAAA,CAAA,GAAAT,GAAA,KAAAS,EAAAD,CAAA,GAAAsT,GAAAvT,EAAAC,EAAAC,EAAAD,CAAA,CAAA,EAAA,GAAAmC,GAAA,QAAAnC,KAAAmC,GAAAlC,CAAA,EAAAR,GAAA,KAAAQ,EAAAD,CAAA,GAAAsT,GAAAvT,EAAAC,EAAAC,EAAAD,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAsC,GAAA,CAAAtC,EAAAE,IAAAmT,GAAArT,EAAAsT,GAAApT,CAAA,CAAA,EAAAsT,GAAA,CAAAxT,EAAAE,IAAA,CAAA,IAAAD,EAAA,CAAA,EAAA,QAAAI,KAAAL,EAAAP,GAAA,KAAAO,EAAAK,CAAA,GAAAH,EAAA,QAAAG,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAoC,GAAA,QAAA/B,KAAA+B,GAAApC,CAAA,EAAAE,EAAA,QAAAG,CAAA,EAAA,GAAAX,GAAA,KAAAM,EAAAK,CAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAAJ,CAAA,EA1IN,SAASwT,GAAUC,EAAgB,CACjC,OAAO,MAAM,KAAK,IAAI,EAAGA,CAAM,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CACnD,CAEA,SAASC,GAAmBlO,EAAe,CACzC,MAAMmO,EAAc,OAAOnO,CAAK,EAChC,MAAO,GAAGgO,GAAU,EAAIG,EAAY,MAAM,IAAI,OAAOnO,CAAK,GAC5D,OAEMoO,GAAe,OAAO,OAAO,wBAAwB,EACrDC,GAAe,OAAO,OAAO,oBAAoB,EACjDC,GAAmB,OAAO,uBAC1BC,GAAqB,OAAO,qBAC5BC,GACJD,KAAuB,IAAM,MAAQA,GACjCE,GACJH,KAAqB,IAAM,MAAQA,GAGrB,SAAAI,GAA8B1O,EAAuB,CACnE,OAAO,OAAO,WACZA,EAAM,WAAWuO,GAAoB,EAAE,EAAE,WAAWD,GAAkB,GAAG,CAC3E,CACF,CAEgB,SAAAK,GAA8B3O,EAAgC,CAjD9E,IAAAjF,EAmDE,MAAM6T,EADe,OAAO5O,CAAK,EACL,MAAM,sBAAsB,EACxD,GAAI,CAAC4O,EAAQ,MAAO,GAEpB,MAAMC,EAAa,CAAC,CAACD,EAAO,CAAC,EACvBE,EAAUF,EAAO,CAAC,EAClBG,EAAWH,EAAO,CAAC,EACnBI,EAAiBD,EAAW,GAAGN,KAAyBM,IAAa,GAE3E,OACEhU,EAAAkU,GAAkB,GAAGJ,EAAa,IAAM,KAAKC,IAAUE,GAAgB,IAAvE,KAAAjU,EACA,EAEJ,CAEA,SAASkU,GACPjP,EACAkP,EAA0B,GACX,CApEjB,IAAAnU,EAAAC,EAAAiG,EAAAkO,EAqEE,MAAMP,EAAS5O,EAAM,MACnB,IAAI,OACF,wBAAwBwO,cAAoCA,mCAAyDC,cACvH,CACF,EACA,GAAI,CAACG,EAAQ,OAAO,KAEpB,MAAMC,EAAa,CAAC,CAACD,EAAO,CAAC,EAC7B,IAAIQ,EAAS,OAAOR,EAAO,CAAC,EAAE,WAAWL,GAAoB,EAAE,CAAC,EAChE,MAAMc,EAAiBH,EACnBN,EAAO,CAAC,GACR5T,GAAAD,EAAA6T,EAAO,CAAC,IAAR,KAAA7T,OAAAA,EAAW,MAAM,EAAGqT,GAAe,CAAnC,IAAA,KAAApT,EAAyC,GAC7C,IAAIgU,EACJ,GAAKE,EAqBHF,EAAiBK,MArBW,CAC5B,MAAMC,GACHH,GAAAlO,GAAAoO,EACG,GAAG,OACD,KAAK,MACH,CACE,GAAGA,IAAiBrB,GACgBI,GAChCiB,EAAe,MACnB,IACsB,CAC1B,CACF,IACA,IAED,MAAM,EAAGjB,EAAY,EACrB,MAAM,cAAc,IAdtB,KAAAnN,OAAAA,EAc0B,CAd1B,IAAA,KAAAkO,EAcgC,GACnCH,EAAiB,GAAGM,IAAiBtB,GACnCK,GAAeiB,EAAe,MAChC,IAKF,MAAMC,EAA8B,GACpC,KAAOH,GAAU,KAAM,CACrBA,GAAU,IACV,MAAMI,EAAiB,KAAK,MAAMJ,CAAM,EACxCG,EAAkB,QAChBrB,GAAmB,KAAK,OAAOkB,EAASI,GAAkB,GAAI,CAAC,CACjE,EACAJ,EAASI,EAEX,OAAAD,EAAkB,QAAQ,OAAOH,CAAM,CAAC,EAEjC,GAAGP,EAAa,IAAM,KAAKU,EAAkB,KAClD,OAAO,uBAAyB,OAAO,qBAAuB,EAChE,IAAIP,EAAe,OAAS,EAAI,GAAGV,KAAmBU,IAAmB,IAC3E,CAEO,MAAMS,GAAcxS,EAAM,WAC/B,CAAClC,EAA8CmC,IAAQ,CAAtD,IAAAlC,EAAAD,EAAE,CAAA,MAAAiF,EAAO,wBAAAkP,CA3HZ,EA2HGlU,EAAqCmE,EAAAtD,GAArCb,EAAqC,CAAnC,QAAO,yBAAA,CAAA,EACR,KAAM,CAAC0U,EAAaC,CAAc,EAAI1S,EAAM,SAAiB,EAAE,EACzD,CAAC2S,EAAWC,CAAY,EAAI5S,EAAM,SAAiB,EAAE,EACrD8P,EAAmB9P,EAAM,OAAe,EAAE,EAE1C6S,EAAW7S,EAAM,YACpBgQ,GAAqB,CAjI5B,IAAAlS,EAAAC,EAAAiG,EAkIQ,GAAIgM,IAAa,GAAI,CACnB,GAAIA,IAAaF,EAAiB,QAAS,OAC3C4C,EAAe,EAAE,EACjBE,EAAa,EAAE,GACf9U,EAAAoE,EAAM,WAAN,MAAApE,EAAA,KAAAoE,EAAiB,CAAE,MAAO,GAAI,MAAO,EAAM,CACtC,MAAA,CACL,MAAM4Q,EAAcd,GAClBhC,EACAiC,CACF,EACA,GAAIa,IAAgB,KAClBJ,EAAe,EAAE,EACjBE,EAAa,EAAE,GACf7U,EAAAmE,EAAM,WAAN,MAAAnE,EAAA,KAAAmE,EAAiB,CAAE,MAAO,GAAI,MAAO,EAAK,CAAA,MACrC,CACL,GAAI8N,IAAaF,EAAiB,QAAS,OAC3C4C,EAAe1C,CAAQ,EACvB4C,EAAaE,CAAW,GACxB9O,EAAA9B,EAAM,WAAN,MAAA8B,EAAA,KAAA9B,EAAiB,CAAE,MAAO4Q,EAAa,MAAO,EAAM,CAAA,GAGxDhD,EAAiB,QAAUE,CAC7B,EACA,CAACiC,EAAyB/P,CAAK,CACjC,EAEA,OAAAlC,EAAM,UAAU,IAAM,CAChB+C,IAAU0P,GAAaI,EAAU9P,GAAoB,EAAE,CAE7D,EAAG,CAACA,CAAK,CAAC,EAGRlE,EAACwE,GAAAtE,GAAAC,GAAA,CAAA,EACKkD,CADL,EAAA,CAEC,QAASlC,EAAM,YACZkB,GAA2C,CArKtD,IAAApD,GAsKYA,EAAAoE,EAAM,UAAN,MAAApE,EAAA,KAAAoE,EAAgBhB,GAChB0R,EACE,OAAOH,CAAW,EAAE,WAAWnB,GAAoB,EAAE,CACvD,CACF,EACA,CAACmB,EAAavQ,CAAK,CACrB,EACA,OAAQlC,EAAM,YACXkB,GAA2C,CAC1C2R,EAAS3R,EAAG,OAAO,KAAK,CAC1B,EACA,CAAC2R,CAAQ,CACX,EACA,SAAU7S,EAAM,YACbkB,GAA4C,CAC3C0R,EAAa1R,EAAG,OAAO,KAAK,CAC9B,EACA,CAAA,CACF,EACA,KAAK,OACL,IAAKjB,EACL,MAAO0S,CACT,CAAA,CAAA,CAEJ,CACF,EAEAH,GAAY,YAAc,cCtLnB,MAAMO,GAAe,CAAC,CAC3B,eAAAC,EAAiB,GACjB,WAAAC,EAAa,GACb,WAAAC,EAAa,EACf,IACSD,GAAc,CAACC,GAAc,CAACF,EACnCnU,EAAC,OAAA,CAAK,UAAU,WAAW,MAAOsU,GAAS,eAAe,EAAE,KAAM,aAElE,EACE,KCfAC,GAAuB,CAC3B,CAAE,OAAAC,EAAQ,SAAAvQ,EAAU,OAAAmK,EAAQ,aAAAqG,CAAa,EACzCrT,IACG,CACH,KAAM,CAAC8C,EAAO8P,CAAQ,EAAI7S,EAAM,SAAiB,OAAOqT,EAAO,YAAY,CAAC,EACtE,CAACE,EAAqBC,CAAsB,EAAIxT,EAAM,SAC1D,OAAOqT,EAAO,YAAY,CAC5B,EAEMI,EAAczT,EAAM,YAAakB,GAAyB,CAC9DA,EAAG,gBACL,CAAA,EAAG,CAAA,CAAE,EAEL,OAAAmD,GAAgB,IAAM,CACpBwO,EAASQ,EAAO,YAAsB,CACxC,EAAG,CAACA,EAAO,YAAY,CAAC,EAGtBxU,EAAC8P,GAAA,CACC,MAAO5L,EACP,GAAI8K,GAAoB,CAACwF,EAAO,KAAK,EACrC,aAAYA,EAAO,QACnB,IAAKpT,EACL,YAAaoT,EAAO,YACpB,SAAWnS,GAAO,CAChB,GAAI4B,EAAU,CACZ,MAAM6O,EAAS7O,EAAS,OAAO5B,CAAE,CAAC,EAClC,OAAIyQ,IAAW,IACbkB,EAAS3R,CAAE,EACJ,IAEFyQ,EAET,MAAO,EACT,EACA,QAAS8B,EACT,OAAQ,IAAM,CACR1Q,IAAUwQ,GAAuBtG,IACnCuG,EAAuBzQ,CAAK,EAC5B8P,EAAS9P,CAAK,EACdkK,EAAOlK,CAAK,EAEhB,EACA,UAAY7B,GAAO,CACbA,EAAG,IAAI,gBAAkB,SAAWoS,IACtCE,EAAuBzQ,CAAK,EAC5BuQ,EAAavQ,CAAK,EAEtB,EACF,CAEJ,EAEa2Q,GAAiB1T,EAAM,WAAWoT,EAAoB,ECiB3D,IAAAtC,GAAA,OAAA,eAAA1P,GAAA,OAAA,iBAAAgN,GAAA,OAAA,0BAAA1L,GAAA,OAAA,sBAAAiR,GAAA,OAAA,UAAA,eAAAlU,GAAA,OAAA,UAAA,qBAAAiR,GAAA,CAAA,EAAA,EAAAlT,IAAA,KAAA,EAAAsT,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAtT,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAAsC,GAAA,CAAA,EAAA,IAAA,CAAA,QAAAtC,KAAA,IAAA,EAAA,CAAA,GAAAmW,GAAA,KAAA,EAAAnW,CAAA,GAAAkT,GAAA,EAAAlT,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAkF,GAAA,QAAAlF,KAAAkF,GAAA,CAAA,EAAAjD,GAAA,KAAA,EAAAjC,CAAA,GAAAkT,GAAA,EAAAlT,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA2I,GAAA,CAAA,EAAA,IAAA/E,GAAA,EAAAgN,GAAA,CAAA,CAAA,EAtDR,MAAMwF,GAAmB,CACvB,CAAE,OAAAP,EAAQ,SAAAvQ,EAAU,OAAAmK,EAAQ,aAAAqG,CAAa,EACzCrT,IACG,CAxBL,IAAAnC,EAAAC,EAAAiG,EAAAkO,EAAA2B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAyBE,KAAM,CAACxR,EAAO8P,CAAQ,EAAI7S,EAAM,UAC9BlC,EAAAuV,EAAO,eAAP,KAAAvV,EAAuB,EACzB,EAEM2V,EAAczT,EAAM,YAAakB,GAAyB,CAC9DA,EAAG,gBACL,CAAA,EAAG,CAAA,CAAE,EAEC,CAAC4O,EAAkB0E,CAAmB,EAC1CxU,EAAM,SAA2BqT,EAAO,YAAY,EAEhDoB,EAAqBpB,GAAQ,aASnC,GARArT,EAAM,UAAU,IAAM,CAChByU,IAAuB,KACzB5B,EAAS,OAAO4B,CAAkB,CAAC,EACnCD,EAAoB,OAAOC,CAAkB,CAAC,EAGlD,EAAG,CAACpB,GAAQ,sBAAsB,CAAC,EAE/BA,EAAQ,CACV,MAAMqB,EACJxT,GACG,EAEA4B,GAAYA,EAAS,OAAO5B,EAAG,OAAO,KAAK,CAAC,IAAM,IACnD,CAAC4B,IAED+P,EAAS,OAAO3R,EAAG,OAAO,KAAK,CAAC,CACpC,EACMyT,EAAsBzT,GAAgC,EACrD4B,GAAYA,EAAS,OAAO5B,EAAG,KAAK,CAAC,IAAM,IAAU,CAAC4B,IACzD+P,EAAS,OAAO3R,EAAG,KAAK,CAAC,CAC7B,EACMwM,EACJxM,GAGG,CACC+L,GAAU6C,IAAqB/M,IACjCyR,EAAoBzR,CAAK,EACzBkK,EAAQ/L,EAAG,OAA4B,KAAK,EAEhD,EAEM0T,EAAgBvB,EAAO,UACzB,CAAC,IAAItV,EAAAsV,EAAO,UAAP,KAAAtV,EAAkB,CAAA,CAAG,EAAE,KAAK,CAACL,EAAGgC,IAAOhC,EAAE,MAAQgC,EAAE,MAAQ,EAAI,EAAG,EACvE2T,EAAO,QACLwB,EAAUD,GAAe,IAAKE,GAAW,CAzEnD,IAAAhX,EAAAC,EA0EM,OACEc,EAAC,SAAA,CAAO,MAAOiW,EAAO,MACnB,SAAAA,EAAO,KAAA,GADwB/W,GAAAD,EAAAgX,EAAO,QAAP,KAAAhX,EAAgBgX,EAAO,QAAvB,KAAA/W,EAAgC,GAElE,CAEJ,CAAA,EAEA,OAAIsV,EAAO,OAAS,QAAUA,EAAO,OAAS,IAE1CxU,EAAC6U,GAAA,CACC,OAAQL,EACR,SAAUvQ,EACV,OAAQmK,EACR,aAAcqG,EACd,IAAKrT,CACP,CAAA,EAGAoT,EAAO,OAAS,aAEhBxU,EAAC2T,GAAAzT,GAAAC,GAAA,CACC,gBAAeqU,EAAO,SACtB,SAAUA,EAAO,SACjB,MAAOtQ,EACP,YAAasQ,EAAO,YACpB,SAAUsB,EACV,UAAYzT,GAAO,CACbA,EAAG,IAAI,YAAkB,IAAA,UAC3BwM,EAAWxM,CAAE,EACToS,GACFA,EAAcpS,EAAG,OAA4B,KAAK,EAExD,EACA,QAASuS,CACLxU,EAAAA,EAAW,OAAO,CAAA,EAdvB,CAeC,UAAW,UAAUoU,EAAO,MAAQ,yBAA2B,KAC/D,OAAOnB,GAAAlO,EAAAqP,EAAO,QAAP,KAAArP,EAAgBqP,EAAO,UAAvB,KAAAnB,EAAkC,OAAOmB,EAAO,EAAE,EACzD,IAAKpT,EACL,cAAY6T,GAAAD,EAAAR,EAAO,QAAP,KAAAQ,EAAgBR,EAAO,UAAvB,KAAAS,EAAkC,OAAOT,EAAO,EAAE,EAC9D,KAAMA,EAAO,EACf,CAAA,CAAA,EAIGA,EAAO,QACZxU,EAACkW,GAAA,CACC,gBAAe1B,EAAO,SACtB,SAAUA,EAAO,SACjB,SAAUqB,EACV,OAAQhH,EACR,MAAO3K,EACP,UAAW,YAAYsQ,EAAO,MAAQ,yBAA2B,KACjE,OAAOW,GAAAD,EAAAV,EAAO,QAAP,KAAAU,EAAgBV,EAAO,UAAvB,KAAAW,EAAkC,OAAOX,EAAO,EAAE,EACzD,IAAKpT,EACL,cAAYiU,GAAAD,EAAAZ,EAAO,QAAP,KAAAY,EAAgBZ,EAAO,UAAvB,KAAAa,EAAkC,OAAOb,EAAO,EAAE,EAC9D,QAASI,EACT,YAAaJ,EAAO,YACpB,GAAIxF,GAAoB,CAACwF,EAAO,KAAK,EACrC,KAAMA,EAAO,GAEZ,SAAAwB,CACH,CAAA,EAEAhW,EAACwE,GAAAtE,GAAAC,GAAA,CACC,gBAAeqU,EAAO,SACtB,SAAUA,EAAO,SACjB,MAAOtQ,EACP,MAAOoR,EAAAd,EAAO,OAAS,IAAM,SAAWA,EAAO,OAAxC,KAAAc,EAAiD,OACxD,YAAad,EAAO,YACpB,SAAUqB,EACV,OAAQhH,EACR,UAAYxM,GAAO,CACbA,EAAG,IAAI,YAAkB,IAAA,UAC3BwM,EAAWxM,CAAE,EACToS,GACFA,EAAcpS,EAAG,OAA4B,KAAK,EAExD,EACA,QAASuS,CACLxU,EAAAA,EAAW,OAAO,CAAA,EAhBvB,CAiBC,UAAW,UAAUoU,EAAO,MAAQ,yBAA2B,KAC/D,OAAOgB,GAAAD,EAAAf,EAAO,QAAP,KAAAe,EAAgBf,EAAO,UAAvB,KAAAgB,EAAkC,OAAOhB,EAAO,EAAE,EACzD,IAAKpT,EACL,cAAYsU,GAAAD,EAAAjB,EAAO,QAAP,KAAAiB,EAAgBjB,EAAO,UAAvB,KAAAkB,EAAkC,OAAOlB,EAAO,EAAE,EAC9D,KAAMA,EAAO,EAAA,CAAA,CACf,EAGJ,OAAO,IACT,EAEa2B,GAAahV,EAAM,KAAKA,EAAM,WAAW4T,EAAgB,CAAC,ECnK1DqB,GAA2B,CAAC,ibCczCC,GAAa,4CAA6CD,EAAM,EAEzD,MAAME,GAAmBnV,EAAM,WAIpC,CACE,CACE,SAAA1B,EACA,UAAA4B,EACA,WAAAkV,EAAa,YACb,UAAAC,EACA,iBAAAC,EACA,qBAAAC,EACA,SAAA1U,EAAW,SACX,GAAA7C,EACA,QAAAyK,EACA,OAAA+M,EACA,SAAAC,EAAW,aACX,MAAAC,EACA,aAAAC,EACA,UAAAC,EAAY,CACd,EACAC,IACG,CAxCP,IAAA/X,EA0CI,MAAMgY,EAAW,GADF9V,EAAM,QAAQ,IAAMoC,GAAY,EAAA,CAAE,CAAA,KACnBpE,GAAM,qBAE9B,CAAC+X,EAAaC,CAAc,EAAIhW,EAAM,UAC1ClC,EAAAwX,GACED,IADF,KAAAvX,EAEGmY,GAAkB,mBAAmBH,GAAU,CACpD,EAEM,CAAC7V,EAAKwM,CAAM,EAAIzM,EAAM,SAAgC,IAAI,EAE1DkW,EAAalW,EAAM,YACvB,CAACmW,EAAsBjV,IAA0B,CAC/C,MAAMkV,EAAeZ,EAASA,EAAOtU,CAAE,EAAI,KACvCkV,EACGA,EAAa,KAAMzE,GAAW,CAC7BA,GAAYwE,GAAaH,EAAgBvT,GAAY,CAACA,CAAO,CACnE,CAAC,EACQ0T,GAAaH,EAAgBvT,GAAY,CAACA,CAAO,CAC9D,EACA,CAAC+S,CAAM,CACT,EAEA,OAAAnR,EAAgB,IAAM,CAChBgR,IAAc,QAAWW,EAAeX,CAAS,EACjDA,IAAc,IAAOa,EAAW,EAAK,CAC3C,EAAG,CAACb,CAAS,CAAC,EAEdhR,EAAgB,IAAM,CAChB0R,GACEtN,GAASA,EACbwN,EAAAA,GAAkB,mBAAmBH,GAAU,EAAI,GAC/C7V,GAAOsV,GACTc,GACEpW,EAAI,cAAc,4BAA4B,CAChD,IAEFgW,GAAkB,mBAAmBH,GAAU,EAAI,GAC/C7V,GAAOsV,GACTe,GACErW,EAAI,cAAc,4BAA4B,CAChD,EAEN,EAAG,CAAC8V,CAAW,CAAC,EAEhB/V,EAAM,UAAU,IAAM,CAtF1B,IAAAlC,EAuFM,MAAMyY,EAAoB,IAAMP,EAAe,EAAK,EACpD,OAAAlY,EAAAmC,GACI,cAAc,4BADlB,IAAA,MAAAnC,EAEI,iBAAiB4O,GAAa,MAAO6J,CAClC,EAAA,IAAM,CA3FnB,IAAAzY,GA4FQA,EAAAmC,GACI,cAAc,4BAAA,IADlB,MAAAnC,EAEI,oBAAoB4O,GAAa,MAAO6J,CAC9C,CAAA,CACF,EAAG,CAACvY,EAAI+X,EAAatN,EAAS+M,EAAQvV,CAAG,CAAC,EAGxCf,EAAC8C,EAAAjD,GAAAC,GAAA,CACC,UAAW,oBAAoBkB,GAAa,MACxCjB,EAAW,2CAA2C,CAF3D,EAAA,CAGC,IAAMgG,GAAuB,CACvBK,GAAWuQ,CAAQ,GAAGA,EAAS5Q,CAAE,EACrCwH,EAAOxH,CAAE,CACX,EAEA,SAAA,CAAA/F,EAAC8C,EAAA,CAAI,UAAU,0BACb,SAAA,CAAA9C,EAACJ,GAAAC,GAAAC,GAAA,CAAA,EACKC,EAAW,SAAS,GADzB,CAEC,gBAAe,CAAC8W,EAChB,QAAU7U,GAAOgV,EAAW,GAAMhV,CAAE,EACpC,KAAK,SACL,UAAU,kCACV,UAAW,QAAQ,IAElB,UAAA6U,EACClX,EAACkD,GAAA,CAAK,MAAM,GAAG,KAAM0T,EAAU,KAAM5U,EAAU,EAE/ChC,EAACkD,GAAA,CAAK,MAAM,GAAG,KAAMqT,EAAY,KAAMvU,CAAU,CAAA,EAElD6U,IACH,EACCC,CAAAA,CAAAA,CACH,EACA9W,EAAC2X,GAAA,CACC,GAAIV,EACJ,SAAU,IACV,OAAQC,EAAcH,EAAY,OAClC,GAAI,CAAE,QAAS,CAAE,QAAS,QAAS,CAAE,EACrC,cAAaG,EACb,UAAU,4BAET,SAAAzX,CAAAA,CACH,IACF,CAEJ,CACF,EAEA6W,GAAiB,YAAc,mBC5I/B,IAAA7R,GAAA,OAAA,eAAAzD,GAAA,OAAA,iBAAAH,GAAA,OAAA,0BAAAiD,GAAA,OAAA,sBAAAhD,GAAA,OAAA,UAAA,eAAA2B,GAAA,OAAA,UAAA,qBAAA5D,GAAA,CAAAR,EAAA,EAAAK,IAAA,KAAAL,EAAAoG,GAAApG,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAK,CAAA,CAAA,EAAAL,EAAA,CAAA,EAAAK,EAAAK,GAAA,CAAAV,EAAA,IAAA,CAAA,QAAAK,KAAA,IAAA,EAAA,CAAA,GAAAoC,GAAA,KAAA,EAAApC,CAAA,GAAAG,GAAAR,EAAAK,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAoF,GAAA,QAAApF,KAAAoF,GAAA,CAAA,EAAArB,GAAA,KAAA,EAAA/D,CAAA,GAAAG,GAAAR,EAAAK,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAC,GAAA,CAAAD,EAAA,IAAA2C,GAAA3C,EAAAwC,GAAA,CAAA,CAAA,EAmDgB,SAAA+W,EAAWC,EAAqC,CAC9D,MAAO,OAAO,OAAOA,GAAa,SAAWA,EAAWA,EAAS,UACnE,CAEA,IAAIC,GAAgB,EACJ,SAAAvU,GAASwU,EAAiB,CACxC,MAAO,GAAGA,GAAU,KAAKD,MAC3B,CAEA,SAASE,GAAeC,EAA8C,CACpE,MAAO,CACL,QAAS,CACP,CAACC,EAAoBC,KACZ,CACL,IAAK,CACH,wBAAyB,GAAGF,WAAiBE,EAAM,YACrD,CACF,EAEJ,EACA,IAAK,CACH,CAACD,EAAgCC,KACxB,CACL,UAAW,CACT,IAAK,CACH,eACAA,EAAM,aAAeD,EAAa,SAAW,UAAY,GACzDC,EAAM,gBACNA,EAAM,aAAa,SAASD,EAAa,QAAQ,EAC7C,WACA,EACN,EACA,OAAQ,CACNC,EAAM,aAAeD,EAAa,SAAW,GAAK,UAClDC,EAAM,gBACNA,EAAM,aAAa,SAASD,EAAa,QAAQ,EAC7C,GACA,UACN,CACF,EACA,QAAS,CACP,IAAK,CACH,QAASC,EAAM,aAAeD,EAAa,QAC7C,CACF,EACA,IAAKhY,GAAAC,GAAA,CAAA,EACCgY,EAAM,eACN,CACE,gBAAiBA,EAAM,aAAa,SAClCD,EAAa,QACf,CACF,EACA,MAPD,CAQH,GAAI,GAAGD,WAAiBC,EAAa,UACvC,CAAA,CACF,GAEF,CAACE,EAA0BC,IAA6B,CACtD,MAAMhS,EAAU,SAAS,cACvB,IAAI4R,sCACN,EAEA,GAAI5R,IACFA,EAAQ,eAAe,CACrB,SAAU,OACV,MAAO,UACP,OAAQ,SACV,CAAC,EAEG+R,EAAU,WAAaC,EAAU,YAAY,CAC/C,MAAMC,EAAkBC,GAAoBlS,CAAO,EAEnD,GAAIiS,EAAiB,CACnBA,EAAgB,eAAe,CAC7B,SAAU,OACV,MAAO,UACP,OAAQ,SACV,CAAC,EACD,MAAME,EAASnS,EAAQ,sBAAsB,EACvCoS,EAAWH,EAAgB,wBAE7BE,EAAO,IAAMC,EAAS,IAAMD,EAAO,SACrCF,EAAgB,WAAaE,EAAO,SAI9C,CACF,EACA,UAAW,CACT,CAACN,EAAoBC,KACZ,CACL,UAAW,CAAE,IAAK,CAAC,oBAAoB,CAAE,EACzC,IAAK,CACH,wBAAyB,GAAGF,WAAiBE,EAAM,YACrD,CACF,EAEJ,CACF,CACF,CACA,MAAMO,GAGF,CACF,eAAgB,GAChB,WAAY,EACZ,WAAY,CAAA,EACZ,qBAAsB,GACtB,oBAAqB,GACrB,gBAAiB,GACjB,UAAW,EACX,aAAc,GACd,OAAQ,IACV,EAEMC,GAAa,CACjB,IAAKf,EACL,QAAS,IAAM,UACf,UAAW,IAAM,WACnB,EAEA,SAASgB,GACPC,EAEe,CA/KjB,IAAA5Z,EAAAC,EAAAiG,EAgLE,OAAOjF,GAAAC,GAAAA,GAAA,CAAA,EACFuY,EACAG,EAAAA,CAAAA,EAFE,CAIL,gBACE5Z,EAAA4Z,EAAa,iBAAb,KAAA5Z,EACC,CAAC4X,EAAOiC,IAAiB,CAAC,CAACjC,EAAM,MAAM,IAAI,OAAOiC,CAAY,CAAC,EAElE,oBACE5Z,EAAA2Z,EAAa,qBAAb,KAAA3Z,EACC,CAAC2X,EAAOiC,IACAjC,EAAM,WAAWiC,CAAY,EAGxC,UAAW,IAAI,OAAM3T,EAAA0T,EAAa,YAAb,KAAA1T,EAA0B,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAACtB,EAAG9E,IAAMA,CAAC,CAC3E,EACF,CC/GA,MAAMga,GAAiBC,GAA+B,EAAqB,EC5CrE,IAAA9a,GAAA,OAAA,eAAA0G,GAAA,OAAA,iBAAA2C,GAAA,OAAA,0BAAA3I,GAAA,OAAA,sBAAAE,GAAA,OAAA,UAAA,eAAA+B,GAAA,OAAA,UAAA,qBAAA2B,GAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAAtE,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAAW,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAC,GAAA,KAAA,EAAA,CAAA,GAAA0D,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA5D,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAiC,GAAA,KAAA,EAAA,CAAA,GAAA2B,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAjE,GAAA,CAAA,EAAA,IAAAqG,GAAA,EAAA2C,GAAA,CAAA,CAAA,EAAA9E,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAqB,KAAA,EAAAhF,GAAA,KAAA,EAAAgF,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAlF,GAAA,QAAAkF,KAAAlF,GAAA,CAAA,EAAA,EAAA,QAAAkF,CAAA,EAAA,GAAAjD,GAAA,KAAA,EAAAiD,CAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA,CAAA,EAbO,MAAAmV,GAAgCC,GAC1Cja,GAA8D,CAA9D,IAAAC,EAAAD,EAAE,UAAAQ,EAAU,SAAU0Z,EAAe,MAAAtC,CAzBxC,EAyBG3X,EAA+Cka,EAAArZ,GAA/Cb,EAA+C,CAA7C,WAAU,WAAyB,OAAA,CAAA,EACpC,KAAM,CACJ,SAAAma,EACA,eAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,WAAAC,CACF,EAAIC,GAAWX,EAAc,EACvBlB,EAAWpS,EAAQ,IAAM0T,GAAiB,GAAI,CAACA,CAAa,CAAC,EAC7D/X,EAAMqY,EAA0B,MAAO,CAAE,SAAA5B,CAAS,CAAC,EAEzD,OACE7X,EAAC,KAAAE,GAAAC,GAAA,GACMiZ,GADN,CAEC,IAAKhY,EACL,KAAK,SACL,cAAegJ,EACZ/H,GAAgC,CAC/BA,EAAG,eACHkX,EAAAA,IAAoBrZ,GAAAC,GAAA,CAAA,EACfkC,CAAAA,EADe,CAElB,OAASA,EAAG,OAAuB,QACjC,iBACF,CACF,CACF,CAAA,CAAA,EACA,CAACkX,CAAiB,CACpB,EACA,QAASnP,EACN/H,GAAgC,CAC/BA,EAAG,eACHmX,EAAAA,IAActZ,GAAAC,GAAA,CACTkC,EAAAA,CAAAA,EADS,CAEZ,OAASA,EAAG,OAAuB,QACjC,iBACF,CACF,CACF,CAAA,CAAA,EACA,CAACmX,CAAW,CACd,EACA,YAAapP,EACV/H,GAAmB,EAEfgX,IAAW,qBAAuBhX,EAAG,UACtCA,EAAG,OAAS,IAEZA,EAAG,eAAA,EACLiX,EAAe,wBAAwB,CACrC,SAAAzB,EACA,UAAWxV,EAAG,QACd,WAAYA,EAAG,QACjB,CAAC,CACH,EACA,CAACgX,EAAUC,EAAgBzB,CAAQ,CACrC,EACA,aAAYhB,EACZ,MAAOA,EAEN,SAAApX,CAAAA,CAAAA,CACH,CAEJ,CACF,EAEAwZ,GAAY,YAAc,cCzF1B,IAAApa,GAAA,CAAAE,EAAAL,EAAAD,IAAA,CAAA,GAAA,CAAAC,EAAA,IAAAK,CAAA,EAAA,MAAA,UAAA,UAAAN,CAAA,CAAA,EAAAD,GAAA,CAAAO,EAAAL,EAAAD,IAAA,CAAA,GAAAC,EAAA,IAAAK,CAAA,EAAA,MAAA,UAAA,mDAAA,EAAAL,aAAA,QAAAA,EAAA,IAAAK,CAAA,EAAAL,EAAA,IAAAK,EAAAN,CAAA,CAAA,EAAAgJ,GAAA,CAAA1I,EAAAL,EAAAD,KAAAI,GAAAE,EAAAL,EAAA,uBAAA,EAAAD,GAAAkb,GAAAC,GAAAC,GAAAC,GA0BA,IAAAC,GAAA,cAA2BC,EAIxB,CAKD,YAAY3W,EAIT,CACD,QASF0C,GAAA,KAAA4T,EASA5T,EAAAA,GAAA,KAAA8T,EAAAA,EA3BA,eAAY,IACZ,KAAA,QAAU,EACV,KAAS,OAAA,GASP,KAAM,CAAE,eAAAI,EAAgB,YAAAC,EAAa,aAAAC,CAAa,EAAI9W,GAAS,CAE3D4W,EAAAA,GAAgB,KAAK,GAAG,eAAgBA,CAAc,EACtDC,GAAa,KAAK,GAAG,YAAaA,CAAW,EAC7CC,GAAc,KAAK,GAAG,aAAcA,CAAY,CACtD,CAsBA,KAAK9X,EAAmB,CAClBA,EAAG,IAAI,MAAM,eAAe,GAC9BA,EAAG,iBACH,KAAK,OAAS,KAAK,OAASA,EAAG,IAC/B,KAAK,KAAK,aAAc,KAAK,MAAM,EACnC6E,GAAA,KAAKyS,GAAAC,EAAL,EAAA,KAAA,IAAA,GACSvX,EAAG,OAAS,cACrBA,EAAG,iBACH,KAAK,OAAS,KAAK,OAAO,MAAM,EAAG,EAAE,EACrC,KAAK,KAAK,aAAc,KAAK,MAAM,EACnC6E,GAAA,KAAKyS,GAAAC,EAAL,EAAA,KAAA,IAAA,EAEJ,CACF,EAjCED,GAAA,YAAAC,GAAe,UAAG,CAChB,aAAa,KAAK,OAAO,EAEzB,KAAK,QAAU,WACb1S,GAAA,KAAK2S,GAAAC,EAAAA,EAAO,KAAK,IAAI,EACrB,IAAO,KAAK,SACd,CACF,EAEAD,GAAA,IAAAC,QAAAA,GAAM,SAAC,CAAE,MAAAM,CAAM,EAAI,CAAE,MAAO,EAAK,EAAG,CAC9B,KAAK,OAAO,SAAW,EACzB,KAAK,KAAK,YAAa,KAAK,MAAM,EACzB,KAAK,OAAO,OAAS,GAC9B,KAAK,KAAK,eAAgB,KAAK,MAAM,EAEnCA,IACF,KAAK,OAAS,GAElB,ibCtDF,MAAMC,GAKF,CAAC,CAAE,SAAA5a,EAAU,UAAA4B,CAAU,IAAM,CAC/B,KAAM,CACJ,eAAAiY,EACA,GAAAna,EACA,SAAAka,EACA,mBAAAiB,EACA,mBAAAC,EACA,iBAAAC,EACA,QAAA7a,CACF,EAAI+Z,GAAWX,EAAc,EAEvB0B,EAAQhV,EACZ,IACE4T,IAAW,cACP,KACA,IAAIqB,GAAa,CACf,eAAeC,EAAY,CACzBrB,EAAe,mCAAmC,CAChD,WAAAqB,CACF,CAAC,CACH,EACA,YAAYA,EAAY,CACtBrB,EAAe,mCAAmC,CAChD,WAAAqB,CACF,CAAC,CACH,CACF,CAAC,EACP,CAACtB,EAAUC,CAAc,CAC3B,EAEMsB,EAAwBxQ,EAC3B/H,GAAsB,CACrBiY,IAAqB,CACnB,cAAejY,EACf,iBAAmBgX,EAAW,EAAA,eAE1BA,EAAW,EAAA,aAAa,IACrBzV,GACC,SAAS,cACP,IAAIzE,WAAYyE,GAClB,CACJ,EANA,CAAA,EAOJ,eAAgB,SAAS,cACvB,IAAIzE,WAAYka,EAAAA,EAAW,YAC7B,CACF,EACF,EACA,CAACA,EAAUla,EAAImb,CAAkB,CACnC,EAEA,OACEta,EAACmD,EAAAjD,GAAAC,GAAA,CACKC,EAAAA,EAAWT,CAAO,CAAA,EADvB,CAEC,UAAW0B,EACX,GAAIlC,EACJ,UAAWiL,EACR/H,GAAsB,CA1E/B,IAAApD,EA2EU,MAAM4b,GAAQ5b,EAAAoD,EAAG,OACd,QAAqB,UAAU,IADpB,KAAA,OAAApD,EAEV,cAA2B,uBAAA,EAC/B,GAAI,CAAC4b,EACH,MAAM,IAAI,MACR,yDACF,EAEF,MAAM1C,EAAQkB,IAOd,GANAmB,IAAmBta,GAAAC,GAAA,CAAA,EAAKkC,CAAL,EAAA,CAAS,OAAQwY,EAAM,cAAeA,CAAK,CAAA,CAAA,EAE1DxY,EAAG,MAAQ,SACbkY,IAAqBra,GAAAC,GAAA,CAAA,EAAKkC,CAAL,EAAA,CAAS,OAAQwY,EAAM,cAAeA,CAAK,CAG9D,CAAA,EAAA,EAAAxY,EAAG,mBAAmB,GAAKA,EAAG,qBAAA,GAElC,GACE,CAAC,YAAa,UAAW,SAAU,UAAU,EAAE,SAASA,EAAG,IAAI,GAC9D,CAAC,OAAQ,KAAK,EAAE,SAASA,EAAG,IAAI,GAAKA,EAAG,SAGxC,CAAC,OAAO,EAAE,SAASA,EAAG,IAAI,GACzB8V,EAAM,qBACN,CAACA,EAAM,eAER,CAAC,OAAO,EAAE,SAAS9V,EAAG,IAAI,GAAK8V,EAAM,qBACrC,CAAC,MAAM,EAAE,SAAS9V,EAAG,IAAI,GACxB8V,EAAM,qBACN9V,EAAG,QAIL,OAFAA,EAAG,eAAe,EAEVA,EAAG,KAAM,CACf,IAAK,OACHiX,EAAe,UAAU,EACzB,MACF,IAAK,YACHA,EAAe,4BAA4B,CACzC,MAAO,OACP,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,UACHiX,EAAe,4BAA4B,CACzC,MAAO,WACP,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,OACHiX,EAAe,4BAA4B,CACzC,MAAO,QACP,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,MACHiX,EAAe,4BAA4B,CACzC,MAAO,OACP,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,QACH,GAAIA,EAAG,QAAS,CACduY,EAAsBvY,CAAE,EACxB,MAEJ,IAAK,QACHiX,EAAe,wBAAwB,CACrC,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,SACHiX,EAAe,4BAA4B,CACzC,MAAO,SACP,WAAYjX,EAAG,QACjB,CAAC,EACD,MACF,IAAK,WACHiX,EAAe,4BAA4B,CACzC,MAAO,WACP,WAAYjX,EAAG,QACjB,CAAC,EACD,KACJ,MAEAA,EAAG,OAAS,UACX,CAAC8V,EAAM,gBAAkB,CAACA,EAAM,qBAEjCyC,EAAsBvY,CAAE,EACfoY,GACTA,EAAM,KAAKpY,CAAE,CAEjB,EACA,CACEgX,EACAC,EACAiB,EACAC,EACAI,EACAH,CACF,CACF,EAEC,SAAAhb,CACH,CAAA,CAAA,CAEJ,ECpKI,IAAAvB,GAAA,OAAA,eAAA4c,GAAA,OAAA,iBAAAvT,GAAA,OAAA,0BAAAzD,GAAA,OAAA,sBAAAxF,GAAA,OAAA,UAAA,eAAAS,GAAA,OAAA,UAAA,qBAAA0I,GAAA,CAAA,EAAApJ,EAAAI,IAAAJ,KAAA,EAAAH,GAAA,EAAAG,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAI,CAAA,CAAA,EAAA,EAAAJ,CAAA,EAAAI,EAAAF,GAAA,CAAA,EAAAF,IAAA,CAAA,QAAAI,KAAAJ,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAI,CAAA,GAAAgJ,GAAA,EAAAhJ,EAAAJ,EAAAI,CAAA,CAAA,EAAA,GAAAqF,GAAA,QAAArF,KAAAqF,GAAAzF,CAAA,EAAAU,GAAA,KAAAV,EAAAI,CAAA,GAAAgJ,GAAA,EAAAhJ,EAAAJ,EAAAI,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAgE,GAAA,CAAA,EAAApE,IAAAyc,GAAA,EAAAvT,GAAAlJ,CAAA,CAAA,EAAAS,GAAA,CAAA,EAAAT,IAAA,CAAA,IAAAI,EAAA,CAAA,EAAA,QAAAE,KAAA,EAAAL,GAAA,KAAA,EAAAK,CAAA,GAAAN,EAAA,QAAAM,CAAA,EAAA,IAAAF,EAAAE,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAmF,GAAA,QAAAnF,KAAAmF,GAAA,CAAA,EAAAzF,EAAA,QAAAM,CAAA,EAAA,GAAAI,GAAA,KAAA,EAAAJ,CAAA,IAAAF,EAAAE,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAF,CAAA,EAZJ,MAAMsc,GAAoD9b,GAGpD,CAHoD,IAAAC,EAAAD,EACxD,CAAAQ,SAAAA,CANF,EAK0DP,EAErDmE,EAAAtD,GAFqDb,EAErD,CADH,UAGA,CAAA,EAAA,KAAM,CAAE,GAAAC,EAAI,eAAAma,EAAgB,WAAAG,CAAW,EAAIC,GAAWX,EAAc,EAC9DiC,EAAMC,GAAsB5Y,GAAsC,CACtEiX,EAAe,OAAO,CAAE,aAAcjX,EAAG,OAAO,KAAM,CAAC,CACzD,CAAC,EAEKjB,EAAMqY,EAA6B,YAAa,IAAI,EAE1D,OACEpZ,EAAAG,GAAA,CACE,SAAAR,CAAAA,EAACwE,GAAA,CACC,IAAKpD,EACL,KAAK,OACL,GAAI,GAAGjC,eACP,YAAY,YACZ,oBAAkB,OAClB,gBAAe,GAAGA,qBAClB,KAAK,WACL,gBAAa,GACb,gBAAc,UACd,SAAU6b,EACV,aAAa,MACf,EACAhb,EAACmD,EAAAjD,GAAAC,GAAA,CACC,GAAG,KACH,GAAI,GAAGhB,qBACP,KAAK,UACL,UAAU,iBACNkE,CALL,EAAA,CAMC,QAAS+G,EAAY,IAAM,CArCnC,IAAAnL,EAuCY,SAAS,gBACT,SAAS,eAAe,GAAGE,cAAe,KAE1CF,EAAA,SAAS,eAAe,GAAGE,cAAe,IAA1C,MAAAF,EAA6C,QACjD,EAAG,CAACE,CAAE,CAAC,EAEN,SAAAM,CACH,CAAA,CAAA,CAAA,CAAA,CACF,CAEJ,EC9Ca2W,GAA2B,CACtC,iBAAkB,CAChB,iBAAkB,CAChB,QAAS,MACX,EAEA,WAAY8E,GAEZ,kBAAmB,CACjB,WAAY,CACV,QAAS,YACT,aAAc,uBACd,cAAe,CACjB,EACA,sBAAuBA,EACzB,CACF,EAEA,iBAAkB,CAChB,UAAW,OACX,EAAG,EACH,EAAG,CACL,EAEA,kBAAmB,CACjB,iBAAkB,CAChB,UAAW,qBACX,SAAU,MACZ,CACF,EAEA,gBAAiB,CACf,UAAWC,GACT,CAAE,gBAAiB,0BAA2B,EAC9C,OACF,CACF,CACF,ECvCA,IAAA3c,GAAA,OAAA,sBAAAJ,GAAA,OAAA,UAAA,eAAAyC,GAAA,OAAA,UAAA,qBAAAtC,GAAA,CAAA,EAAAuF,IAAA,CAAA,IAAAnF,EAAA,CAAA,EAAA,QAAA8I,KAAA,EAAArJ,GAAA,KAAA,EAAAqJ,CAAA,GAAA3D,EAAA,QAAA2D,CAAA,EAAA,IAAA9I,EAAA8I,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAjJ,GAAA,QAAAiJ,KAAAjJ,GAAA,CAAA,EAAAsF,EAAA,QAAA2D,CAAA,EAAA,GAAA5G,GAAA,KAAA,EAAA4G,CAAA,IAAA9I,EAAA8I,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA9I,CAAA,EASA,MAAM6V,GAED4G,EAAc,CAACjD,EAAO,CAAE,aAAAW,CAAa,EAAGuC,IAAS,CACpD,IAAIC,EAAe,GACnB,MAAMC,EAAO,IAAI,MAAMpD,EAAM,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAACtU,EAAG9E,IAAMA,CAAC,EAEzDyc,EAAsB,CAAC,EACvBC,EAAaF,EAAK,OAAO,CAAC1X,EAAG9E,IAAM,CAjB3C,IAAAE,EAkBI,MAAMmH,EAAK,SAAS,eAAe,GAAG+R,EAAM,YAAYpZ,GAAG,EAC3D,GAAI,CAACqH,EACH,OAAA,QAAQ,KAAK,oBAAqB,GAAG+R,EAAM,YAAYpZ,GAAG,EACnD,GAGT,MAAM2c,EAAUvD,EAAM,gBAAelZ,EAAAmH,EAAG,YAAH,KAAAnH,EAAgB,GAAI6Z,CAAY,EAErE,OAAI4C,EACFtV,EAAG,MAAM,QAAU,QAEnBA,EAAG,MAAM,QAAU,OAGjBsV,EAASF,EAAU,KAAKzc,CAAC,EACpBoZ,EAAM,aAAepZ,IAC5Buc,EAAe,IAGV,CAACI,CACV,CAAC,EAKD,GAJAL,EAAK,IAAII,EAAW,IAAK7X,GAAYgU,EAAWhU,CAAO,CAAC,CAAC,EACzDuU,EAAM,WAAasD,EACnBtD,EAAM,UAAYqD,EAEdF,GACF,UAAWK,KAAOJ,EAChB,GAAI,CAACE,EAAW,SAASE,CAAG,EAAG,CAC7BxD,EAAM,WAAawD,EACnBN,EAAK,KAAKzD,EAAW+D,CAAG,CAAC,EACzBN,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtC,OAIR,CAAC,EAED,SAASiD,EAAiBQ,EAAiC,CAMzD,MALqC,CAACzD,EAAO0D,EAASR,IAAS,CAC7DA,EAAK,KAAK,WAAW,EACrBA,EAAK,KAAK,SAAS,EACnBO,EAAUzD,EAAO0D,EAASR,CAAI,CAChC,CAEF,CAEA,MAAMS,GAGDV,EAAc,CAACjD,EAAO,CAAE,WAAA4D,EAAY,MAAAC,CAAM,EAAGX,IAAS,CACzD,GAAIlD,EAAM,UAAU,QAAU,EAAG,CAC/BkD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtCA,EAAM,WAAaA,EAAM,UAAU,CAAC,EAEhCA,EAAM,UAAU,SAAW,GAAGkD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EAExE,OAGF,OAAQ6D,EACN,CAAA,IAAK,QACH,CACE,MAAMC,EAAa9D,EAAM,UAAU,CAAC,EACpC,GAAI8D,IAAe9D,EAAM,WAAY,OAKrC,GAHAkD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtCkD,EAAK,KAAKzD,EAAWqE,CAAU,CAAC,EAE5B9D,EAAM,qBACR,GAAI4D,EAAY,CACd,MAAMG,EAAmB,IAAI,MAAM/D,EAAM,WAAa,CAAC,EACpD,KAAK,CAAC,EACN,IAAI,CAACtU,EAAG,IAAM,CAAC,EAClBwX,EAAK,IAAIa,EAAiB,IAAI,CAACrY,EAAG,IAAM+T,EAAW,CAAC,CAAC,CAAC,EACtDO,EAAM,aAAe+D,EACrB/D,EAAM,gBAAkB8D,QAG1B9D,EAAM,aAAe,CAAC8D,CAAU,EAChC9D,EAAM,gBAAkB8D,EAG1B9D,EAAM,WAAa8D,CACrB,CACA,MACF,IAAK,OACH,CACE,MAAMA,EAAa9D,EAAM,UAAUA,EAAM,UAAU,OAAS,CAAC,EAC7D,GAAI8D,IAAe9D,EAAM,WAAY,OAKrC,GAHAkD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtCkD,EAAK,KAAKzD,EAAWqE,CAAU,CAAC,EAE5B9D,EAAM,qBACR,GAAI4D,EAAY,CACd,MAAMG,EAAmB,IAAI,MAC3B/D,EAAM,UAAYA,EAAM,UAC1B,EACG,KAAK,CAAC,EACN,IAAI,CAACtU,EAAG,IAAM,EAAI,KAAK,IAAIoY,EAAY9D,EAAM,UAAU,CAAC,EAC3DkD,EAAK,KAAK,GAAGa,EAAiB,IAAKnd,GAAM6Y,EAAW7Y,CAAC,CAAC,CAAC,EACvDoZ,EAAM,aAAe+D,EACrB/D,EAAM,gBAAkB8D,QAG1B9D,EAAM,aAAe,CAAC8D,CAAU,EAChC9D,EAAM,gBAAkB8D,EAG1B9D,EAAM,WAAa8D,CACrB,CACA,MACF,IAAK,WACL,IAAK,OACL,IAAK,WACL,IAAK,SACH,CACE,MAAME,EAAMC,GACV,CAAC,GAAI,EAAG,IAAK,EAAE,EACf,CACEJ,IAAU,WACVA,IAAU,OACVA,IAAU,SACVA,IAAU,UACZ,CACF,EAEMK,EAAelE,EAAM,UAAU,UAClCvU,GAAYuU,EAAM,aAAevU,CACpC,EACMqY,EACJ9D,EAAM,UACJmE,GAAY,CACV,OAAQD,EAAeF,EACvB,IAAK,EACL,IAAKhE,EAAM,UAAU,OAAS,CAChC,CAAC,CACH,EACF,GAAI8D,IAAe9D,EAAM,WAAY,OAErCkD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtCkD,EAAK,KAAKzD,EAAWqE,CAAU,CAAC,EAE5B9D,EAAM,oBACJ4D,IACE5D,EAAM,aAAa,SAAS8D,CAAU,EACxC9D,EAAM,aAAeA,EAAM,aAAa,OACrCvU,GAAYA,IAAYqY,CAC3B,EAEA9D,EAAM,aAAa,KAAK8D,CAAU,EAEpC9D,EAAM,gBAAkB8D,IAG1B9D,EAAM,aAAe,CAAC8D,CAAU,EAChC9D,EAAM,gBAAkB8D,GAG1B9D,EAAM,WAAa8D,CACrB,CACA,KACJ,CACA9D,EAAM,qBAAuB,EAC/B,CAAC,EAEKoE,GAEDnB,EAAc,CAACjD,EAAO0D,EAASR,IAAS,CAC3C,MAAMgB,EAAelE,EAAM,UAAU,UAClCvU,GAAYA,IAAYuU,EAAM,UACjC,EAEA,SAASqE,EAAM3E,EAAkB,CAC/BwD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EAEtCA,EAAM,WAAaN,EAEdM,EAAM,sBACTkD,EAAK,KAAK,GAAGlD,EAAM,aAAa,IAAKvU,GAAYgU,EAAWhU,CAAO,CAAC,CAAC,EACrEuU,EAAM,aAAe,CAACN,CAAQ,GAGhCwD,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,CACxC,CAEA,SAASsE,EAAS5E,EAAkB,CA5MtC,IAAA5Y,EA6MI,MAAMmH,EAAK,SAAS,eAAe,GAAG+R,EAAM,YAAYN,GAAU,EAClE,OAAKzR,EAKW+R,EAAM,oBACpBlZ,EAAAmH,EAAG,YAAH,KAAAnH,EAAgB,GAChB4c,EAAQ,UACV,GAGEW,EAAMrE,EAAM,UAAUN,CAAQ,CAAC,EACxB,IAGF,IAdL,QAAQ,KAAK,oBAAqB,GAAGM,EAAM,YAAYN,GAAU,EAC1D,GAcX,CAEA,QAAS9Y,EAAIsd,EAAe,EAAGtd,EAAIoZ,EAAM,UAAU,OAAQpZ,IACzD,GAAI0d,EAAS1d,CAAC,EAAG,OAGnB,QAASA,EAAI,EAAGA,EAAIsd,EAActd,IAChC,GAAI0d,EAAS1d,CAAC,EAAG,MAErB,CAAC,EAMK2d,GAAqCtB,EACzC,CAACjD,EAAO0D,EAASR,IAAS,CACxBA,EAAK,KAAK,GAAGlD,EAAM,aAAa,IAAIP,CAAU,CAAC,EAC3CO,EAAM,sBACRA,EAAM,qBAAuB,GAC7BA,EAAM,aAAe,CAAA,IAErBA,EAAM,qBAAuB,GAC7BA,EAAM,aAAeA,EAAM,WAE7BA,EAAM,gBAAkBA,EAAM,WAC9BkD,EAAK,KAAK,GAAGlD,EAAM,UAAU,IAAIP,CAAU,CAAC,CAC9C,CACF,EAEM+E,GAEFvB,EAAc,CAACjD,EAAOlZ,EAA8Boc,IAAS,CAAvC,IAAAnc,EAAAD,EAAE,CAAA2d,aAAAA,CA9P5B,EA8P0B1d,EAAmB2c,EAAA9b,GAAnBb,EAAmB,CAAjB,cA9P5B,CAAA,EAAAD,EA+PE,MAAM4d,GAAe5d,EAAA4c,EAAQ,YAAR,KAAA5c,EAAqBkZ,EAAM,UAChD,GAAIA,EAAM,UAAY0E,EACpB,QAAS9d,EAAIoZ,EAAM,UAAWpZ,EAAK8c,EAAQ,UAAsB9c,IAC/DoZ,EAAM,UAAU,KAAKpZ,CAAC,OAEfoZ,EAAM,UAAY0E,IAC3B1E,EAAM,UAAYA,EAAM,UAAU,OAC/BvU,GAAYA,EAAUiZ,CACzB,EACI1E,EAAM,WAAa0E,EAAe,IACpC1E,EAAM,WAAa0E,EAAe,EAClCxB,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,GAExCA,EAAM,aAAeA,EAAM,aAAa,OACrCvU,GAAYA,EAAUiZ,CACzB,GAGF,OAAO,OAAO1E,EAAO0D,CAAO,EAC5BR,EAAK,IAAIuB,CAAY,EACrBzE,EAAM,qBAAuB,EAC/B,CAAC,EAEK2E,GAID1B,EAAc,CAACjD,EAAO0D,EAASR,IAAS,CAC3CA,EAAK,KAAKzD,EAAWO,EAAM,UAAU,CAAC,EACtCkD,EAAK,KAAKzD,EAAWiE,EAAQ,QAAQ,CAAC,EAEtC1D,EAAM,WAAa0D,EAAQ,SACvBA,EAAQ,WACVkB,GAAwB5E,EAAO,CAAE,WAAY0D,EAAQ,UAAW,EAAGR,CAAI,GAEvElD,EAAM,gBAAkB0D,EAAQ,SAC5BA,EAAQ,UACN1D,EAAM,aAAa,SAAS0D,EAAQ,QAAQ,EAC9C1D,EAAM,aAAeA,EAAM,aAAa,OACrCvU,GAAYA,IAAYiY,EAAQ,QACnC,EAEA1D,EAAM,aAAa,KAAK0D,EAAQ,QAAQ,GAG1CR,EAAK,KAAK,GAAGlD,EAAM,aAAa,IAAKvU,GAAYgU,EAAWhU,CAAO,CAAC,CAAC,EACrEuU,EAAM,aAAe,CAACA,EAAM,UAAU,GAG5C,CAAC,EAEK4E,GAED3B,EAAc,CAACjD,EAAO,CAAE,WAAA4D,CAAW,EAAGV,IAAS,CAClD,MAAMxD,EAAWM,EAAM,WAEvB,GADAkD,EAAK,KAAKzD,EAAWC,CAAQ,CAAC,EAC1BM,EAAM,oBACR,GAAI4D,EACF,GAAI5D,EAAM,kBAAoB,GAC5BA,EAAM,aAAa,KAAKN,CAAQ,MAC3B,CACL,MAAMmF,EAAe,IAAI,MACvB,KAAK,IAAI7E,EAAM,gBAAkBN,CAAQ,CAC3C,EACG,KAAK,CAAC,EACN,IACC,CAAChU,EAAG9E,IACFA,EACA,KAAK,IAAI8Y,EAAUM,EAAM,eAAe,GACvCA,EAAM,gBAAkBN,EAAW,EAAI,EAC5C,EACFwD,EAAK,KAAK,GAAG2B,EAAa,IAAKpZ,GAAYgU,EAAWhU,CAAO,CAAC,CAAC,EAC/DoZ,EAAa,QAASpZ,GAAY,CAC3BuU,EAAM,UAAU,SAASvU,CAAO,IAEjCuU,EAAM,aAAa,SAASvU,CAAO,EACrCuU,EAAM,aAAeA,EAAM,aAAa,OACrC8E,GAAWA,IAAWrZ,CACzB,EAEAuU,EAAM,aAAa,KAAKvU,CAAO,EAEnC,CAAC,OAGCuU,EAAM,aAAa,SAASN,CAAQ,EACtCM,EAAM,aAAeA,EAAM,aAAa,OACrCvU,GAAYA,IAAYiU,CAC3B,EAEAM,EAAM,aAAa,KAAKN,CAAQ,EAItCM,EAAM,gBAAkBN,CAC1B,CAAC,EAEKqF,GAAa,CACjB,OAAA1I,GAOA,4BAAAsH,GAMA,mCAAAS,GAMA,UAAAG,GAKA,SAAAC,GAMA,wBAAAG,GAMA,wBAAAC,EACF,WChYgBI,GACdlF,EACA,CACE,6BAAAmF,EACA,eAAAC,EACA,2BAAAC,EACA,oBAAAC,EACA,eAAAC,EACA,cAAAC,EACA,mBAAAC,CACF,EACA,CACA,OAAOjY,EAAQ,IACIkY,GAAkB,CACjC,aAAc/E,GAAgB,CAC5B,eAAgByE,GAAkB,GAClC,8BACGD,GAAgC,KAAS,CAACK,EAC7C,4BACGH,GAA8B,KAAS,CAACG,EAC3C,GAAIxF,EACJ,oBAAqB,CAAC,CAACsF,EACvB,eAAAC,EACA,cAAeC,GAAiB,GAChC,mBAAAC,CACF,CAAC,EACD,WAAAR,GACA,YAAalF,GAAeC,CAAO,EACnC,WAAAU,EACF,CAAC,EAIA,EAAE,CACP,CClCgB,SAAAiF,GACdC,EACAC,EACA,CACArY,EACE,UAAgC,CAC9BqY,EAAiB,CAAC3F,EAAO4F,IAAkB,CACrC5F,EAAM,eAAiB4F,EAAc,cACvCF,IAAoB,CAClB,eAAgB,SAAS,cACvB,IAAI1F,EAAM,YAAYA,EAAM,YAC9B,EACA,iBAAkBA,EAAM,aAAa,IAAKvU,GACjC,SAAS,cACd,IAAIuU,EAAM,YAAYvU,GACxB,CACD,CACH,CAEJ,CAAA,CAAC,CACH,EACA,CAACia,EAAmBC,CAAgB,CACtC,CACF,UCpBgBE,GACdve,EACA,CACA,OAAOgG,EACL,UAA+B,CAC7B,OAAOwY,GAAS,IAAIxe,EAAU,CAACye,EAAOrG,IAChCsG,GAAeD,CAAK,GAAKA,EAAM,OAASjF,GACnCmF,GACLF,EACA,CACE,SAAArG,CACF,CACF,EAEKqG,CACR,CACH,EACA,CAACze,CAAQ,CACX,CACF,CCvBgB,SAAA4e,GACdpG,EACAoB,EACA,CACA,MAAO,CACL,QAASjP,EAAY,IAAM,CAV/B,IAAAnL,EAYQ,SAAS,gBACT,SAAS,cAAc,IAAIgZ,kBAAwB,KAEnDhZ,EAAA,SACG,cAA2B,IAAIgZ,kBAAwB,IAD1D,MAAAhZ,EAEI,MAER,EAAA,EAAG,CAACgZ,CAAO,CAAC,EACZ,QAAS7N,EAAY,IAAM,CACzB,MAAMkU,EAAejF,EAAAA,EAAW,WAAa,EACvCkF,EAAa,SAAS,cAC1B,IAAItG,4CAAkDqG,IACxD,EAEA,GAAIC,EAAY,CACdA,EAAW,eAAe,CACxB,SAAU,OACV,MAAO,UACP,OAAQ,SACV,CAAC,EACD,MAAMjG,EAAkBC,GAAoBgG,CAAU,EAEtD,GAAIjG,EAAiB,CACnBA,EAAgB,eAAe,CAC7B,SAAU,OACV,MAAO,UACP,OAAQ,SACV,CAAC,EACD,MAAME,EAAS+F,EAAW,sBACpB9F,EAAAA,EAAWH,EAAgB,sBAAA,EAE7BE,EAAO,IAAMC,EAAS,IAAMD,EAAO,SACrCF,EAAgB,WAAaE,EAAO,SAG5C,EAAG,CAACa,EAAUpB,CAAO,CAAC,CACxB,CACF,UC3CgBuG,GACd/e,EACA6Z,EACA,CACA7T,EACE,UAA0B,CACxB,IAAIgZ,EAAQ,EACZR,GAAS,QAAQxe,EAAWmE,GAAY,CAClCua,GAAeva,CAAO,GAAKA,EAAQ,OAASqV,IAAawF,GAC/D,CAAC,EACDnF,EAAe,SAAS,CAAE,UAAWmF,EAAO,aAAc,CAAA,CAAG,CAAC,CAChE,EACA,CAACnF,EAAgB7Z,CAAQ,CAC3B,CACF,UCjBgBif,GAAuBrb,EAAwB,CAE7D,OAAOoC,EAAQ,IAAMpC,EAAO,CAAC,GAAG,OAAO,OAAOA,CAAK,CAAC,CAAC,CACvD,gbC0BA,MAAMsb,GAAgBC,GACpB,UACA,4BACAxI,GACC/S,GAAoB,CApCvB,IAAApE,EAqCI,MAAMgZ,EAAUxS,EAAQ,IAAMlC,GAAS,SAAS,EAAG,CAAE,CAAA,EAC/C,CAAC+V,EAAgBG,EAAYJ,EAAUyE,CAAgB,EAAIX,GAC/DlF,EACA5U,CACF,EAEAua,GAAwBva,EAAM,kBAAmBya,CAAgB,EACjEU,GAAkBnb,EAAM,SAAUiW,CAAc,EAEhD,MAAMuF,EAAkBb,GAAmB3a,EAAM,QAAQ,EACnD,CAAE,QAAAhE,EAAS,QAAAyf,CAAQ,EAAIT,GAAoBpG,EAASoB,CAAQ,EAC5DjY,EAAMqY,EAAwB,UAAW,IAAI,EAC7C9Z,EAAU0D,EAAM,SAAW,GAAK,4BAChC0b,EAAeL,GAAuB,CAC1C,SAAArF,EACA,GAAIpB,EACJ,eAAAqB,EACA,YAAajW,EAAM,YACnB,mBAAoBA,EAAM,mBAC1B,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,iBAAkBA,EAAM,iBACxB,WAAAoW,EACA,QAAA9Z,CACF,CAAC,EAED,OACEK,EAAC+Y,GAAe,SAAf,CAAwB,MAAOgG,EAC9B,SAAA/e,EAACqa,GAAAna,GAAAC,GAAA,CACC,UAAW,WAAWkD,EAAM,cAAgB,gBAAkB,OAC5DpE,EAAAoE,EAAM,YAAN,KAAApE,EAAmB,IAAA,EAEjBoE,EAAM,OAAA,EAJX,CAME,SAAAA,EAAM,cACLrD,EAAC+a,GAAA7a,GAAAC,GAAA,CAAA,EAAakD,EAAM,OAAA,EAAnB,CAA6B,SAAAwb,CAAgB,CAAA,CAAA,EAE9C7e,EAACmD,EAAAjD,GAAAC,GAAA,CACC,IAAKiB,EACL,GAAG,KACH,UAAU,gBACV,KAAK,UACL,SAAU,EACV,QAAS/B,EACT,QAASyf,CAAAA,EACLzb,EAAM,OAAA,EARX,CAUE,SAAAwb,CACH,CAAA,CAAA,CAAA,CAAA,CAEJ,CACF,CAAA,CAEJ,EACA,EACF,EAEMG,GAAU9F,GAAKyF,EAAa,EC9E9B,IAAApgB,GAAA,OAAA,eAAAQ,GAAA,OAAA,iBAAAP,GAAA,OAAA,0BAAAiJ,GAAA,OAAA,sBAAAF,GAAA,OAAA,UAAA,eAAA1G,GAAA,OAAA,UAAA,qBAAAhC,GAAA,CAAA,EAAAD,EAAA,IAAAA,KAAA,EAAAL,GAAA,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAAA,CAAA,EAAA,EAAAkF,GAAA,CAAA,EAAAlF,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAA2I,GAAA,KAAA3I,EAAA,CAAA,GAAAC,GAAA,EAAA,EAAAD,EAAA,CAAA,CAAA,EAAA,GAAA6I,GAAA,QAAA,KAAAA,GAAA7I,CAAA,EAAAiC,GAAA,KAAAjC,EAAA,CAAA,GAAAC,GAAA,EAAA,EAAAD,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAH,GAAA,CAAA,EAAAG,IAAAG,GAAA,EAAAP,GAAAI,CAAA,CAAA,EANEqgB,MAAAA,GAAgC,CAAC,CACrC,GAAA9f,EACA,SAAA+f,EAAW,EACX,QAAAC,EAAU,EACZ,IAEI9e,EAAAG,GAAA,CACE,SAAA,CAAAR,EAACof,GAAA,CACC,QAASjgB,EACT,GAAI,CACF,QAASggB,EAAU,QAAU,OAC7B,EAAG,KACL,EAEC,SAAA,GAAGD,IACN,CAAA,EACAlf,EAACqf,GAAAnf,GAAAC,GAAA,CACC,GAAIhB,EACJ,IAAK,IACL,MAAO+f,GACH9e,EAAW,iBAAiB,CAJjC,EAAA,CAKC,GAAI,CACF,QAAS+e,EAAU,QAAU,MAC/B,EAEC,SAAA,GAAGD,IACN,CAAA,CAAA,CAAA,CAAA,CACF,ibCXJ,SAASI,GAAeC,EAAsBC,EAAuB,CACnE,IAAInD,EAAe,EAEnB,KACEA,EAAemD,EAAY,QAC3BD,EAAeC,EAAYnD,CAAY,GAEvCA,IAEF,OAAOA,CACT,CASa,MAAAoD,GAA0B,CAAoC,CACzE,YAAAD,EACA,UAAAE,EACA,SAAAC,EACA,kBAAAC,CACF,IACS,SACLvc,EACA,CArDJ,IAAApE,EAAAC,EAAAiG,EAAAkO,EAsDI,KAAM,CAACwM,EAAYC,CAAoB,EAAIzb,GACzCnF,GAAAD,EAAAoE,EAAM,oBAAN,KAAApE,EAA2B2gB,IAA3B,KAAA1gB,EAAgD,CAClD,EACM6gB,EAAiBxa,EACrBia,GAAYnM,GAAAlO,EAAA9B,EAAM,oBAAN,KAAA8B,EAA2Bya,IAA3B,KAAAvM,EAAgD,CAAC,CAC/D,EACM2M,EAAWza,EAA8B,IAAI,EAC7C0a,EAAU1a,EAAe,CAAC,EAC1B2a,EAAmB3a,EAAO,EAAK,EAC/BnE,EAAMgJ,EACT/D,GAAyB,CAhEhC,IAAApH,GAiEQA,EAAA+gB,EAAS,UAAT,MAAA/gB,EAAkB,WAAA,EAClB+gB,EAAS,QAAU,IAAI,eAAgBG,GAAgB,CACjDA,EAAY,CAAC,EAAE,YAAY,QAAU,IAEzC,aAAaF,EAAQ,OAAO,EAC5BA,EAAQ,QAAU,WAAW,IAAM,CAtE7C,IAAAhhB,EAuEY8gB,EAAe,QAAUI,EAAY,CAAC,EAAE,YAAY,MACpDL,EACER,GACEa,EAAY,CAAC,EAAE,YAAY,OAC3BlhB,EAAAoE,EAAM,cAAN,KAAApE,EAAqBugB,CACvB,CACF,CACF,EAAGG,GAAY,GAAG,EACpB,CAAC,EAEGtZ,GAAS2Z,EAAS,QAAQ,QAAQ3Z,CAAO,CAC/C,EACA,CAAChD,EAAM,WAAW,CACpB,EAEA,OAAAqC,EAAU,KACRwa,EAAiB,QAAU,GAEpB,IAAM,CACXA,EAAiB,QAAU,GAC3B,WAAW,IAAM,CA3FzB,IAAAjhB,EA4FcihB,EAAiB,WACnBjhB,EAAA+gB,EAAS,UAAT,MAAA/gB,EAAkB,WAAA,EAQtB,EAAG,GAAI,CACT,GACC,CAACoE,EAAM,WAAW,CAAC,EAGpBrD,EAACmD,EAAA,CAAI,IAAK/B,EACR,SAAApB,EAAC0f,EAAAxf,GAAAC,GAAA,GACKkD,CADL,EAAA,CAEC,WAAYwc,EACZ,gBAAiBL,EAAYK,CAAU,EACvC,eAAgBE,EAAe,OACjC,CAAA,CAAA,CAAA,CACF,CAEJ,EChHWK,GAAoC,CAC/C,KAAM,CACJ,CAACvc,EAASsU,KACD,CACL,IAAK,CACH,wBAAyB,GAAGA,EAAM,YAAYA,EAAM,eAAeA,EAAM,eAC3E,CACF,EAEJ,EACA,KAAM,CACJ,CAACD,EAAiCC,IAAU,CAC1C,MAAMkI,EACJlI,EAAM,gBAAkBD,EAAa,aACrCC,EAAM,aAAeD,EAAa,SACpC,MAAO,CACL,IAAK,CACH,GAAI,GAAGC,EAAM,YAAYD,EAAa,aAAaA,EAAa,aAClE,EACA,UAAW,CACT,IAAKmI,EAAY,CAAC,SAAS,EAAI,OAC/B,OAAQA,EAAY,OAAY,CAAC,SAAS,CAC5C,CACF,CACF,EACA,CAACxc,EAAWsU,IAAkB,CAC5B,MAAMmI,EAAc,SAAS,cAC3B,IAAInI,EAAM,2BAA2BA,EAAM,gCAAgCA,EAAM,iBACnF,EAEAmI,GAAa,eAAe,CAC1B,SAAU,UACV,MAAO,UACP,OAAQ,SACV,CACF,CAAA,CACF,CACF,ECrCaC,EAAerI,GAGtB,GAAGA,EAAa,gBAAgBA,EAAa,WAEtCS,GAAuD,CAClE,KAAM4H,EACN,KAAM,IAAM,MACd,ECPA,SAASC,GAAsBrI,EAAe,CAC5C,MAAM9R,EAAU,SAAS,cACvB,IAAI8R,EAAM,2BAA2BA,EAAM,gCAAgCA,EAAM,iBACnF,EAEI9R,aAAmB,cACrB8R,EAAM,UAAY9R,EAAQ,QAAQ,GAEtC,CAEA,MAAMoa,GAAuC,CAACtI,EAAetU,EAASwX,IAAS,CAE1E,SAAS,cACR,IAAIlD,EAAM,2BACRA,EAAM,WAAa,uBACCA,EAAM,iBAC9B,IAIFkD,EAAK,IAAI,CACPkF,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACDoI,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,WAAa,CAC/B,CAAC,EACD,MACF,CAAC,EACDA,EAAM,aAENqI,GAAsBrI,CAAK,EAC7B,EACMuI,GAAqC,CAACvI,EAAOtU,EAASwX,IAAS,CAC/DlD,EAAM,WAAa,IACrBkD,EAAK,IAAI,CACPkF,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACDoI,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,WAAa,CAC/B,CAAC,EACD,MACF,CAAC,EACDA,EAAM,aAENqI,GAAsBrI,CAAK,EAE/B,EACMwI,GAAuC,CAACxI,EAAOtU,EAASwX,IAAS,CACjElD,EAAM,cAAgB,IACxBkD,EAAK,IAAI,CACPkF,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACDoI,EAAY,CACV,YAAapI,EAAM,cAAgB,EACnC,SAAUA,EAAM,UAClB,CAAC,EACD,MACF,CAAC,EACDA,EAAM,gBAENqI,GAAsBrI,CAAK,EA0C/B,EACMyI,GAAwC,CAACzI,EAAOtU,EAASwX,IAAS,CAEnE,SAAS,cACR,IAAIlD,EAAM,2BACRA,EAAM,gCACcA,EAAM,cAAgB,KAC9C,IAgDFkD,EAAK,IAAI,CACPkF,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACDoI,EAAY,CACV,YAAapI,EAAM,cAAgB,EACnC,SAAUA,EAAM,UAClB,CAAC,EACD,MACF,CAAC,EACDA,EAAM,gBACNqI,GAAsBrI,CAAK,EAC7B,EACM0I,GAGD,CAAC1I,EAAO0D,EAASR,IAAS,CAE1B,SAAS,cACR,IAAIlD,EAAM,2BAA2B0D,EAAQ,8BAA8BA,EAAQ,YACrF,IAIFR,EAAK,IAAI,CACPkF,EAAY,CAAE,YAAa1E,EAAQ,SAAU,SAAUA,EAAQ,QAAS,CAAC,EACzE0E,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACD,MACF,CAAC,EAEDA,EAAM,cAAgB0D,EAAQ,SAC9B1D,EAAM,WAAa0D,EAAQ,SAE3B2E,GAAsBrI,CAAK,EAC7B,EAEM2I,GAAsD,CAC1D3I,EACAtU,EACAwX,IACG,CArNL,IAAApc,EAAAC,EAsNE,MAAMmH,EAAU,SAAS,cACvB,IAAI8R,EAAM,qBAAqBA,EAAM,aACvC,EAEA,GAAI9R,aAAmB,YAAa,CAClC,MAAMwR,EAAWkJ,IACf9hB,EAAAoH,EAAQ,QAAQ,iBAAiB,IAAjC,KAAApH,OAAAA,EAAoC,aACpC,EACF,EACM+hB,EAAWD,IACf7hB,EAAAmH,EAAQ,QAAQ,iBAAiB,IAAjC,KAAAnH,OAAAA,EAAoC,aACpC,EACF,EAEI2Y,IAAa,IAAMmJ,IAAa,KAClC3F,EAAK,IAAI,CACPkF,EAAY,CACV,YAAapI,EAAM,cACnB,SAAUA,EAAM,UAClB,CAAC,EACDoI,EAAY,CAAE,YAAaS,EAAU,SAAAnJ,CAAS,CAAC,CACjD,CAAC,EAEDM,EAAM,cAAgB6I,EACtB7I,EAAM,WAAaN,GAGzB,EAEaqF,GAAa,CACxB,UAAAuD,GACA,UAAAE,GACA,WAAAC,GACA,QAAAF,GACA,WAAAG,GACA,yBAAAC,EACF,4VCxPa,MAAAlI,GAAmBvV,GAA4ClD,GAAA,CAC1E,cAAe,EACf,WAAY,EACZ,UAAW,CACRkD,EAAAA,CAAAA,ECuBQ4d,GAAejI,GAA6B,CAAmB,CAAA,EAE/DkI,GAA2B,IAC/BxH,GAAWuH,EAAY,ECvBnB9D,GAAW,CAAC,CACvB,QAAAlF,CACF,IAMK,CACH,KAAM,CAACkJ,EAASC,EAAU/H,EAAUgI,CAA2B,EAAI5b,EACjE,IACEkY,GAAkB,CAChB,aAAc/E,GAAgB,CAC5B,QAAAX,CACF,CAAC,EACD,YAAAmI,GACA,WAAAzH,GACA,WAAAuE,EACF,CAAC,EAEH,CAAA,CACF,EAEMoE,EAAkBlX,EACtB,CAAC,CAAE,SAAA3K,CAAS,IAERO,EAACihB,GAAa,SAAb,CACC,MAAO,CACL,QAAAE,EACA,SAAAC,EACA,SAAA/H,EACA,4BAAAgI,CACF,EAEC,SAAA5hB,CACH,CAAA,EAGJ,CAAC0hB,EAAS9H,EAAUgI,EAA6BD,CAAQ,CAC3D,EAEA,MAAO,CACLD,EACAC,EACA/H,EACAgI,EACAC,CACF,CACF,ECrDO,SAASC,GACdC,EACsC,CACtC,OACEA,aAA2B,UAC3BC,GAAcD,CAAe,EAAE,SAAW,CAE9C,CCLA,MAAME,GAAiB,mCACjBC,GAAiB,aAEhB,SAASF,GAAcG,EAAc,CAE1C,MAAMC,EAAQD,EAAK,WAAW,QAAQF,GAAgB,EAAE,EACxD,IAAI5O,EAA6C+O,EAC9C,MAAMA,EAAM,QAAQ,GAAG,EAAI,EAAGA,EAAM,QAAQ,GAAG,CAAC,EAChD,MAAMF,EAAc,EACvB,OAAI7O,IAAW,OAAMA,EAAS,IAEvBA,CACT,CAEA,SAASgP,GAAqB,CAC5B,gBAAAN,EACA,2BAAAO,CACF,EAC+C,CAC7C,IAAIC,EAA+B,CAAE,KAAM,EAAG,IAAK,CAAE,EAErD,MAAM3b,EAAUkb,GAA2BC,CAAe,EACtDA,IACAA,EAAgB,QAEpB,GAAInb,EAAS,CACX,MAAM4b,EAAO5b,EAAQ,wBAIrB,OAFc0b,GAA8B,WAAA,CAG1C,IAAK,aACHC,EAAoB,CAClB,KAAMC,EAAK,KACX,IAAKA,EAAK,MACZ,EACA,MACF,IAAK,cACHD,EAAoB,CAClB,KAAMC,EAAK,MACX,IAAKA,EAAK,MACZ,EACA,MACF,IAAK,SACHD,EAAoB,CAClB,MAAOC,EAAK,KAAOA,EAAK,OAAS,EACjC,KAAMA,EAAK,OAASA,EAAK,KAAO,CAClC,EACA,MACF,IAAK,UACHD,EAAoB,CAClB,KAAMC,EAAK,KACX,IAAKA,EAAK,GACZ,EACA,MACF,IAAK,WACHD,EAAoB,CAClB,KAAMC,EAAK,MACX,IAAKA,EAAK,GACZ,EACA,KACJ,OAEA,QAAQ,KACN,wDACAT,CACF,EAGF,OAAOQ,CACT,UAEgBE,GAAyB,CACvC,YAAAC,EACA,gBAAAX,EACA,2BAAAO,EACA,QAAAK,EACA,sBAAAC,EACA,sBAAAC,EACA,cAAAC,EAAgB,CAAE,OAAQ,OAAQ,MAAO,MAAO,CAClD,EASqB,CA/FrB,IAAAtjB,EAAAC,EAAAiG,EAAAkO,EAAA2B,EAAAC,EAAAC,EAAAC,EAgGE,IAAI6M,EAAoBG,EASxB,GAPIX,IACFQ,EAAoBF,GAAqB,CACvC,gBAAAN,EACA,2BAAAO,CACF,CAAC,GAGCC,EAAmB,CACrB,MAAMQ,EAAuB,OAAO,YAAcR,EAAkB,IAC9DS,EAAoBT,EAAkB,IACtCU,EAAqBV,EAAkB,KACvCW,EAAsB,OAAO,WAAaX,EAAkB,KAE5DY,IAAmB3jB,EAAAmjB,GAAS,QAAT,KAAAnjB,EAAkB,IAAM0jB,EAC3CE,IAAkB3jB,EAAAkjB,GAAS,QAAT,KAAAljB,EAAkB,IAAMwjB,EAC1CI,IAAoB3d,EAAAid,GAAS,SAAT,KAAAjd,EAAmB,IAAMqd,EAC7CO,IAAiB1P,EAAA+O,GAAS,SAAT,KAAA/O,EAAmB,IAAMoP,EAE1CO,EACJT,EAAc,QAAU,OAAS,EAAWA,EAAAA,EAAc,MACtDU,EACJV,EAAc,SAAW,OAAS,EAAA,EAAWA,EAAc,OAEvDW,EAA6B,CACjC,QAAS,CACP,MAAO,OACP,OAAQ,MACV,EACA,MAAOX,EAAc,QAAU,OAAS,OAAS,OACjD,OAAQA,EAAc,SAAW,OAAS,OAAS,MACrD,EAEA,OAAIF,IAA0B,OACxBQ,GACFK,EAAS,SAAW,KAAK,IAAIF,EAAgBN,CAAkB,EAC/DQ,EAAS,MAAQ,OAAO,WAAalB,EAAkB,MAC9CY,GACTM,EAAS,SAAW,KAAK,IAAIF,EAAgBL,CAAmB,EAChEO,EAAS,KAAOlB,EAAkB,OAElCkB,EAAS,KAAO,EAChBA,EAAS,SAAW,SAGlBN,GACFM,EAAS,SAAW,KAAK,IAAIF,EAAgBL,CAAmB,EAChEO,EAAS,KAAOlB,EAAkB,MACzBa,GACTK,EAAS,SAAW,KAAK,IAAIF,EAAgBN,CAAkB,EAC/DQ,EAAS,MAAQ,OAAO,WAAalB,EAAkB,OAEvDkB,EAAS,KAAO,EAChBA,EAAS,SAAW,SAIpBZ,IAA0B,MACxBS,GACFG,EAAS,UAAY,KAAK,IAAID,EAAiBR,CAAiB,EAChES,EAAS,OAAS,OAAO,YAAclB,EAAkB,KAChDc,GACTI,EAAS,UAAY,KAAK,IAAID,EAAiBT,CAAoB,EACnEU,EAAS,IAAMlB,EAAkB,MAEjCkB,EAAS,UAAY,QACrBA,EAAS,IAAM,GAGbJ,GACFI,EAAS,UAAY,KAAK,IAAID,EAAiBT,CAAoB,EACnEU,EAAS,IAAMlB,EAAkB,KACxBe,GACTG,EAAS,UAAY,KAAK,IAAID,EAAiBR,CAAiB,EAChES,EAAS,OAAS,OAAO,YAAclB,EAAkB,MAEzDkB,EAAS,UAAY,QACrBA,EAAS,IAAM,GAInBA,EAAS,UACP,OAAOA,EAAS,WAAc,SAC1B,KAAK,IAAIA,EAAS,WAAWlO,EAAAoN,GAAS,SAAT,KAAApN,EAAmB,CAAC,GACjDC,EAAAmN,GAAS,SAAT,KAAAnN,EAAmB,EACzBiO,EAAS,SACP,OAAOA,EAAS,UAAa,SACzB,KAAK,IAAIA,EAAS,UAAUhO,EAAAkN,GAAS,QAAT,KAAAlN,EAAkB,CAAC,GAC/CC,EAAAiN,GAAS,QAAT,KAAAjN,EAAkB,EAEjB+N,EAGT,MAAO,CAAE,KAAM,EAAG,IAAK,EAAG,MAAO,OAAQ,OAAQ,MAAO,CAC1D,CAEO,SAASC,GAAY,CAC1B,gBAAA3B,EACA,aAAA4B,EACA,gBAAAC,EACA,cAAAC,EACA,yBAAAC,EACA,iCAAAC,EACA,iBAAAC,CACF,EASG,CACD,MAAMC,EAAYne,EAAO,EAAK,EACxBgD,EAAQ6B,EAAY,IAAM,CAC9BuZ,GAAgB,QAAS,MAAS,CACpC,EAAG,CAAA,CAAE,EAEL,OAAAC,GAAS,IAAM,CACb,SAASnZ,EAAapI,EAAmB,CACnCA,EAAG,OAAS,UAAYihB,GAC1B/a,GAEJ,CACA,SAASsb,EAAmBxhB,EAAgB,CACrCqhB,EAAU,SAEbL,GACA,CAACvU,EAAQzM,EAAG,OAAwBuB,GAAS,CAlOrD,IAAA3E,EAmOU,OAAAA,EAAA2E,EAAQ,YAAR,KAAA3E,OAAAA,EAAmB,SAAS,kBAC9B,CAAA,CAAA,GAEAsJ,EAEJ,CAAA,CACA,SAASub,EAAazhB,EAAW,CAC1BqhB,EAAU,SAEbD,GACA,CAAC3U,EAAQzM,EAAG,OAAwBuB,GAAS,CA7OrD,IAAA3E,EA8OU,OAAAA,EAAA2E,EAAQ,YAAR,KAAA3E,OAAAA,EAAmB,SAAS,kBAC9B,CAAA,CAAA,GAEAsJ,GAEJ,CAEA,SAASwb,EAAiBvZ,EAAmB,CAC3C,GACE,CAACkZ,EAAU,SACV,CAACF,GAAoC,CAACD,EAEvC,OAEF,MAAMS,EAA0BxC,EAC5BD,GAA2BC,CAAe,EACxCA,EACAA,EAAAA,EAAgB,QAClB,KAEEyC,EAAqBnV,EACzBtE,EAAM,OACL5G,GAAYA,EAAQ,UAAU,SAAS,kBAAkB,CAC5D,EACMsgB,EAAsBpV,EAC1BtE,EAAM,OACL5G,GAAYA,IAAYogB,CAC3B,EAEMG,EAAmBrV,EACvBtE,EAAM,cACL5G,GAAYA,EAAQ,UAAU,SAAS,kBAAkB,CAC5D,EAEMwgB,EAAoBtV,EACxBtE,EAAM,cACL5G,GAAYA,IAAYogB,CAC3B,EAGE,CAACC,GACD,CAACC,GACD,CAACV,GACD,CAACD,GAGCY,GAAoBC,GACpBF,GAAuB,CAACV,GACxBS,GAAsB,CAACV,GAE3Bhb,EAAM,CACR,CAEA,OAAS,SAAA,iBAAiB,UAAWkC,CAAY,EACjD,SAAS,iBAAiB,YAAaoZ,CAAkB,EACzD,SAAS,iBAAiB,SAAUC,CAAY,EAChD,SAAS,iBAAiB,WAAYC,CAAgB,EAEtD,WAAW,IAAM,CACfL,EAAU,QAAU,EACtB,EAAG,CAAC,EAEG,IAAM,CACX,SAAS,oBAAoB,UAAWjZ,CAAY,EACpD,SAAS,oBAAoB,QAASoZ,CAAkB,EACxD,SAAS,oBAAoB,SAAUC,CAAY,EACnD,SAAS,oBAAoB,WAAYC,CAAgB,CAC3D,CACF,CAAC,EAEM,CACL,cAAe3Z,EACZ/H,GAAyB,CACxBA,EAAG,gBACC+gB,EAAAA,GACF7a,EAEJ,CAAA,EACA,CAACA,EAAO6a,CAAY,CACtB,CACF,CACF,CC7QI,IAAAze,GAAA,OAAA,eAAAF,GAAA,OAAA,iBAAAxD,GAAA,OAAA,0BAAAzC,GAAA,OAAA,sBAAAuN,GAAA,OAAA,UAAA,eAAA5N,GAAA,OAAA,UAAA,qBAAA2F,GAAA,CAAA/E,EAAAV,EAAAI,IAAAJ,KAAAU,EAAA4F,GAAA5F,EAAAV,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAI,CAAA,CAAA,EAAAM,EAAAV,CAAA,EAAAI,EAAAC,GAAA,CAAAK,EAAAV,IAAA,CAAA,QAAAI,KAAAJ,IAAAA,EAAA,IAAA0N,GAAA,KAAA1N,EAAAI,CAAA,GAAAqF,GAAA/E,EAAAN,EAAAJ,EAAAI,CAAA,CAAA,EAAA,GAAAD,GAAA,QAAAC,KAAAD,GAAAH,CAAA,EAAAF,GAAA,KAAAE,EAAAI,CAAA,GAAAqF,GAAA/E,EAAAN,EAAAJ,EAAAI,CAAA,CAAA,EAAA,OAAAM,CAAA,EAAAJ,GAAA,CAAAI,EAAAV,IAAAoG,GAAA1F,EAAAkC,GAAA5C,CAAA,CAAA,EA5CG,MAAMgmB,GAAU,CAAC,CACtB,YAAAlC,EACA,gBAAAX,EACA,2BAAAO,EACA,SAAAtiB,EACA,UAAA4B,EACA,aAAA+hB,EAAe,GACf,gBAAAC,EAAkB,GAClB,cAAAC,EAAgB,GAChB,yBAAAC,EAA2B,GAC3B,iCAAAC,EAAmC,GACnC,iBAAAC,EAAmB,GACnB,QAAArB,EACA,sBAAAC,EAAwB,QACxB,sBAAAC,EAAwB,SACxB,cAAAC,EAAgB,CAAE,OAAQ,OAAQ,MAAO,MAAO,EAChD,QAAA5iB,EAAU,gCACZ,IAAgB,CACd,MAAM2kB,EAAqBpC,GAAyB,CAClD,YAAAC,EACA,gBAAAX,EACA,2BAAAO,EACA,QAAAK,EACA,sBAAAC,EACA,sBAAAC,EACA,cAAAC,CACF,CAAC,EAEKtgB,EAAK9B,GAAA,CACT,SAAU,SACPmkB,CAGC,EAAA,CAAE,cAAAC,CAAc,EAAIpB,GAAY,CACpC,gBAAA3B,EACA,cAAA8B,EACA,gBAAAD,EACA,aAAAD,EACA,yBAAAG,EACA,iCAAAC,EACA,iBAAAC,CACF,CAAC,EAED,OACEzjB,EAACmD,EAAAjD,GAAAC,GAAA,CACC,UAAW,oBAAoBkB,GAAa,IAAA,EACxCjB,EAAWT,CAAO,CAAA,EAFvB,CAGC,GAAIsC,EACJ,QAASsiB,EAER,SAAA9kB,GACH,CAEJ,ibC/CA4W,GAAa,iCAAkC,CAC7C,WAAY,QACZ,OAAQ,iBACR,EAAG,EACH,OAAQ,SACV,CAAC,EAOY,KAAA,CAAG,CAAAsN,GAAiBa,EAAgB,EAC/CC,KAAwD,CACtD,UAAW,IAAM,CACf,KAAM,CAACC,EAASC,CAAU,EAAItgB,EAA0B,IAAI,EACtDugB,EAAaC,GAAUH,CAAO,EAUpC,OARAI,GAA6C,CAC3C,KAAMH,EACN,OAAQ,CAhChB,IAAA1lB,EAAAC,GAiCUA,GAAAD,EAAA2lB,EAAW,UAAX,KAAA3lB,OAAAA,EAAoB,UAApB,MAAAC,EAAA,KAAAD,CACA0lB,EAAAA,EAAW,IAAI,CACjB,CACF,CAAC,EAEID,EAEE1kB,EAACqkB,GAAAlkB,GAAA,CAAA,EAAYukB,CAAS,CAAA,EAFR,IAGvB,CACF,CAAC,EAEI,SAASK,GAAWL,EAAoB,CAC7C,MAAMlb,EAASjE,EAAO,EAAK,EAErBsC,EAAOuC,EACV4a,GAAmC,CAClC,WAAW,IAAM,CAEf,GADAxb,EAAO,QAAU,GACb,CAACkb,GAAW,EAACM,GAAA,MAAAA,EAAY,UAC3B,MAAM,IAAI,MAAM,kDAAkD,EACpErB,GAAgB,OAAQzjB,GAAAC,MAAA,CAClBukB,EAAAA,CAAAA,EACDM,GAFmB,CAGtB,SAAU,CAxDpB,IAAA/lB,EAAAC,GAyDYD,EAAAylB,GAAS,UAAT,MAAAzlB,EAAA,KAAAylB,CACAxlB,GAAAA,EAAA8lB,GAAY,UAAZ,MAAA9lB,EAAA,KAAA8lB,GACAxb,EAAO,QAAU,EACnB,CACF,CAAA,CAAC,CACH,EAAG,CAAC,CACN,EACA,CAACkb,CAAO,CACV,EAEA,MAAO,CACL,MAAOta,EAAY,IAAM,CACvBuZ,GAAgB,QAAS,MAAS,CACpC,EAAG,CAAA,CAAE,EACL,KAAA9b,EACA,OAAQuC,EACL4a,GAAmC,CAC9Bxb,EAAO,QACTma,GAAgB,QAAS,MAAS,EAC7B9b,EAAKmd,CAAU,CACxB,EACA,CAACnd,CAAI,CACP,CACF,CACF,CCnEA,SAASod,GAAS9iB,EAAgB+iB,EAAwB,CAd1D,IAAAjmB,EAAAC,EAeE,MAAMimB,EACJD,aAAe,aACXhmB,GAAAD,EAAAimB,EAAI,QAAqB,kCAAkC,IAA3D,KAAA,OAAAjmB,EAA8D,UAA9D,KAAAC,OAAAA,EACI,GACJgmB,EAEN,GAAIC,IAAW,OAAW,CACxB,MAAM7jB,EAAOa,EAAM,KAAMyB,GAAY,OAAOA,EAAQ,EAAE,IAAMuhB,CAAM,EAElE,OAAO7jB,GAAQ,KAEnB,CAEO,MAAM8jB,GAAa,CAAC,CACzB,SAAA3lB,EACA,MAAA0C,EACA,YAAAkjB,EACA,kBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,QAAAvN,CACF,IAOM,CACJ,KAAM,CAAE,QAAAkJ,EAAS,SAAA9H,EAAU,SAAA+H,CAAS,EAAIF,KAElC9f,EAAMggB,EAAS,OAAQ,IAAI,EAE3B,CAAE,KAAAvZ,CAAK,EAAIkd,GAAW,CAC1B,QAAS,CAAE,MAAO,IAAK,OAAQ,CAAE,CACnC,CAAC,EACKU,EAAkBrb,EACrB9I,GAAgB,CACXikB,GACF1d,EAAK,CACH,SAAU0d,EAAiBjkB,CAAI,EAC/B,gBAAiB,IACf,SAAS,cACP,IAAI2W,sCAA4C3W,EAAK,MACvD,EACF,aAAc,EAChB,CAAC,CAEL,EACA,CAACikB,EAAkB1d,EAAMoQ,CAAO,CAClC,EAEA,OACEjY,EAACmD,EAAA,CACC,IAAK/B,EACL,UAAU,wBACV,SAAU,EACV,QAASgJ,EACN/H,GAAmB,CAClB,GACE,CAACyM,EAAQzM,EAAG,OAAwBuB,GAAS,CA3EzD,IAAA3E,EA4Ec,OAAAA,EAAA2E,EAAQ,YAAR,KAAA3E,OAAAA,EAAmB,SAAS,uBAC9B,CAAA,CAAA,EAEA,OACF,MAAMqC,EAAO2jB,GAAS9iB,EAAOkX,EAAW,EAAA,SAAS,EAC7C/X,GACFmkB,EAAgBnkB,CAAI,CAExB,EACA,CAAC+X,EAAUlX,EAAOsjB,CAAe,CACnC,EACA,YAAarb,EACV/H,GAAmB,CAxF5B,IAAApD,EAAAC,EAyFU,GAAImD,EAAG,kBAAkB,YAAa,CACpC,MAAM2e,EAAWD,IACf9hB,EAAAoD,EAAG,OAAO,QAAQ,iBAAiB,IAAnC,KAAApD,OAAAA,EAAsC,aACtC,EACF,EACM4Y,EAAWkJ,IACf7hB,EAAAmD,EAAG,OAAO,QAAQ,iBAAiB,IAAnC,KAAA,OAAAnD,EAAsC,aACtC,EACF,EAEI8hB,GAAY,GAAKnJ,GAAY,GAC/BsJ,EAAQ,WAAW,CACjB,SAAAH,EACA,SAAAnJ,CACF,CAAC,EAGP,EACA,CAACsJ,CAAO,CACV,EACA,QAAS/W,EACN/H,GAAgC,CAC/B,MAAMf,EAAO2jB,GAAS9iB,EAAOE,EAAG,MAAM,EAElCf,GAAMmkB,EAAgBnkB,CAAI,EAC1B+jB,GAAe/jB,GACjB+jB,EAAYhjB,EAAIf,CAAI,CAExB,EACA,CAACa,EAAOkjB,EAAaI,CAAe,CACtC,EACA,cAAerb,EACZ/H,GAAgC,CAC/B,GAAIijB,EAAmB,CACrB,MAAMhkB,EAAO2jB,GAAS9iB,EAAOE,EAAG,MAAM,EAClCf,GAAMgkB,EAAkBjjB,EAAIf,CAAI,EAExC,EACA,CAACa,EAAOmjB,CAAiB,CAC3B,EACA,UAAWlb,EACR/H,GAAmC,CAClC,SAASqjB,GAAwB,CAC/B,MAAMpkB,EAAO2jB,GAAS9iB,EAAOkX,IAAW,SAAS,EAE7C/X,GAAMmkB,EAAgBnkB,CAAI,EAC1BA,GAAQkkB,GACVA,EAAcnjB,EAAIf,CAAI,CAE1B,CAEA,OAAQe,EAAG,KACT,CAAA,IAAK,UACH8e,EAAQ,QACRuE,EAAAA,IACA,MACF,IAAK,YACHvE,EAAQ,YACRuE,EAAsB,EACtB,MACF,IAAK,aACHvE,EAAQ,WAAW,EACnBuE,IACA,MACF,IAAK,YACHvE,EAAQ,YACRuE,EAAAA,EACA,KACJ,CACF,EACA,CAACvE,EAAS9H,EAAUlX,EAAOqjB,EAAeC,CAAe,CAC3D,EAEC,SAAAhmB,CAAAA,CACH,CAEJ,4VClKa,MAAA2W,GAA2B,CACtC,OAAQ,CACN,UAAW,QACb,EAEA,mCAAoC,CAClC,UAAW,mBACb,EAEA,4BAA6B,CAC3B,EAAG,EAEH,UAAWjW,GAAA,CAAA,EACNwlB,KAAa,YACd,CAAE,gBAAiBA,GAAW,EAAE,WAAW,KAAM,EACjD,OACF,CAAA,CAEJ,EAEA,0BAA2B,CACzB,UAAW,YACb,EAEA,+BAAgC,CAC9B,QAAS,OAET,qCAAsCxlB,GAAA,CAAA,EACjC+a,EAAAA,CAEP,CACF,EC/BgB,SAAA0K,GAAeC,EAAoB,CACjD,OAAO,MAAM,KAAK,MAAM,IAAOA,CAAU,CAAC,EACvC,KAAK,CAAC,EACN,IAAI,CAAChiB,EAAG9E,KAAOA,EAAI,GAAK8mB,CAAU,CACvC,CAEgB,SAAAC,GAAU,CACxB,eAAA/F,EACA,UAAAgG,EACA,WAAAlG,EACA,YAAAmG,EACA,wBAAAC,CACF,EAMG,CACD,MAAMC,GACHnG,EAAiBgG,EAAYlG,IAC7BA,GAAcoG,EAA0B,GAAK,IAYhD,OAXWxgB,EACT,KAAO,CACL,eAAgB,eAChB,oBAAqB,UAAUoa,UAC/B,OAAQmG,GAAe,EACvB,UAAW,GAAGE,MACd,GAAID,EAA0B,EAAI,GAAGC,KACvC,GACA,CAACD,EAAyBpG,EAAYqG,EAAKF,CAAW,CACxD,CAGF,CAEa,MAAAG,GAAmB,uBAEzB,SAASC,GAAe,CAC7B,WAAAvG,EACA,MAAA1d,EACA,EAAApD,CACF,EAIG,CACD,MAAMsnB,EAAqClkB,EAAM,MAC/CpD,EAAI8gB,GACH9gB,EAAI,GAAK8gB,CACZ,EACA,OAAIwG,EAAY,OAASxG,GACvBwG,EAAY,KACV,GAAI,MAAMxG,EAAawG,EAAY,MAAM,EAAE,KACzCF,EACF,CACF,EAEKE,CACT,CC3Da,MAAAC,GAAsBtN,GAAoC,IAAI,EAEpE,SAASuN,IAAyB,CACvC,MAAMC,EAAU9M,GAAW4M,EAAmB,EAE9C,GAAI,CAACE,EAAS,MAAM,IAAI,MAAM,iCAAiC,EAE/D,OAAOA,CACT,2VCLO,MAAMtjB,GACXG,GACG,CARL,IAAApE,EASE,KAAM,CAAE,SAAAmiB,CAAS,EAAIF,GAAyB,EAExC9f,EAAMggB,EAAsB,OAAQ,CACxC,YAAa/d,EAAM,SACnB,SAAUA,EAAM,QAClB,CAAC,EAEKojB,EAAWF,KAEjB,OACEvmB,EAACmD,EAAA,CACC,IAAK/B,EACL,KAAK,WACL,UAASiC,EAAM,GACf,UAAW,2BAA0BpE,EAAAoE,EAAM,YAAN,KAAApE,EAAmB,KACxD,aAAYoE,EAAM,UAClB,GAAIoC,EACF,KAAO,CACL,MAAO,GAAGpC,EAAM,SAClB,GACA,CAACA,EAAM,KAAK,CACd,EACA,gBAAeA,EAAM,SAErB,SAAArD,EAACymB,EAAAtmB,GAAA,CAAA,EAAakD,CAAAA,CAAO,EACvB,CAEJ,4VC/BO,MAAMqjB,GAAc,CAAoC,CAC7D,KAAAplB,EACA,UAAAykB,EACA,SAAAlO,EACA,SAAAmJ,CACF,IAMS1f,IAAS6kB,GACdnmB,EAACmD,EAAA,CAEC,GAAI,CAAE,MAAO,GAAG4iB,KAAc,EAC9B,UAAU,gBAAA,EAFL/E,CAGP,EAEAhhB,EAACkD,GAAA/C,GAAA,CACC,SAAU0X,EACV,SAAUmJ,EACV,MAAO+E,CAAAA,EACFzkB,CACP,CAAA,ECxBEqlB,GAA4CtjB,GAE9ChD,EAAC8C,EAAA,CAAI,UAAU,2BACb,SAAAnD,CAAAA,EAACmD,EAAA,CAAI,UAAU,kCACb,SAAAnD,EAACuE,GAAA,CACC,UAAU,yBACV,IAAKlB,EAAM,SACX,KAAK,YAAA,CACP,CACF,CAAA,EACArD,EAACmD,EAAA,CAAI,UAAU,yBAA0B,SAAAE,EAAM,KAAM,CAAA,CAAA,CAAA,CACvD,EAISujB,GAAsB1N,GAAKyN,EAAyB,ECH3DE,GAAwB,CAC5BxjB,EACAjC,IACG,CACH,MAAM6W,EAAUxS,EAAQ,IAAMlC,GAAS,WAAW,EAAG,CAAA,CAAE,EACjD,CAAC4d,EAAe2F,CAAAA,CAAAA,CAAAA,CAAO,EAAI3J,GAAS,CAAE,QAAAlF,CAAQ,CAAC,EAE/C8O,EAAsBthB,EAAQ,IAAM,CAvB5C,IAAAxG,EAAAC,EAAAiG,EAwBI,MAAM4gB,GAAY9mB,EAAAoE,EAAM,YAAN,KAAApE,EAAmB,IAC/B+nB,GAAS9nB,EAAAmE,EAAM,mBAAN,KAAAnE,EAA0B,GAEnC+nB,GAAe9hB,EAAA9B,EAAM,eAAN,KAAA8B,EAAsByhB,GAErCf,EAAaE,EAAYiB,EAC/B,OAAOpI,GACL,YACA,qCACAxI,GACAqJ,GAAwB,CACtB,YAAamG,GAAeC,CAAU,EACtC,UAAW,CAAC,CAAE,WAAAhG,EAAY,eAAAE,CAAe,IAAM,CAC7C,MAAMxE,EAAO,KAAK,KAAKlY,EAAM,MAAM,OAASwc,CAAU,EAChD5d,EAAK6jB,GAAU,CACnB,WAAAjG,EACA,eAAAE,EACA,UAAAgG,EACA,YAAa1iB,EAAM,YACnB,wBAAyBA,EAAM,uBACjC,CAAC,EAED,OAAAqC,EAAU,IAAM,CACdyb,EAAQ,yBAEV,CAAA,EAAG,CAACtB,CAAU,CAAC,EAGb7f,EAACsmB,GAAoB,SAApB,CAA6B,MAAOW,EACnC,SAAAjnB,EAAC8mB,EAAA,CACC,SAAA9mB,EAAColB,GAAA,CACC,MAAO/hB,EAAM,MACb,YAAaA,EAAM,YACnB,kBAAmBA,EAAM,kBACzB,iBAAkBA,EAAM,iBACxB,cAAeA,EAAM,cACrB,QAAS4U,EAET,SAAAjY,EAACmD,EAAA,CACC,GAAI8U,EACJ,KAAK,OACL,gBAAesD,EACf,gBAAesE,EAEd,SAAMtE,MAAAA,CAAI,EACR,KAAK,CAAC,EACN,IAAI,CAAC1X,EAAG9E,IAAM,CACb,MAAMoD,EAAQikB,GAAY,CACxB,WAAAvG,EACA,EAAA9gB,EACA,MAAOsE,EAAM,KACf,CAAC,EACD,OACErD,EAACknB,GAAA,CACC,gBAAenoB,EAAI,EACnB,KAAK,MAEL,IAAKqC,EACL,GAAIa,EAEH,SAAAE,EAAM,IAAI,CAACyB,EAASujB,IACnBnnB,EAAC0mB,GAAA,CAMC,SAAUS,EAAI,EACd,KAAMvjB,EACN,UAAWmiB,EACX,SAAUhnB,EAAI,CAPZ,EAAA,OAAO6E,GAAY,SACfujB,EAAI,EACJvjB,EAAQ,EAMhB,CACD,CAhBI,EAAA7E,CAiBP,CAEJ,CAAC,EACL,CACF,CAAA,CAAA,CACF,EACF,CAEJ,EACA,SAAU,EACZ,CAAC,CACH,CACF,EAAG,CACD+nB,EACA3F,EACA9d,EAAM,aACNA,EAAM,UACNA,EAAM,MACNA,EAAM,iBACNA,EAAM,YACNA,EAAM,kBACNA,EAAM,iBACNA,EAAM,cACNA,EAAM,wBACNA,EAAM,YACNjC,EACA6W,CACF,CAAC,EACD,OAAOjY,EAAC+mB,EAAA,CAAA,CAAoB,CAC9B,EAEAF,GAAsB,YAAc,YAEvB,MAAAO,GAAYtiB,GACvB+hB,EACF"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/forms/buttons/BaseButton.tsx","../src/components/forms/buttons/IconButton.tsx","../src/components/forms/buttons/SimpleButton.tsx","../src/components/buttons/useOtherTagButton.ts","../src/components/forms/Captcha.tsx","../src/components/forms/Checkbox.tsx","../src/globalFocus.ts","../src/hooks/useBodyScrollLock.ts","../src/components/modals/Overlay.tsx","../src/components/modals/layout/DialogHeader.tsx","../src/components/modals/Modal.tsx","../src/components/modals/CalendarModal.tsx","../src/components/modals/hooks/useModal.tsx","../src/components/modals/layout/DialogButtonBar.tsx","../src/components/modals/layout/Confirm.tsx","../src/components/loaders/LinearLoader.tsx","../src/components/modals/ScreenLock.tsx","../src/components/forms/FieldErrorMessage.tsx","../src/components/forms/IconInput.tsx","../src/components/forms/util/style.ts","../src/components/forms/DateInput.tsx","../src/components/forms/NumberInput.tsx","../src/components/forms/RequiredMark.tsx","../src/components/apia/ApiaDateFilter.tsx","../src/components/apia/ApiaFilter.tsx","../src/components/collapsiblePanel/styles.ts","../src/components/collapsiblePanel/index.tsx","../src/components/ListBox/common.ts","../src/components/ListBox/ListboxContext.tsx","../src/components/ListBox/ListboxItem.tsx","../src/components/waiAriaHelpers/typeAhead.ts","../src/components/ListBox/ListboxKeyhandler.tsx","../src/components/ListBox/Combobox.tsx","../src/components/ListBox/listbox.ts","../src/components/ListBox/operations.ts","../src/components/ListBox/useStore.ts","../src/components/ListBox/useShoutSelectionChange.ts","../src/components/ListBox/useIndexedChildren.ts","../src/components/ListBox/useListboxAutofocus.ts","../src/components/ListBox/useUpdateRowCount.ts","../src/components/ListBox/useListboxContextValue.ts","../src/components/ListBox/index.tsx","../src/components/loaders/ProgressBar.tsx","../src/components/loaders/LoaderSpinner.tsx","../src/components/responsive/makeResponsiveComponent.tsx","../src/components/IconsList/store/distinctors.ts","../src/components/IconsList/store/keysMaker.ts","../src/components/IconsList/store/operations.ts","../src/components/IconsList/store/state.ts","../src/components/IconsList/store/context.ts","../src/components/IconsList/store/useStore.tsx","../src/tooltip/types.ts","../src/tooltip/util.ts","../src/tooltip/Tooltip.tsx","../src/tooltip/index.tsx","../src/components/IconsList/KeyHandler.tsx","../src/components/IconsList/styles.ts","../src/components/IconsList/util.ts","../src/components/IconsList/context.tsx","../src/components/IconsList/Icon.tsx","../src/components/IconsList/IconWrapper.tsx","../src/components/IconsList/renderers/DefaultIconRenderer.tsx","../src/components/IconsList/index.tsx"],"sourcesContent":["import { Button, Spinner, Flex, ThemeUIStyleObject } from 'theme-ui';\nimport { TApiaButtonType } from '../../types';\nimport { getVariant, spacing } from '@apia/theme';\n\ninterface IBaseButton {\n text?: string;\n children?: string;\n loadingChildren?: string;\n id?: string;\n name?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n isLoading?: boolean;\n disabled?: boolean;\n variant?: TApiaButtonType | string;\n type?: 'button' | 'submit' | 'reset';\n SXProps?: ThemeUIStyleObject;\n}\n\n/**\n * The world's most **basic** button\n */\nexport const BaseButton = ({\n id,\n name,\n onClick = () => {},\n isLoading = false,\n loadingChildren,\n disabled = false,\n children = '',\n text = '',\n variant = 'primary',\n type = 'button',\n SXProps,\n ...buttonProps\n}: IBaseButton) => {\n return (\n <Button\n id={id}\n name={name}\n onClick={onClick}\n {...getVariant(variant)}\n type={type}\n title={children}\n disabled={isLoading || disabled}\n {...buttonProps}\n >\n <Flex\n as=\"span\"\n sx={{\n color: 'inherit',\n width: '100%',\n flexDirection: 'row',\n alignContent: 'center',\n justifyContent: 'center',\n alignItems: 'center',\n gap: spacing(3),\n ...SXProps,\n }}\n >\n {isLoading && (\n <>\n <Spinner size={20} color=\"inherit\" />\n {loadingChildren}\n </>\n )}\n {!isLoading && (children || text)}\n </Flex>\n </Button>\n );\n};\n","import * as React from 'react';\nimport {\n IconButton as IconButtonThemeUI,\n Spinner,\n IconButtonProps,\n ThemeUIStyleObject,\n} from 'theme-ui';\nimport { icons, TIconName, TIconType } from '@apia/icons';\nimport { getVariant } from '@apia/theme';\n\nexport type TIconSize = number | 'Xs' | 'Sm' | 'Md' | 'Lg' | 'Xl';\n\nexport type TApiaIconButton =\n | 'icon'\n | 'icon-primary'\n | 'icon-outline'\n | 'icon-only';\n\nexport type TIconButton = IconButtonProps &\n React.AriaAttributes & {\n className?: string;\n /**\n * Es posible pasar explícitamente un ícono o el nombre del ícono de\n * acuerdo a la librería de la aplicación. Ver Icon.tsx\n */\n icon: TIconType | TIconName;\n iconSize?: TIconSize;\n id?: string;\n disabled?: boolean;\n href?: string;\n isLoading?: boolean;\n isToggled?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseOut?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n size?: TIconSize;\n title?: string;\n variant?: string;\n };\n\n/**\n * Renderiza un botón con un ícono adentro.\n *\n * La variante por defecto de este componente es buttons.icon\n *\n * Si se pasa solamente size, el iconSize será\n */\nexport const IconButton = React.forwardRef(\n (\n {\n className,\n disabled = false,\n icon,\n iconSize: outerIconSize,\n id,\n isLoading = false,\n isToggled = false,\n href,\n onClick = () => {},\n onMouseOver = () => {},\n onMouseOut = () => {},\n size = 'Sm',\n title,\n type = 'button',\n variant = 'icon',\n ...rest\n }: TIconButton,\n ref: React.Ref<HTMLButtonElement>,\n ) => {\n const sizes = ['Xs', 'Sm', 'Md', 'Lg', 'Xl'];\n const iconSize =\n outerIconSize ?? sizes[Math.max(0, sizes.indexOf(size as string) - 1)];\n\n const sx: ThemeUIStyleObject = React.useMemo(() => {\n return {\n width: `icon${size}`,\n minWidth: `icon${size}`,\n height: `icon${size}`,\n minHeight: `icon${size}`,\n svg: {\n width: `icon${iconSize}`,\n minWidth: `icon${iconSize}`,\n height: `icon${iconSize}`,\n minHeight: `icon${iconSize}`,\n },\n };\n }, [iconSize, size]);\n\n const ActualIcon = React.useMemo(() => {\n return typeof icon === 'string' ? icons[icon] : icon;\n }, [icon]);\n\n return (\n <IconButtonThemeUI\n id={id}\n ref={ref}\n onClick={React.useCallback(\n (ev: React.MouseEvent<HTMLButtonElement>) => {\n if (href) window.open(href, '_blank');\n onClick?.(ev);\n },\n [href, onClick],\n )}\n onMouseOver={onMouseOver}\n onMouseOut={onMouseOut}\n {...getVariant(variant)}\n sx={sx}\n disabled={isLoading || disabled}\n className={`${className ?? ''} iconButton ${\n isToggled ? 'isToggled' : ''\n }`}\n title={title}\n aria-label={\n rest['aria-label'] ?? (rest.as !== undefined ? undefined : title)\n }\n type={rest.as !== undefined ? undefined : type}\n role={href ? 'link' : undefined}\n {...rest}\n >\n {isLoading ? <Spinner color=\"inherit\" /> : <ActualIcon />}\n </IconButtonThemeUI>\n );\n },\n);\n\nIconButton.displayName = 'IconButton';\n","import { TIconType } from '@apia/icons';\nimport { getVariant, spacing } from '@apia/theme';\nimport * as React from 'react';\nimport {\n Box,\n Button,\n ButtonProps,\n Spinner,\n ThemeUICSSObject,\n ThemeUIStyleObject,\n} from 'theme-ui';\n\nexport interface ISimpleButton extends ButtonProps {\n icon?: TIconType;\n iconColor?: string;\n iconPosition?: 'left' | 'right';\n iconSize?: number;\n isLoading?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n size?: 'sm' | 'md' | 'lg';\n variant?: string;\n spinnerSize?: number;\n type?: 'button' | 'submit' | 'reset';\n}\n\nconst simpleButton: ThemeUICSSObject = {\n display: 'inline-flex',\n gap: spacing(3),\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n\n '.toggled': {\n backgroundColor: 'primary',\n },\n /* PREPEND HERE */\n};\n\nexport const SimpleButton = React.forwardRef(\n (\n {\n children = null,\n className,\n disabled = false,\n icon,\n iconColor,\n iconPosition = 'left',\n iconSize,\n id,\n isLoading,\n name,\n onClick,\n size,\n spinnerSize = 16,\n title,\n type = 'button',\n variant = 'primary',\n ...buttonProps\n }: ISimpleButton,\n ref: React.Ref<unknown>,\n ) => {\n const loadingSx = React.useMemo<ThemeUIStyleObject>(\n () => ({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n [],\n );\n const spanSx = React.useMemo(\n () => ({\n color: isLoading ? 'transparent' : undefined,\n }),\n [isLoading],\n );\n const Icon = React.useMemo(() => icon, [icon]);\n\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement>}\n id={id}\n name={name}\n title={title}\n aria-label={title}\n onClick={onClick}\n type={type}\n disabled={isLoading ?? disabled}\n className={className}\n {...getVariant(`${variant}${size !== 'md' && size ? `-${size}` : ''}`)}\n sx={simpleButton}\n {...buttonProps}\n >\n {Icon && iconPosition === 'left' && (\n <Icon title=\"\" size={iconSize} color={iconColor} />\n )}\n <Box as=\"span\" className=\"button__content\" sx={spanSx}>\n {children ?? title}\n </Box>\n {Icon && iconPosition === 'right' && (\n <Icon title=\"\" size={iconSize} color={iconColor} />\n )}\n {isLoading && (\n <Box className=\"spinner\" sx={loadingSx}>\n <Spinner size={spinnerSize} color=\"inherit\" />\n </Box>\n )}\n </Button>\n );\n },\n);\n\nSimpleButton.displayName = 'SimpleButton';\n","import { getSpecificParent } from '@apia/util';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\n\n/**\n * Este hook está pensado para crear un botón utilizando un tag cualquiera.\n *\n * @example\n *\n * const buttonProps = useOtherTagButton(React.useMemo(()=>({\n * onClick(ev) { console.log(ev.target) },\n * onKeyDown(ev) { console.log(ev.code) }\n * }),[])\n *\n * return <div {...buttonProps}>Esto es un botón</div>\n */\nexport function useOtherTagButton(\n props?: Partial<{\n className?: string;\n onClick: React.MouseEventHandler;\n onKeyDown: React.KeyboardEventHandler;\n }>,\n) {\n const specificClass = React.useMemo(() => `otherTag${uniqueId()}`, []);\n\n const actualOnClick = React.useCallback(\n (ev: React.MouseEvent) => {\n props?.onClick?.(ev);\n },\n [props],\n );\n const actualOnKeyDown = React.useCallback(\n (ev: React.KeyboardEvent) => {\n props?.onKeyDown?.(ev);\n if (ev.code === 'Enter' || ev.code === 'Space') {\n ev.preventDefault();\n const button = getSpecificParent(ev.target as HTMLElement, (current) =>\n current.classList.contains(specificClass),\n );\n if (button) button.click();\n }\n },\n [props, specificClass],\n );\n\n return {\n className: `${specificClass} ${props?.className ?? ''}`,\n onClick: actualOnClick,\n onKeyDown: actualOnKeyDown,\n role: 'button',\n tabIndex: 0,\n };\n}\n","import { Flex, Image, Input } from 'theme-ui';\nimport { useState } from 'react';\nimport { IconButton } from './buttons';\nimport { getVariant } from '@apia/theme';\n\nexport const Captcha = ({\n name,\n imageUrl,\n onChange,\n value,\n className,\n}: {\n name: string;\n className?: string;\n imageUrl: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n value: string;\n}) => {\n const [imgSrc, setImgSrc] = useState<string>(`${imageUrl}?t=${Date.now()}`);\n\n const handleSyncClick = () => {\n // IMG reload\n setImgSrc(`${imageUrl}?t=${Date.now()}`);\n };\n\n return (\n <Flex\n sx={{\n flexDirection: 'column',\n }}\n className=\"captcha__field\"\n {...getVariant('layout.common.forms.captcha')}\n >\n <Flex className=\"captcha__imageContainer\">\n <Image alt=\"\" src={imgSrc} />\n </Flex>\n <Flex className={`captcha__inputContainer ${className ?? ''}`}>\n <Input\n autoComplete=\"off\"\n name={name}\n onChange={onChange}\n value={value}\n />\n\n <Flex className=\"captcha__buttons\">\n <IconButton\n icon=\"Refresh\"\n type=\"button\"\n aria-label=\"TODO: Etiqueta activar audio\"\n onClick={handleSyncClick}\n ></IconButton>\n <IconButton\n icon=\"Volume\"\n type=\"button\"\n aria-label=\"TODO: Etiqueta activar audio\"\n onClick={() => {}}\n ></IconButton>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { Button, ButtonProps, Input, InputProps } from 'theme-ui';\nimport { TModify, getSpecificParent, useUpdateEffect } from '@apia/util';\nimport {\n ChangeEventHandler,\n forwardRef,\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { getVariant } from '@apia/theme';\nimport { Icon } from '@apia/icons';\n\nexport type TCheckbox = TModify<\n ButtonProps,\n {\n background?: string;\n checked?: boolean;\n color?: string;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n native?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n readOnly?: boolean;\n required?: boolean;\n type?: string;\n }\n>;\n\nexport const Checkbox = forwardRef<HTMLButtonElement, TCheckbox>(\n (\n {\n onChange,\n required,\n disabled,\n readOnly,\n name,\n native,\n indeterminate,\n ...props\n },\n ref,\n ) => {\n const [isChecked, setIsChecked] = useState(\n props.defaultChecked ?? props.checked ?? false,\n );\n\n const checkbox = useRef<HTMLInputElement>(null);\n\n useUpdateEffect(\n () => setIsChecked(props.checked ?? false),\n [props.checked],\n );\n\n const sx = useMemo(\n () => ({\n bg: props.background ?? undefined,\n color: props.color ?? undefined,\n '&[aria-checked=\"false\"]': {\n bg: props.background ?? undefined,\n color: 'transparent',\n },\n }),\n [props.background, props.color],\n );\n\n useEffect(() => {\n if (checkbox.current && indeterminate !== undefined)\n checkbox.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const nativeSx = useMemo(() => ({ variant: 'forms.checkbox' }), []);\n\n return native ? (\n // eslint-disable-next-line react/forbid-elements\n <input\n type=\"checkbox\"\n onClick={props.onClick as unknown as MouseEventHandler}\n aria-checked={isChecked}\n sx={nativeSx}\n ref={checkbox}\n disabled={disabled}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n className={` ${props.className ?? ''} nativeCheckbox `}\n {...(props as unknown as InputProps)}\n />\n ) : (\n <>\n <Button\n {...props}\n onClick={(ev) => {\n if (readOnly) {\n return;\n }\n if (\n getSpecificParent(\n ev.target as HTMLElement,\n (current) => (current as HTMLInputElement).type === 'button',\n )\n ) {\n if (props.onClick) props.onClick(ev);\n checkbox.current?.click();\n }\n }}\n type=\"button\"\n {...getVariant('forms.customCheckbox')}\n role=\"checkbox\"\n aria-checked={isChecked}\n sx={sx}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n title=\"\"\n name=\"Check\"\n sx={{ pointerEvents: 'none', opacity: isChecked ? 1 : 0 }}\n size=\"32px\"\n />\n </Button>\n <Input\n type=\"checkbox\"\n sx={{ display: 'none' }}\n ref={checkbox}\n onClick={(ev) => {\n ev.stopPropagation();\n }}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n disabled={disabled}\n />\n </>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { TFocusRetriever, debugDispatcher } from '@apia/util';\nimport { isFunction } from 'lodash';\n\nconst historySize = 50;\n\n/**\n * The GlobalFocus helper keeps a list of the last focused elements and allows\n * to retrieve the last focused element which matches against a query selector.\n */\nconst globalFocus = new (class {\n focused: (HTMLElement | TFocusRetriever)[] = [];\n\n #onFocusCallbacks: (() => unknown)[] = [];\n\n offFocus(cb: () => unknown) {\n this.#onFocusCallbacks = this.#onFocusCallbacks.filter((current) => {\n return current !== cb;\n });\n }\n\n onFocus(cb: () => unknown) {\n this.#onFocusCallbacks.push(cb);\n\n return () => {\n this.offFocus(cb);\n };\n }\n\n constructor() {\n debugDispatcher.on(\n 'focusHistory',\n () => {\n console.info(this.focused);\n },\n 'Muestra el historial de elementos que recibieron foco.',\n );\n }\n\n inDocument(el: HTMLElement | TFocusRetriever) {\n return (\n el instanceof Function ||\n (el instanceof HTMLElement && el.offsetParent !== null)\n );\n }\n\n set focus(element: HTMLElement | TFocusRetriever) {\n this.focused = this.focused.filter((el) => {\n const existsInDocument = this.inDocument(el) && element !== el;\n\n return existsInDocument;\n });\n this.focused.unshift(element);\n if (this.focused.length > historySize) {\n this.focused = this.focused.splice(0, historySize);\n }\n\n this.#onFocusCallbacks.forEach((cb) => {\n return cb();\n });\n }\n\n get list() {\n return [...this.focused];\n }\n\n /**\n * @param querySelector A query selector against which the element should match\n * @returns The last HTMLElement if no querySelector argument provided or else, the last which matches\n * against that query selector.\n * */\n last(querySelector?: string, omit = 0) {\n if (querySelector)\n for (let i = omit; i <= this.focused.length; i++) {\n const storedElement = this.focused[i];\n const element =\n // eslint-disable-next-line no-nested-ternary\n (storedElement as HTMLElement)?.id !== undefined\n ? (storedElement as HTMLElement)\n : isFunction(storedElement)\n ? storedElement(false)\n : null;\n\n if (\n element &&\n this.inDocument(element) &&\n element.matches &&\n element.matches(querySelector)\n )\n return element;\n }\n else return this.focused[this.focused.length - 1];\n return null;\n }\n})();\n\nexport default globalFocus;\n","import { useEffect } from 'react';\n\nclass BodyScrollLocker {\n #isLocked = false;\n #onChangeCb: () => unknown = () => {};\n #onDestroyCb: () => unknown = () => {};\n\n get isLocked() {\n return this.#isLocked;\n }\n\n destroy() {\n this.#onDestroyCb();\n }\n\n lock() {\n this.#isLocked = true;\n this.#onChangeCb();\n }\n\n unlock() {\n this.#isLocked = false;\n this.#onChangeCb();\n }\n\n onChange(cb: () => unknown) {\n this.#onChangeCb = cb;\n\n return () => (this.#onChangeCb = () => {});\n }\n\n onDestroy(cb: () => unknown) {\n this.#onDestroyCb = cb;\n\n return () => (this.#onDestroyCb = () => {});\n }\n}\n\nconst BodyScrollLock = new (class BodyScrollLockClass {\n lockers: BodyScrollLocker[] = [];\n #evaluate() {\n const willLock =\n this.lockers.filter((current) => current.isLocked).length > 0;\n\n document.body.style.maxHeight = '100vh';\n\n if (willLock && document.body.scrollHeight > document.body.clientHeight)\n document.body.style.paddingRight = '10px';\n\n document.body.style.overflow = willLock ? 'hidden' : 'auto';\n\n if (!(willLock && document.body.scrollHeight > document.body.clientHeight))\n document.body.style.paddingRight = '0px';\n }\n\n getLocker() {\n const locker = new BodyScrollLocker();\n locker.onChange(() => this.#evaluate());\n locker.onDestroy(() => {\n this.lockers = this.lockers.filter((current) => current !== locker);\n this.#evaluate();\n });\n this.lockers.push(locker);\n\n return locker;\n }\n})();\n\nexport function useBodyScrollLock(isLocked: boolean) {\n useEffect(() => {\n const locker = BodyScrollLock.getLocker();\n if (isLocked) locker.lock();\n else locker.unlock();\n\n return () => {\n locker.destroy();\n };\n }, [isLocked]);\n}\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, BoxProps } from 'theme-ui';\nimport ReactFocusLock from 'react-focus-lock';\nimport { getVariant } from '@apia/theme';\nimport { useCombinedRefs } from '@apia/util';\nimport { useBodyScrollLock } from '../../hooks';\n\nexport interface IOverlay extends BoxProps {\n children: React.ReactNode;\n className?: string;\n onOverlayClicked: (event: React.MouseEvent<HTMLDivElement>) => void;\n /**\n * Permite pasar un callback que será llamado una vez que el overlay termine\n * de cerrarse.\n */\n onExited: () => void;\n isOpen?: boolean;\n shouldAvoidInitialFocusTrap?: boolean;\n stretch?: boolean;\n transitionDuration?: number;\n}\n\nexport const Overlay = React.forwardRef<unknown, IOverlay>(\n (\n {\n children,\n className = '',\n onExited,\n onOverlayClicked,\n isOpen: open = false,\n shouldAvoidInitialFocusTrap,\n stretch,\n transitionDuration = 150,\n ...props\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const assignRefs = useCombinedRefs(innerRef, ref);\n useBodyScrollLock(open);\n return (\n <CSSTransition\n in={open}\n timeout={transitionDuration}\n onExited={onExited}\n classNames=\"overlayAnimation\"\n appear\n nodeRef={innerRef}\n unmountOnExit\n >\n <Box\n className={`${className} overlay`}\n ref={assignRefs}\n {...props}\n data-type=\"overlay\"\n role=\"presentation\"\n onClick={React.useCallback(\n (ev: React.MouseEvent<HTMLDivElement>) => {\n if (ev.target === innerRef.current) onOverlayClicked(ev);\n },\n [onOverlayClicked],\n )}\n {...getVariant(\n props.variant ??\n `layout.common.modals.overlay${stretch ? '--stretch' : ''}`,\n )}\n >\n <ReactFocusLock\n autoFocus={shouldAvoidInitialFocusTrap ? false : undefined}\n returnFocus={false}\n crossFrame={false}\n disabled={\n document.activeElement?.classList.contains('filter') &&\n document.activeElement.tagName === 'INPUT'\n }\n >\n {children}\n </ReactFocusLock>\n </Box>\n </CSSTransition>\n );\n },\n);\n\nOverlay.displayName = 'Overlay';\n","import { Box, Close, Heading } from 'theme-ui';\nimport { useBreakpointIndex } from '@theme-ui/match-media';\nimport React, { FC } from 'react';\nimport { responsive, spacing } from '@apia/theme';\n\nexport interface IDialogHeader {\n className?: string;\n close: () => void;\n hideCloseButton?: boolean;\n id?: string;\n NavBar?: React.ReactNode;\n title?: string;\n}\n\nconst DialogHeader: FC<IDialogHeader> = ({\n className,\n close,\n hideCloseButton,\n id,\n NavBar,\n title = '',\n}) => {\n const breakpointIndex = useBreakpointIndex();\n\n const Title = (\n <Heading\n as=\"h3\"\n sx={{\n wordBreak: 'break-word',\n m: '0',\n flex: '2 0',\n color: 'title',\n }}\n className=\"modal__title\"\n id={id ? `modal-${id}-title` : ''}\n >\n {title}\n </Heading>\n );\n\n const CloseButton = React.useMemo(\n () =>\n hideCloseButton ? null : (\n <Close\n role=\"button\"\n type=\"button\"\n aria-label={window.BTN_CLOSE}\n onClick={close}\n title={window.BTN_CLOSE}\n sx={{\n mr: 'unset',\n }}\n className=\"modal__closeButton\"\n />\n ),\n [close, hideCloseButton],\n );\n\n const NavBarElement = NavBar && (\n <Box\n sx={{\n display: 'flex',\n gap: responsive({ 0: 2, 1: '3px', 2: 2 }),\n justifyContent: 'end',\n flexDirection: responsive({ 0: 'row', 1: 'column', 3: 'row' }),\n width: responsive({ 0: 'auto', 1: '100%', 2: 'auto' }),\n flexBasis: 'max-content',\n height: '100%',\n }}\n className=\"modal__headerBar\"\n >\n {NavBar}\n </Box>\n );\n\n return breakpointIndex > 3 ? (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'start',\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n flexWrap: 'nowrap',\n }}\n >\n {Title}\n {NavBarElement}\n {CloseButton}\n </Box>\n ) : (\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: responsive({ 0: 'center', 2: 'end' }),\n mb: spacing(0),\n justifyContent: 'space-between',\n width: '100%',\n gap: spacing(2),\n }}\n >\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n }}\n >\n {Title}\n {CloseButton}\n </Box>\n {NavBarElement}\n </Box>\n );\n};\n\nexport default DialogHeader;\n","import React, {\n useEffect,\n useState,\n useCallback,\n forwardRef,\n useRef,\n} from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box } from 'theme-ui';\nimport { uniqueId } from 'lodash';\nimport {\n focus,\n focusSelector,\n getFocusSelector,\n useCombinedRefs,\n IOnFocusConfiguration,\n TFocusRetriever,\n} from '@apia/util';\nimport { getVariant } from '@apia/theme';\nimport { Overlay } from './Overlay';\nimport { TModalSize } from '../types';\nimport DialogHeader, { IDialogHeader } from './layout/DialogHeader';\n\nexport type TModalContext = {\n /**\n * Se debe usar para dotar de una descripción al cuadro de diálogo\n */\n descriptionId: string;\n};\nexport const ModalContext = React.createContext<TModalContext>(\n {} as TModalContext,\n);\n\nexport type TModal = {\n animationDuration?: number;\n children?: React.ReactNode;\n className?: string;\n id?: string;\n initialFocusConfiguration?: IOnFocusConfiguration;\n /**\n * Este retriever será pasado al método focus.on para realizar el foco en el\n * elemento inicial del modal.\n *\n * @see focus\n */\n initialFocusGetter?: (\n modalInnerRef: HTMLElement,\n ) => ReturnType<TFocusRetriever>;\n /**\n * Si se pasa un ref, el modal hará foco sobre el elemento una vez que haya\n * abierto.\n */\n initialFocusRef?: React.RefObject<unknown>;\n /**\n * Controla el estado del modal, indicando a la transición de apertura o\n * cierre que debe comenzar, dependiendo de si cambia a true o false\n * respectivamente.\n */\n isOpen?: boolean;\n maxWidth?: number | string;\n /**\n * Permite pasar un componente React que se mostrará a la derecha del título,\n * con el fin de incorporar botones en el header del modal.\n */\n NavBar?: React.ReactNode;\n noFocus?: boolean;\n noHeader?: boolean;\n /**\n * Permite definir un callback que será llamado solamente cuando el modal se\n * cierre por medio del click en el overlay, al presionar escape o mediante\n * el botón cerrar del header (La X).\n */\n onClose?: () => void;\n /**\n * Permite definir un callback que será llamado siempre que el modal se\n * cierre, una vez que la animación haya terminado.\n */\n onExited?: () => unknown;\n /**\n * Al pasar un Portal, el modal se abrirá dentro de éste y no directamente en\n * la posición actual dentro del árbol de componentes. Normalmente, este\n * Portal es pasado automáticamente por el hook useModal (No el de la\n * librería, sino el nuestro).\n *\n * @see useModal\n */\n Portal?: React.FC<{\n children: React.ReactNode;\n }>;\n /**\n * Si es true, el modal será cerrado al presionar escape.\n */\n shouldCloseOnEsc?: boolean;\n /**\n * Si es true, el modal será cerrado al hacer clic en el overlay.\n */\n shouldCloseOnOverlayClick?: boolean;\n size?: TModalSize;\n stretch?: boolean;\n title?: string;\n variant?: string;\n} & Pick<IDialogHeader, 'hideCloseButton'>;\n\nexport const Modal = forwardRef(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n hideCloseButton,\n id,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n isOpen = false,\n maxWidth,\n NavBar,\n noFocus,\n noHeader = false,\n onClose = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n shouldCloseOnOverlayClick = true,\n size = 'md',\n stretch,\n title = '',\n variant,\n }: TModal,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [isOpenInner, setIsOpen] = useState(isOpen);\n const innerId = React.useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n const [overlayElement, setInnerRef] = React.useState<HTMLElement>();\n const assignRefs = useCombinedRefs(\n setInnerRef as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n );\n\n const overlayClickedHandle = (event: React.MouseEvent<HTMLDivElement>) => {\n if (shouldCloseOnOverlayClick) {\n if (\n (event.target as HTMLDivElement).getAttribute('data-type') ===\n 'overlay'\n ) {\n closeHandler();\n }\n }\n };\n\n useEffect(() => {\n function handleEscape(event: KeyboardEvent) {\n const overlays = [...document.querySelectorAll('.overlay')];\n\n if (\n overlays.length > 0 &&\n overlays[overlays.length - 1]?.id === innerId &&\n event.key === 'Escape'\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n closeHandler();\n\n return false;\n }\n\n return true;\n }\n if (isOpenInner && shouldCloseOnEsc)\n document.addEventListener('keydown', handleEscape, false);\n return () => {\n document.removeEventListener('keydown', handleEscape, false);\n };\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, innerId]);\n\n React.useEffect(\n () => {\n if (!noFocus && isOpenInner) {\n if (overlayElement) {\n void focus.on(\n () => {\n if (initialFocusGetter)\n return initialFocusGetter(overlayElement);\n if (initialFocusRef?.current)\n return (\n (initialFocusRef?.current || overlayElement) as HTMLElement\n ).querySelector(focusSelector) as HTMLElement;\n return overlayElement.querySelector(\n getFocusSelector(':not(.modal__closeButton)'),\n ) as HTMLElement;\n },\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\n );\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [overlayElement],\n );\n\n const Wrapper = React.useMemo(() => {\n return Portal ?? React.Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const nodeRef = useRef<HTMLElement | null>(null);\n\n return (\n <ModalContext.Provider\n value={React.useMemo(() => {\n return { descriptionId: `${innerId}_Description` };\n }, [innerId])}\n >\n <Wrapper>\n <Overlay\n onOverlayClicked={overlayClickedHandle}\n isOpen={isOpen}\n className={className}\n stretch={stretch}\n ref={assignRefs}\n onExited={onExited}\n id={innerId}\n shouldAvoidInitialFocusTrap={noFocus}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={nodeRef}\n >\n <Box\n ref={nodeRef}\n className=\"modal__variantWrapper\"\n {...(variant ? getVariant(variant) : {})}\n >\n <Box\n id={id}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n aria-describedby={`${innerId}_Description`}\n aria-hidden=\"false\"\n className=\"modal__main\"\n // allows scrolling within element, despite body lock\n data-scroll-lock-scrollable\n sx={React.useMemo(() => {\n return {\n variant: `layout.common.modals.${size}`,\n ...(maxWidth !== undefined ? { maxWidth } : {}),\n };\n }, [maxWidth, size])}\n data-variant={`layout.common.modals.${size}`}\n >\n {!noHeader && (\n <DialogHeader\n className=\"modal__header\"\n NavBar={NavBar}\n title={title}\n close={closeHandler}\n hideCloseButton={hideCloseButton}\n id={`${innerId}_Header`}\n />\n )}\n <Box\n className=\"modal__content\"\n id={\n typeof children === 'string'\n ? `${innerId}_Description`\n : undefined\n }\n >\n {children}\n </Box>\n </Box>\n </Box>\n </CSSTransition>\n </Overlay>\n </Wrapper>\n </ModalContext.Provider>\n );\n },\n);\n\nModal.displayName = 'Modal';\n","import React from 'react';\nimport Calendar from 'react-calendar';\nimport { Modal, TModal } from './Modal';\n\nexport interface ICalendarModal extends TModal {\n handleClickDay: (date: Date) => void;\n onCancel: () => void;\n calValue?: Date;\n locale: string;\n}\n\nexport const CalendarModal = React.forwardRef<HTMLDivElement, ICalendarModal>(\n ({ handleClickDay, onCancel, calValue, locale, size, ...props }, ref) => {\n return (\n <Modal\n noHeader\n size={size ?? 'cal'}\n shouldCloseOnEsc\n shouldCloseOnOverlayClick\n ref={ref}\n {...props}\n initialFocusGetter={(modalRef) => {\n return modalRef?.querySelector(\n '.react-calendar__tile--active',\n ) as HTMLElement;\n }}\n >\n <Calendar\n onClickDay={handleClickDay}\n locale={locale}\n value={calValue ?? new Date()}\n nextLabel=\"›\"\n next2Label=\"»\"\n prevLabel=\"‹\"\n prev2Label=\"«\"\n />\n </Modal>\n );\n },\n);\n\nCalendarModal.displayName = 'CalendarModal';\n","import { useUpdateEffect } from '@apia/util';\nimport React from 'react';\nimport usePortal, { Args } from 'react-cool-portal';\nimport { TModal } from '../Modal';\n\nexport type TUseModalConfiguration = Pick<TModal, 'onClose' | 'onExited'> & {\n debugPerformanceName?: string;\n isDefaultOpen?: boolean;\n onOpen?: () => unknown;\n portalArgs?: Omit<Args, 'containerId'>;\n preFetcher?: () => Promise<void>;\n};\n\n/**\n * Este hook provee una forma muy sencilla de utilizar nuestro modal. Provee\n * varias funcionalidades interesantes para poder manipular el modal en\n * distintas circunstancias:\n *\n * Objeto parámetro:\n *\n * - **defaultOpen**, Boolean, si es true el modal aparecerá abierto al montar\n * y sino aparecerá cerrado.\n * - **onOpen**: Event listener que será llamado en el momento exacto en que la\n * orden de apertura del modal fue dada.\n * - **onClose**: Event listener que será llamado en el momento exacto en que\n * el modal es cerrado, ya sea por un click en el overlay o porque la tecla\n * escape fue presionada.\n * - **onExited**, Event listener que será llamado luego de que la animación de\n * cierre del modal terminó.\n * - **preFetcher**, este método deberá devolver una promesa y en dicha promesa\n * deberá realizar cualquier operación que fuera necesaria antes de abrir el\n * modal, ejemplo: cargar la información que el modal debe mostrar. Si este\n * método es pasado, será llamado antes de abrir el modal y la vista se pondrá\n * en modo de carga (la propiedad isLoading devuelta y la propiedad isLoading\n * del OpenModalContextProvider estarán en true), hasta que la promesa sea\n * resuelta, momento en que se abrirá el modal e isLoading será puesto en false.\n * - **portalArgs**, objeto de configuración aceptado por el hook usePortal de\n * **react-cool-portal**.\n *\n * Objeto devuelto:\n *\n * - Para un modal en donde el botón de abrir el modal esté inserto dentro del\n * componente que lo utiliza, se devuelven los métodos **show** y **hide**.\n * - Para un modal en donde el botón de abrir el modal esté fuera del\n * componente, se devuelve **openModalContextValue**, que es el valor que debe\n * pasarse al contexto de tipo OpenModalContextProvider, un contexto que\n * puede ser utilizado para renderizar el botón encargado de abrir el modal,\n * fuera del alcance del componente que define el modal en sí. Se muestra un\n * ejemplo más abajo.\n * - Todos los demás elementos devueltos son para pasar directamente al modal,\n * entre ellos se encuentran las propiedades que el modal utiliza para saber si\n * debe estar abierto, los event listeners correspondientes y un portal, que el\n * modal usará para mostrarse dentro del área de modales, lo cual es sumamente\n * importante para que el focusController funcione correctamente.\n *\n * @see OpenModalContextProvider\n * @see usePortal\n *\n * @example\n *\n const { openModalContextValue, ...modalProps } = useModal(\n React.useMemo(() => ({\n onClose: () => console.log(\"Al presionar en cerrar.\"),\n onExited: () => console.log(\"Al terminar la animación de cierre.\"),\n onOpen: () => console.log(\"Al abrir.\"),\n }), [])\n );\n\n return (\n <OpenModalContext.Provider value={openModalContextValue}>\n <OpenModalContext.Consumer>\n {({ isLoading, show }) => (\n <Button isLoading={isLoading} onClick={show}>Open modal</Button>\n )}\n </OpenModalContext.Consumer>\n <Modal shouldCloseOnEsc shouldCloseOnOverlayClick {...modalProps}>\n Hello world\n </Modal>\n </OpenModalContext.Provider>\n );\n */\nexport function useModal(configuration?: TUseModalConfiguration) {\n const [isLoading, setIsLoading] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(\n configuration?.portalArgs?.defaultShow ??\n configuration?.isDefaultOpen ??\n false,\n );\n\n const {\n Portal,\n hide: hidePortal,\n show: showPortal,\n } = usePortal({\n ...configuration?.portalArgs,\n containerId: 'AppModals',\n autoRemoveContainer: false,\n escToHide: false,\n clickOutsideToHide: false,\n defaultShow: false,\n internalShowHide: false,\n });\n\n const hide = React.useCallback(() => {\n setIsOpen(false);\n }, []);\n const show = React.useCallback(() => {\n if (configuration?.preFetcher) {\n setIsLoading(true);\n configuration\n .preFetcher()\n .then(() => {\n setIsOpen(true);\n setIsLoading(false);\n })\n .catch(console.error);\n } else setIsOpen(true);\n }, [configuration]);\n const onClose = React.useCallback(() => {\n setIsOpen(false);\n if (configuration?.onClose) configuration.onClose();\n }, [configuration]);\n const onExited = React.useCallback(() => {\n hidePortal();\n if (configuration?.onExited) configuration.onExited();\n }, [configuration, hidePortal]);\n const openModalContextValue = React.useMemo(() => {\n return {\n isLoading,\n show,\n };\n }, [isLoading, show]);\n\n useUpdateEffect(() => {\n if (isOpen) {\n if (configuration?.onOpen) configuration.onOpen();\n showPortal();\n } else onClose?.();\n }, [isOpen]);\n\n return {\n hide,\n isLoading,\n isOpen,\n onClose,\n onExited,\n openModalContextValue,\n Portal,\n show,\n };\n}\n","import { getVariant } from '@apia/theme';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\n\nexport interface IDialogButtonBar {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const DialogButtonBar: React.FC<IDialogButtonBar> = ({\n children,\n className,\n}) => {\n return (\n <Box\n className={`${className ?? ''} buttonsBar`}\n {...getVariant('layout.common.modals.buttonsBar')}\n >\n {children}\n </Box>\n );\n};\n","import { getVariant, injectStyles, spacing } from '@apia/theme';\nimport { getSpecificParent } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\nimport { SimpleButton } from '../../forms/buttons/SimpleButton';\nimport { TApiaButtonType } from '../../types';\nimport { ModalContext } from '../Modal';\nimport { DialogButtonBar } from './DialogButtonBar';\n\nexport function getConfirmButton(ref: HTMLElement) {\n return ref?.querySelector('button[type=\"submit\"]') as HTMLElement;\n}\n\nexport interface IConfirm {\n additionalButtons?: React.ReactNode;\n additionalButtonsOnRight?: React.ReactNode;\n cancelButtonText?: string;\n children: React.ReactNode;\n className?: string;\n confirmButtonText?: string;\n confirmButtonVariant?: TApiaButtonType;\n contentRef?: React.Ref<HTMLDivElement>;\n disabled?: boolean;\n hideCancelButton?: boolean;\n hideConfirmButton?: boolean;\n isLoading?: boolean;\n onConfirm?: (ev: React.MouseEvent) => unknown;\n onCancel?: (ev: React.MouseEvent) => unknown;\n variant?: string;\n}\n\ndeclare global {\n interface Window {\n [key: string]: string;\n }\n}\n\ninjectStyles('layout.common.modals.confirm', {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing(4),\n width: '100%',\n '.confirm__content': {\n overflow: 'auto',\n flexBasis: '100%',\n wordBreak: 'break-word',\n display: 'flex',\n flexDirection: 'column',\n },\n\n '.confirm__buttonBar': {\n display: 'flex',\n justifyContent: 'space-between',\n flexBasis: '40px',\n flexGrow: 0,\n flexShrink: 0,\n\n '.confirm__defaultButtons': {\n display: 'flex',\n gap: spacing(3),\n },\n '.confirm__customButtons': {\n width: 'auto',\n },\n },\n});\n\nexport const Confirm: React.FC<IConfirm> = ({\n additionalButtons,\n additionalButtonsOnRight,\n children,\n confirmButtonText: confirmText = window.BTN_CONFIRM,\n cancelButtonText: cancelText = window.BTN_CANCEL,\n confirmButtonVariant: confirmType = 'primary',\n disabled,\n hideCancelButton,\n hideConfirmButton,\n onConfirm: onConfirmOk,\n onCancel: onConfirmCancel,\n isLoading,\n contentRef,\n className,\n variant,\n}) => {\n const { descriptionId } = React.useContext(ModalContext);\n\n return (\n <Box\n {...getVariant(variant ?? 'layout.common.modals.confirm')}\n className={`${className ?? ''} confirm`}\n >\n <Box ref={contentRef} className=\"confirm__content\" id={descriptionId}>\n {children}\n </Box>\n <DialogButtonBar className=\"confirm__buttonBar\">\n <Box\n className=\"confirm__customButtons\"\n onClick={React.useCallback(\n (ev: React.MouseEvent) => {\n if (\n getSpecificParent(ev.target as HTMLElement, (current) => {\n return current.tagName === 'BUTTON';\n })\n )\n onConfirmCancel?.(ev);\n },\n [onConfirmCancel],\n )}\n >\n {additionalButtons}\n </Box>\n\n <Box className=\"confirm__defaultButtons\">\n <Box\n className=\"confirm__customButtonsOnRight\"\n onClick={React.useCallback(\n (ev: React.MouseEvent) => {\n if (\n getSpecificParent(ev.target as HTMLElement, (current) => {\n return current.tagName === 'BUTTON';\n })\n )\n onConfirmCancel?.(ev);\n },\n [onConfirmCancel],\n )}\n >\n {additionalButtonsOnRight}\n </Box>\n {!hideConfirmButton && (\n <SimpleButton\n onClick={onConfirmOk}\n title={confirmText}\n variant={confirmType}\n disabled={isLoading ?? disabled}\n isLoading={isLoading}\n className=\"confirm__confirmButton\"\n type=\"submit\"\n >\n {confirmText}\n </SimpleButton>\n )}\n {onConfirmCancel && !hideCancelButton && (\n <SimpleButton\n onClick={onConfirmCancel}\n title={cancelText}\n {...getVariant('secondary')}\n disabled={isLoading}\n className=\"confirm__cancelButton\"\n >\n {cancelText}\n </SimpleButton>\n )}\n </Box>\n </DialogButtonBar>\n </Box>\n );\n};\n","\n\nimport { getColor } from '@theme-ui/color';\nimport { BarLoader } from 'react-spinners';\nimport { Box, useThemeUI } from 'theme-ui';\n\nconst LinearLoader = () => {\n const theme = useThemeUI();\n return (\n <Box\n sx={{\n '*': { height: '6.5px !important' },\n }}\n >\n <Box\n sx={{\n zIndex: 'tooltip',\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n }}\n className=\"linearLoader\"\n >\n <BarLoader\n width=\"100%\"\n color={getColor(theme.theme, 'palette.primary.main') as string}\n />\n </Box>\n </Box>\n );\n};\n\nexport default LinearLoader;\n","import React, { useState } from 'react';\nimport { Box, Spinner } from 'theme-ui';\nimport { screenLocker } from '@apia/util';\nimport LinearLoader from '../loaders/LinearLoader';\nimport { Overlay } from './Overlay';\n\n/**\n * Implementación de la clase screenLocker que maneja tres tipos de bloqueo:\n * common, linear, y white. El caso del forced lo trata como common.\n */\nexport const ScreenLock = () => {\n const ref = React.useRef<SVGSVGElement>(null);\n const [hasReleasedFirstTime, setHasReleasedFirstTime] = useState(false);\n const [locks, setLocks] = useState({\n common: false,\n forced: false,\n linear: false,\n white: false,\n });\n\n React.useEffect(() => {\n const suscriptions = [\n screenLocker.on('lockStateChange', (ev) => {\n setLocks((current) => ({ ...current, [ev.lockName]: ev.isLocked }));\n setHasReleasedFirstTime(ev.hasReleasedFirstTime);\n }),\n screenLocker.on('forcedStateChange', (ev) => {\n setLocks((current) => ({ ...current, forced: ev.isForced }));\n setHasReleasedFirstTime(ev.hasReleasedFirstTime);\n }),\n ];\n\n return () => suscriptions.forEach((current) => current());\n }, []);\n\n const overlaySx = React.useMemo(() => {\n return {\n backgroundColor: 'transparent',\n '&:not(body.editionForm *)': {\n // eslint-disable-next-line no-nested-ternary\n backgroundColor: locks.linear\n ? 'transparent'\n : hasReleasedFirstTime\n ? 'palette.background.overlay'\n : 'palette.background.default',\n },\n };\n }, [locks.linear, hasReleasedFirstTime]);\n\n if (!locks.linear && !locks.common && !locks.white && !locks.forced)\n return null;\n\n return (\n <Box>\n <Overlay\n isOpen\n onExited={() => {}}\n onOverlayClicked={() => {}}\n sx={overlaySx}\n className={`${hasReleasedFirstTime ? '' : 'not-released'} screenLock`}\n transitionDuration={hasReleasedFirstTime ? undefined : 0}\n >\n {locks.linear ? (\n <LinearLoader />\n ) : (\n <Spinner ref={ref} sx={{ '*': { color: 'primary' } }} />\n )}\n <Box tabIndex={0} title={window.WAIT_A_SECOND} />\n </Overlay>\n </Box>\n );\n};\n","import { customEvents } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from 'theme-ui';\n\nexport interface IFieldErrorMessage {\n children: React.ReactNode | string;\n name?: string;\n}\n\nexport const FieldErrorMessage = ({ children, name }: IFieldErrorMessage) => {\n const [ref, setRef] = React.useState<null | HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (children) {\n const event = new CustomEvent(customEvents.focus, { bubbles: true });\n ref?.dispatchEvent(event);\n }\n }, [children, ref]);\n\n if (children) {\n return (\n <Box\n ref={setRef}\n role=\"alert\"\n data-testid={name ? `err_${name}` : null}\n sx={{\n mb: '0',\n color: 'danger',\n pt: '2',\n }}\n >\n {children}\n </Box>\n );\n }\n return null;\n};\n","import { getVariant } from '@apia/theme';\nimport { isChild, useCombinedRefs } from '@apia/util';\nimport React from 'react';\nimport ReactInputMask from 'react-input-mask';\nimport { Box, InputProps } from 'theme-ui';\nimport { TIconName, TIconType } from '@apia/icons';\nimport { IconButton } from './buttons';\n\nexport interface IField {\n className?: string;\n disabled?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n}\n\nexport interface IIconInput extends IField {\n additionalButtons?: React.ReactNode;\n buttonProps?: Partial<React.ComponentProps<typeof IconButton>>;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n hideButton?: boolean;\n icon?: TIconType | TIconName;\n inputProps?: Partial<InputProps>;\n inputRef?: React.RefObject<HTMLInputElement>;\n mask?: string;\n onClick?: (ev: React.MouseEvent) => void;\n onBlur?: React.FocusEventHandler;\n [key: string]: unknown;\n}\n\nexport const IconInput = ({\n additionalButtons,\n buttonProps,\n buttonRef,\n className,\n disabled,\n hideButton,\n icon = 'Search',\n inputProps,\n inputRef,\n isLoading,\n mask,\n onClick,\n onBlur,\n readOnly,\n ...rest\n}: IIconInput) => {\n const { sx: inputSx, ...actualInputProps } = inputProps ?? {};\n const innerButtonRef = React.useRef<HTMLButtonElement>(null);\n const assignButtonRef = useCombinedRefs(buttonRef, innerButtonRef);\n\n const innerInputRef = React.useRef<HTMLInputElement>(null);\n const assignInputRef = useCombinedRefs(inputRef, innerInputRef);\n\n const [parentRef, setParentRef] = React.useState<HTMLElement | null>(null);\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n onBlur &&\n (!ev.relatedTarget ||\n (ev.relatedTarget &&\n !isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === parentRef,\n )))\n )\n onBlur(ev);\n },\n [onBlur, parentRef],\n );\n\n return (\n <Box\n {...getVariant('forms.iconInput')}\n className={`${className ?? ''} iconInput`}\n ref={setParentRef}\n >\n <ReactInputMask\n mask={mask ?? ''}\n onBlur={handleBlur}\n disabled={isLoading ?? disabled}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\n ref={assignInputRef as any}\n readOnly={readOnly}\n sx={{ variant: 'forms.input', ...inputSx }}\n data-variant=\"forms.input\"\n {...rest}\n {...actualInputProps}\n maxLength={mask ? undefined : inputProps?.maxLength}\n />\n {additionalButtons}\n {!hideButton && (\n <IconButton\n onBlur={handleBlur}\n onClick={onClick}\n icon={icon}\n disabled={readOnly ?? disabled}\n isLoading={isLoading}\n ref={assignButtonRef as React.Ref<HTMLButtonElement>}\n {...buttonProps}\n />\n )}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from 'theme-ui';\n\nexport const getFieldErrorStyles = (isValid: boolean): ThemeUICSSObject => {\n return {\n borderLeftStyle: !isValid ? 'solid' : null,\n borderLeftWidth: !isValid ? '4px' : null,\n borderLeftColor: !isValid ? 'danger' : undefined,\n };\n};\n\nexport const getFieldTouchedStyles = (isTouched: boolean): ThemeUICSSObject => {\n return {\n borderStyle: isTouched ? 'solid' : null,\n borderWidth: isTouched ? '1px' : null,\n borderColor: isTouched ? 'orange' : undefined,\n };\n};\n","import { getVariant } from '@apia/theme';\nimport {\n getDateFormat,\n isChild,\n TDateFormat,\n TModify,\n useUpdateEffect,\n} from '@apia/util';\nimport dayjs from 'dayjs';\nimport { uniqueId } from 'lodash';\nimport React from 'react';\nimport { Box, Close, InputProps } from 'theme-ui';\nimport { icons } from '@apia/icons';\nimport globalFocus from '../../globalFocus';\nimport { useModal } from '../modals';\nimport { CalendarModal } from '../modals/CalendarModal';\nimport { FieldErrorMessage } from './FieldErrorMessage';\nimport { IconInput, IIconInput } from './IconInput';\nimport { getFieldErrorStyles } from './util/style';\n\nconst DEFAULT_LOCALE = window.LANG_CODE;\nconst DEFAULT_MASK_PLACEHOLDER = '_';\n\nconst dateFormat: TDateFormat = getDateFormat();\n\nconst getMaskForDateFormat = (): string => {\n if (dateFormat === 'YYYY/MM/DD') return '9999/99/99';\n return '99/99/9999';\n};\n\nexport type TDateProps = TModify<\n InputProps,\n {\n allowPickBeforeToday?: boolean;\n error?: string | null;\n /**\n * Con esta propiedad se puede proveer una función que será utilizada para\n * determinar qué máscara debe utilizar el input\n */\n getCustomMask?: () => string;\n isLoading?: boolean;\n /**\n * Recibe la nueva fecha. En caso de devolver\n * false desde este método, el nuevo valor no\n * se persistirá.\n */\n onChange?: (newValue: string) => boolean | string | void;\n /**\n * Es llamado cada vez que alguien presiona el botón de eliminar fecha.\n */\n onDelete?: () => void;\n onError?: (error: string | null) => unknown;\n /**\n * Con esta propiedad se puede proveer una función que recibirá como\n * parámetro el valor actual del cmapo y debe devolver el valor a mostrar.\n */\n renderLabel?: (value: string) => string;\n value?: string;\n }\n> &\n Pick<IIconInput, 'buttonProps'>;\n\nexport const DateInput = React.forwardRef<HTMLInputElement, TDateProps>(\n (\n {\n allowPickBeforeToday,\n buttonProps: outerButtonProps,\n className,\n error,\n getCustomMask,\n isLoading,\n onBlur,\n onChange,\n onDelete,\n onError,\n renderLabel,\n value: outerValue,\n ...props\n },\n ref,\n ) => {\n const id = React.useMemo(uniqueId, []);\n const [inputValue, setInputValue] = React.useState(outerValue ?? '');\n const [calValue, setCalValue] = React.useState<Date>();\n const boxRef = React.useRef<HTMLElement | null>(null);\n const { show, hide, ...modalProps } = useModal({\n preFetcher() {\n globalFocus.focus = () =>\n boxRef.current?.querySelector('.iconButton') as HTMLElement;\n return new Promise((resolve) => {\n let currentSelectedDate = dayjs(inputValue, dateFormat);\n if (!currentSelectedDate.isValid())\n currentSelectedDate = dayjs(new Date());\n setCalValue(currentSelectedDate.toDate());\n resolve();\n });\n },\n });\n const [stateError, setError] = React.useState<null | string>(error ?? null);\n\n const lastEmittedValue = React.useRef(outerValue ?? '');\n useUpdateEffect(() => {\n setInputValue(outerValue ?? '');\n lastEmittedValue.current = outerValue as string;\n }, [outerValue]);\n\n useUpdateEffect(() => {\n setError(error ?? null);\n }, [error]);\n\n useUpdateEffect(() => {\n if (onError) onError(stateError);\n }, [stateError]);\n\n const shoutOnChange = React.useCallback(\n (newValue: string) => {\n if (newValue !== lastEmittedValue.current && onChange) {\n lastEmittedValue.current = newValue;\n return onChange(newValue);\n }\n return true;\n },\n [onChange],\n );\n\n const setCalendarValue = React.useCallback(\n (value: string, nocheck?: boolean) => {\n if (value === '') {\n void shoutOnChange('');\n setInputValue('');\n return;\n }\n let newDate: dayjs.Dayjs;\n if (value !== '') {\n // format cal needs: Tue Feb 09 2021 00:00:00 GMT-0300\n newDate = dayjs(value, dateFormat);\n if (!newDate.isValid()) newDate = dayjs(new Date());\n } else {\n newDate = dayjs(new Date());\n }\n const formattedDate = newDate.format(dateFormat);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (formattedDate !== inputValue && nocheck !== true) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_INVALID_DATE);\n } else if (allowPickBeforeToday === false && newDate.isBefore(today)) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_FEC_FIN_MAY_FEC_INI);\n } else {\n const shoutResult = shoutOnChange(value === '' ? '' : formattedDate);\n if (shoutResult === false) {\n setInputValue(shoutResult || '');\n setError(null);\n } else if (typeof shoutResult === 'string') {\n setInputValue('');\n setError(shoutResult);\n } else {\n setInputValue(formattedDate);\n setError(null);\n }\n }\n },\n [allowPickBeforeToday, inputValue, shoutOnChange],\n );\n\n const selectDate = React.useCallback(\n (val: Date): void => {\n hide();\n const newValue = dayjs(val).format(dateFormat);\n setCalendarValue(newValue, true);\n },\n [hide, setCalendarValue],\n );\n\n const onCloseCalendarModal = React.useCallback(() => {\n hide();\n }, [hide]);\n\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n if (\n onBlur &&\n !isChild(ev.relatedTarget as HTMLElement, (current) => {\n return (\n current.id === `DateModal${id}` || current.id === `DateInput${id}`\n );\n })\n ) {\n onBlur(ev);\n }\n },\n [id, onBlur],\n );\n\n const inputProps = React.useMemo(\n () => ({\n ...props,\n className: 'dateInput',\n value: renderLabel ? renderLabel(inputValue) : inputValue,\n ref,\n onChange: (ev: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(ev.target.value);\n if (\n getMaskForDateFormat().replaceAll('9', DEFAULT_MASK_PLACEHOLDER) !==\n ev.target.value &&\n ev.target.value !== ''\n )\n setError(null);\n },\n onBlur: (ev: React.FocusEvent<HTMLInputElement>) => {\n if (!(props.readOnly || getCustomMask))\n setCalendarValue(ev.target.value);\n handleBlur(ev);\n },\n onKeyDown: (ev: React.KeyboardEvent) => {\n if (ev.key === 'Enter') setCalendarValue(inputValue);\n },\n }),\n [\n getCustomMask,\n handleBlur,\n inputValue,\n props,\n ref,\n renderLabel,\n setCalendarValue,\n ],\n );\n\n const buttonProps = React.useMemo(\n () => ({\n disabled: props.disabled ?? props.readOnly,\n 'aria-label': window.LBL_PICK_DATE,\n ...outerButtonProps,\n }),\n [outerButtonProps, props.disabled, props.readOnly],\n );\n\n const additionalButtons = React.useMemo(\n () => (\n <Close\n className=\"delete_date_button\"\n onClick={() => {\n setCalendarValue('');\n onDelete?.();\n (\n document.querySelector(\n `#DateInput${id} input`,\n ) as HTMLInputElement\n )?.focus();\n }}\n type=\"button\"\n />\n ),\n [id, onDelete, setCalendarValue],\n );\n\n return (\n <>\n <CalendarModal\n {...modalProps}\n calValue={calValue}\n locale={DEFAULT_LOCALE}\n handleClickDay={selectDate}\n onCancel={onCloseCalendarModal}\n id={`DateModal${id}`}\n />\n <Box\n {...getVariant('forms.dateInput')}\n className={`${className ?? ''} dateInput`}\n id={`DateInput${id}`}\n ref={boxRef}\n >\n <IconInput\n additionalButtons={\n inputValue &&\n inputValue !==\n getMaskForDateFormat().replaceAll(\n '9',\n DEFAULT_MASK_PLACEHOLDER,\n ) &&\n !props.readOnly &&\n !props.disabled\n ? additionalButtons\n : undefined\n }\n isLoading={isLoading}\n maskPlaceholder={DEFAULT_MASK_PLACEHOLDER}\n mask={getCustomMask ? getCustomMask() : getMaskForDateFormat()}\n icon={icons.Calendar}\n onBlur={handleBlur}\n buttonProps={buttonProps}\n inputProps={inputProps}\n readOnly={props.readOnly}\n sx={getFieldErrorStyles(stateError === null)}\n onClick={show}\n />\n {stateError && <FieldErrorMessage>{stateError}</FieldErrorMessage>}\n </Box>\n </>\n );\n },\n);\n\nDateInput.displayName = 'DateInput';\n","/**\n * El NumberInput respeta los parámetros de ambiente:\n * - AMOUNT_DECIMAL_SEPARATOR\n * - AMOUNT_DECIMAL_ZEROS\n * - CHAR_DECIMAL_SEPARATOR\n * - CHAR_THOUS_SEPARATOR\n * - ADD_THOUSAND_SEPARATOR\n */\n\nimport React from 'react';\nimport { Input, InputProps } from 'theme-ui';\n\nexport type TNumberInputChangeEvent = { error: boolean; value: string };\n\nexport type TNumberInput = Omit<\n InputProps,\n 'type' | 'onChange' | 'onBlur' | 'value' | 'defaultValue'\n> & {\n onChange?: (ev: TNumberInputChangeEvent) => unknown;\n value?: string;\n defaultValue?: string;\n avoidDecimalRestriction?: boolean;\n};\n\nfunction fillZeros(amount: number) {\n return Array(Math.max(0, amount)).fill(0).join('');\n}\n\nfunction fillThousandsZeros(value: number) {\n const stringValue = String(value);\n return `${fillZeros(3 - stringValue.length)}${String(value)}`;\n}\n\nconst decimalCount = Number(window.AMOUNT_DECIMAL_SEPARATOR);\nconst decimalZeros = Number(window.AMOUNT_DECIMAL_ZEROS);\nconst decimalSeparator = window.CHAR_DECIMAL_SEPARATOR;\nconst thousandsSeparator = window.CHAR_THOUS_SEPARATOR;\nconst regexpThousandsSeparator =\n thousandsSeparator === '.' ? '\\\\.' : thousandsSeparator;\nconst regexpDecimalSeparator =\n decimalSeparator === '.' ? '\\\\.' : decimalSeparator;\nconst shouldRound = false;\n\nexport function parseNumberInputValueToNumber(value: string): number {\n return Number.parseFloat(\n value.replaceAll(thousandsSeparator, '').replaceAll(decimalSeparator, '.'),\n );\n}\n\nexport function parseNumberValueToNumberInput(value: string | number): string {\n const stringNumber = String(value);\n const result = stringNumber.match(/(-?)(\\d+)(?:\\.(\\d+))/);\n if (!result) return '';\n\n const isNegative = !!result[1];\n const integer = result[2];\n const decimals = result[3] as string | null;\n const decimalsString = decimals ? `${regexpDecimalSeparator}${decimals}` : '';\n\n return (\n formatValueToShow(`${isNegative ? '-' : ''}${integer}${decimalsString}`) ??\n ''\n );\n}\n\nfunction formatValueToShow(\n value: string,\n avoidDecimalRestriction = false,\n): string | null {\n const result = value.match(\n new RegExp(\n `^(-)?((?:(?:\\\\d{1,3})${regexpThousandsSeparator}(?:\\\\d{3}${regexpThousandsSeparator})*(?:\\\\d{3}))?|(?:\\\\d*))(?:(?:${regexpDecimalSeparator})(\\\\d+))?$`,\n ),\n );\n if (!result) return null;\n\n const isNegative = !!result[1];\n let module = Number(result[2].replaceAll(thousandsSeparator, ''));\n const slicedDecimals = avoidDecimalRestriction\n ? result[3]\n : result[3]?.slice(0, decimalCount + 1) ?? '';\n let decimalsString: string;\n if (!avoidDecimalRestriction) {\n const noZeroDecimals =\n (slicedDecimals\n ? `${String(\n Math.round(\n Number(\n `${slicedDecimals}${fillZeros(\n (shouldRound ? decimalCount + 1 : decimalCount) -\n slicedDecimals.length,\n )}`,\n ) / (shouldRound ? 10 : 1),\n ),\n )}`\n : ''\n )\n .slice(0, decimalCount)\n .match(/(\\d*[1-9])0*/)?.[1] ?? '';\n decimalsString = `${noZeroDecimals}${fillZeros(\n decimalZeros - noZeroDecimals.length,\n )}`;\n } else {\n decimalsString = slicedDecimals;\n }\n\n const finalNumberString: string[] = [];\n while (module >= 1000) {\n module /= 1000;\n const truncedInteger = Math.trunc(module);\n finalNumberString.unshift(\n fillThousandsZeros(Math.round((module - truncedInteger) * 1000)),\n );\n module = truncedInteger;\n }\n finalNumberString.unshift(String(module));\n\n return `${isNegative ? '-' : ''}${finalNumberString.join(\n window.ADD_THOUSAND_SEPARATOR ? window.CHAR_THOUS_SEPARATOR : '',\n )}${decimalsString.length > 0 ? `${decimalSeparator}${decimalsString}` : ''}`;\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, TNumberInput>(\n ({ value, avoidDecimalRestriction, ...props }, ref) => {\n const [actualValue, setActualValue] = React.useState<string>('');\n const [showValue, setShowValue] = React.useState<string>('');\n const lastEmittedValue = React.useRef<string>('');\n\n const setValue = React.useCallback(\n (newValue: string) => {\n if (newValue === '') {\n if (newValue === lastEmittedValue.current) return;\n setActualValue('');\n setShowValue('');\n props.onChange?.({ value: '', error: false });\n } else {\n const parsedValue = formatValueToShow(\n newValue,\n avoidDecimalRestriction,\n );\n if (parsedValue === null) {\n setActualValue('');\n setShowValue('');\n props.onChange?.({ value: '', error: true });\n } else {\n if (newValue === lastEmittedValue.current) return;\n setActualValue(newValue);\n setShowValue(parsedValue);\n props.onChange?.({ value: parsedValue, error: false });\n }\n }\n lastEmittedValue.current = newValue;\n },\n [avoidDecimalRestriction, props],\n );\n\n React.useEffect(() => {\n if (value !== actualValue) setValue((value as string) ?? '');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <Input\n {...props}\n onFocus={React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n props.onFocus?.(ev);\n setShowValue(\n String(actualValue).replaceAll(thousandsSeparator, ''),\n );\n },\n [actualValue, props],\n )}\n onBlur={React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n setValue(ev.target.value);\n },\n [setValue],\n )}\n onChange={React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>) => {\n setShowValue(ev.target.value);\n },\n [],\n )}\n type=\"text\"\n ref={ref}\n value={showValue}\n />\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n","import { getLabel } from '@apia/util';\n\nexport interface IRequiredMark {\n isFormReadonly?: boolean;\n isRequired?: boolean;\n isReadonly?: boolean;\n}\n\n/**\n * Muestra el * en los campos de requerido.\n */\nexport const RequiredMark = ({\n isFormReadonly = false,\n isRequired = false,\n isReadonly = false,\n}: IRequiredMark) => {\n return isRequired && !isReadonly && !isFormReadonly ? (\n <abbr className=\"required\" title={getLabel('MSG_REQ_FIELD').text}>\n *\n </abbr>\n ) : null;\n};\n","import { useUpdateEffect } from 'ahooks';\nimport * as React from 'react';\nimport { IApiaFilter } from './ApiaFilter';\nimport { DateInput, getFieldErrorStyles } from '../forms';\n\nconst NoMemoApiaDateFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<string>(String(filter.currentValue));\n const [lastDispatchedValue, setLastDispatchedValue] = React.useState<string>(\n String(filter.currentValue),\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n useUpdateEffect(() => {\n setValue(filter.currentValue as string);\n }, [filter.currentValue]);\n\n return (\n <DateInput\n value={value}\n sx={getFieldErrorStyles(!filter.error)}\n aria-label={filter.toolTip}\n ref={ref as React.Ref<HTMLInputElement>}\n placeholder={filter.placeholder}\n onChange={(ev) => {\n if (onChange) {\n const result = onChange(String(ev));\n if (result === true) {\n setValue(ev);\n return true;\n }\n return result as string | false | void;\n }\n return false;\n }}\n onClick={handleClick}\n onBlur={() => {\n if (value !== lastDispatchedValue && onBlur) {\n setLastDispatchedValue(value);\n setValue(value);\n onBlur(value);\n }\n }}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter' && onPressEnter) {\n setLastDispatchedValue(value);\n onPressEnter(value);\n }\n }}\n />\n );\n};\n\nexport const ApiaDateFilter = React.forwardRef(NoMemoApiaDateFilter);\n","import { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ForwardedRef } from 'react';\nimport * as React from 'react';\nimport { Input, Select } from 'theme-ui';\nimport { getVariant } from '@apia/theme';\nimport {\n TNumberInputChangeEvent,\n NumberInput,\n getFieldErrorStyles,\n} from '../forms';\nimport { ApiaDateFilter } from './ApiaDateFilter';\n\nexport interface IApiaFilter {\n filter: TApiaFilter;\n onBlur?: (ev: TApiaFilterValue) => void;\n onChange?: (\n ev: TApiaFilterValue,\n ) => void | boolean | string | Promise<boolean | string>;\n onPressEnter?: (ev: TApiaFilterValue) => void;\n}\n\nconst NoMemoApiaFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<TApiaFilterValue>(\n filter.currentValue ?? '',\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n const [lastEmittedValue, setLastEmittedValue] =\n React.useState<TApiaFilterValue>(filter.currentValue);\n\n const filterCurrentValue = filter?.currentValue;\n React.useEffect(() => {\n if (filterCurrentValue === '') {\n setValue(String(filterCurrentValue));\n setLastEmittedValue(String(filterCurrentValue));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter?.deleteFiltersTimestamp]);\n\n if (filter) {\n const handleChange = (\n ev: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n ) => {\n if (\n (onChange && onChange(String(ev.target.value)) !== false) ||\n !onChange\n )\n setValue(String(ev.target.value));\n };\n const handleNumberChange = (ev: TNumberInputChangeEvent) => {\n if ((onChange && onChange(String(ev.value)) !== false) || !onChange)\n setValue(String(ev.value));\n };\n const handleBlur = (\n ev:\n | React.ChangeEvent<HTMLInputElement | HTMLSelectElement>\n | React.KeyboardEvent,\n ) => {\n if (onBlur && lastEmittedValue !== value) {\n setLastEmittedValue(value);\n onBlur((ev.target as HTMLInputElement).value);\n }\n };\n\n const sortedOptions = filter.sortCombo\n ? [...(filter.options ?? [])].sort((a, b) => (a.label > b.label ? 1 : -1))\n : filter.options;\n const options = sortedOptions?.map((option) => {\n return (\n <option value={option.value} key={option.value ?? option.label ?? ' '}>\n {option.label}\n </option>\n );\n });\n\n if (filter.type === 'date' || filter.type === 'D')\n return (\n <ApiaDateFilter\n filter={filter}\n onChange={onChange}\n onBlur={onBlur}\n onPressEnter={onPressEnter}\n ref={ref}\n />\n );\n\n if (filter.type === 'apiaNumber') {\n return (\n <NumberInput\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value as string}\n placeholder={filter.placeholder}\n onChange={handleNumberChange}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n\n return filter.options ? (\n <Select\n aria-readonly={filter.readonly}\n disabled={filter.readonly}\n onChange={handleChange}\n onBlur={handleBlur}\n value={value}\n className={`\"filter\" ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLSelectElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n onClick={handleClick}\n placeholder={filter.placeholder}\n sx={getFieldErrorStyles(!filter.error)}\n name={filter.id as string}\n >\n {options}\n </Select>\n ) : (\n <Input\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value}\n type={(filter.type === 'N' ? 'number' : filter.type) ?? 'text'}\n placeholder={filter.placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n return null;\n};\n\nexport const ApiaFilter = React.memo(React.forwardRef(NoMemoApiaFilter));\n","import { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {};\n","import React from 'react';\nimport { Box, Button } from 'theme-ui';\nimport { isFunction, uniqueId } from 'lodash-es';\nimport {\n customEvents,\n persistentStorage,\n enableChildrenFocus,\n disableChildrenFocus as disableChildrenFocusMethod,\n useUpdateEffect,\n} from '@apia/util';\nimport { getVariant, injectStyles } from '@apia/theme';\nimport AnimateHeight from 'react-animate-height';\nimport { styles } from './styles';\nimport { ICollapsiblePanel } from './types';\nimport { Icon } from '@apia/icons';\n\ninjectStyles('layout.common.components.collapsiblePanel', styles);\n\nexport const CollapsiblePanel = React.forwardRef<\n HTMLDivElement,\n ICollapsiblePanel\n>(\n (\n {\n children,\n className,\n closedIcon = 'ArrowDown',\n collapsed,\n defaultCollapsed,\n disableChildrenFocus,\n iconSize = 'iconXs',\n id,\n onClose,\n onOpen,\n openIcon = 'ArrowRight',\n label,\n titleButtons,\n minHeight = 0,\n },\n outerRef,\n ) => {\n const prefix = React.useMemo(() => uniqueId(), []);\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n defaultCollapsed ??\n collapsed ??\n (persistentStorage[`collapsiblePanel${actualId}`] as boolean),\n );\n\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n\n const callOnOpen = React.useCallback(\n (updateState: unknown, ev?: React.MouseEvent) => {\n const onOpenResult = onOpen ? onOpen(ev) : null;\n if (onOpenResult) {\n void onOpenResult.then((result) => {\n if (result) if (updateState) setIsCollapsed((current) => !current);\n });\n } else if (updateState) setIsCollapsed((current) => !current);\n },\n [onOpen],\n );\n\n useUpdateEffect(() => {\n if (collapsed !== undefined) setIsCollapsed(collapsed);\n if (collapsed === false) callOnOpen(false);\n }, [collapsed]);\n\n useUpdateEffect(() => {\n if (isCollapsed) {\n if (onClose) onClose();\n persistentStorage[`collapsiblePanel${actualId}`] = true;\n if (ref && disableChildrenFocus)\n disableChildrenFocusMethod(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n } else {\n persistentStorage[`collapsiblePanel${actualId}`] = false;\n if (ref && disableChildrenFocus)\n enableChildrenFocus(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n }\n }, [isCollapsed]);\n\n React.useEffect(() => {\n const handleCustomFocus = () => setIsCollapsed(false);\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.addEventListener(customEvents.focus, handleCustomFocus);\n return () => {\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.removeEventListener(customEvents.focus, handleCustomFocus);\n };\n }, [id, isCollapsed, onClose, onOpen, ref]);\n\n return (\n <Box\n className={`collapsiblePanel ${className ?? ''}`}\n {...getVariant('layout.common.components.collapsiblePanel')}\n ref={(el: HTMLDivElement) => {\n if (isFunction(outerRef)) outerRef(el);\n setRef(el);\n }}\n >\n <Box className=\"collapsiblePanel__label\">\n <Button\n {...getVariant('inherit')}\n aria-expanded={!isCollapsed}\n onClick={(ev) => callOnOpen(true, ev)}\n type=\"button\"\n className=\"collapsiblePanel__label__button\"\n onKeyDown={console.log}\n >\n {isCollapsed ? (\n <Icon title=\"\" icon={openIcon} size={iconSize} />\n ) : (\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\n )}\n {label}\n </Button>\n {titleButtons}\n </Box>\n <AnimateHeight\n id={actualId}\n duration={150}\n height={isCollapsed ? minHeight : 'auto'}\n sx={{ '&>div': { display: 'block ' } }}\n aria-hidden={isCollapsed}\n className=\"collapsiblePanel__content\"\n >\n {children}\n </AnimateHeight>\n </Box>\n );\n },\n);\n\nCollapsiblePanel.displayName = 'CollapsiblePanel';\n","import { findScrollContainer } from '@apia/util';\r\nimport { TDistinctors } from '@apia/dom-store';\r\n\r\nexport type TRowDistinctions = {\r\n rowIndex: number;\r\n};\r\n\r\nexport type TListboxState = {\r\n /**\r\n * El múltipleSearch está de acuerdo a la especificación de wai-aria. Está\r\n * habilitado por defecto e implica que si el usuario presiona una \"rápida\r\n * sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la cadena\r\n * introducida.\r\n */\r\n allowMultipleCharacterSearch?: boolean;\r\n allowSelection: boolean;\r\n /**\r\n * El singleCharacterSearch está de acuerdo a la especificación de wai-aria.\r\n * Está habilitado por defecto e implica que si el usuario presiona una\r\n * \"lenta sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la letra\r\n * introducida.\r\n */\r\n allowSingleCharacterSearch?: boolean;\r\n focusedRow: number;\r\n hiddenRows: number[];\r\n id: string;\r\n isEverythingSelected: boolean;\r\n isMultipleSelection: boolean;\r\n lastSelectedRow: number;\r\n rowsCount: number;\r\n /**\r\n * La función de búsqueda debe tomar el label de un campo y el texto\r\n * introducido en el campo de búsqueda y determinar si el mismo debe ser\r\n * mostrado o no. Por defecto, se usa una función de matcheo estricto.\r\n */\r\n searchFunction: (label: string, searchString: string) => boolean;\r\n selectedRows: number[];\r\n shownRows: number[];\r\n showSearchbox: boolean;\r\n /**\r\n * Este método permite determinar si un elemento comienza con una cadena de\r\n * texto en particular. Por defecto se usa String.startsWith, sin embargo se\r\n * permite el pasaje de este método para situaciones particulares, ejemplo\r\n * si se deseara incluir elementos sin tomar en cuenta los espacios.\r\n */\r\n startsWithFunction: (label: string, searchString: string) => boolean;\r\n typing: string | null;\r\n};\r\n\r\nexport function makeRowKey(rowIndex: TRowDistinctions | number) {\r\n return `row_${typeof rowIndex === 'number' ? rowIndex : rowIndex.rowIndex}`;\r\n}\r\n\r\nlet uniqueidIndex = 0;\r\nexport function uniqueId(prefix?: string) {\r\n return `${prefix ?? ''}${uniqueidIndex++}`;\r\n}\r\n\r\nfunction getDistinctors(storeId: string): TDistinctors<TListboxState> {\r\n return {\r\n listbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n etc: {\r\n 'aria-activedescendant': `${storeId}__row__${state.focusedRow}`,\r\n },\r\n };\r\n },\r\n ],\r\n row: [\r\n (distinctions: TRowDistinctions, state) => {\r\n return {\r\n classList: {\r\n add: [\r\n 'listbox__row',\r\n state.focusedRow === distinctions.rowIndex ? 'focused' : '',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? 'selected'\r\n : '',\r\n ],\r\n remove: [\r\n state.focusedRow === distinctions.rowIndex ? '' : 'focused',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? ''\r\n : 'selected',\r\n ],\r\n },\r\n dataset: {\r\n add: {\r\n focused: state.focusedRow === distinctions.rowIndex,\r\n },\r\n },\r\n etc: {\r\n ...(state.allowSelection\r\n ? {\r\n 'aria-selected': state.selectedRows.includes(\r\n distinctions.rowIndex,\r\n ),\r\n }\r\n : null),\r\n id: `${storeId}__row__${distinctions.rowIndex}`,\r\n },\r\n };\r\n },\r\n (prevState: TListboxState, nextState: TListboxState) => {\r\n const element = document.querySelector<HTMLElement>(\r\n `#${storeId} .listbox__row[data-focused=\"true\"]`,\r\n );\r\n\r\n if (element) {\r\n element.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n\r\n if (prevState.focusedRow > nextState.focusedRow) {\r\n const scrollContainer = findScrollContainer(element);\r\n\r\n if (scrollContainer && scrollContainer !== document.body) {\r\n scrollContainer.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n const elRect = element.getBoundingClientRect();\r\n const contRect = scrollContainer.getBoundingClientRect();\r\n\r\n if (elRect.top - contRect.top < elRect.height)\r\n scrollContainer.scrollTop -= elRect.height;\r\n }\r\n }\r\n }\r\n },\r\n ],\r\n searchbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n classList: { add: ['listbox__searchbox'] },\r\n etc: {\r\n 'aria-activedescendant': `${storeId}__row__${state.focusedRow}`,\r\n },\r\n };\r\n },\r\n ],\r\n };\r\n}\r\nconst defaultState: Omit<\r\n TListboxState,\r\n 'id' | 'showSearchbox' | 'shownRows' | 'searchFunction' | 'startsWithFunction'\r\n> = {\r\n allowSelection: true,\r\n focusedRow: 0,\r\n hiddenRows: [],\r\n isEverythingSelected: false,\r\n isMultipleSelection: false,\r\n lastSelectedRow: -1,\r\n rowsCount: 0,\r\n selectedRows: [],\r\n typing: null,\r\n};\r\n\r\nconst keysMakers = {\r\n row: makeRowKey,\r\n listbox: () => 'listbox',\r\n searchbox: () => 'searchbox',\r\n};\r\n\r\nfunction getInitialState(\r\n initialState: Partial<TListboxState> &\r\n Pick<TListboxState, 'id' | 'showSearchbox'>,\r\n): TListboxState {\r\n return {\r\n ...defaultState,\r\n ...initialState,\r\n\r\n searchFunction:\r\n initialState.searchFunction ??\r\n ((label, searchString) => !!label.match(new RegExp(searchString))),\r\n\r\n startsWithFunction:\r\n initialState.startsWithFunction ??\r\n ((label, searchString) => {\r\n return label.startsWith(searchString);\r\n }),\r\n\r\n shownRows: new Array(initialState.rowsCount ?? 0).fill(1).map((_, i) => i),\r\n };\r\n}\r\n\r\nexport { getDistinctors, getInitialState, keysMakers };\r\n","import { KeyboardEvent, MouseEvent, ReactNode, createContext } from 'react';\r\nimport {\r\n TActionsMap,\r\n TUseProperties,\r\n TDistinctorProperties,\r\n} from '@apia/dom-store';\r\nimport { TListboxState, TRowDistinctions } from './common';\r\nimport { operations } from './operations';\r\nimport { TOnConfirmSelection, TOnSelectionChange } from '.';\r\nimport { BoxProps } from 'theme-ui';\r\n\r\nexport type TListbox = {\r\n children: ReactNode | ReactNode[];\r\n className?: string;\r\n /**\r\n * Permite remover los estilos por defecto de la lista a fin de personalizar\r\n * su aspecto\r\n */\r\n unstyled?: boolean;\r\n onClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n onDoubleClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n /**\r\n * Este evento es lanzado cuando el usuario estando en foco en la lista\r\n * presiona:\r\n *\r\n * - Enter si la selección múltiple está deshabilitada\r\n * - ctrl+Enter si la selección múltiple está habilitada\r\n */\r\n onConfirmSelection?: (ev: TOnConfirmSelection) => unknown;\r\n onPressEnterOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onPressKeyOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onSelectionChange?: (ev: TOnSelectionChange) => unknown;\r\n /**\r\n * onKeyDown e id no son permitidas dado que se usan para generar el\r\n * comportamiento correcto del componente\r\n */\r\n ulProps?: Omit<BoxProps, 'id' | 'onKeyDown'>;\r\n} & Partial<\r\n Pick<\r\n TListboxState,\r\n | 'allowMultipleCharacterSearch'\r\n | 'allowSelection'\r\n | 'allowSingleCharacterSearch'\r\n | 'isMultipleSelection'\r\n | 'searchFunction'\r\n | 'startsWithFunction'\r\n | 'showSearchbox'\r\n >\r\n>;\r\n\r\nexport type TListboxContext = {\r\n getState: () => TListboxState;\r\n id: string;\r\n listboxActions: TActionsMap<TListboxState, typeof operations>;\r\n useListbox: TUseProperties<\r\n TListboxState,\r\n {\r\n row: [\r\n (\r\n distinctions: TRowDistinctions,\r\n state: TListboxState,\r\n ) => TDistinctorProperties,\r\n ];\r\n searchbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n listbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n }\r\n >;\r\n variant: string;\r\n} & Pick<\r\n TListbox,\r\n | 'onClickNode'\r\n | 'onConfirmSelection'\r\n | 'onDoubleClickNode'\r\n | 'onPressEnterOnNode'\r\n | 'onPressKeyOnNode'\r\n>;\r\n\r\nconst ListboxContext = createContext<TListboxContext>({} as TListboxContext);\r\n\r\nexport { ListboxContext };\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n FC,\r\n MouseEvent,\r\n ReactNode,\r\n memo,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext } from './ListboxContext';\r\nimport { BoxProps } from 'theme-ui';\r\n\r\nexport type TListboxItem = {\r\n children: ReactNode;\r\n rowIndex?: number;\r\n} & BoxProps & {\r\n /**\r\n * El label se usa en aria-label por motivos de accesibilidad y además en\r\n * la funcionalidad de búsqueda.\r\n */\r\n label: string;\r\n };\r\n\r\nexport const ListboxItem: FC<TListboxItem> = memo(\r\n ({ children, rowIndex: outerRowIndex, label, ...domProps }) => {\r\n const {\r\n getState,\r\n listboxActions,\r\n onDoubleClickNode,\r\n onClickNode,\r\n useListbox,\r\n } = useContext(ListboxContext);\r\n const rowIndex = useMemo(() => outerRowIndex ?? -1, [outerRowIndex]);\r\n const ref = useListbox<HTMLLIElement>('row', { rowIndex });\r\n\r\n return (\r\n <li\r\n {...(domProps as any)}\r\n ref={ref}\r\n role=\"option\"\r\n onDoubleClick={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n ev.preventDefault();\r\n onDoubleClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n },\r\n [onDoubleClickNode],\r\n )}\r\n onMouseDown={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n onClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n if (\r\n (getState().isMultipleSelection && ev.shiftKey) ||\r\n ev.detail > 1\r\n )\r\n ev.preventDefault();\r\n listboxActions.updateFocusByClickEvent({\r\n rowIndex,\r\n isCtrlKey: ev.ctrlKey,\r\n isShiftKey: ev.shiftKey,\r\n });\r\n },\r\n [getState, listboxActions, onClickNode, rowIndex],\r\n )}\r\n aria-label={label}\r\n title={label}\r\n >\r\n {children}\r\n </li>\r\n );\r\n },\r\n);\r\n\r\nListboxItem.displayName = 'ListboxItem';\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Type-ahead is a behavior pattern which helps the user in the lists and trees\n * (and literally says: \"especially those with more than seven options\")\n * navigation. The literal description in Wai-Aria documentation is:\n *\n * - Type a character: focus moves to the next item with a name that starts\n * with the typed character.\n *\n * - Type multiple characters in rapid succession:\n * focus moves to the next item with a name that starts with the string of\n * characters typed.\n *\n * It is a little arbitrary what is rapid succession. As I couln't find any\n * documentation about what rapid succession means, I will make some tests in\n * order to determine what is more comfortable to accomplish one situation or\n * the other.\n *\n * To callibrate this function it is suficient to override the frequency\n * parameter, which after some tests I understand is best at 2.5 (keys per\n * second).\n */\n\nimport { EventEmitter } from '@apia/util';\nimport { KeyboardEvent } from 'react';\n\nclass WaiTypeAhead extends EventEmitter<{\n multipleKeys: string;\n singleKey: string;\n typeUpdate: string;\n}> {\n frequency = 2.5; // Keys per second\n timeout = 0;\n typing = '';\n\n constructor(props?: {\n onMultipleKeys?: (value: string) => unknown;\n onSingleKey?: (value: string) => unknown;\n onTypeUpdate?: (value: string) => unknown;\n }) {\n super();\n\n const { onMultipleKeys, onSingleKey, onTypeUpdate } = props ?? {};\n\n if (onMultipleKeys) this.on('multipleKeys', onMultipleKeys);\n if (onSingleKey) this.on('singleKey', onSingleKey);\n if (onTypeUpdate) this.on('typeUpdate', onTypeUpdate);\n }\n\n #restoreTimeout() {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(\n this.#shout.bind(this),\n 1000 / this.frequency,\n ) as any;\n }\n\n #shout({ clear } = { clear: true }) {\n if (this.typing.length === 1) {\n this.emit('singleKey', this.typing);\n } else if (this.typing.length > 1) {\n this.emit('multipleKeys', this.typing);\n }\n if (clear) {\n this.typing = '';\n }\n }\n\n type(ev: KeyboardEvent) {\n if (ev.key.match(/^[\\p{L}\\d ]$/u)) {\n ev.preventDefault();\n this.typing = this.typing + ev.key;\n this.emit('typeUpdate', this.typing);\n this.#restoreTimeout();\n } else if (ev.code === 'Backspace') {\n ev.preventDefault();\n this.typing = this.typing.slice(0, -1);\n this.emit('typeUpdate', this.typing);\n this.#restoreTimeout();\n }\n }\n}\n\nexport { WaiTypeAhead };\n","import {\r\n FC,\r\n KeyboardEvent,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { Box } from 'theme-ui';\r\nimport { getVariant } from '@apia/theme';\r\nimport { WaiTypeAhead } from '../waiAriaHelpers';\r\n\r\nconst ListboxKeyhandler: FC<\r\n {\r\n children: ReactNode;\r\n className: string;\r\n } & TListbox['ulProps']\r\n> = ({ children, className }) => {\r\n const {\r\n listboxActions,\r\n id,\r\n getState,\r\n onConfirmSelection,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n variant,\r\n } = useContext(ListboxContext);\r\n\r\n const typer = useMemo(\r\n () =>\r\n getState().showSearchbox\r\n ? null\r\n : new WaiTypeAhead({\r\n onMultipleKeys(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n onSingleKey(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n }),\r\n [getState, listboxActions],\r\n );\r\n\r\n const shoutConfirmSelection = useCallback(\r\n (ev: KeyboardEvent) => {\r\n onConfirmSelection?.({\r\n originalEvent: ev,\r\n selectedElements: !getState().allowSelection\r\n ? []\r\n : getState().selectedRows.map(\r\n (current) =>\r\n document.querySelector<HTMLElement>(\r\n `#${id}__row__${current}`,\r\n ) as HTMLElement,\r\n ),\r\n focusedElement: document.querySelector<HTMLElement>(\r\n `#${id}__row__${getState().focusedRow}`,\r\n ) as HTMLElement,\r\n });\r\n },\r\n [getState, id, onConfirmSelection],\r\n );\r\n\r\n return (\r\n <Box\r\n {...getVariant(variant)}\r\n className={className}\r\n id={id}\r\n onKeyDown={useCallback(\r\n (ev: KeyboardEvent) => {\r\n const cell = (ev.target as HTMLElement)\r\n .closest<HTMLElement>('.listbox')\r\n ?.querySelector<HTMLElement>('.listbox__row.focused');\r\n if (!cell)\r\n throw new Error(\r\n 'There is no cell on keydown event, it must be an error.',\r\n );\r\n\r\n const state = getState();\r\n onPressKeyOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n\r\n if (ev.code === 'Enter') {\r\n onPressEnterOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n }\r\n\r\n if (ev.isDefaultPrevented() || ev.isPropagationStopped()) return;\r\n\r\n if (\r\n [\r\n 'ArrowRight',\r\n 'ArrowLeft',\r\n 'ArrowDown',\r\n 'ArrowUp',\r\n 'PageUp',\r\n 'PageDown',\r\n ].includes(ev.code) ||\r\n (['Home', 'End'].includes(ev.code) && ev.ctrlKey) ||\r\n // La selección múltiple cuando no se muestra el searchbox se hace\r\n // con espacio\r\n (['Space'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n !state.showSearchbox) ||\r\n // La selección múltiple siempre puede hacerse con Enter\r\n (['Enter'].includes(ev.code) && state.isMultipleSelection) ||\r\n (['KeyA'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n ev.ctrlKey)\r\n ) {\r\n ev.preventDefault();\r\n\r\n switch (ev.code) {\r\n case 'KeyA':\r\n listboxActions.selectAll();\r\n break;\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'next',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'previous',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Home':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'first',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'End':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'last',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Enter':\r\n if (ev.ctrlKey) {\r\n shoutConfirmSelection(ev);\r\n break;\r\n }\r\n case 'Space':\r\n listboxActions.updateFocusBySpaceEvent({\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageUp',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageDown',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n }\r\n } else if (\r\n ev.code === 'Enter' &&\r\n (!state.allowSelection || !state.isMultipleSelection)\r\n ) {\r\n shoutConfirmSelection(ev);\r\n } else if (typer) {\r\n typer.type(ev);\r\n }\r\n },\r\n [\r\n getState,\r\n listboxActions,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n shoutConfirmSelection,\r\n typer,\r\n ],\r\n )}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nexport { ListboxKeyhandler };\r\n","import { ChangeEvent, FC, ReactNode, useCallback, useContext } from 'react';\nimport { ListboxContext } from './ListboxContext';\nimport { useDebouncedCallback } from '@apia/util';\nimport { Box, BoxProps, Input } from 'theme-ui';\n\nconst Combobox: FC<{ children: ReactNode } & BoxProps> = ({\n children,\n ...props\n}) => {\n const { id, listboxActions, useListbox } = useContext(ListboxContext);\n const run = useDebouncedCallback((ev: ChangeEvent<HTMLInputElement>) => {\n listboxActions.filter({ searchString: ev.target.value });\n });\n\n const ref = useListbox<HTMLInputElement>('searchbox', null);\n\n return (\n <>\n <Input\n ref={ref}\n type=\"text\"\n id={`${id}__searchbox`}\n placeholder=\"Search...\"\n aria-autocomplete=\"list\"\n aria-controls={`${id}__list__container`}\n role=\"combobox\"\n aria-expanded\n aria-haspopup=\"listbox\"\n onChange={run}\n autoComplete=\"off\"\n />\n <Box\n as=\"ul\"\n id={`${id}__list__container`}\n role=\"listbox\"\n className=\"listbox__list\"\n {...props}\n onClick={useCallback(() => {\n if (\n document.activeElement !==\n document.getElementById(`${id}__searchbox`)\n )\n document.getElementById(`${id}__searchbox`)?.focus();\n }, [id])}\n >\n {children}\n </Box>\n </>\n );\n};\n\nexport { Combobox };\n","import { focusOutline, getColorState } from '@apia/theme';\nimport { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {\n '&:focus-within': {\n '.listbox__list': {\n outline: 'none',\n },\n\n '.focused': focusOutline,\n\n '&.withSearchbox': {\n '.focused': {\n outline: '1px solid',\n outlineColor: 'palette.border.field',\n outlineOffset: 0,\n },\n '.listbox__searchbox': focusOutline,\n },\n },\n\n '.listbox__list': {\n listStyle: 'none',\n m: 0,\n p: 0,\n },\n\n '&.withSearchbox': {\n '.listbox__list': {\n maxHeight: 'calc(100vh - 80px)',\n overflow: 'auto',\n },\n },\n\n '.listbox__row': {\n '&:hover': {\n ...getColorState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n cursor: 'pointer',\n },\n },\n};\n","import { Draft, TKeysDefine } from '@apia/dom-store';\nimport { TListboxState, makeRowKey } from './common';\nimport { addBoundary, getIndex } from '@apia/util';\n\ntype TListboxOperation<Payload> = (\n state: Draft<TListboxState>,\n payload: Payload,\n keys: TKeysDefine,\n) => void;\n\nconst filter: TListboxOperation<{\n searchString: string;\n}> = makeOperation((state, { searchString }, keys) => {\n let focusChanged = false;\n const rows = new Array(state.rowsCount).fill(1).map((_, i) => i);\n\n const shownRows: number[] = [];\n const hiddenRows = rows.filter((_, i) => {\n const el = document.getElementById(`${state.id}__row__${i}`);\n if (!el) {\n console.warn('Element not found', `${state.id}__row__${i}`);\n return false;\n }\n\n const matches = state.searchFunction(el.ariaLabel ?? '', searchString);\n\n if (matches) {\n el.style.display = 'block';\n } else {\n el.style.display = 'none';\n }\n\n if (matches) shownRows.push(i);\n else if (state.focusedRow === i) {\n focusChanged = true;\n }\n\n return !matches;\n });\n keys.set(hiddenRows.map((current) => makeRowKey(current)));\n state.hiddenRows = hiddenRows;\n state.shownRows = shownRows;\n\n if (focusChanged) {\n for (const row of rows) {\n if (!hiddenRows.includes(row)) {\n state.focusedRow = row;\n keys.push(makeRowKey(row));\n keys.push(makeRowKey(state.focusedRow));\n break;\n }\n }\n }\n});\n\nfunction makeOperation<T>(operation: TListboxOperation<T>) {\n const method: TListboxOperation<T> = (state, payload, keys) => {\n keys.push('searchbox');\n keys.push('listbox');\n operation(state, payload, keys);\n };\n return method;\n}\n\nconst moveFocusAndToggleSelection: TListboxOperation<{\n isShiftKey: boolean;\n which: 'next' | 'previous' | 'first' | 'last' | 'pageUp' | 'pageDown';\n}> = makeOperation((state, { isShiftKey, which }, keys) => {\n if (state.shownRows.length <= 1) {\n keys.push(makeRowKey(state.focusedRow));\n state.focusedRow = state.shownRows[0];\n\n if (state.shownRows.length === 1) keys.push(makeRowKey(state.focusedRow));\n\n return;\n }\n\n switch (which) {\n case 'first':\n {\n const newFocused = state.shownRows[0];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n const selectedElements = new Array(state.focusedRow + 1)\n .fill(1)\n .map((_, i) => i);\n keys.set(selectedElements.map((_, i) => makeRowKey(i)));\n state.selectedRows = selectedElements;\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n case 'last':\n {\n const newFocused = state.shownRows[state.shownRows.length - 1];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n const selectedElements = new Array(\n state.rowsCount - state.focusedRow,\n )\n .fill(1)\n .map((_, i) => i + Math.min(newFocused, state.focusedRow));\n keys.push(...selectedElements.map((i) => makeRowKey(i)));\n state.selectedRows = selectedElements;\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n case 'previous':\n case 'next':\n case 'pageDown':\n case 'pageUp':\n {\n const sum = getIndex(\n [-1, 1, -10, 10],\n [\n which === 'previous',\n which === 'next',\n which === 'pageUp',\n which === 'pageDown',\n ],\n );\n\n const currentIndex = state.shownRows.findIndex(\n (current) => state.focusedRow === current,\n );\n const newFocused =\n state.shownRows[\n addBoundary({\n number: currentIndex + sum,\n min: 0,\n max: state.shownRows.length - 1,\n })\n ];\n if (newFocused === state.focusedRow) return;\n\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(newFocused));\n\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n if (state.selectedRows.includes(newFocused)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== newFocused,\n );\n } else {\n state.selectedRows.push(newFocused);\n }\n state.lastSelectedRow = newFocused;\n }\n } else {\n state.selectedRows = [newFocused];\n state.lastSelectedRow = newFocused;\n }\n\n state.focusedRow = newFocused;\n }\n break;\n }\n state.isEverythingSelected = false;\n});\n\nconst searchElementsByStartingCharacters: TListboxOperation<{\n characters: string;\n}> = makeOperation((state, payload, keys) => {\n const currentIndex = state.shownRows.findIndex(\n (current) => current === state.focusedRow,\n );\n\n function match(rowIndex: number) {\n keys.push(makeRowKey(state.focusedRow));\n\n state.focusedRow = rowIndex;\n\n if (!state.isMultipleSelection) {\n keys.push(...state.selectedRows.map((current) => makeRowKey(current)));\n state.selectedRows = [rowIndex];\n }\n\n keys.push(makeRowKey(state.focusedRow));\n }\n\n function tryIndex(rowIndex: number) {\n const el = document.getElementById(`${state.id}__row__${rowIndex}`);\n if (!el) {\n console.warn('Element not found', `${state.id}__row__${rowIndex}`);\n return false;\n }\n\n const matches = state.startsWithFunction(\n el.ariaLabel ?? '',\n payload.characters,\n );\n\n if (matches) {\n match(state.shownRows[rowIndex]);\n return true;\n }\n\n return false;\n }\n\n for (let i = currentIndex + 1; i < state.shownRows.length; i++) {\n if (tryIndex(i)) return;\n }\n\n for (let i = 0; i < currentIndex; i++) {\n if (tryIndex(i)) return;\n }\n});\n\n/**\n * No actualiza ningún key porque al llamar a selectAll, todos los elementos\n * son afectados y el comportamiento por defecto del store es actualizar todo\n */\nconst selectAll: TListboxOperation<void> = makeOperation(\n (state, payload, keys) => {\n keys.push(...state.selectedRows.map(makeRowKey));\n if (state.isEverythingSelected) {\n state.isEverythingSelected = false;\n state.selectedRows = [];\n } else {\n state.isEverythingSelected = true;\n state.selectedRows = state.shownRows;\n }\n state.lastSelectedRow = state.focusedRow;\n keys.push(...state.shownRows.map(makeRowKey));\n },\n);\n\nconst setState: TListboxOperation<\n Partial<TListboxState> & { affectedKeys: string[] }\n> = makeOperation((state, { affectedKeys, ...payload }, keys) => {\n const newRowsCount = payload.rowsCount ?? state.rowsCount;\n if (state.rowsCount < newRowsCount) {\n for (let i = state.rowsCount; i < (payload.rowsCount as number); i++) {\n state.shownRows.push(i);\n }\n } else if (state.rowsCount > newRowsCount) {\n state.shownRows = state.shownRows.filter(\n (current) => current < newRowsCount,\n );\n if (state.focusedRow > newRowsCount - 1) {\n state.focusedRow = newRowsCount - 1;\n keys.push(makeRowKey(state.focusedRow));\n }\n state.selectedRows = state.selectedRows.filter(\n (current) => current < newRowsCount,\n );\n }\n\n Object.assign(state, payload);\n keys.set(affectedKeys);\n state.isEverythingSelected = false;\n});\n\nconst updateFocusByClickEvent: TListboxOperation<{\n rowIndex: number;\n isCtrlKey: boolean;\n isShiftKey: boolean;\n}> = makeOperation((state, payload, keys) => {\n keys.push(makeRowKey(state.focusedRow));\n keys.push(makeRowKey(payload.rowIndex));\n\n state.focusedRow = payload.rowIndex;\n if (payload.isShiftKey) {\n updateFocusBySpaceEvent(state, { isShiftKey: payload.isShiftKey }, keys);\n } else {\n state.lastSelectedRow = payload.rowIndex;\n if (payload.isCtrlKey) {\n if (state.selectedRows.includes(payload.rowIndex)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== payload.rowIndex,\n );\n } else {\n state.selectedRows.push(payload.rowIndex);\n }\n } else {\n keys.push(...state.selectedRows.map((current) => makeRowKey(current)));\n state.selectedRows = [state.focusedRow];\n }\n }\n});\n\nconst updateFocusBySpaceEvent: TListboxOperation<{\n isShiftKey: boolean;\n}> = makeOperation((state, { isShiftKey }, keys) => {\n const rowIndex = state.focusedRow;\n keys.push(makeRowKey(rowIndex));\n if (state.isMultipleSelection) {\n if (isShiftKey) {\n if (state.lastSelectedRow === -1) {\n state.selectedRows.push(rowIndex);\n } else {\n const newSelection = new Array(\n Math.abs(state.lastSelectedRow - rowIndex),\n )\n .fill(1)\n .map(\n (_, i) =>\n i +\n Math.min(rowIndex, state.lastSelectedRow) +\n (state.lastSelectedRow > rowIndex ? 0 : 1),\n );\n keys.push(...newSelection.map((current) => makeRowKey(current)));\n newSelection.forEach((current) => {\n if (!state.shownRows.includes(current)) return;\n\n if (state.selectedRows.includes(current)) {\n state.selectedRows = state.selectedRows.filter(\n (search) => search !== current,\n );\n } else {\n state.selectedRows.push(current);\n }\n });\n }\n } else {\n if (state.selectedRows.includes(rowIndex)) {\n state.selectedRows = state.selectedRows.filter(\n (current) => current !== rowIndex,\n );\n } else {\n state.selectedRows.push(rowIndex);\n }\n }\n }\n state.lastSelectedRow = rowIndex;\n});\n\nconst operations = {\n filter,\n /**\n // eslint-disable-next-line comment-length/limit-multi-line-comments\n * **Este método debe llamarse solamente cuando se efectúan acciones desde el\n * teclado**. Su función es controlar el flujo correcto de foco y selección de\n * acuerdo a las especificaciones de wai-aria.\n */\n moveFocusAndToggleSelection,\n /**\n * Este método debe utilizarse para la búsqueda por caracter simple o\n * múltiple en cuanto a la implementación de las funcionalidades\n * especificadas por wai-aria.\n */\n searchElementsByStartingCharacters,\n /**\n * **Método empleado cuando se presiona ctrl+shift+A**. Su función es\n * controlar el flujo correcto de foco y selección de acuerdo a las\n * especificaciones de wai-aria.\n */\n selectAll,\n /**\n * Permite alterar el estado en forma arbitraria. Debe pasarse un array con\n * los keys afectados por la acción efectuada.\n */\n setState,\n /**\n * **Este método debe llamarse solamente cuando se efectúan acciones con el\n * mouse**. Su función es controlar el flujo correcto de foco y selección de\n * acuerdo a las especificaciones de wai-aria.\n */\n updateFocusByClickEvent,\n /**\n * **Este método debe llamarse solamente cuando se efectúan acciones con la\n * tecla espacio**. Su función es controlar el flujo correcto de foco y\n * selección de acuerdo a las especificaciones de wai-aria.\n */\n updateFocusBySpaceEvent,\n};\nexport { operations };\n","import { createFAsomeStore } from '@apia/dom-store';\nimport { useMemo } from 'react';\nimport { getInitialState, getDistinctors, keysMakers } from './common';\nimport { operations } from './operations';\nimport { TListbox } from './ListboxContext';\n\nexport function useStore(\n storeId: string,\n {\n allowMultipleCharacterSearch,\n allowSelection,\n allowSingleCharacterSearch,\n isMultipleSelection,\n searchFunction,\n showSearchbox,\n startsWithFunction,\n }: TListbox,\n) {\n return useMemo(() => {\n const newStore = createFAsomeStore({\n initialState: getInitialState({\n allowSelection: allowSelection ?? true,\n allowMultipleCharacterSearch:\n (allowMultipleCharacterSearch ?? true) && !showSearchbox,\n allowSingleCharacterSearch:\n (allowSingleCharacterSearch ?? true) && !showSearchbox,\n id: storeId,\n isMultipleSelection: !!isMultipleSelection,\n searchFunction,\n showSearchbox: showSearchbox ?? false,\n startsWithFunction,\n }),\n operations,\n distinctors: getDistinctors(storeId),\n keysMakers,\n });\n\n return newStore;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from 'react';\nimport { TRegisterStateChangeListener } from '@apia/dom-store';\nimport { TListbox } from './ListboxContext';\nimport { TListboxState } from './common';\n\nexport function useShoutSelectionChange(\n onSelectionChange: TListbox['onSelectionChange'],\n registerCallback: TRegisterStateChangeListener<TListboxState>,\n) {\n useMemo(\n function shoutSelectionChange() {\n registerCallback((state, previousState) => {\n if (state.selectedRows !== previousState.selectedRows) {\n onSelectionChange?.({\n focusedElement: document.querySelector<HTMLElement>(\n `#${state.id}__row__${state.focusedRow}`,\n ) as HTMLElement,\n selectedElements: state.selectedRows.map((current) => {\n return document.querySelector<HTMLElement>(\n `#${state.id}__row__${current}`,\n ) as HTMLElement;\n }),\n });\n }\n });\n },\n [onSelectionChange, registerCallback],\n );\n}\n","import {\n useMemo,\n Children,\n isValidElement,\n cloneElement,\n ReactElement,\n} from 'react';\nimport { ListboxItem, TListboxItem } from './ListboxItem';\n\nexport function useIndexedChildren(\n children: React.ReactNode | React.ReactNode[],\n) {\n return useMemo(\n function makeChildrenIndices() {\n return Children.map(children, (child, rowIndex) => {\n if (isValidElement(child) && child.type === ListboxItem) {\n return cloneElement<TListboxItem>(\n child as ReactElement<TListboxItem>,\n {\n rowIndex,\n },\n );\n }\n return child;\n });\n },\n [children],\n );\n}\n","import { TGetState } from '@apia/dom-store';\nimport { useCallback } from 'react';\nimport { TListboxState } from './common';\nimport { findScrollContainer } from '@apia/util';\n\nexport function useListboxAutofocus(\n storeId: string,\n getState: TGetState<TListboxState>,\n) {\n return {\n onClick: useCallback(() => {\n if (\n document.activeElement !==\n document.querySelector(`#${storeId} .listbox__list`)\n ) {\n const el = document.querySelector<HTMLElement>(\n `#${storeId} .listbox__list`,\n );\n el?.focus({ preventScroll: true });\n el?.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }, [storeId]),\n onFocus: useCallback(() => {\n const focusedRowId = getState().focusedRow + 1;\n const focusedRow = document.querySelector<HTMLElement>(\n `#${storeId} .listbox__list .listbox__row:nth-child(${focusedRowId})`,\n );\n\n if (focusedRow) {\n focusedRow.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n });\n const scrollContainer = findScrollContainer(focusedRow);\n\n if (scrollContainer && scrollContainer !== document.body) {\n scrollContainer.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n });\n const elRect = focusedRow.getBoundingClientRect();\n const contRect = scrollContainer.getBoundingClientRect();\n\n if (elRect.top - contRect.top < elRect.height)\n scrollContainer.scrollTop -= elRect.height;\n }\n }\n }, [getState, storeId]),\n };\n}\n","import { Children, isValidElement, useMemo } from 'react';\nimport { ListboxItem } from './ListboxItem';\nimport { TActionsMap } from '@apia/dom-store';\nimport { TListboxState } from './common';\nimport { operations } from './operations';\n\nexport function useUpdateRowCount(\n children: React.ReactNode | React.ReactNode[],\n listboxActions: TActionsMap<TListboxState, typeof operations>,\n) {\n useMemo(\n function updateRowCount() {\n let count = 0;\n Children.forEach(children, (current) => {\n if (isValidElement(current) && current.type === ListboxItem) count++;\n });\n listboxActions.setState({ rowsCount: count, affectedKeys: [] });\n },\n [listboxActions, children],\n );\n}\n","import { useMemo } from 'react';\nimport { TListboxContext } from './ListboxContext';\n\nexport function useListboxContextValue(props: TListboxContext) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => props, [...Object.values(props)]);\n}\n","import { KeyboardEvent, memo, MouseEvent, useMemo } from 'react';\r\nimport { uniqueId } from './common';\r\nimport { ListboxItem } from './ListboxItem';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { ListboxKeyhandler } from './ListboxKeyhandler';\r\nimport { Combobox } from './Combobox';\r\nimport { makeStyledComponent } from '@apia/theme';\r\nimport { Box } from 'theme-ui';\r\nimport { styles } from './listbox';\r\nimport { useStore } from './useStore';\r\nimport { useShoutSelectionChange } from './useShoutSelectionChange';\r\nimport { useIndexedChildren } from './useIndexedChildren';\r\nimport { useListboxAutofocus } from './useListboxAutofocus';\r\nimport { useUpdateRowCount } from './useUpdateRowCount';\r\nimport { useListboxContextValue } from './useListboxContextValue';\r\n\r\nexport type TOnConfirmSelection = {\r\n originalEvent: KeyboardEvent;\r\n\r\n selectedElements: HTMLElement[];\r\n focusedElement: HTMLElement;\r\n};\r\n\r\nexport type TOnSelectionChange = {\r\n focusedElement: HTMLElement;\r\n selectedElements: HTMLElement[];\r\n};\r\n\r\nexport type TOnClickNode = MouseEvent;\r\n\r\nexport type { TListbox };\r\n\r\nconst NoMemoListbox = makeStyledComponent<TListbox>(\r\n 'Listbox',\r\n 'layout.components.listbox',\r\n styles,\r\n (props: TListbox) => {\r\n const storeId = useMemo(() => uniqueId('Listbox'), []);\r\n const [listboxActions, useListbox, getState, registerCallback] = useStore(\r\n storeId,\r\n props,\r\n );\r\n\r\n useShoutSelectionChange(props.onSelectionChange, registerCallback);\r\n useUpdateRowCount(props.children, listboxActions);\r\n\r\n const indexedChildren = useIndexedChildren(props.children);\r\n const { onClick, onFocus } = useListboxAutofocus(storeId, getState);\r\n const ref = useListbox<HTMLElement>('listbox', null);\r\n const variant = props.unstyled ? '' : 'layout.components.listbox';\r\n const contextValue = useListboxContextValue({\r\n getState,\r\n id: storeId,\r\n listboxActions,\r\n onClickNode: props.onClickNode,\r\n onConfirmSelection: props.onConfirmSelection,\r\n onDoubleClickNode: props.onDoubleClickNode,\r\n onPressEnterOnNode: props.onPressEnterOnNode,\r\n onPressKeyOnNode: props.onPressKeyOnNode,\r\n useListbox,\r\n variant,\r\n });\r\n\r\n return (\r\n <ListboxContext.Provider value={contextValue}>\r\n <ListboxKeyhandler\r\n className={`listbox ${props.showSearchbox ? 'withSearchbox' : ''} ${\r\n props.className ?? ''\r\n }`}\r\n {...props.ulProps}\r\n >\r\n {props.showSearchbox ? (\r\n <Combobox {...props.ulProps}>{indexedChildren}</Combobox>\r\n ) : (\r\n <Box\r\n ref={ref}\r\n as=\"ul\"\r\n className=\"listbox__list\"\r\n role=\"listbox\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onFocus={onFocus}\r\n {...props.ulProps}\r\n >\r\n {indexedChildren}\r\n </Box>\r\n )}\r\n </ListboxKeyhandler>\r\n </ListboxContext.Provider>\r\n );\r\n },\r\n true,\r\n);\r\n\r\nconst Listbox = memo(NoMemoListbox);\r\n\r\nexport { Listbox, ListboxItem };\r\n","import { getVariant } from '@apia/theme';\nimport { FC } from 'react';\nimport { Progress, Label } from 'theme-ui';\n\nexport interface IProgressBar {\n id: string;\n progress?: number;\n loading?: boolean;\n}\n\nconst ProgressBar: FC<IProgressBar> = ({\n id,\n progress = 0,\n loading = false,\n}) => {\n return (\n <>\n <Label\n htmlFor={id}\n sx={{\n display: loading ? 'block' : 'none',\n m: '0px',\n }}\n >\n {`${progress}%`}\n </Label>\n <Progress\n id={id}\n max={100}\n value={progress}\n {...getVariant('styles.progress')}\n sx={{\n display: loading ? 'block' : 'none',\n }}\n >\n {`${progress}%`}\n </Progress>\n </>\n );\n};\n\nexport default ProgressBar;\n","import { getVariant, makeStyledComponent } from '@apia/theme';\nimport React from 'react';\nimport { Spinner } from 'theme-ui';\nimport { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {\n height: 'iconmd',\n width: 'iconmd',\n background: 'palette.background.paper',\n};\n\nconst LoaderSpinner = makeStyledComponent(\n 'LoaderSpinner',\n 'layout.common.components.loaderSpinner',\n styles,\n ({ className }: { className?: string }) => {\n return (\n <Spinner\n {...getVariant('layout.common.components.loaderSpinner')}\n className={className}\n />\n );\n },\n);\n\nexport default LoaderSpinner;\n","import {\n FunctionComponent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Box } from 'theme-ui';\nimport LoaderSpinner from '../loaders/LoaderSpinner';\n\ninterface IMakeResponsiveComponent<P extends Record<string, unknown>> {\n breakPoints: number[];\n Component: FunctionComponent<\n P & { breakPoint: number; breakPointWidth: number; containerWidth: number }\n >;\n /**\n * Este HOC hace un setState cada vez que cambia el ancho del contenedor. Hay\n * situaciones en las que es deseable agregar un debounce a este\n * comportamiento para mejorar la performance. *Por defecto usa 100*\n */\n debounce?: number;\n /**\n * Por defecto usa 4.\n */\n defaultBreakpoint?: number;\n}\n\nfunction calcBreakPoint(currentWidth: number, breakPoints: number[]) {\n let currentIndex = 0;\n\n while (\n currentIndex < breakPoints.length &&\n currentWidth > breakPoints[currentIndex]\n )\n currentIndex++;\n\n return currentIndex;\n}\n\n/**\n * El método makeResponsiveComponent agrega un wrapper alrededor de un\n * componente para conocer el ancho del contenedor del mismo. De esta forma, es\n * fácil predecir qué ancho dispone el mismo para renderizarse y de esa forma\n * poder tomar decisiones de responsividad que no dependen del ancho de la\n * pantalla sino del espacio donde se encuentra.\n */\nexport const makeResponsiveComponent = <P extends Record<string, unknown>>({\n breakPoints,\n Component,\n debounce,\n defaultBreakpoint,\n}: IMakeResponsiveComponent<P>) => {\n return function ResponsiveComponent(props: P & { breakPoints?: number[] }) {\n const [breakPoint, setCurrentBreakpoint] = useState<number>(\n defaultBreakpoint ?? 4,\n );\n const [containerWidth, setContainerWidth] = useState(\n breakPoints[defaultBreakpoint ?? 4],\n );\n const observer = useRef<ResizeObserver | null>(null);\n const timeout = useRef<number>(0);\n const shouldDisconnect = useRef(false);\n\n const [hasRendered, setHasRendered] = useState(false);\n\n const ref = useCallback(\n (element: HTMLElement) => {\n if (!element) return;\n\n observer.current?.disconnect();\n observer.current = new ResizeObserver((resizeProps) => {\n if (resizeProps[0].contentRect.width === 0) return;\n\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setContainerWidth(resizeProps[0].contentRect.width);\n setCurrentBreakpoint(\n calcBreakPoint(\n resizeProps[0].contentRect.width,\n props.breakPoints ?? breakPoints,\n ),\n );\n setHasRendered(true);\n }, debounce ?? 100) as unknown as number;\n });\n\n if (element) observer.current.observe(element);\n },\n [props.breakPoints],\n );\n\n useEffect(() => {\n shouldDisconnect.current = false;\n\n return () => {\n shouldDisconnect.current = true;\n setTimeout(() => {\n if (shouldDisconnect.current) {\n observer.current?.disconnect();\n }\n /**\n * El timeout tiene un tiempo arbitrariamente alto ya que de esta\n * forma el observer se va a desconectar una vez que el componente\n * se desmonte. Si pusiera un tiempo menor, caería en el riesgo de\n * que se desconecte aún cuando el componente está montado\n */\n }, 2000);\n };\n }, [props.breakPoints]);\n\n return (\n <Box ref={ref}>\n {hasRendered ? (\n <Component\n {...props}\n breakPoint={breakPoint}\n breakPointWidth={breakPoints[breakPoint]}\n containerWidth={containerWidth}\n />\n ) : (\n <LoaderSpinner />\n )}\n </Box>\n );\n };\n};\n","import { TDistinctors } from '@apia/dom-store';\nimport { TCellDistinctions, TState } from './types';\n\nexport const distinctors: TDistinctors<TState> = {\n grid: [\n (_: void, state) => {\n return {\n etc: {\n 'aria-activedescendant': `${state.storeId}__${state.focusedRow}__${state.focusedColumn}`,\n },\n };\n },\n ],\n cell: [\n (distinctions: TCellDistinctions, state) => {\n const isFocused =\n state.focusedColumn === distinctions.columnIndex &&\n state.focusedRow === distinctions.rowIndex;\n return {\n etc: {\n id: `${state.storeId}__${distinctions.rowIndex}__${distinctions.columnIndex}`,\n },\n classList: {\n add: isFocused ? ['focused'] : undefined,\n remove: isFocused ? undefined : ['focused'],\n },\n };\n },\n (_: TState, state: TState) => {\n const focusedCell = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow}\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n );\n\n focusedCell?.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'nearest',\n });\n },\n ],\n};\n","import { TDistinctors, TKeysMaker } from '@apia/dom-store';\nimport { TState } from './types';\n\nexport const makeCellKey = (distinctions: {\n columnIndex: number;\n rowIndex: number;\n}) => `${distinctions.columnIndex}__${distinctions.rowIndex}`;\n\nexport const keysMakers: TKeysMaker<TState, TDistinctors<TState>> = {\n cell: makeCellKey,\n grid: () => 'grid',\n};\n","import { noNaN } from '@apia/util';\nimport { makeCellKey } from './keysMaker';\nimport { TIconsListOperation, TState } from './types';\n\nfunction assignSelectedIndexId(state: TState) {\n const element = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow}\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n state.focusedId = element.dataset.id as string;\n }\n}\n\nconst arrowDown: TIconsListOperation<void> = (state: TState, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow + 1\n }\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow + 1,\n }),\n 'grid',\n ]);\n state.focusedRow++;\n\n assignSelectedIndexId(state);\n};\nconst arrowUp: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedRow > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n state.focusedRow--;\n\n assignSelectedIndexId(state);\n }\n};\nconst arrowLeft: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedColumn > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn - 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn--;\n\n assignSelectedIndexId(state);\n }\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* else if (state.focusedRow > 1) {\n const focusedRow = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow - 1}\"]`,\n );\n\n if (focusedRow instanceof HTMLElement) {\n const colIndex = noNaN(\n focusedRow.querySelector('[aria-colIndex]:last-of-type')?.ariaColIndex,\n -1,\n );\n\n if (colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n\n state.focusedRow--;\n state.focusedColumn = colIndex;\n\n assignSelectedIndexId(state);\n }\n }\n } */\n};\nconst arrowRight: TIconsListOperation<void> = (state, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow\n }\"] [aria-colindex=\"${state.focusedColumn + 1}\"]`,\n )\n ) {\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* const newFocusedId = noNaN(state.focusedId) + 1;\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${newFocusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: rowIndex,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n\n assignSelectedIndexId(state);\n }\n } */\n\n return;\n }\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn + 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn++;\n assignSelectedIndexId(state);\n};\nconst setFocused: TIconsListOperation<{\n rowIndex: number;\n colIndex: number;\n}> = (state, payload, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${payload.rowIndex}\"] [aria-colindex=\"${payload.colIndex}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({ columnIndex: payload.colIndex, rowIndex: payload.rowIndex }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = payload.colIndex;\n state.focusedRow = payload.rowIndex;\n\n assignSelectedIndexId(state);\n};\n\nconst recalculateIndexByResize: TIconsListOperation<void> = (\n state: TState,\n _: void,\n keys,\n) => {\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${state.focusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({ columnIndex: colIndex, rowIndex }),\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n }\n }\n};\n\nexport const operations = {\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n setFocused,\n recalculateIndexByResize,\n};\n","import { TState } from './types';\n\nexport const getInitialState = (props: Pick<TState, 'storeId'>): TState => ({\n focusedColumn: 1,\n focusedRow: 1,\n focusedId: 0,\n ...props,\n});\n","import { createContext, useContext } from 'react';\nimport {\n TActionsMap,\n TDistinctorProperties,\n TGetState,\n TRegisterStateChangeListener,\n TUseProperties,\n} from '@apia/dom-store';\nimport { TCellDistinctions, TState } from './types';\nimport { operations } from './operations';\n\nexport type TStoreContext = {\n actions: TActionsMap<TState, typeof operations>;\n useProps: TUseProperties<\n TState,\n {\n cell: [\n (\n distinctions: TCellDistinctions,\n state: TState,\n ) => TDistinctorProperties,\n ];\n grid: [(distinctions: null, state: TState) => TDistinctorProperties];\n }\n >;\n getState: TGetState<TState>;\n registerStateChangeListener: TRegisterStateChangeListener<TState>;\n};\n\nexport const StoreContext = createContext<TStoreContext>({} as TStoreContext);\n\nexport const useIconsListStoreContext = () => {\n return useContext(StoreContext);\n};\n","import { createFAsomeStore } from '@apia/dom-store';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { distinctors } from './distinctors';\nimport { operations } from './operations';\nimport { keysMakers } from './keysMaker';\nimport { getInitialState } from './state';\nimport { StoreContext, TStoreContext } from './context';\nimport { TState } from './types';\n\nexport const useStore = ({\n storeId,\n}: Pick<TState, 'storeId'>): [\n TStoreContext['actions'],\n TStoreContext['useProps'],\n TStoreContext['getState'],\n TStoreContext['registerStateChangeListener'],\n ({ children }: { children: ReactNode }) => JSX.Element,\n] => {\n const [actions, useProps, getState, registerStateChangeListener] = useMemo(\n () =>\n createFAsomeStore({\n initialState: getInitialState({\n storeId,\n }),\n distinctors,\n keysMakers,\n operations,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const ContextProvider = useCallback(\n ({ children }: { children: ReactNode }) => {\n return (\n <StoreContext.Provider\n value={{\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n }}\n >\n {children}\n </StoreContext.Provider>\n );\n },\n [actions, getState, registerStateChangeListener, useProps],\n );\n\n return [\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n ContextProvider,\n ];\n};\n","import { ReactNode, RefObject } from 'react';\nimport { getParamNames } from './util';\n\nexport type TAttachToElement = (() => HTMLElement) | RefObject<HTMLElement>;\nexport function isAttachToElementAFunction(\n attachToElement: TAttachToElement,\n): attachToElement is () => HTMLElement {\n return (\n attachToElement instanceof Function &&\n getParamNames(attachToElement).length === 0\n );\n}\n\nexport type TPreferredOrientationX = 'left' | 'right';\nexport type TPreferredOrientationY = 'top' | 'bottom';\nexport type TSize = { width: number; height: number };\nexport type TSizeWithAuto = { width: number | 'auto'; height: number | 'auto' };\nexport type TPosition = { left: number; top: number };\nexport type TTooltipPosition = TPosition & TSizeWithAuto;\nexport type TAttachToElementAnchorPoint =\n | 'center'\n | 'topLeft'\n | 'topRight'\n | 'bottomLeft'\n | 'bottomRight';\n\nexport type TTooltip = {\n /** Define el contenido del tooltip */\n children?: ReactNode;\n\n /**\n * Indica si el tooltip se cierra con escape. Valor por defecto: true.\n */\n closeOnEscape?: boolean;\n /**\n * Indica si el tooltip se cierra al desplazar el puntero del mouse fuera del\n * tooltip. Valor por defecto: true.\n */\n closeOnMouseLeaveTooltip?: boolean;\n /**\n * Indica si el tooltip se cierra al desplazar el puntero del mouse fuera del\n * elemento al que el tooltip está anclado. Valor por defecto: true.\n */\n closeOnMouseLeaveAttachedElement?: boolean;\n /**\n * Indica si el tooltip se cierra al hacerle click. Valor por defecto: false.\n */\n closeOnClick?: boolean;\n /**\n * Indica si el tooltip se cierra al hacer click fuera de él. Valor por\n * defecto: true.\n */\n closeOnClickOut?: boolean;\n /**\n * Indica si el tooltip se cierra al hacer scroll en un elemento externo al\n * tooltip. Valor por defecto: true.\n */\n closeOnScrollOut?: boolean;\n\n /**\n * Permite determinar sobre qué elemento se abre el tooltip\n */\n attachToElement?: TAttachToElement;\n /**\n * Cuando se desea hacer attach a un elemento, es posible posicionar el menú\n * en cualquiera de los cuatro vétices definidos por el box que lo contiene o\n * bien ubicarlo exactamente en el centro.\n *\n * Por defecto se colocará en topRight.\n *\n * Además el tooltip se extenderá según la orientación definida en los\n * parámetros preferredOrientationX y preferredOrientationY.\n */\n attachToElementAnchorPoint?: TAttachToElementAnchorPoint;\n /**\n * Permite indicar que el tooltip se abrirá en un punto específico. En caso\n * de no indicar anchorPoint ni attachToElement se abrirá en {0,0}\n */\n anchorPoint?: TPosition;\n\n /**\n * El minSize define el espacio mínimo que debe existir para mostrar el\n * tooltip. En caso de que en la orientación definida no exista espacio\n * suficiente, el tooltip se mostrará en otra orientación que si lo permita.\n */\n minSize?: TSize;\n /**\n * El preferredSize define el espacio deseado que debería ocupar el tooltip.\n * En caso de no haber espacio suficiente para cubrir este espacio en la\n * orientación definida, se cubrirá todo el espacio disponible, siempre y\n * cuando sea mayor o igual que minSize, en cuyo caso entrará en juego el\n * comportamiento de minSize.\n *\n * Por defecto usa { height: 'auto', width: 'auto' }.\n */\n preferredSize?: TSizeWithAuto;\n\n /**\n * Posición en la que el tooltip se muestra en caso de que haya espacio\n * suficiente, por defecto usa right.\n */\n preferredOrientationX?: TPreferredOrientationX;\n /**\n * Posición en la que el tooltip se muestra en caso de que haya espacio\n * suficiente, por defecto usa bottom.\n */\n preferredOrientationY?: TPreferredOrientationY;\n\n /**\n * Permite agregar classNames al box contenedor.\n */\n className?: string;\n /**\n * Será llamado cuando el tooltip sea cerrado.\n */\n onClose?: () => unknown;\n /**\n * Variante del box contenedor. Por defecto usa\n * layout.common.tooltips.primary.\n */\n variant?: string;\n};\n","import { isChild, useMount } from '@apia/util';\nimport { TPosition, TTooltip, isAttachToElementAFunction } from './types';\nimport { ThemeUICSSObject } from 'theme-ui';\nimport React, { useCallback, useRef } from 'react';\nimport { tooltipsHandler } from '.';\n\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\n\nexport function getParamNames(func: object) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const fnStr = func.toString().replace(STRIP_COMMENTS, '');\n let result: string[] | RegExpMatchArray | null = fnStr\n .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES);\n if (result === null) result = [];\n\n return result;\n}\n\nfunction determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n}: Pick<TTooltip, 'attachToElementAnchorPoint'> &\n Required<Pick<TTooltip, 'attachToElement'>>) {\n let actualAnchorPoint: TPosition = { left: 0, top: 0 };\n\n const element = isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current;\n\n if (element) {\n const rect = element.getBoundingClientRect();\n\n const point = attachToElementAnchorPoint ?? 'topRight';\n\n switch (point) {\n case 'bottomLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.bottom,\n };\n break;\n case 'bottomRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.bottom,\n };\n break;\n case 'center':\n actualAnchorPoint = {\n left: (rect.left + rect.right) / 2,\n top: (rect.bottom + rect.top) / 2,\n };\n break;\n case 'topLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.top,\n };\n break;\n case 'topRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.top,\n };\n break;\n }\n } else {\n console.warn(\n 'Cannot resolve element, will use default positioning ',\n attachToElement,\n );\n }\n\n return actualAnchorPoint;\n}\n\nexport function calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize = { height: 'auto', width: 'auto' },\n}: Pick<\n TTooltip,\n | 'anchorPoint'\n | 'attachToElement'\n | 'attachToElementAnchorPoint'\n | 'minSize'\n | 'preferredOrientationX'\n | 'preferredOrientationY'\n | 'preferredSize'\n>): ThemeUICSSObject {\n let actualAnchorPoint = anchorPoint;\n\n if (attachToElement) {\n actualAnchorPoint = determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n });\n }\n\n if (actualAnchorPoint) {\n const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;\n const availableTopSpace = actualAnchorPoint.top;\n const availableLeftSpace = actualAnchorPoint.left;\n const availableRightSpace = window.innerWidth - actualAnchorPoint.left;\n\n const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;\n const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;\n const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;\n const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;\n\n const preferredWidth =\n preferredSize.width === 'auto' ? Infinity : preferredSize.width;\n const preferredHeight =\n preferredSize.height === 'auto' ? Infinity : preferredSize.height;\n\n const position: ThemeUICSSObject = {\n '& > *': {\n width: '100%',\n height: '100%',\n },\n width: preferredSize.width === 'auto' ? 'auto' : '100%',\n height: preferredSize.height === 'auto' ? 'auto' : '100%',\n };\n\n if (preferredOrientationX === 'left') {\n if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n } else {\n if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n }\n\n if (preferredOrientationY === 'top') {\n if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n } else {\n if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n }\n\n position.minHeight =\n typeof position.maxHeight === 'number'\n ? Math.min(position.maxHeight, minSize?.height ?? 0)\n : minSize?.height ?? 0;\n position.minWidth =\n typeof position.minWidth === 'number'\n ? Math.min(position.minWidth, minSize?.width ?? 0)\n : minSize?.width ?? 0;\n\n return position;\n }\n\n return { left: 0, top: 0, width: 'auto', height: 'auto' };\n}\n\nexport function useHandlers({\n attachToElement,\n closeOnClick,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n}: Pick<\n TTooltip,\n | 'attachToElement'\n | 'closeOnClick'\n | 'closeOnClickOut'\n | 'closeOnEscape'\n | 'closeOnMouseLeaveTooltip'\n | 'closeOnMouseLeaveAttachedElement'\n | 'closeOnScrollOut'\n>) {\n const hasInited = useRef(false);\n const close = useCallback(() => {\n tooltipsHandler('close', undefined);\n }, []);\n\n useMount(() => {\n function handleEscape(ev: KeyboardEvent) {\n if (ev.code === 'Escape' && closeOnEscape) {\n close();\n }\n }\n function handleMouseDownOut(ev: MouseEvent) {\n if (!hasInited.current) return;\n if (\n closeOnClickOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n function handleScroll(ev: Event) {\n if (!hasInited.current) return;\n if (\n closeOnScrollOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n\n function handleMouseLeave(event: MouseEvent) {\n if (\n !hasInited.current ||\n (!closeOnMouseLeaveAttachedElement && !closeOnMouseLeaveTooltip)\n )\n return;\n\n const resolvedAttachToElement = attachToElement\n ? isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current\n : null;\n\n const isTooltipTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n const isAttachedTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n const isTooltipRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n\n const isAttachedRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n if (\n !isTooltipTheTarget &&\n !isAttachedTheTarget &&\n !closeOnMouseLeaveAttachedElement &&\n !closeOnMouseLeaveTooltip\n )\n return;\n if (isTooltipRelated || isAttachedRelated) return;\n if (isAttachedTheTarget && !closeOnMouseLeaveAttachedElement) return;\n if (isTooltipTheTarget && !closeOnMouseLeaveTooltip) return;\n\n close();\n }\n\n document.addEventListener('keydown', handleEscape);\n document.addEventListener('mousedown', handleMouseDownOut);\n document.addEventListener('scroll', handleScroll);\n document.addEventListener('mouseout', handleMouseLeave);\n\n setTimeout(() => {\n hasInited.current = true;\n }, 0);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.removeEventListener('click', handleMouseDownOut);\n document.removeEventListener('scroll', handleScroll);\n document.removeEventListener('mouseout', handleMouseLeave);\n };\n });\n\n return {\n handleOnClick: useCallback(\n (ev: React.MouseEvent) => {\n ev.stopPropagation();\n if (closeOnClick) {\n close();\n }\n },\n [close, closeOnClick],\n ),\n };\n}\n","/* eslint-disable no-param-reassign */\nimport { TTooltip } from './types';\nimport { Box, ThemeUICSSObject } from 'theme-ui';\nimport { getVariant } from '@apia/theme';\nimport { calculateTooltipPosition, useHandlers } from './util';\n\nexport const Tooltip = ({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n children,\n className,\n closeOnClick = false,\n closeOnClickOut = true,\n closeOnEscape = true,\n closeOnMouseLeaveTooltip = true,\n closeOnMouseLeaveAttachedElement = true,\n closeOnScrollOut = true,\n minSize,\n preferredOrientationX = 'right',\n preferredOrientationY = 'bottom',\n preferredSize = { height: 'auto', width: 'auto' },\n variant = 'layout.common.tooltips.primary',\n}: TTooltip) => {\n const calculatedPosition = calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize,\n });\n\n const sx = {\n position: 'fixed',\n ...calculatedPosition,\n } as ThemeUICSSObject;\n\n const { handleOnClick } = useHandlers({\n attachToElement,\n closeOnEscape,\n closeOnClickOut,\n closeOnClick,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n });\n\n return (\n <Box\n className={`tooltip__wrapper ${className ?? ''}`}\n {...getVariant(variant)}\n sx={sx}\n onClick={handleOnClick}\n >\n {children}\n </Box>\n );\n};\n","import { TTooltip } from './types';\nimport { useCallback, useRef, useState } from 'react';\nimport { Tooltip } from './Tooltip';\nimport { injectStyles } from '@apia/theme';\nimport {\n makeSingleImperativeComponent,\n useImperativeComponentEvents,\n useLatest,\n} from '@apia/util';\n\nexport type { TTooltip };\n\ninjectStyles('layout.common.tooltips.primary', {\n background: 'white',\n border: '1px solid #ccc',\n p: 3,\n zIndex: 'tooltip',\n});\n\nexport type TTooltipEvents = {\n open: TTooltip;\n close: void;\n};\n\nexport const [, tooltipsHandler, TooltipsProvider] =\n makeSingleImperativeComponent<object, TTooltipEvents>()({\n Component: () => {\n const [tooltip, setTooltip] = useState<null | TTooltip>(null);\n const tooltipRef = useLatest(tooltip);\n\n useImperativeComponentEvents<TTooltipEvents>({\n open: setTooltip,\n close() {\n tooltipRef.current?.onClose?.();\n setTooltip(null);\n },\n });\n\n if (!tooltip) return null;\n\n return <Tooltip {...tooltip} />;\n },\n });\n\nexport function useTooltip(tooltip?: TTooltip) {\n const isOpen = useRef(false);\n\n const open = useCallback(\n (otherProps?: Partial<TTooltip>) => {\n setTimeout(() => {\n isOpen.current = true;\n if (!tooltip && !otherProps?.children)\n throw new Error('There is no children set for the current tooltip');\n tooltipsHandler('open', {\n ...(tooltip as TTooltip),\n ...otherProps,\n onClose() {\n tooltip?.onClose?.();\n otherProps?.onClose?.();\n isOpen.current = false;\n },\n });\n }, 0);\n },\n [tooltip],\n );\n\n return {\n close: useCallback(() => {\n tooltipsHandler('close', undefined);\n }, []),\n open,\n toggle: useCallback(\n (otherProps?: Partial<TTooltip>) => {\n if (isOpen.current) {\n tooltipsHandler('close', undefined);\n } else open(otherProps);\n },\n [open],\n ),\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Box } from 'theme-ui';\nimport {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n} from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { isChild, TId, noNaN } from '@apia/util';\nimport { TIcon, TIconsList } from './types';\nimport { useTooltip } from '../../tooltip';\n\nfunction findIcon(icons: TIcon[], arg: EventTarget | TId) {\n const iconId =\n arg instanceof HTMLElement\n ? arg.closest<HTMLElement>('.iconsList__iconWrapper[data-id]')?.dataset\n ?.id\n : arg;\n\n if (iconId !== undefined) {\n const icon = icons.find((current) => String(current.id) === iconId);\n\n return icon ?? null;\n }\n}\n\nexport const KeyHandler = ({\n children,\n icons,\n onIconClick,\n onIconDoubleClick,\n onIconGetDetails,\n onIconKeyDown,\n storeId,\n}: { children: ReactNode; storeId: TId } & Pick<\n TIconsList<any>,\n | 'icons'\n | 'onIconClick'\n | 'onIconDoubleClick'\n | 'onIconGetDetails'\n | 'onIconKeyDown'\n>) => {\n const { actions, getState, useProps } = useIconsListStoreContext();\n\n const ref = useProps('grid', null);\n\n const { open } = useTooltip({\n minSize: { width: 200, height: 0 },\n });\n const showIconDetails = useCallback(\n (icon: TIcon) => {\n if (onIconGetDetails) {\n open({\n children: onIconGetDetails(icon),\n attachToElement: () =>\n document.querySelector(\n `#${storeId} .iconsList__iconWrapper[data-id=\"${icon.id}\"]`,\n ) as HTMLElement,\n closeOnClick: false,\n });\n }\n },\n [onIconGetDetails, open, storeId],\n );\n\n return (\n <Box\n ref={ref}\n className=\"iconsList__keyHandler\"\n tabIndex={0}\n onFocus={useCallback(\n (ev: FocusEvent) => {\n if (\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('iconsList__keyHandler'),\n )\n )\n return;\n const icon = findIcon(icons, getState().focusedId);\n if (icon) {\n showIconDetails(icon);\n }\n },\n [getState, icons, showIconDetails],\n )}\n onMouseDown={useCallback(\n (ev: MouseEvent) => {\n if (ev.target instanceof HTMLElement) {\n const colIndex = noNaN(\n ev.target.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n const rowIndex = noNaN(\n ev.target.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n\n if (colIndex >= 0 && rowIndex >= 0) {\n actions.setFocused({\n colIndex,\n rowIndex,\n });\n }\n }\n },\n [actions],\n )}\n onClick={useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n const icon = findIcon(icons, ev.target);\n\n if (icon) showIconDetails(icon);\n if (onIconClick && icon) {\n onIconClick(ev, icon);\n }\n },\n [icons, onIconClick, showIconDetails],\n )}\n onDoubleClick={useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n if (onIconDoubleClick) {\n const icon = findIcon(icons, ev.target);\n if (icon) onIconDoubleClick(ev, icon);\n }\n },\n [icons, onIconDoubleClick],\n )}\n onKeyDown={useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n function showIconByFocusChange() {\n const icon = findIcon(icons, getState().focusedId);\n\n if (icon) showIconDetails(icon);\n if (icon && onIconKeyDown) {\n onIconKeyDown(ev, icon);\n }\n }\n\n switch (ev.code) {\n case 'ArrowUp':\n actions.arrowUp();\n showIconByFocusChange();\n break;\n case 'ArrowDown':\n actions.arrowDown();\n showIconByFocusChange();\n break;\n case 'ArrowRight':\n actions.arrowRight();\n showIconByFocusChange();\n break;\n case 'ArrowLeft':\n actions.arrowLeft();\n showIconByFocusChange();\n break;\n }\n },\n [actions, getState, icons, onIconKeyDown, showIconDetails],\n )}\n >\n {children}\n </Box>\n );\n};\n","import { focusOutline, getPalette } from '@apia/theme';\nimport { ThemeUICSSObject } from 'theme-ui';\n\nexport const styles: ThemeUICSSObject = {\n '&, *': {\n textAlign: 'center',\n },\n\n '.iconsList__icon__image__wrapper': {\n boxShadow: '1px 1px 3px #0001',\n },\n\n '.iconsList__icon__wrapper': {\n p: 2,\n\n '&:hover': {\n ...getPalette().getOneState(\n { backgroundColor: getPalette().background.paper },\n 'hover',\n ),\n },\n },\n\n '.iconsList__icon__label': {\n wordBreak: 'break-word',\n },\n\n '.iconsList__keyHandler:focus': {\n outline: 'none',\n\n '.focused .iconsList__icon__wrapper': {\n ...focusOutline,\n },\n },\n};\n","import { useMemo } from 'react';\nimport { TIcon } from './types';\n\nexport function getBreakpoints(blockWidth: number) {\n return Array(Math.floor(4000 / blockWidth))\n .fill(1)\n .map((_, i) => (i + 1) * blockWidth);\n}\n\nexport function useStyles({\n containerWidth,\n iconWidth,\n breakPoint,\n verticalGap,\n removeHorizontalPadding,\n}: {\n containerWidth: number;\n iconWidth: number;\n breakPoint: number;\n verticalGap?: number;\n removeHorizontalPadding?: boolean;\n}) {\n const gap =\n (containerWidth - iconWidth * breakPoint) /\n (breakPoint + (removeHorizontalPadding ? -1 : 1));\n const sx = useMemo(\n () => ({\n justifyContent: 'space-evenly',\n gridTemplateColumns: `repeat(${breakPoint}, 1fr)`,\n rowGap: verticalGap ?? 0,\n columnGap: `${gap}px`,\n px: removeHorizontalPadding ? 0 : `${gap}px`,\n }),\n [removeHorizontalPadding, breakPoint, gap, verticalGap],\n );\n\n return sx;\n}\n\nexport const justToFillTheRow = 'JUST TO FILL THE ROW';\n\nexport function getRowIcons<P>({\n breakPoint,\n icons,\n i,\n}: {\n breakPoint: number;\n icons: TIcon<P>[];\n i: number;\n}) {\n const actualIcons: (string | TIcon<P>)[] = icons.slice(\n i * breakPoint,\n (i + 1) * breakPoint,\n );\n if (actualIcons.length < breakPoint)\n actualIcons.push(\n ...(Array(breakPoint - actualIcons.length).fill(\n justToFillTheRow,\n ) as string[]),\n );\n\n return actualIcons;\n}\n","import { createContext, useContext } from 'react';\nimport { TIconRenderer } from './types';\n\nexport const IconRendererContext = createContext<TIconRenderer | null>(null);\n\nexport function useIconRendererContext() {\n const context = useContext(IconRendererContext);\n\n if (!context) throw new Error('There is no IconRendererContext');\n\n return context;\n}\n","import { Box } from 'theme-ui';\nimport { TIcon } from '.';\nimport { useMemo } from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { useIconRendererContext } from './context';\n\nexport const Icon = (\n props: TIcon & { rowIndex: number; colIndex: number; width: number },\n) => {\n const { useProps } = useIconsListStoreContext();\n\n const ref = useProps<HTMLElement>('cell', {\n columnIndex: props.colIndex,\n rowIndex: props.rowIndex,\n });\n\n const Renderer = useIconRendererContext();\n\n return (\n <Box\n ref={ref}\n role=\"gridcell\"\n data-id={props.id}\n className={`iconsList__iconWrapper ${props.className ?? ''}`}\n aria-label={props.ariaLabel}\n sx={useMemo(\n () => ({\n width: `${props.width}px`,\n }),\n [props.width],\n )}\n aria-colindex={props.colIndex}\n >\n <Renderer {...props} />\n </Box>\n );\n};\n","import { Box } from 'theme-ui';\nimport { TIcon } from '.';\nimport { Icon } from './Icon';\nimport { justToFillTheRow } from './util';\n\nexport const IconWrapper = <P extends Record<string, unknown>>({\n icon,\n iconWidth,\n rowIndex,\n colIndex,\n}: {\n icon: string | TIcon<P>;\n iconWidth: number;\n rowIndex: number;\n colIndex: number;\n}) => {\n return icon === justToFillTheRow ? (\n <Box\n key={colIndex}\n sx={{ width: `${iconWidth}px` }}\n className=\"fill__the__row\"\n />\n ) : (\n <Icon\n rowIndex={rowIndex}\n colIndex={colIndex}\n width={iconWidth}\n {...(icon as TIcon<P>)}\n />\n );\n};\n","import { TIconRenderer } from '../types';\nimport { Box, Image } from 'theme-ui';\nimport { memo } from 'react';\n\nconst DefaultIconRendererNoMemo: TIconRenderer = (props) => {\n return (\n <Box className=\"iconsList__icon__wrapper\">\n <Box className=\"iconsList__icon__image__wrapper\">\n <Image\n className=\"iconsLIst__icon__image\"\n src={props.imageUrl}\n role=\"decoration\"\n />\n </Box>\n <Box className=\"iconsList__icon__label\">{props.label}</Box>\n </Box>\n );\n};\n\nexport const DefaultIconRenderer = memo(DefaultIconRendererNoMemo);\n","import { Box, Grid } from 'theme-ui';\nimport { ForwardedRef, forwardRef, useEffect, useMemo } from 'react';\nimport { makeResponsiveComponent } from '../responsive';\nimport { useStore } from './store/useStore';\nimport { uniqueId } from '../ListBox/common';\nimport { makeStyledComponent } from '@apia/theme';\nimport { KeyHandler } from './KeyHandler';\nimport { styles } from './styles';\nimport { getBreakpoints, getRowIcons, useStyles } from './util';\nimport { IconWrapper } from './IconWrapper';\nimport { DefaultIconRenderer } from './renderers/DefaultIconRenderer';\nimport { TIconsList, TIcon, TIconRenderer } from './types';\nimport { IconRendererContext } from './context';\n\nexport type { TIcon, TIconRenderer, TIconsList };\n\nconst IconsListNonForwarded = <P extends Record<string, unknown>>(\n props: TIconsList<P>,\n ref: ForwardedRef<HTMLDivElement>,\n) => {\n const storeId = useMemo(() => uniqueId('IconsList'), []);\n const [actions, , , , Context] = useStore({ storeId });\n\n const ResponsiveContainer = useMemo(() => {\n const iconWidth = props.iconWidth ?? 100;\n const minGap = props.minHorizontalGap ?? 30;\n\n const IconRenderer = props.iconRenderer ?? DefaultIconRenderer;\n\n const blockWidth = iconWidth + minGap;\n return makeStyledComponent(\n 'IconsList',\n 'layout.common.components.iconsList',\n styles,\n makeResponsiveComponent({\n breakPoints: getBreakpoints(blockWidth),\n Component: ({ breakPoint, containerWidth }) => {\n const rows = Math.ceil(props.icons.length / breakPoint);\n const sx = useStyles({\n breakPoint,\n containerWidth,\n iconWidth,\n verticalGap: props.verticalGap,\n removeHorizontalPadding: props.removeHorizontalPadding,\n });\n\n useEffect(() => {\n actions.recalculateIndexByResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakPoint]);\n\n return (\n <IconRendererContext.Provider value={IconRenderer}>\n <Context>\n <KeyHandler\n icons={props.icons}\n onIconClick={props.onIconClick}\n onIconDoubleClick={props.onIconDoubleClick}\n onIconGetDetails={props.onIconGetDetails}\n onIconKeyDown={props.onIconKeyDown}\n storeId={storeId}\n >\n <Box\n id={storeId}\n role=\"grid\"\n aria-rowcount={rows}\n aria-colcount={breakPoint}\n >\n {Array(rows)\n .fill(1)\n .map((_, i) => {\n const icons = getRowIcons({\n breakPoint,\n i,\n icons: props.icons,\n });\n return (\n <Grid\n aria-rowindex={i + 1}\n role=\"row\"\n key={i}\n ref={ref}\n sx={sx}\n >\n {icons.map((current, j) => (\n <IconWrapper\n key={\n typeof current === 'string'\n ? j + 1\n : current.id\n }\n colIndex={j + 1}\n icon={current}\n iconWidth={iconWidth}\n rowIndex={i + 1}\n />\n ))}\n </Grid>\n );\n })}\n </Box>\n </KeyHandler>\n </Context>\n </IconRendererContext.Provider>\n );\n },\n debounce: 50,\n }),\n );\n }, [\n Context,\n actions,\n props.iconRenderer,\n props.iconWidth,\n props.icons,\n props.minHorizontalGap,\n props.onIconClick,\n props.onIconDoubleClick,\n props.onIconGetDetails,\n props.onIconKeyDown,\n props.removeHorizontalPadding,\n props.verticalGap,\n ref,\n storeId,\n ]);\n return <ResponsiveContainer />;\n};\n\nIconsListNonForwarded.displayName = 'IconsList';\n\nexport const IconsList = forwardRef(\n IconsListNonForwarded,\n) as typeof IconsListNonForwarded;\n"],"names":["__objRest","__spreadProps","__spreadValues","_a","IconButtonThemeUI","React","uniqueId","_b","_c","Icon","__privateAdd","__privateSet","__privateGet","__privateMethod","useUpdateEffect","styles","disableChildrenFocus","disableChildrenFocusMethod","isFunction","keysMakers","getInitialState","operations","useStore"],"mappings":"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"}
|