@apia/components 4.0.1 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/accordion/context.ts","../src/components/accordion/handler.tsx","../src/components/accordion/KeyHandler.tsx","../src/components/ListBox/common.ts","../src/components/accordion/Accordion.tsx","../src/components/accordion/AccordionItemButton.tsx","../src/components/modals/hooks/useModal.tsx","../src/components/modals/layout/DialogHeader.tsx","../src/components/modals/ModalContext.ts","../src/components/modals/hooks/useEscapeKey.ts","../src/components/modals/hooks/useInitialFocus.ts","../src/components/modals/hooks/useStyleState.ts","../src/components/modals/windowModal/handleMouseMove.ts","../src/components/modals/windowModal/bringToTop.ts","../src/components/modals/WindowModal.tsx","../src/hooks/useBodyScrollLock.ts","../src/components/modals/Overlay.tsx","../src/components/modals/StaticModal.tsx","../src/components/modals/Modal.tsx","../src/objects/ApiaUtil/modals/OpenModal.tsx","../src/objects/ApiaUtil/modals/ApiaUtilModals.tsx","../src/objects/ApiaUtil/notifications/ApiaUtilNotifications.tsx","../src/objects/ApiaUtil/tabs/util.ts","../src/tabs/util.ts","../src/tabs/ContextMenu.tsx","../src/tabs/renderers/DefaultTabsLabelRenderer.tsx","../src/tabs/Item.tsx","../src/tabs/TabsList.tsx","../src/tabs/tabsController.ts","../src/tabs/Content.tsx","../src/tabs/Tabs.tsx","../src/objects/ApiaUtil/tabs/ApiaUtilTabsController.tsx","../src/components/modals/CalendarModal.tsx","../src/components/modals/layout/DialogButtonBar.tsx","../src/components/forms/buttons/SimpleButton.tsx","../src/components/modals/layout/Confirm.tsx","../src/components/dialogs/ConfirmModal.tsx","../src/components/dialogs/AlertModal.tsx","../src/objects/ApiaUtil/dialogs/ApiaUtilDialogs.tsx","../src/objects/ApiaUtil/parsers/parseStringToApiaNumber.ts","../src/objects/ApiaUtil/parsers/ApiaUtilParsers.ts","../src/objects/ApiaUtil/tooltips/ApiaUtilTooltip.ts","../src/objects/ApiaUtil/tooltips/AutomaticTooltip.ts","../src/objects/ApiaUtil/tooltips/tooltip/util.ts","../src/objects/ApiaUtil/tooltips/tooltip/Tooltip.tsx","../src/objects/ApiaUtil/tooltips/ApiaUtilTooltips.tsx","../src/objects/ApiaUtil/menu/ApiaUtilMenu.tsx","../src/objects/ApiaUtil/mouse/ApiaUtilMouse.ts","../src/objects/ApiaUtil/index.tsx","../src/objects/ScreenLocker/index.tsx","../src/components/forms/Autocomplete/Context.tsx","../src/components/forms/Autocomplete/OptionsBox.tsx","../src/components/forms/Autocomplete/store/AutocompleteController.tsx","../src/components/forms/Autocomplete/SearchBox.tsx","../src/components/forms/Autocomplete/Keyhandler.tsx","../src/components/forms/Autocomplete/index.tsx","../src/components/forms/buttons/BaseButton.tsx","../src/components/forms/buttons/IconButton.tsx","../src/components/buttons/useOtherTagButton.ts","../src/components/forms/Captcha.tsx","../src/components/forms/Checkbox.tsx","../src/globalFocus.ts","../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/forms/FieldLabel.tsx","../src/components/accordion/defaultElements/Checkbox.tsx","../src/components/accordion/defaultElements/useIsChecked.ts","../src/components/responsive/AutoEllipsis.tsx","../src/components/responsive/makeResponsiveComponent.tsx","../src/components/accordion/defaultElements/DefaultAccordionItemButton.tsx","../src/components/accordion/AccordionItemContent.tsx","../src/components/accordion/AccordionItem.tsx","../src/components/apia/ApiaDateFilter.tsx","../src/components/apia/ApiaFilter.tsx","../src/components/boxes/LabelBox.tsx","../src/components/containers/ContainerWithHeader/index.tsx","../src/components/collapsiblePanel/styles.ts","../src/components/collapsiblePanel/index.tsx","../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/LinearLoader.tsx","../src/components/loaders/ProgressBar.tsx","../src/components/loaders/LoaderSpinner.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/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","../src/components/importComponent.tsx","../src/components/Toolbar/ToolbarController.tsx","../src/components/Toolbar/ToolbarTextButton.tsx","../src/components/Toolbar/ToolbarIconButton.tsx","../src/components/Toolbar/ToolbarInput.tsx","../src/components/Toolbar/ToolbarSeparator.tsx","../src/components/Toolbar/ToolbarSelect.tsx","../src/components/Toolbar/index.tsx","../src/components/SortableList/SortableListHandler.tsx","../src/components/SortableList/SortableListItem.tsx","../src/components/SortableList/index.tsx"],"sourcesContent":["import { TId } from '@apia/util';\nimport { createContext, useContext } from 'react';\nimport { TAccordionHandler } from '.';\n\nexport const AccordionContext = createContext<TAccordionHandler | null>(null);\nexport const AccordionItemContext = createContext<TId | null>(null);\n\nexport const useAccordionContext = () => {\n const context = useContext(AccordionContext);\n if (!context) throw new Error('There is no AccordionContext');\n return context;\n};\n","import { TId } from '@apia/util';\nimport { ReactNode, useContext, useEffect, useMemo, useState } from 'react';\nimport { AccordionContext, AccordionItemContext } from './context';\nimport { TItemState, TItemStateListener, TPropsListener } from './types';\nimport { shallowEqual } from '@apia/store';\nimport { IAccordionProps } from './Accordion';\n\ntype TSelectionComparator<T> = (prev: T, next: T) => boolean;\n\ntype TItemUpdater =\n | Partial<TItemState>\n | ((currentProps: TItemState) => Partial<TItemState>);\n\nfunction makeItemStateSelectorHook(handler: AccordionHandler) {\n return function useItemStateSelector<T>(\n selector: (props: TItemState) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const id = handler.hooks.useItemId();\n const [state, setState] = useState<T>(selector(handler.itemsState[id]));\n\n handler.hooks.useItemStateUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nfunction makePropsSelectorHook(handler: AccordionHandler) {\n return function usePropsSelector<T>(\n selector: (props: IAccordionProps) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const [state, setState] = useState<T>(selector(handler.props));\n\n handler.hooks.usePropsUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nexport class AccordionHandler {\n itemsState: Record<TId, TItemState> = {};\n itemsStateListeners: Record<TId, TItemStateListener[]> = {};\n\n propsListeners: TPropsListener[] = [];\n\n constructor(\n public id: string,\n public props: IAccordionProps,\n ) {}\n\n registerItem(itemId: TId, initialState: TItemState) {\n if (!this.itemsState[itemId]) this.itemsState[itemId] = initialState;\n }\n\n toggleItem(itemId: TId, expanded?: boolean) {\n const isExpanded = expanded ?? !this.itemsState[itemId].isExpanded;\n if (this.props.singleExpand && isExpanded) {\n Object.keys(this.itemsState).forEach((current) => {\n if (current !== itemId) {\n this.udpateItem(current, { isExpanded: false });\n }\n });\n }\n this.udpateItem(itemId, { isExpanded });\n }\n\n unregisterItem(itemId: TId) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.itemsState[itemId];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.itemsStateListeners[itemId];\n }\n\n /**\n * Permite actualizar parcialmente el estado de un item\n */\n udpateItem(itemId: TId, updater: TItemUpdater) {\n const newProps =\n updater instanceof Function ? updater(this.itemsState[itemId]) : updater;\n\n Object.assign(this.itemsState[itemId], newProps);\n this.itemsStateListeners[itemId].forEach((current) =>\n current(this.itemsState[itemId]),\n );\n }\n\n updateProps(props: IAccordionProps) {\n this.props = { ...this.props, ...props };\n this.propsListeners.forEach((current) => current(props));\n }\n\n hooks = {\n useAccordionContextProvider: () => {\n const Provider = useMemo(\n () =>\n ({ children }: { children: ReactNode }) => (\n <AccordionContext.Provider value={this}>\n {children}\n </AccordionContext.Provider>\n ),\n [],\n );\n return Provider;\n },\n useItemContextProvider: (itemId: TId) => {\n const Provider = useMemo(\n () =>\n ({ children }: { children: ReactNode }) => (\n <AccordionItemContext.Provider value={itemId}>\n {children}\n </AccordionItemContext.Provider>\n ),\n [itemId],\n );\n return Provider;\n },\n useItemId: () => {\n const id = useContext(AccordionItemContext);\n if (id === null) throw new Error('There is no AccordionItemContext');\n return id;\n },\n useItemStateSelector: makeItemStateSelectorHook(this),\n useItemStateUpdate: (cb: TItemStateListener) => {\n const itemId = this.hooks.useItemId();\n useEffect(() => {\n if (!this.itemsStateListeners[itemId])\n this.itemsStateListeners[itemId] = [];\n this.itemsStateListeners[itemId].push(cb);\n\n return () => {\n this.itemsStateListeners[itemId] = this.itemsStateListeners[\n itemId\n ].filter((current) => current != cb);\n };\n }, [cb, itemId]);\n },\n usePropsSelector: makePropsSelectorHook(this),\n usePropsUpdate: (cb: TPropsListener) => {\n useEffect(() => {\n this.propsListeners.push(cb);\n return () => {\n this.propsListeners = this.propsListeners.filter(\n (current) => current !== cb,\n );\n };\n }, [cb]);\n },\n };\n}\n","import { Box, type BoxProps } from '@apia/theme';\nimport { useAccordionContext } from './context';\nimport { getVariant } from '@apia/theme';\nimport { useCallback } from 'react';\n\nexport const KeyHandler = (props: BoxProps) => {\n const handler = useAccordionContext();\n\n const variant = handler.hooks.usePropsSelector((current) => current.variant);\n\n return (\n <Box\n {...props}\n ref={useCallback(\n (ref: HTMLElement | null) => {\n if (ref) {\n ref.addEventListener('keydown', (ev) => {\n if (\n (ev.target as HTMLElement).closest('.accordion__item__content')\n )\n return;\n\n const accordionItem = (ev.target as HTMLElement)?.closest(\n '.accordion__item',\n ) as HTMLElement;\n const accordion = (ev.target as HTMLElement)?.closest(\n '.accordion',\n );\n const allItems = [\n ...(accordion?.querySelectorAll('.accordion__item') ?? []),\n ];\n const currentIndex = allItems.findIndex(\n (current) => current === accordionItem,\n );\n\n if (ev.code === 'ArrowDown') {\n if (currentIndex < allItems.length - 1) {\n ev.preventDefault();\n (\n (allItems[currentIndex + 1] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.focus();\n }\n } else if (ev.code === 'ArrowUp') {\n if (currentIndex > 0) {\n ev.preventDefault();\n (\n (allItems[currentIndex - 1] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.focus();\n }\n } else if (ev.code === 'ArrowLeft') {\n if (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '[aria-expanded=\"true\"]',\n ) as HTMLElement\n ) {\n ev.preventDefault();\n (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.click();\n }\n } else if (ev.code === 'ArrowRight') {\n if (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '[aria-expanded=\"false\"]',\n ) as HTMLElement\n ) {\n ev.preventDefault();\n (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.click();\n }\n } else if (ev.code === 'Space') {\n ev.preventDefault();\n ev.stopPropagation();\n const id = accordionItem.dataset.id as string;\n handler.udpateItem(id, {\n isChecked: !handler.itemsState[id].isChecked,\n });\n }\n });\n }\n },\n [handler],\n )}\n {...(variant ? getVariant(variant) : undefined)}\n />\n );\n};\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':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\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':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\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 { useRef, FC, ReactNode, useEffect, useState, useMemo } from 'react';\nimport { AccordionHandler } from './handler';\nimport { KeyHandler } from './KeyHandler';\nimport { shallowEqual } from '@apia/store';\nimport { uniqueId } from '../ListBox/common';\n\nexport interface IAccordionProps {\n /**\n * Tiempo en ms que dura la animación. Por defecto se usa 150.\n */\n animationDuration?: number;\n children?: ReactNode;\n className?: string;\n getHandler?: (handler: AccordionHandler) => unknown;\n singleExpand?: boolean;\n /**\n * Por defecto usa la variante layout.common.components.accordion.primary\n */\n variant?: string;\n}\n\nexport const Accordion: FC<IAccordionProps> = ({\n animationDuration = 150,\n children,\n className,\n getHandler,\n variant = 'layout.common.components.accordion.primary',\n singleExpand = false,\n}) => {\n const id = useMemo(() => uniqueId(), []);\n\n const [handler] = useState(() => {\n return new AccordionHandler(id, {\n animationDuration,\n children,\n getHandler,\n variant,\n singleExpand,\n });\n });\n const propsRef = useRef({\n animationDuration,\n children,\n getHandler,\n variant,\n });\n if (\n !shallowEqual(\n {\n animationDuration,\n children,\n getHandler,\n variant,\n },\n propsRef.current,\n )\n ) {\n propsRef.current = {\n animationDuration,\n children,\n getHandler,\n variant,\n };\n handler.updateProps({\n animationDuration,\n children,\n getHandler,\n variant,\n });\n }\n\n const Provider = handler.hooks.useAccordionContextProvider();\n\n useEffect(() => {\n getHandler?.(handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getHandler, handler]);\n\n return (\n <Provider>\n <KeyHandler className={`accordion ${className ?? ''}`}>\n {children}\n </KeyHandler>\n </Provider>\n );\n};\n","import { ReactNode } from 'react';\n\nexport type TAccordionItemButton = {\n children?: ReactNode;\n};\n\nexport const AccordionItemButton = ({ children }: TAccordionItemButton) => {\n return <>{children}</>;\n};\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 { Box, Close, Heading, useBreakpointIndex } from '@apia/theme';\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\ndeclare global {\n interface Window {\n BTN_CLOSE: string;\n }\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} modal__header`}\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} modal__header`}\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 { createContext, useContext } from 'react';\n\nexport type TModalContext = {\n changeTitle: (newTitle: string) => void;\n close: () => unknown;\n descriptionId: string;\n};\n\nexport const ModalContext = createContext<TModalContext | null>(null);\n\nexport function useModalContext() {\n const context = useContext(ModalContext);\n\n if (!context) throw new Error('There is no ModalContext');\n\n return context;\n}\n","import { useEffect } from 'react';\r\nimport { ApiaUtil } from '../../../objects';\r\n\r\n/**\r\n * Contorla la lógica encargada de cerrar el modal al presionar la tecla escape.\r\n */\r\nexport function useEscapeKey({\r\n closeHandler,\r\n id,\r\n isOpenInner,\r\n shouldCloseOnEsc,\r\n}: {\r\n id: string;\r\n closeHandler: () => void;\r\n isOpenInner: boolean;\r\n shouldCloseOnEsc?: boolean;\r\n}) {\r\n useEffect(() => {\r\n function handleEscape(event: KeyboardEvent) {\r\n if (event.code !== 'Escape') return;\r\n\r\n const notifications = [\r\n ...(document.querySelectorAll(\r\n '.notificationsFloatingList .notification',\r\n ) ?? []),\r\n ];\r\n if (notifications.length) {\r\n ApiaUtil.instance.notifications.closeAll();\r\n return;\r\n }\r\n\r\n const tooltips = [\r\n ...(document.querySelectorAll('.tooltip__wrapper') ?? []),\r\n ];\r\n if (tooltips.length) {\r\n return;\r\n }\r\n\r\n const overlays = [\r\n ...document.querySelectorAll('.overlay, .window__modal'),\r\n ];\r\n\r\n const modal = (event.target as HTMLElement).closest(`#modal__${id}`);\r\n if (modal) {\r\n /**\r\n * Funcionamiento para el WindowModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n } else if (\r\n overlays.length > 0 &&\r\n (overlays[overlays.length - 1]?.id === id ||\r\n overlays[overlays.length - 1]?.id === `modal__${id}`)\r\n ) {\r\n /**\r\n * Legacy, para el StaticModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n }\r\n }\r\n if (isOpenInner && shouldCloseOnEsc)\r\n document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);\r\n}\r\n","import { useEffect } from 'react';\r\nimport { TModal } from '../Modal';\r\nimport { focus, focusSelector, getFocusSelector } from '@apia/util';\r\n\r\nexport function useInitialFocus({\r\n isOpenInner,\r\n initialFocusConfiguration,\r\n initialFocusGetter,\r\n initialFocusRef,\r\n noFocus,\r\n parentElement,\r\n}: { isOpenInner: boolean; parentElement?: HTMLElement | null } & Pick<\r\n TModal,\r\n | 'noFocus'\r\n | 'initialFocusGetter'\r\n | 'initialFocusRef'\r\n | 'initialFocusConfiguration'\r\n>) {\r\n useEffect(\r\n () => {\r\n if (!noFocus && isOpenInner) {\r\n if (parentElement) {\r\n void focus.on(\r\n () => {\r\n if (initialFocusGetter) return initialFocusGetter(parentElement);\r\n if (initialFocusRef?.current)\r\n return (\r\n (initialFocusRef?.current || parentElement) as HTMLElement\r\n ).querySelector(focusSelector) as HTMLElement;\r\n return parentElement.querySelector(\r\n getFocusSelector(':not(.modal__closeButton)'),\r\n ) as HTMLElement;\r\n },\r\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\r\n );\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [parentElement],\r\n );\r\n}\r\n","import { ThemeUICSSObject } from '@apia/theme';\r\nimport { SetStateAction, useCallback, useRef } from 'react';\r\n\r\ntype InitialStyleAssigner = (el: HTMLElement) => Partial<ThemeUICSSObject>;\r\ntype CSSState = Partial<ThemeUICSSObject>;\r\n\r\ntype UseStyleStateProps = {\r\n initialState?: CSSState | InitialStyleAssigner;\r\n onUpdateRef?: InitialStyleAssigner;\r\n};\r\n\r\nexport function applyStylesToElement(el: HTMLElement, styles: CSSState) {\r\n Object.entries(styles).forEach(([name, value]) => {\r\n try {\r\n el.style[name as 'width'] = value as any;\r\n } catch (e) {\r\n e; // Se intentó asignar un valor que no es correcto\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Este hook permite mantener un estado de estilos, para utilizar en un elemento del DOM.\r\n *\r\n * A diferencia de un setState común, al realizar setState en este hook no se re-renderiza el componente, sino que se aplican los estilos directamente en el DOM.\r\n *\r\n * Se garantiza además que estos estados no se perderán en los re-renderizados provocados por causas externas a este hook.\r\n */\r\nexport function useStyleState(props?: UseStyleStateProps) {\r\n const element = useRef<null | HTMLElement>(null);\r\n const state = useRef<CSSState>(\r\n typeof props?.initialState === 'object'\r\n ? props?.initialState\r\n : ({} as CSSState),\r\n );\r\n\r\n const applyStyles = useCallback(() => {\r\n applyStylesToElement(element.current!, state.current);\r\n }, []);\r\n\r\n const hasInitializedState = useRef(typeof props?.initialState !== 'function');\r\n return {\r\n ref: useCallback(\r\n (el: HTMLElement | null) => {\r\n element.current = el;\r\n if (el) {\r\n if (!hasInitializedState.current) {\r\n hasInitializedState.current = true;\r\n state.current = (props?.initialState as InitialStyleAssigner)(el);\r\n }\r\n\r\n if (props?.onUpdateRef) {\r\n state.current = props.onUpdateRef(el);\r\n }\r\n\r\n applyStyles();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [applyStyles],\r\n ),\r\n setState: useCallback(\r\n (newState: SetStateAction<CSSState>) => {\r\n state.current =\r\n typeof newState === 'function' ? newState(state.current) : newState;\r\n applyStyles();\r\n },\r\n [applyStyles],\r\n ),\r\n };\r\n}\r\n","import { ThemeUICSSObject } from '@apia/theme';\r\nimport { addBoundary } from '@apia/util';\r\nimport { MutableRefObject } from 'react';\r\nimport { applyStylesToElement } from '../hooks/useStyleState';\r\n\r\nexport function handleMouseMove({\r\n ev,\r\n initialPosition,\r\n initialMousePosition,\r\n modalMainElement,\r\n setStyle,\r\n}: {\r\n ev: MouseEvent;\r\n initialPosition: MutableRefObject<null | DOMRect>;\r\n initialMousePosition: MutableRefObject<null | { x: number; y: number }>;\r\n modalMainElement: HTMLElement;\r\n setStyle: (newState: React.SetStateAction<Partial<ThemeUICSSObject>>) => void;\r\n}) {\r\n if (initialPosition.current) {\r\n ev.preventDefault();\r\n const diffX = ev.clientX - initialMousePosition.current!.x;\r\n const diffY = ev.clientY - initialMousePosition.current!.y;\r\n\r\n const newLeft = addBoundary(\r\n initialPosition.current.left + diffX,\r\n 0,\r\n window.innerWidth - 50,\r\n );\r\n const newTop = addBoundary(\r\n initialPosition.current.top + diffY,\r\n 0,\r\n window.innerHeight - 50,\r\n );\r\n\r\n setStyle({\r\n left: `${newLeft}px`,\r\n top: `${newTop}px`,\r\n right: 'unset',\r\n bottom: 'unset',\r\n });\r\n\r\n const mainElement = modalMainElement;\r\n const headerElement = mainElement?.querySelector<HTMLElement>(\r\n '.window__modal .modal__header',\r\n );\r\n const modalContent = mainElement?.querySelector<HTMLElement>(\r\n '.window__modal .modal__content',\r\n );\r\n\r\n if (modalContent && mainElement) {\r\n const headerBounding = headerElement?.getBoundingClientRect();\r\n const contentBounding = mainElement.getBoundingClientRect();\r\n\r\n applyStylesToElement(modalContent, {\r\n maxHeight: `${window.innerHeight - newTop - (headerBounding?.height ?? 0)}px`,\r\n });\r\n\r\n mainElement.dataset.originalWidth =\r\n mainElement.dataset.originalWidth || String(contentBounding!.width);\r\n applyStylesToElement(mainElement, {\r\n maxWidth: `${Math.min(Number.parseInt(mainElement.dataset.originalWidth, 10), window.innerWidth - newLeft)}px`,\r\n });\r\n }\r\n }\r\n}\r\n","export function resetModalsPositions() {\r\n document.querySelectorAll<HTMLElement>('.window__modal').forEach((c) => {\r\n c.style.zIndex = '1200';\r\n });\r\n}\r\n\r\nexport function bringToTop(modalElement: HTMLElement) {\r\n document.querySelectorAll<HTMLElement>('.window__modal').forEach((c) => {\r\n if (c.querySelector<HTMLElement>('.modal__main') === modalElement) {\r\n c.style.zIndex = '1201';\r\n } else {\r\n c.style.zIndex = '1200';\r\n }\r\n });\r\n}\r\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n Fragment,\n} from 'react';\nimport { TModal } from './Modal';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, ThemeUICSSObject, getVariant } from '@apia/theme';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { getFocusSelector, useCombinedRefs } from '@apia/util';\nimport { useStyleState } from './hooks/useStyleState';\nimport { uniqueId } from '@apia/notifications';\nimport { FreeFocusInside } from 'react-focus-lock';\nimport { handleMouseMove } from './windowModal/handleMouseMove';\nimport { bringToTop } from './windowModal/bringToTop';\n\nexport const WindowModal = forwardRef<HTMLDivElement, TModal>(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n defaultPosition,\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 onDragStart = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n size = 'md',\n title = '',\n variant,\n },\n ref,\n ) => {\n const innerId = useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\n }\n const [isOpenInner, setIsOpen] = useState(isOpen);\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n\n const [parentElement, setParentElement] = useState<HTMLElement | null>(\n null,\n );\n\n useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement,\n });\n\n const Wrapper = useMemo(() => {\n return Portal ?? Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const hasSetPosition = useRef(false);\n const { ref: stylesRef, setState: setStyle } = useStyleState({\n onUpdateRef(el) {\n const mainElement = el.querySelector<HTMLElement>('.modal__main');\n const bounding = mainElement!.getBoundingClientRect();\n\n const returnObject: Partial<ThemeUICSSObject> = {\n position: 'fixed',\n };\n\n if (!hasSetPosition.current && mainElement) {\n bringToTop(mainElement);\n hasSetPosition.current =\n !!defaultPosition || (!!bounding && bounding.width > 200);\n Object.assign(\n returnObject,\n defaultPosition ?? {\n left: `${window.innerWidth / 2 - (bounding?.width ?? 0) / 2}px`,\n top: `${window.innerHeight / 2 - (bounding?.height ?? 0) / 2}px`,\n },\n );\n }\n\n return returnObject;\n },\n });\n\n const unSubscribe = useRef(() => {});\n const initialPosition = useRef<null | DOMRect>(null);\n const initialMousePosition = useRef<null | { x: number; y: number }>(null);\n const assignRefs = useCombinedRefs(\n setParentElement as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n stylesRef as unknown as React.Ref<unknown>,\n );\n\n return (\n <Wrapper>\n <ModalContext.Provider\n value={useMemo(() => {\n return {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, innerId])}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={setParentElement as any}\n onExited={onExited}\n >\n <Box\n ref={assignRefs}\n className={`modal__variantWrapper window__modal ${className ?? ''}`}\n id={`modal__${innerId}`}\n {...(variant ? getVariant(variant) : {})}\n sx={{ zIndex: 'modal' }}\n >\n <FreeFocusInside>\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={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 ref={useCallback(\n (el: null | HTMLElement) => {\n unSubscribe.current();\n unSubscribe.current = () => {};\n\n if (el) {\n const handleMouseDown = (ev: MouseEvent) => {\n if (\n (ev.target as HTMLElement).closest?.(\n '[draggable=\"true\"]',\n )\n )\n return;\n\n if (\n (ev.target as HTMLElement).closest(\n getFocusSelector(),\n )\n )\n return;\n\n const res = onDragStart?.(ev);\n if (res === false) return;\n\n const rect = el.getBoundingClientRect();\n initialPosition.current = rect;\n initialMousePosition.current = {\n x: ev.clientX,\n y: ev.clientY,\n };\n\n bringToTop(\n (ev.target as HTMLElement).closest<HTMLElement>(\n '.modal__main',\n )!,\n );\n };\n const innerHandleMouseMove = (ev: MouseEvent) => {\n if (initialPosition.current) {\n handleMouseMove({\n ev,\n initialMousePosition,\n initialPosition,\n modalMainElement: el,\n setStyle,\n });\n }\n };\n\n const handleMouseUp = () => {\n initialPosition.current = null;\n };\n\n el.addEventListener('mousedown', handleMouseDown);\n document.addEventListener(\n 'mousemove',\n innerHandleMouseMove,\n );\n document.addEventListener('mouseup', handleMouseUp);\n\n unSubscribe.current = () => {\n el.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener(\n 'mousemove',\n innerHandleMouseMove,\n );\n document.removeEventListener(\n 'mouseup',\n handleMouseUp,\n );\n };\n }\n },\n [onDragStart, setStyle],\n )}\n >\n {!noHeader && (\n <DialogHeader\n NavBar={NavBar}\n title={innerTitle}\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 </FreeFocusInside>\n </Box>\n </CSSTransition>\n </ModalContext.Provider>\n </Wrapper>\n );\n },\n);\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 '@apia/theme';\nimport ReactFocusLock, { FreeFocusInside } 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\n crossFrame={false}\n >\n <FreeFocusInside>{children}</FreeFocusInside>\n </ReactFocusLock>\n </Box>\n </CSSTransition>\n );\n },\n);\n\nOverlay.displayName = 'Overlay';\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 '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { useCombinedRefs } from '@apia/util';\nimport { getVariant } from '@apia/theme';\nimport { Overlay } from './Overlay';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { TModal } from './Modal';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { resetModalsPositions } from './windowModal/bringToTop';\n\nexport const StaticModal = 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 }: Omit<TModal, 'asWindow'>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\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 ((el: HTMLElement) => {\n if (el) {\n resetModalsPositions();\n }\n }) 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 useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement: 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 {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, 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={innerTitle}\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\nStaticModal.displayName = 'StaticModal';\n","import React, { forwardRef } from 'react';\nimport { IOnFocusConfiguration, TFocusRetriever } from '@apia/util';\nimport { TModalSize } from '../types';\nimport { IDialogHeader } from './layout/DialogHeader';\nimport { WindowModal } from './WindowModal';\nimport { StaticModal } from './StaticModal';\nimport { useBreakpointIndex } from '@theme-ui/match-media';\n\nexport type TModal = {\n animationDuration?: number;\n /**\n * Aplica solamente para modales que tengan draggable=true.\n */\n defaultPosition?: {\n left?: string;\n right?: string;\n top?: string;\n bottom?: string;\n };\n /**\n * Si esta variable está en true, el modal se comportará más como una ventana\n * que como un modal\n */\n draggable?: boolean;\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 * Este método recibe el evento del mousedown utilizado para controllar el dragstart. Si el usuario devuelve false, el drag no será realizado.\n */\n onDragStart?: (ev: MouseEvent) => boolean;\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 (props: TModal, ref: React.Ref<HTMLDivElement>) => {\n const breakpoint = useBreakpointIndex();\n\n if (props.draggable && breakpoint > 3) {\n return <WindowModal {...props} ref={ref} />;\n }\n return <StaticModal {...props} ref={ref} />;\n },\n);\n\nModal.displayName = 'Modal';\n","import { usePrevious } from '@apia/util';\nimport { useModal } from '../../../components/modals/hooks/useModal';\nimport { Modal, TModal } from '../../../components/modals/Modal';\nimport { Confirm, IConfirm } from '../../../components';\nimport React, { useRef } from 'react';\n\nexport type TOpenModal = Pick<\n TModal,\n | 'NavBar'\n | 'Portal'\n | 'children'\n | 'className'\n | 'hideCloseButton'\n | 'initialFocusGetter'\n | 'initialFocusConfiguration'\n | 'maxWidth'\n | 'noHeader'\n | 'onExited'\n | 'shouldCloseOnEsc'\n | 'shouldCloseOnOverlayClick'\n | 'size'\n | 'stretch'\n | 'title'\n | 'variant'\n | 'draggable'\n | 'onClose'\n | 'onDragStart'\n | 'defaultPosition'\n> & {\n id?: string;\n children?: React.ReactNode;\n confirmProps?: Omit<IConfirm, 'onConfirmOk' | 'onConfirmCancel' | 'children'>;\n /**\n * Determina si el modal debe abrirse al ser montado o no.\n */\n isDefaultOpen?: boolean;\n /**\n * El método onConfirm permite pasar un callback que devuelva una promesa. En\n * caso de ser así, si esta promesa resuelve a true, el modal será cerrado o\n * en caso contrario permanecerá abierto. Es útil en situaciones en donde es\n * necesario corroborar una condición antes de cerrar el modal. En la\n * situación en que se decida mantener el modal abierto, está a cargo del\n * usuario del componente realizar las indicaciones visuales correspondientes\n * para indicar al usuario el motivo por el cual el modal no fue cerrado.\n */\n onConfirm?: () => Promise<boolean> | boolean | void;\n /**\n * El método onCancel será llamado siempre que un usuario cierre el modal,\n * excepto cuando haya presionado en onConfirm.\n */\n onCancel?: () => void;\n /**\n * Permite introducir html directamente dentro del contenedor del modal.\n */\n html?: string;\n};\n\nexport const OpenModal = (props: TOpenModal & { isOpen: boolean }) => {\n const modalProps = useModal({\n isDefaultOpen: true,\n onExited: props.onExited,\n });\n\n const previousOpenProp = usePrevious(props.isOpen);\n if (previousOpenProp.current !== props.isOpen && !props.isOpen) {\n modalProps.hide();\n }\n\n const hasConfirmed = useRef(false);\n\n const confirmProps = props.confirmProps;\n if (props.onConfirm || props.onCancel) {\n return (\n <Modal\n {...props}\n {...modalProps}\n onExited={() => {\n props.onClose?.();\n if (!hasConfirmed.current) {\n props.onCancel?.();\n }\n }}\n >\n <Confirm\n {...confirmProps}\n onConfirm={() => {\n hasConfirmed.current = true;\n props.onConfirm?.();\n modalProps.hide();\n }}\n onCancel={() => {\n modalProps.hide();\n }}\n children={props.children}\n />\n </Modal>\n );\n }\n\n return <Modal {...props} {...modalProps} />;\n};\n","import { EventEmitter, useMount } from '@apia/util';\nimport { useState } from 'react';\nimport { OpenModal, TOpenModal } from './OpenModal';\n\nexport class ApiaUtilModalHandler {\n constructor(\n private id: string,\n public close: () => void,\n ) {}\n}\n\nexport class ApiaUtilModals {\n #emitter = new EventEmitter<{\n close: string;\n closeAll: boolean;\n open: TOpenModal;\n }>();\n #maxId = 0;\n\n constructor() {\n document.addEventListener('openModal', (event) => {\n const cevent = event as CustomEvent;\n\n this.open(cevent.detail as TOpenModal);\n });\n }\n\n open(props: TOpenModal) {\n const id = props.id ?? `modal_${this.#maxId++}`;\n\n this.#emitter.emit('open', { ...props, id });\n\n return new ApiaUtilModalHandler(id, () => {\n this.#emitter.emit('close', id);\n });\n }\n\n #useModalsList = () => {\n const [modals, setModals] = useState<(TOpenModal & { isOpen: boolean })[]>(\n [],\n );\n\n useMount(() => {\n const u1 = this.#emitter.on('open', (ev) => {\n setModals((current) => [\n ...current,\n {\n ...ev,\n isOpen: true,\n onExited: () => {\n ev.onExited?.();\n setModals((current) =>\n current.filter((modal) => modal.id !== ev.id),\n );\n },\n },\n ]);\n });\n const u2 = this.#emitter.on('closeAll', () => {\n setModals((current) =>\n current.map((modal) => ({ ...modal, isOpen: false })),\n );\n });\n const u3 = this.#emitter.on('close', (modalId) => {\n setModals((current) =>\n current.map((modal) =>\n modal.id === modalId ? { ...modal, isOpen: false } : modal,\n ),\n );\n });\n\n return () => {\n u1();\n u2();\n u3();\n };\n });\n\n return modals;\n };\n\n Component = () => {\n const modals = this.#useModalsList();\n\n return (\n <>\n {modals.map((current) => (\n <OpenModal key={current.id} {...current} />\n ))}\n </>\n );\n };\n}\n","import {\n NotificationsList,\n defaultNotifier,\n TNotificationId,\n INotification,\n TDispatchedNotification,\n TNotificationSelector,\n} from '@apia/notifications';\n\nexport class ApiaUtilNotifications {\n close = (id: TNotificationId | INotification) => {\n defaultNotifier.close(id);\n };\n\n closeAll = () => {\n defaultNotifier.closeAll();\n };\n\n notify = (notification: TDispatchedNotification): void => {\n defaultNotifier.notify({\n ...notification,\n type: notification.type ?? 'warning',\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useSelector = (selector: TNotificationSelector<any>) =>\n defaultNotifier.useSelector(selector);\n\n Component = () => {\n return <NotificationsList />;\n };\n}\n","import { ITabContainer } from '../types';\n\nexport function getIframe() {\n return window.frameElement as HTMLIFrameElement;\n}\n\nexport function getTabContainer() {\n const tabsController = getIframe()?.getReactTabsController?.();\n if (tabsController) return tabsController;\n\n const windowTop = window.top;\n const isIniFrame = windowTop?.document != null;\n let result: HTMLElement | typeof window.tabsController | null =\n document.getElementById('tabContainer');\n if (result === null && isIniFrame)\n result =\n windowTop.document.getElementById('tabContainer') ??\n windowTop.tabsController;\n\n return result as unknown as ITabContainer;\n}\n","import React, { useContext } from 'react';\nimport TabsController from './tabsController';\n\nexport const TabsContext = React.createContext<TabsController | null>(null);\n\nexport function defaultOnRequestClose() {\n return new Promise((resolve) => {\n resolve(true);\n });\n}\n\nexport function useTabsContext() {\n return React.useContext(TabsContext);\n}\n\nexport function useTabsController() {\n return useContext(TabsContext);\n}\n","import { ControlledMenu, MenuItem, useMenuState } from '@szhsin/react-menu';\nimport React from 'react';\nimport { useTabsContext } from './util';\nimport { getLabel } from '@apia/util';\nimport { observer } from 'mobx-react-lite';\n\nconst ContextMenu = observer(\n ({\n anchorPoint,\n isOpen,\n onClose,\n targetId,\n }: {\n anchorPoint: {\n x: number;\n y: number;\n };\n isOpen: boolean;\n onClose: () => unknown;\n targetId: string;\n }) => {\n const [menuProps, toggleMenu] = useMenuState();\n React.useEffect(() => {\n toggleMenu(isOpen);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const controller = useTabsContext();\n\n const closeOthers = React.useCallback(() => {\n void controller.closeOthers(targetId);\n }, [controller, targetId]);\n\n const closeToLeft = React.useCallback(() => {\n void controller.closeToLeft(targetId);\n }, [controller, targetId]);\n\n const closeToRight = React.useCallback(() => {\n void controller.closeToRight(targetId);\n }, [controller, targetId]);\n\n const firstNonFixedTab = controller.tabsList.find(\n (current) => !current.state.isFixed,\n );\n\n let lastNonFixedTab: string | null = null;\n if (controller.tabsList)\n for (let i = controller.tabsList.length - 1; i >= 0; i--) {\n if (!controller.tabsList[i].state.isFixed) {\n lastNonFixedTab = controller.tabsList[i].id;\n break;\n }\n }\n\n const nonFixedTabsLength =\n controller.tabsList?.filter((current) => !current.state.isFixed).length ??\n 0;\n\n return (\n <ControlledMenu\n {...menuProps}\n anchorPoint={anchorPoint}\n onClose={onClose}\n portal={{ target: document.getElementById('AppModals') as Element }}\n >\n {/* // No está bien implementado todavía\n <MenuItem\n onClick={React.useCallback(() => {\n controller.propsStore.updateField(targetId, { isFixed: true });\n }, [controller.propsStore, targetId])}\n >\n {window.LBL_FIX_TAB}\n </MenuItem> */}\n <MenuItem\n onClick={React.useCallback(() => {\n void controller.closeTab(targetId);\n }, [controller, targetId])}\n >\n {window.BTN_CLOSE}\n </MenuItem>\n <MenuItem\n onClick={React.useCallback(() => {\n void controller.closeAll();\n }, [controller])}\n >\n {getLabel('lblCloseAll').text}\n </MenuItem>\n {firstNonFixedTab?.id !== targetId && (\n <MenuItem onClick={closeToLeft}>\n {getLabel('lblCloseToLeft').text}\n </MenuItem>\n )}\n {lastNonFixedTab !== targetId && (\n <MenuItem onClick={closeToRight}>\n {getLabel('lblCloseToRight').text}\n </MenuItem>\n )}\n {nonFixedTabsLength > 1 && (\n <MenuItem onClick={closeOthers}>\n {getLabel('lblCloseOthers').text}\n </MenuItem>\n )}\n </ControlledMenu>\n );\n },\n);\n\nexport default ContextMenu;\n","import React, { MouseEvent } from 'react';\nimport { TTabLabelRenderer } from '../types';\nimport { useTabsContext } from '../util';\nimport { Icon, TIconName, isIconName } from '@apia/icons';\nimport { IconButton, SimpleButton } from '../../components';\nimport { getLabel } from '@apia/util';\nimport { observer } from 'mobx-react-lite';\n\nfunction makeIcon(name: TIconName) {\n return function IconComponent() {\n return <Icon title=\"\" name={name} />;\n };\n}\n\nexport const DefaultTabsLabelRenderer: TTabLabelRenderer = observer(\n ({ tab }) => {\n const controller = useTabsContext();\n const ActualIcon = React.useMemo(() => {\n if (tab.state.icon) {\n if (isIconName(tab.state.icon)) {\n return makeIcon(tab.state.icon);\n }\n return tab.state.icon;\n }\n return function C() {\n return null;\n };\n }, [tab.state.icon]);\n\n const handleClose = React.useCallback(\n (ev: MouseEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n controller?.closeTab(tab.id);\n },\n [controller, tab.id],\n );\n\n return (\n <>\n {tab.state.isIconTab ? (\n <IconButton\n className=\"tabs__item__button\"\n as=\"div\"\n icon={tab.state.icon as TIconName}\n variant=\"null\"\n iconSize=\"Sm\"\n size=\"Lg\"\n />\n ) : (\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\n <ActualIcon />\n {tab.state.label}\n </SimpleButton>\n )}\n\n {tab.state.isClosable && (\n <IconButton\n as=\"div\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={handleClose}\n className=\"tabs__item__close\"\n icon=\"Close\"\n variant=\"null\"\n title={\n getLabel('lblCloseSpecificTab', {\n text: { TOK1: tab.state.label },\n }).text\n }\n size=\"Lg\"\n iconSize=\"Sm\"\n />\n )}\n </>\n );\n },\n);\n","import { useUpdateEffect } from 'ahooks';\nimport React from 'react';\nimport { getSpecificParent } from '@apia/util';\nimport { SimpleButton } from '../components';\nimport { DefaultTabsLabelRenderer } from './renderers/DefaultTabsLabelRenderer';\nimport { observer } from 'mobx-react-lite';\nimport { Tab } from './tabsController';\n\nconst Item = observer(({ tab }: { tab: Tab }) => {\n const Renderer = React.useMemo(\n () => tab.state.labelRenderer ?? DefaultTabsLabelRenderer,\n [tab.state.labelRenderer],\n );\n\n const ref = React.useRef<HTMLButtonElement>({} as HTMLButtonElement);\n useUpdateEffect(() => {\n if (tab.state.isFocused) {\n ref.current?.focus({\n preventScroll: true,\n });\n }\n }, [tab.state.isFocused]);\n React.useEffect(() => {\n if (tab.state.isOpen) {\n const scrollParent = getSpecificParent(ref.current, (current) =>\n current.classList.contains('tabs__list'),\n ) as HTMLElement;\n\n scrollParent?.scroll({\n left: ref.current.offsetLeft - 100,\n });\n }\n }, [tab.state.isOpen]);\n\n const buttonProps = {\n className: `tabs__item__wrapper ${tab.state.isOpen ? 'open' : ''} ${\n tab.state.isDisabled ? 'disabled' : ''\n }`,\n title: tab.state.title ?? tab.state.label,\n onMouseDown: React.useCallback(\n (ev: React.MouseEvent) => {\n if (ev.button === 1) {\n tab.close();\n } else if (ev.button === 0) tab.open();\n },\n [tab],\n ),\n 'aria-controls': `tabpanel-${tab.controller.id}-${tab.state.id}`,\n 'aria-selected': tab.state.isOpen ?? false,\n id: `tab-${tab.controller.id}-${tab.id}`,\n tabIndex: tab.state.isFocused ? 0 : -1,\n role: 'tab',\n variant: 'inherit',\n };\n\n return (\n <SimpleButton data-id={tab.id} ref={ref} {...buttonProps}>\n <Renderer tab={tab} />\n </SimpleButton>\n );\n});\n\nexport default Item;\n","import React from 'react';\nimport { Box, getVariant } from '@apia/theme';\nimport ContextMenu from './ContextMenu';\nimport Item from './Item';\nimport { useTabsContext } from './util';\nimport { getLabel, getSpecificParent } from '@apia/util';\nimport { IconButton } from '../components';\nimport { observer } from 'mobx-react-lite';\n\nexport const TabsList = observer(\n ({ arrowsBehavior = 'focus' }: { arrowsBehavior?: 'open' | 'focus' }) => {\n const controller = useTabsContext();\n const [showScrollButtons, setShowScrollButtons] = React.useState(false);\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n React.useEffect(() => {\n if (ref && controller) {\n const observer = new MutationObserver(([{ addedNodes }]) => {\n const fixedTabsElement = ref.querySelector('.tabsList__fixedTabs');\n const hasFixedTabsScroll =\n (fixedTabsElement?.clientWidth ?? 0) <\n (fixedTabsElement?.scrollWidth ?? 0);\n const nonFixedTabsElement = ref.querySelector('.tabs__list');\n const hasFixedNonTabsScroll =\n (nonFixedTabsElement?.clientWidth ?? 0) <\n (nonFixedTabsElement?.scrollWidth ?? 0);\n\n setShowScrollButtons(hasFixedTabsScroll || hasFixedNonTabsScroll);\n\n if (addedNodes) {\n (ref.querySelector('.tabs__list') as HTMLElement).scrollLeft =\n 9999999;\n }\n });\n observer.observe(ref, { childList: true, subtree: true });\n return () => {\n observer.disconnect();\n };\n }\n\n return () => {};\n }, [controller, ref]);\n\n const onClickPrev = React.useCallback(() => {\n if (arrowsBehavior === 'focus') controller?.focusPreviousTab();\n if (arrowsBehavior === 'open') controller?.openPreviousTab();\n }, [arrowsBehavior, controller]);\n\n const onClickNext = React.useCallback(() => {\n if (arrowsBehavior === 'focus') controller?.focusNextTab();\n if (arrowsBehavior === 'open') controller?.openNextTab();\n }, [arrowsBehavior, controller]);\n\n const [anchorPoint, setAnchorPoint] = React.useState({ x: 0, y: 0 });\n const [isOpen, setIsOpen] = React.useState(false);\n const [targetId, setTargetId] = React.useState<string>('');\n\n if (!controller) return null;\n\n const tabs = controller.tabsList;\n\n const fixedTabs = (tabs ?? []).filter((current) => current.state.isFixed);\n const nonFixedTabs = (tabs ?? []).filter(\n (current) => !current.state.isFixed,\n );\n\n return (\n <Box\n id={`tabsList-${controller.id}`}\n className=\"tabsList__wrapper\"\n role=\"tablist\"\n {...getVariant('layout.common.tabs.primary')}\n ref={setRef}\n >\n <Box className=\"tabsList__fixedTabs\">\n {fixedTabs.map((current) => (\n <Item key={current.id} tab={current} />\n ))}\n </Box>\n <ContextMenu\n anchorPoint={anchorPoint}\n isOpen={isOpen}\n onClose={React.useCallback(() => setIsOpen(false), [])}\n targetId={targetId}\n />\n <Box\n className={`noScrollbar tabs__list ${\n controller.props.orientation === 'vertical' ? 'vertical' : ''\n }`}\n onContextMenu={React.useCallback((e: React.MouseEvent) => {\n const tabElement = getSpecificParent(\n e.target as HTMLElement,\n (current) => current.classList.contains('tabs__item__wrapper'),\n );\n if (tabElement) {\n e.preventDefault();\n e.stopPropagation();\n setTargetId(tabElement.dataset.id as string);\n setAnchorPoint({ x: e.clientX, y: e.clientY });\n setIsOpen(true);\n }\n }, [])}\n >\n {nonFixedTabs.map((current) => (\n <Item key={current.id} tab={current} />\n ))}\n </Box>\n {showScrollButtons && (\n <>\n <IconButton\n aria-label={getLabel('lblTogglePrevTab').text}\n className=\"tabs__switch__left\"\n icon=\"ArrowLeft\"\n iconSize=\"Xs\"\n onClick={onClickPrev}\n title={getLabel('lblTogglePrevTab').text}\n {...getVariant('icon-primary')}\n />\n <IconButton\n aria-label={getLabel('lblToggleNextTab').text}\n className=\"tabs__switch__right\"\n icon=\"ArrowRight\"\n iconSize=\"Xs\"\n onClick={onClickNext}\n title={getLabel('lblToggleNextTab').text}\n {...getVariant('icon-primary')}\n />\n </>\n )}\n </Box>\n );\n },\n);\n","import uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { TTab, TTabsListState, TabsControllerProps } from './types';\nimport { getLabel, getSpecificParent, isChild } from '@apia/util';\nimport { ApiaUtil } from '../objects/ApiaUtil';\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class Tab<TabType extends TTab = TTab> {\n constructor(\n public state: TabType,\n public controller: TabsController<TabType>,\n ) {\n makeAutoObservable(this, { state: observable });\n }\n\n get id() {\n return this.state.id;\n }\n\n /**\n * El parámetro force evita que se muestre cartel de confirmación al usuario cuando puede haber pérdida de datos.\n */\n async close(force?: boolean) {\n return this.controller.closeTab(this.state.id, force);\n }\n\n open() {\n this.controller.openTab(this.id);\n }\n}\n\nexport default class TabsController<TabType extends TTab = TTab> {\n state: TTabsListState<TabType> = {\n openTabs: new Set(),\n tabs: new Map(),\n timestamp: 0,\n };\n\n getActiveTab() {\n return this.activeTab;\n }\n /**\n * Es el tab que está abierto\n */\n get activeTab() {\n const tabs = [...this.state.openTabs];\n\n return tabs[tabs.length - 1];\n }\n\n getTab(id: string) {\n return this.state.tabs.get(id);\n }\n\n get tabsList() {\n return [...this.state.tabs.values()];\n }\n\n constructor(\n public id: string,\n public props: Omit<TabsControllerProps<TabType>, 'id'>,\n ) {\n props.initialTabs?.forEach(this.append.bind(this));\n if (props.initialTabs && props.initialTabs.length > 0)\n this.focusTab(props.initialTabs[0].id);\n\n makeAutoObservable(this);\n }\n\n #innerAppend(tab: TabType) {\n this.state.tabs.set(tab.id, new Tab(tab, this));\n\n if (tab.isOpen) {\n this.openTab(tab.id);\n this.focusTab(tab.id);\n }\n }\n\n /**\n * Obviamente agrega un tab al listado de tabs\n */\n append(tab: TabType) {\n if (this.getTab(tab.id)) {\n void ApiaUtil.instance.dialogs\n .confirm({\n children: getLabel('msgTabIsOpen').text,\n title: getLabel('titMsgWarning').text,\n })\n .then((hasConfirmed) => {\n if (hasConfirmed)\n this.#innerAppend({\n ...tab,\n id: `${tab.id}_${uniqueId()}`,\n additionalProps: tab.additionalProps ?? {},\n } as TabType);\n });\n } else this.#innerAppend(tab);\n }\n\n async closeAll(closeFixedTabsAsWell = false, force = false) {\n for (const tab of this.tabsList) {\n if (!tab.state.isFixed || closeFixedTabsAsWell) {\n tab.close(force);\n }\n }\n }\n\n closeOpenTab(force?: boolean) {\n const openTab = this.activeTab;\n openTab?.close(force);\n }\n\n async closeToRight(targetId: string, force?: boolean) {\n const tabsList = this.tabsList;\n const startIndex = tabsList.findIndex((c) => c.state.id === targetId);\n\n if (startIndex >= 0) {\n for (let i = startIndex + 1; i < tabsList.length; i++) {\n tabsList[i].close(force);\n }\n }\n }\n\n async closeToLeft(targetId: string, force?: boolean) {\n const tabsList = this.tabsList;\n const startIndex = tabsList.findIndex((c) => c.state.id === targetId);\n\n if (startIndex >= 0) {\n for (let i = startIndex - 1; i >= 0; i--) {\n await tabsList[i].close(force);\n }\n }\n }\n\n async closeOthers(targetId: string, force?: boolean) {\n for await (const tab of this.tabsList) {\n if (tab.state.id !== targetId) {\n await tab.close(force);\n }\n }\n }\n\n async closeTab(tabId: string, force = false) {\n const tab = this.getTab(tabId);\n const tabProps = tab?.state;\n\n if (tab && tabProps) {\n if (!tabProps.isClosable && !force) return false;\n\n const { onBeforeClose } = tabProps;\n if (onBeforeClose) {\n const canClose = await onBeforeClose();\n const message =\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\n if (message !== true && !force) {\n const hasConfirmed = await ApiaUtil.instance.dialogs.confirm({\n children: message,\n title: getLabel('lbl_atention').text,\n });\n if (!hasConfirmed) return false;\n }\n }\n\n this.state.openTabs.delete(tab);\n this.getActiveTab().open();\n this.state.tabs.delete(tab.id);\n\n this.props?.onCloseTab?.(tab);\n }\n return true;\n }\n\n focusNextTab() {\n const tabsList = this.tabsList;\n const focusedIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (focusedIndex === tabsList.length - 1 || focusedIndex === -1)\n return null;\n\n const newFocusIndex: number = focusedIndex + 1;\n this.focusTab(tabsList[newFocusIndex].id);\n\n return tabsList[newFocusIndex];\n }\n\n focusPreviousTab() {\n const tabsList = this.tabsList;\n const focusedIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (focusedIndex <= 0) return null;\n\n const newFocusIndex: number = focusedIndex - 1;\n this.focusTab(tabsList[newFocusIndex].id);\n\n return tabsList[newFocusIndex];\n }\n\n focusTab(tabId: string) {\n this.openTab(tabId);\n }\n\n getTabElement(tabId: string) {\n return document.querySelector(`#tabpanel-${this.id}-${tabId}`);\n }\n\n handleKeyDown(ev: React.KeyboardEvent) {\n if (\n !isChild(\n ev.target as HTMLElement,\n (current) => current.id === `tabsList-${this.id}`,\n )\n )\n return;\n\n switch (ev.code) {\n case 'ArrowDown':\n case 'ArrowRight': {\n if (\n (this.props?.orientation === 'horizontal' &&\n ev.code === 'ArrowDown') ||\n (this.props?.orientation === 'vertical' && ev.code === 'ArrowRight')\n )\n return;\n\n this.focusNextTab();\n\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n if (\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\n )\n return;\n\n this.focusPreviousTab();\n\n break;\n }\n case 'Delete': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n if (!this.getTab(tabId)?.state.isClosable) return;\n\n void this.closeTab(tabId);\n }\n break;\n }\n case 'Enter':\n case 'Space': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n this.openTab(tabId);\n }\n\n break;\n }\n case 'End': {\n this.openTab(this.tabsList[this.tabsList.length - 1].id);\n break;\n }\n case 'Home': {\n this.focusTab(this.tabsList[0].id);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n openNextTab() {\n const tabsList = this.tabsList;\n const openIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (openIndex == tabsList.length - 1) return null;\n\n const newOpenIndex: number = openIndex + 1;\n this.openTab(tabsList[newOpenIndex].id);\n\n return tabsList[newOpenIndex];\n }\n\n openPreviousTab() {\n const tabsList = this.tabsList;\n const openIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (openIndex <= 0) return null;\n\n const newOpenIndex: number = openIndex - 1;\n this.openTab(tabsList[newOpenIndex].id);\n\n return tabsList[newOpenIndex];\n }\n\n /**\n * Se utiliza para hacer que el tab aparezca visible en el listado\n */\n openTab(tabId: string) {\n const tab = this.getTab(tabId);\n if (!tab) {\n console.warn(`There is no tab with such id: ${tabId}`);\n } else {\n try {\n this.state.tabs.forEach((c) => {\n c.state.isOpen = false;\n });\n } catch (e) {\n e; // No hay ningún tab abierto, no me importa\n }\n tab.state.isOpen = true;\n tab.state.onFocus?.(tab);\n if (this.state.openTabs.has(tab)) {\n this.state.openTabs.delete(tab);\n }\n this.state.openTabs.add(tab);\n }\n }\n}\n","import { useDeferredValue } from 'react';\nimport { Box, BoxProps, Spinner, getVariant } from '@apia/theme';\nimport { useTabsContext } from './util';\nimport { observer } from 'mobx-react-lite';\nimport { Tab } from './tabsController';\n\nconst InnerRenderer = observer(({ tab }: { tab: Tab }) => {\n const state = tab.state;\n const Render = useDeferredValue(state.content);\n\n return (\n <Box\n aria-hidden={!state.isOpen}\n aria-labelledby={`tab-${tab.controller.id}-${state.id}`}\n className={`tabs__content ${state.isOpen ? 'open' : ''}`}\n data-id={state.id}\n id={`tabpanel-${tab.controller.id}-${state.id}`}\n key={state.id}\n role=\"tabpanel\"\n >\n <Render tab={tab} />\n {state.isLoading && (\n <Box className=\"tabs__content__spinner__wrapper\">\n <Spinner />\n </Box>\n )}\n </Box>\n );\n});\n\nexport const TabsContent = observer((props: Omit<BoxProps, 'children'>) => {\n const controller = useTabsContext();\n\n if (!controller) return null;\n\n return (\n <Box\n className=\"tabs__content__wrapper\"\n {...getVariant('layout.common.tabs.primary.content')}\n {...props}\n >\n {controller.tabsList.map((tab) => {\n return <InnerRenderer tab={tab} key={tab.id} />;\n })}\n </Box>\n );\n});\n","import React from 'react';\nimport { Box, BoxProps } from '@apia/theme';\nimport TabsController from './tabsController';\nimport { TabsContext } from './util';\nimport { useMount } from '@apia/util';\nimport { TTab, TabsControllerProps } from './types';\n\nconst NonForwardedTabs = (\n {\n id,\n getController,\n initialTabs,\n orientation,\n ...props\n }: TabsControllerProps<TTab> & Omit<BoxProps, 'id' | 'as' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [handler, setHandler] = React.useState<TabsController | null>(null);\n\n useMount(() => {\n const newHandler = new TabsController(String(id), {\n initialTabs,\n orientation: orientation || 'horizontal',\n });\n setHandler(newHandler);\n getController?.(newHandler);\n });\n\n if (!handler) return null;\n\n return (\n <TabsContext.Provider value={handler}>\n <Box\n {...props}\n onKeyDown={(ev: React.KeyboardEvent<HTMLDivElement>) => {\n handler.handleKeyDown(ev);\n }}\n ref={ref}\n />\n </TabsContext.Provider>\n );\n};\n\nexport const Tabs = React.forwardRef<\n HTMLDivElement,\n TabsControllerProps<TTab> & Omit<BoxProps, 'id' | 'as' | 'role'>\n>(NonForwardedTabs) as unknown as typeof NonForwardedTabs;\n","import { TId } from '@apia/util';\nimport { getTabContainer } from './util';\nimport { TabsController } from '../../../tabs';\n\nexport class ApiaUtilTabsController {\n get currentTab() {\n try {\n return getTabContainer().getHandler().getActiveTab();\n } catch (e) {\n e;\n }\n const i = new TabsController('1', { orientation: 'horizontal' });\n i.append({\n content: () => null,\n id: '1',\n label: '',\n tabId: '1',\n });\n return i.getTab('1')!;\n }\n\n closeTab(tabId: string, force?: boolean) {\n const tabContainer = getTabContainer();\n if (tabContainer !== null) {\n tabContainer.getTab(tabId)?.close(force);\n return;\n }\n }\n\n getHandler() {\n return getTabContainer()?.getHandler();\n }\n\n /**\n * openApiaTab y openTab son sinónimos.\n */\n openTab(title: string, url: string): Promise<TId> {\n const tabContainer = getTabContainer();\n if (tabContainer !== null) {\n return tabContainer.addNewTab(title, url);\n }\n\n return new Promise((resolve) => resolve(''));\n }\n}\n","import React, { ComponentType, FC, Suspense, lazy } from 'react';\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 const Calendar = lazy(\n () =>\n import('react-calendar') as unknown as Promise<{\n default: ComponentType<any>;\n }>,\n );\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 <Suspense fallback={null}>\n <Calendar\n onClickDay={handleClickDay}\n locale={locale}\n value={calValue ?? new Date()}\n nextLabel=\"›\"\n next2Label=\"»\"\n prevLabel=\"‹\"\n prev2Label=\"«\"\n />\n </Suspense>\n </Modal>\n );\n },\n);\n\nCalendarModal.displayName = 'CalendarModal';\n","import { getVariant } from '@apia/theme';\nimport * as React from 'react';\nimport { Box } from '@apia/theme';\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 { TIconType } from '@apia/icons';\nimport {\n getVariant,\n spacing,\n Box,\n Button,\n ButtonProps,\n Spinner,\n ThemeUICSSObject,\n ThemeUIStyleObject,\n} from '@apia/theme';\nimport * as React from 'react';\n\nexport interface ISimpleButton extends ButtonProps {\n buttonSx?: ThemeUICSSObject;\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 svg: {\n flexShrink: 0,\n path: {\n fill: 'currentColor',\n },\n },\n\n '.toggled': {\n backgroundColor: 'primary',\n },\n\n '.button__content': {\n overflowWrap: 'break-word',\n },\n\n /* PREPEND HERE */\n};\n\nexport const SimpleButton = React.forwardRef(\n (\n {\n buttonSx,\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 sx,\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 alignItems: 'center',\n justifyContent: '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 {...buttonProps}\n sx={{ ...simpleButton, ...buttonSx, ...sx }}\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 { Box, getVariant } from '@apia/theme';\nimport { IConfirm } from '../../dialogs';\nimport { getLabel } from '@apia/util';\nimport { MouseEvent, useCallback } from 'react';\nimport { DialogButtonBar } from './DialogButtonBar';\nimport { SimpleButton } from '../../forms/buttons/SimpleButton';\nimport { useModalContext } from '../ModalContext';\n\nexport const Confirm = ({\n children,\n additionalButtons,\n additionalButtonsOnRight,\n cancelButtonText: cancelText = getLabel('btnCan').text,\n className,\n confirmButtonText: confirmText = getLabel('btnCon').text,\n confirmButtonVariant = 'primary',\n contentRef,\n disabled,\n hideCancelButton,\n hideConfirmButton,\n isLoading,\n onCancel,\n onConfirm,\n variant,\n}: Omit<IConfirm, 'title'>) => {\n const { descriptionId } = useModalContext();\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={useCallback(\n (ev: MouseEvent) => {\n if ((ev.target as HTMLElement).closest('button')) onCancel?.();\n },\n [onCancel],\n )}\n >\n {additionalButtons}\n </Box>\n\n <Box className=\"confirm__defaultButtons\">\n <Box\n className=\"confirm__customButtonsOnRight\"\n onClick={useCallback(\n (ev: MouseEvent) => {\n if ((ev.target as HTMLElement).closest('button')) onCancel?.();\n },\n [onCancel],\n )}\n >\n {additionalButtonsOnRight}\n </Box>\n {!hideConfirmButton && (\n <SimpleButton\n onClick={onConfirm}\n title={confirmText}\n variant={confirmButtonVariant}\n disabled={isLoading ?? disabled}\n isLoading={isLoading}\n className=\"confirm__confirmButton\"\n type=\"submit\"\n >\n {confirmText}\n </SimpleButton>\n )}\n {onCancel && !hideCancelButton && (\n <SimpleButton\n onClick={onCancel}\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","import { Modal, useModal } from '../modals';\nimport { TApiaButtonType } from '../types';\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\nimport { Confirm } from '../modals/layout/Confirm';\n\nexport interface IConfirm {\n additionalButtons?: ReactNode;\n additionalButtonsOnRight?: ReactNode;\n cancelButtonText?: string;\n children: ReactNode;\n className?: string;\n confirmButtonText?: string;\n confirmButtonVariant?: TApiaButtonType;\n contentRef?: Ref<HTMLDivElement>;\n disabled?: boolean;\n hideCancelButton?: boolean;\n hideConfirmButton?: boolean;\n isLoading?: boolean;\n onConfirm?: () => unknown;\n onCancel?: () => unknown;\n title?: string;\n variant?: string;\n}\n\nexport const ConfirmModal = ({\n onConfirm,\n onCancel,\n title,\n ...props\n}: IConfirm): JSX.Element => {\n const hasConfirmed = useRef(false);\n\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: () => {\n if (hasConfirmed.current) onConfirm?.();\n else onCancel?.();\n },\n });\n\n const handleCancel = useCallback(() => {\n hide();\n }, [hide]);\n\n const handleConfirm = useCallback(() => {\n hasConfirmed.current = true;\n hide();\n }, [hide]);\n\n return (\n <Modal\n {...modalProps}\n initialFocusGetter={useCallback(\n (current: HTMLElement) =>\n current.querySelector<HTMLElement>('.confirm__confirmButton'),\n [],\n )}\n title={title}\n >\n <Confirm {...props} onCancel={handleCancel} onConfirm={handleConfirm} />\n </Modal>\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { Confirm, Modal, useModal } from '../modals';\n\nexport interface IAlert {\n children: React.ReactNode;\n onClose: () => void;\n title?: string;\n}\n\nexport const AlertModal = ({ children, onClose, title }: IAlert) => {\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: onClose,\n });\n\n return (\n <Modal\n {...modalProps}\n sx={useMemo(\n () => ({\n '.modal__content .confirm__content': {\n overflow: 'visible',\n },\n }),\n [],\n )}\n initialFocusGetter={useCallback((ref: HTMLElement) => {\n return ref?.querySelector('.confirm__confirmButton') as HTMLElement;\n }, [])}\n title={title}\n >\n <Confirm\n onConfirm={useCallback(() => {\n hide();\n }, [hide])}\n >\n {children}\n </Confirm>\n </Modal>\n );\n};\n","import { EventEmitter, useMount } from '@apia/util';\nimport { ReactNode, useCallback, useState } from 'react';\nimport {\n ConfirmModal,\n IConfirm,\n} from '../../../components/dialogs/ConfirmModal';\nimport { AlertModal } from '../../../components/dialogs/AlertModal';\n\ntype TApiaUtilConfirm = Pick<\n IConfirm,\n | 'additionalButtons'\n | 'additionalButtonsOnRight'\n | 'cancelButtonText'\n | 'children'\n | 'className'\n | 'confirmButtonText'\n | 'confirmButtonVariant'\n | 'contentRef'\n | 'hideCancelButton'\n | 'hideConfirmButton'\n | 'title'\n | 'variant'\n>;\n\ntype TApiaUtilInnerConfirm = TApiaUtilConfirm & { id: string } & Pick<\n IConfirm,\n 'onCancel' | 'onConfirm'\n >;\n\ntype TAlert = {\n children: ReactNode;\n title: string;\n};\n\ntype TApiaUtilInnerAlert = TAlert & { onClose: () => unknown; id: string };\n\nexport class ApiaUtilDialogs {\n #emitter = new EventEmitter<{\n alert: TApiaUtilInnerAlert;\n confirm: TApiaUtilInnerConfirm;\n }>();\n #maxIdAlert = 0;\n #maxIdConfirm = 0;\n\n alert(props: TAlert): Promise<void> {\n return new Promise((resolve) => {\n this.#emitter.emit('alert', {\n ...props,\n onClose: () => resolve(),\n id: `confirm${this.#maxIdAlert++}`,\n });\n });\n }\n\n confirm(props: TApiaUtilConfirm): Promise<boolean> {\n return new Promise((resolve) => {\n this.#emitter.emit('confirm', {\n ...props,\n id: `confirm${this.#maxIdConfirm++}`,\n onCancel: () => resolve(false),\n onConfirm: () => resolve(true),\n });\n });\n }\n\n Component = () => {\n const [confirmDialogs, setConfirmDialogs] = useState<\n TApiaUtilInnerConfirm[]\n >([]);\n const [alertsDialogs, setAlertsDialogs] = useState<TApiaUtilInnerAlert[]>(\n [],\n );\n\n useMount(() => {\n const unsuscribe1 = this.#emitter.on('alert', (ev) => {\n setAlertsDialogs((current) => [...current, ev]);\n });\n const unsuscribe2 = this.#emitter.on('confirm', (ev) => {\n setConfirmDialogs((current) => [...current, ev]);\n });\n\n return () => {\n unsuscribe1();\n unsuscribe2();\n };\n });\n\n const removeModal = useCallback(\n (which: TApiaUtilConfirm & { id: string }) => {\n setConfirmDialogs((current) =>\n current.filter((search) => search !== which),\n );\n },\n [],\n );\n\n return (\n <>\n {alertsDialogs.map((current) => (\n <AlertModal {...current} key={current.id} />\n ))}\n {confirmDialogs.map((current) => (\n <ConfirmModal\n {...current}\n key={current.id}\n onCancel={() => {\n removeModal(current);\n current.onCancel?.();\n }}\n onConfirm={() => {\n removeModal(current);\n current.onConfirm?.();\n }}\n />\n ))}\n </>\n );\n };\n}\n","function 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\n/* \nfunction parseNumberInputValueToNumber(value: string): number {\n return Number.parseFloat(\n value.replaceAll(thousandsSeparator, '').replaceAll(decimalSeparator, '.'),\n );\n}\n\nfunction 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 parseStringToApiaNumber(\n `${isNegative ? '-' : ''}${integer}${decimalsString}`,\n ) ?? ''\n );\n} */\n\nexport function parseStringToApiaNumber(value: string): 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 = result[3]?.slice(0, decimalCount + 1) ?? '';\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\n const decimalsString: string = `${noZeroDecimals}${fillZeros(\n decimalZeros - noZeroDecimals.length,\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","import { parseStringToApiaNumber } from './parseStringToApiaNumber';\n\nconst delimiters = [',', ';', '\\t', '|'];\nexport class ApiaUtilParsers {\n /**\n * Toma un número sin separadores de miles y lo devuelve en el formato\n * establecido por los parámetros de Apia para separadores de miles y\n * separadores de decimales.\n */\n addThousSeparator(nStr: string | number): string {\n // Apia Original Function\n let str = String(nStr);\n str += '';\n const x =\n window.CHAR_DECIMAL_SEPARATOR && str.split(window.CHAR_DECIMAL_SEPARATOR);\n let x1 = x?.[0];\n const x2 =\n x && x.length > 1 && window.CHAR_DECIMAL_SEPARATOR\n ? `${window.CHAR_DECIMAL_SEPARATOR}${x[1]}`\n : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (x1 && rgx.test(x1)) {\n x1 =\n x1 &&\n window.CHAR_THOUS_SEPARATOR &&\n x1.replace(rgx, `$1${window.CHAR_THOUS_SEPARATOR}$2`);\n }\n return x1 ? `${x1}${x2}` : String(nStr);\n }\n\n #parseString(value: string): string {\n return parseStringToApiaNumber(value) || '';\n }\n\n /**\n * Toma un número y lo devuelve formateado con los parámetros de Apia\n */\n apiaNumber(pValue: number): number | string;\n /**\n * Toma una cadena de caracteres y lo parsea en el formato de Apia.\n * Esta cadena de caracteres podría venir por ejemplo de un evento\n * onChange en un campo de tipo input.\n */\n apiaNumber(pValue: string): string;\n apiaNumber(pValue: string | number): number | string {\n if (typeof pValue === 'string') {\n return this.#parseString(pValue);\n }\n // Apia Classic Original Function\n let value = '';\n try {\n value = pValue.toFixed(parseInt(window.AMOUNT_DECIMAL_SEPARATOR, 10));\n } catch (e) {\n console.error(e);\n }\n let s = value;\n if (!s.includes('.')) {\n if (window.ADD_THOUSAND_SEPARATOR) {\n s = this.addThousSeparator(s);\n }\n return s;\n }\n if (window.ADD_THOUSAND_SEPARATOR) {\n s = this.addThousSeparator(s.replace('.', window.CHAR_DECIMAL_SEPARATOR));\n } else {\n s = s.replace('.', window.CHAR_DECIMAL_SEPARATOR);\n }\n const int = s.split(window.CHAR_DECIMAL_SEPARATOR)[0];\n let decimals: string = s.split(window.CHAR_DECIMAL_SEPARATOR)[1];\n let decCount: number = decimals.length - 1;\n while (\n decCount >= parseInt(window.AMOUNT_DECIMAL_ZEROS, 10) &&\n decimals.charAt(decCount) === '0'\n ) {\n decimals = decimals.substring(0, decCount);\n decCount -= 1;\n }\n return (\n int +\n (decimals || decimals === '0'\n ? window.CHAR_DECIMAL_SEPARATOR + decimals\n : '')\n );\n }\n\n /**\n * Toma un número en formato Apia y lo devuelve como float en javascript.\n */\n jsNumber(value: string): number {\n // Apia Classic Original Function\n let re;\n if (window.CHAR_THOUS_SEPARATOR === '.')\n re = new RegExp(`\\\\${window.CHAR_THOUS_SEPARATOR}`, 'g');\n else\n re =\n window.CHAR_THOUS_SEPARATOR &&\n new RegExp(window.CHAR_THOUS_SEPARATOR, 'g');\n let aux = re && value.replace(re, '');\n aux =\n aux &&\n window.CHAR_DECIMAL_SEPARATOR &&\n aux.replace(window.CHAR_DECIMAL_SEPARATOR, '.');\n\n if (typeof aux !== 'string') {\n return parseFloat(value);\n }\n return aux ? parseFloat(aux) : parseFloat(value);\n }\n\n /**\n * Hay muchos valores que podrían querer ser interpretados como booleano\n *\n * Devuelve true si el valor coincide con true|T|t|1 y false si coincide con\n * false|F|f|0. Si no coincide con ninguna de éstas hace throw de un error.\n */\n parseBool(val: string): boolean {\n if (/^(?:true|T|t|1)$/i.test(val)) return true;\n if (/^(?:false|F|f|0)$/i.test(val)) return false;\n throw new Error('Property/Value is a boolean, try using true or false');\n }\n\n /**\n * Toma una estructura bidimensional y la convierte a csv, usando el método\n * String(...) sobre cada celda de datos.\n */\n toCsv(data: any[][], delimiter = ',') {\n return data.map((c) => c.map((d) => String(d)).join(delimiter)).join('\\n');\n }\n\n /**\n * Inspecciona las primeras filas de un array de strings, en búsqueda del mejor delimitador\n * para convertir esos strings a array de datos, que serán el resultado de haber interpretado\n * un documento CSV.\n */\n #findDelimiter(rows: string[]) {\n const maxColsByDelimiter: Record<string, number> = {};\n\n for (const delimiter of delimiters) {\n const headCols = rows[0].split(delimiter).length;\n\n let allTrue = true;\n for (let i = 1; i < Math.min(30, rows.length) && allTrue; i++) {\n allTrue = allTrue && headCols === rows[i].split(delimiter).length;\n }\n\n if (allTrue) {\n maxColsByDelimiter[delimiter] = headCols;\n }\n }\n\n let max = 0;\n let bestDelimiter: string | null = null;\n\n Object.entries(maxColsByDelimiter).forEach(([delimiter, count]) => {\n if (count > max) {\n max = count;\n bestDelimiter = delimiter;\n }\n });\n\n if (bestDelimiter !== null) {\n return bestDelimiter as string;\n }\n\n throw new Error(\n `Cannot determine delimiter, it's none of: ${delimiters.join(', ')}`,\n );\n }\n\n #parseCellValue(cellValue: string) {\n return cellValue.match(/^\\s*\"?([^\"]+)\"?[\\s\\r\\n]*$/)?.[1] ?? cellValue;\n }\n\n /**\n * Convierte un string a array de arrays, parseándolo en formato CSV, encontrando el delimitador en forma automática.\n */\n fromCsv(data: string): string[][] {\n const rows = data.split(/\\r?\\n\\r?/).filter((row) => !row.match(/^\\s*$/));\n const delimiter = this.#findDelimiter(rows);\n\n return rows.map((c) => {\n const a = c.split(delimiter);\n if (a[0][a[0].length - 1] === '') {\n a.pop();\n }\n return a.map((d) => this.#parseCellValue(d));\n });\n }\n}\n","import { TTooltip } from './tooltip';\n\nlet maxId = 0;\n\nexport class ApiaUtilTooltip {\n id = `tooltip__${maxId++}`;\n\n constructor(\n public props: TTooltip,\n public close: () => void,\n ) {}\n}\n","import { ApiaUtilTooltip } from './ApiaUtilTooltip';\nimport type { ApiaUtilTooltips } from './ApiaUtilTooltips';\nimport { TTooltip } from './tooltip';\n\nlet y = 0,\n x = 0;\ndocument?.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport class AutomaticTooltip {\n #timeout = 500;\n #tooltipTimeout = 0;\n #unsuscribe: (() => void) | null = null;\n #tooltipController: ApiaUtilTooltip | null = null;\n\n ref = (el: HTMLElement | null) => {\n this.#unsuscribe?.();\n\n const listener = () => {\n clearTimeout(this.#tooltipTimeout);\n\n this.#tooltipTimeout = setTimeout(() => {\n if (this.#tooltip?.children)\n this.#tooltipController = this.handler.open({\n closeOnMouseLeaveTooltip: true,\n closeOnEscape: true,\n closeOnScrollOut: true,\n ...this.#tooltip,\n anchorPoint: { left: x + 3, top: y + 3 },\n });\n }, this.#timeout) as unknown as number;\n };\n\n const reset = () => {\n clearTimeout(this.#tooltipTimeout);\n if (this.#tooltip?.closeOnMouseLeaveAttachedElement) {\n this.#tooltipController?.close();\n }\n };\n\n if (el) {\n el.addEventListener('mousemove', listener);\n el.addEventListener('mouseleave', reset);\n\n this.#unsuscribe = () => {\n el.removeEventListener('mousemove', listener);\n el.removeEventListener('mouseleave', reset);\n };\n } else {\n this.#unsuscribe?.();\n reset();\n }\n };\n\n #tooltip: Partial<TTooltip> | null = null;\n\n constructor(\n tooltip: (Partial<TTooltip> & { timeout?: number }) | null = null,\n private handler: ApiaUtilTooltips,\n ) {\n this.#tooltip = tooltip;\n if (tooltip?.timeout !== undefined) {\n this.#timeout = tooltip?.timeout;\n }\n }\n\n update = (tooltip: Partial<TTooltip>) => {\n this.#tooltip = tooltip;\n };\n}\n","import { isChild } from '@apia/util';\nimport { TAttachToElement, TPosition, TTooltip } from './types';\nimport { ThemeUICSSObject } from '@apia/theme';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nexport function isAttachToElementAFunction(\n attachToElement: TAttachToElement,\n): attachToElement is () => HTMLElement {\n return (\n attachToElement instanceof Function &&\n getParamNames(attachToElement).length === 0\n );\n}\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\nlet x = 0;\nlet y = 0;\ndocument.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport function calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize = { height: 'auto', width: 'auto' },\n}: Pick<\n TTooltip,\n | 'anchorPoint'\n | 'attachToElement'\n | 'attachToElementAnchorPoint'\n | 'attachToMousePosition'\n | 'minSize'\n | 'preferredOrientationX'\n | 'preferredOrientationY'\n | 'preferredSize'\n>): ThemeUICSSObject {\n let actualAnchorPoint = anchorPoint;\n\n if (attachToMousePosition) {\n actualAnchorPoint = {\n left: x + 3,\n top: y + 3,\n };\n }\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 onClose,\n}: Pick<\n TTooltip,\n | 'attachToElement'\n | 'closeOnClick'\n | 'closeOnClickOut'\n | 'closeOnEscape'\n | 'closeOnMouseLeaveTooltip'\n | 'closeOnMouseLeaveAttachedElement'\n | 'closeOnScrollOut'\n | 'onClose'\n>) {\n const hasInited = useRef(false);\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n useEffect(() => {\n function handleEscape(ev: KeyboardEvent) {\n if (ev.code === 'Escape' && closeOnEscape !== false) {\n close();\n }\n }\n function handleMouseDownOut(ev: MouseEvent) {\n if (!hasInited.current) return;\n\n const actuallyCloseOnClickOut =\n (closeOnClickOut instanceof Function\n ? closeOnClickOut(ev)\n : closeOnClickOut) === true;\n\n if (\n actuallyCloseOnClickOut &&\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 const actuallyCloseOnMouseLeaveTooltip =\n closeOnMouseLeaveTooltip instanceof Function\n ? closeOnMouseLeaveTooltip(event)\n : closeOnMouseLeaveTooltip;\n\n const actuallyCloseOnMouseLeaveAttachedElement =\n closeOnMouseLeaveAttachedElement instanceof Function\n ? closeOnMouseLeaveAttachedElement(event)\n : closeOnMouseLeaveAttachedElement;\n\n if (\n !hasInited.current ||\n (!actuallyCloseOnMouseLeaveAttachedElement &&\n !actuallyCloseOnMouseLeaveTooltip)\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 (isTooltipRelated || isAttachedRelated) return;\n if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)\n return;\n if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip) return;\n\n if (isTooltipTheTarget || isAttachedTheTarget) 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('mousedown', handleMouseDownOut);\n document.removeEventListener('scroll', handleScroll);\n document.removeEventListener('mouseout', handleMouseLeave);\n };\n }, [\n attachToElement,\n close,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveAttachedElement,\n closeOnMouseLeaveTooltip,\n closeOnScrollOut,\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 '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { calculateTooltipPosition, useHandlers } from './util';\n\nexport const Tooltip = ({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\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 onClose,\n preferredOrientationX = 'right',\n preferredOrientationY = 'bottom',\n preferredSize = { height: 'auto', width: 'auto' },\n variant = 'layout.common.tooltips.primary',\n closeOthers,\n initialFocusGetter,\n ...dataset\n}: TTooltip) => {\n const calculatedPosition = calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\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 onClose,\n });\n\n return (\n <Box\n {...dataset}\n className={`tooltip__wrapper ${className ?? ''}`}\n {...getVariant(variant)}\n sx={sx}\n onClick={handleOnClick}\n ref={(el) => {\n if (el) {\n initialFocusGetter?.(el)?.focus();\n }\n }}\n >\n {children}\n </Box>\n );\n};\n","import { useMemo, useState } from 'react';\nimport { EventEmitter, useMount, useUnmount } from '@apia/util';\nimport { ApiaUtilTooltip } from './ApiaUtilTooltip';\nimport { AutomaticTooltip } from './AutomaticTooltip';\nimport { TTooltip, Tooltip } from './tooltip';\nimport { FreeFocusInside } from 'react-focus-lock';\n\nexport class ApiaUtilTooltips {\n #emitter = new EventEmitter<{\n changedList: ApiaUtilTooltip[];\n }>();\n tooltips: ApiaUtilTooltip[] = [];\n\n constructor() {\n document.addEventListener('keydown', (ev) => {\n if (\n ev.code === 'Escape' &&\n this.tooltips.find((c) => c.props.closeOnEscape !== false)\n ) {\n ev.stopImmediatePropagation();\n ev.preventDefault();\n\n this.tooltips = this.tooltips.filter(\n (current) => current.props.closeOnEscape === false,\n );\n this.#shoutChangedList();\n }\n });\n }\n\n #shoutChangedList = () => {\n this.#emitter.emit('changedList', [...this.tooltips]);\n };\n\n /**\n * Permite crear un tooltip que se abrirá automáticamente al estar parado\n * sobre un elemento durante 300ms\n */\n useHover = (tooltip?: Partial<TTooltip> & { timeout?: number }) => {\n let tt: AutomaticTooltip | undefined = undefined;\n\n tt = useMemo(() => {\n tt?.ref(null);\n return new AutomaticTooltip(tooltip ?? null, this);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tooltip]);\n\n useUnmount(() => {\n tt?.ref(null);\n });\n\n return tt;\n };\n\n close = (id: string) => {\n this.tooltips = this.tooltips.filter((current) => current.id !== id);\n this.#shoutChangedList();\n };\n\n closeAll = () => {\n this.tooltips = [];\n this.#shoutChangedList();\n };\n\n open = (tooltip: TTooltip) => {\n const controller = new ApiaUtilTooltip(tooltip, () => {\n this.close(controller.id);\n controller.props.onClose?.();\n });\n\n if (tooltip.closeOthers !== false) {\n this.tooltips = [controller];\n } else {\n this.tooltips = [...this.tooltips, controller];\n }\n this.#shoutChangedList();\n\n return controller;\n };\n\n Component = () => {\n const [tooltips, setTooltips] = useState<ApiaUtilTooltip[]>(this.tooltips);\n\n useMount(() => {\n const unsuscribeToList = this.#emitter.on('changedList', (ev) => {\n setTooltips(ev);\n });\n\n return () => {\n unsuscribeToList();\n };\n });\n\n return (\n <FreeFocusInside sx={{ position: 'relative', zIndex: 'tooltip' }}>\n {tooltips.map((current) => (\n <Tooltip\n {...current.props}\n onClose={() => {\n current.close();\n }}\n key={current.id}\n />\n ))}\n </FreeFocusInside>\n );\n };\n}\n","import { EventEmitter, useMount } from '@apia/util';\nimport {\n ControlledMenu,\n MenuItem,\n MenuItemProps,\n ControlledMenuProps,\n MenuDivider,\n SubMenu,\n} from '@szhsin/react-menu';\nimport { useCallback, useState } from 'react';\nimport { FreeFocusInside } from 'react-focus-lock';\n\nexport type TSubmenu = { label: string; items: TMenuItems };\n\nexport type TMenuItem =\n | (MenuItemProps & { key: string })\n | 'separator'\n | TSubmenu;\n\nexport type TMenuItems = TMenuItem[];\n\nfunction isSubmenu(item: TMenuItem): item is TSubmenu {\n return Array.isArray((item as TSubmenu).items);\n}\n\nexport class ApiaUtilMenu {\n #emitter = new EventEmitter<{ toggle: boolean }>();\n #items: TMenuItems = [];\n menuProps: ControlledMenuProps | null = null;\n\n #hooks = {\n useIsOpen: (): [boolean, () => void] => {\n const [isOpen, setIsOpen] = useState(false);\n\n useMount(() => {\n return this.#emitter.on('toggle', setIsOpen);\n });\n\n return [\n isOpen,\n useCallback(() => {\n setIsOpen(false);\n }, []),\n ];\n },\n };\n\n close = () => {\n this.#emitter.emit('toggle', false);\n };\n\n open = ({\n menuProps,\n items,\n }: {\n menuProps: ControlledMenuProps;\n items: TMenuItems;\n }) => {\n this.#items = items;\n this.menuProps = menuProps;\n\n this.#emitter.emit('toggle', true);\n };\n\n #maxId = 0;\n\n #RenderMenu = (submenu: TSubmenu) => {\n return (\n <>\n {submenu.items.map((current, i) => {\n if (current === 'separator')\n return <MenuDivider key={`separator${i}`} />;\n\n if (isSubmenu(current)) {\n return (\n <SubMenu label={current.label} key={`submenu${this.#maxId++}`}>\n {this.#RenderMenu(current)}\n </SubMenu>\n );\n }\n\n return <MenuItem {...current} key={current.key} />;\n })}\n </>\n );\n };\n\n Component = () => {\n const [isOpen, close] = this.#hooks.useIsOpen();\n\n if (!isOpen) return null;\n\n return (\n <FreeFocusInside>\n <ControlledMenu\n {...this.menuProps}\n state={isOpen ? 'open' : 'closed'}\n onClose={(ev) => {\n close();\n this.menuProps?.onClose?.(ev);\n }}\n >\n {this.#RenderMenu({ label: '', items: this.#items })}\n </ControlledMenu>\n </FreeFocusInside>\n );\n };\n}\n","import { EventEmitter } from '@apia/util';\n\nexport class ApiaUtilMouse extends EventEmitter<{\n updatePosition: { x: number; y: number };\n}> {\n x = 0;\n y = 0;\n\n get position() {\n return { x: this.x, y: this.y };\n }\n\n constructor() {\n super();\n\n document.addEventListener('mousemove', (ev) => {\n this.x = ev.clientX;\n this.y = ev.clientY;\n\n this.emit('updatePosition', { x: this.x, y: this.y });\n });\n }\n}\n","import { ApiaUtilModals } from './modals/ApiaUtilModals';\nimport { ApiaUtilNotifications } from './notifications/ApiaUtilNotifications';\nimport { ApiaUtilTabsController } from './tabs/ApiaUtilTabsController';\nimport { ApiaUtilDialogs } from './dialogs/ApiaUtilDialogs';\nimport { ApiaUtilParsers } from './parsers/ApiaUtilParsers';\nimport { ApiaUtilTooltips } from './tooltips/ApiaUtilTooltips';\nimport { ApiaUtilMenu } from './menu/ApiaUtilMenu';\nimport { ApiaUtilMouse } from './mouse/ApiaUtilMouse';\n\nexport class ApiaUtil {\n static #instance: ApiaUtil;\n public static get instance() {\n if (!this.#instance) {\n this.#instance = new ApiaUtil();\n }\n\n return this.#instance;\n }\n\n private constructor() {\n this.dialogs = new ApiaUtilDialogs();\n this.menu = new ApiaUtilMenu();\n this.modals = new ApiaUtilModals();\n this.mouse = new ApiaUtilMouse();\n this.notifications = new ApiaUtilNotifications();\n this.parsers = new ApiaUtilParsers();\n this.tabs = new ApiaUtilTabsController();\n this.tooltips = new ApiaUtilTooltips();\n }\n\n dialogs: ApiaUtilDialogs;\n menu: ApiaUtilMenu;\n modals: ApiaUtilModals;\n mouse: ApiaUtilMouse;\n notifications: ApiaUtilNotifications;\n parsers: ApiaUtilParsers;\n tabs: ApiaUtilTabsController;\n tooltips: ApiaUtilTooltips;\n\n Component = () => {\n return (\n <>\n <this.dialogs.Component />\n <this.modals.Component />\n <this.notifications.Component />\n <this.tooltips.Component />\n <this.menu.Component />\n </>\n );\n };\n}\n","import { CSSProperties } from '@apia/theme';\r\nimport { StatefulEmitter } from '@apia/util';\r\n\r\ntype LockTypes = 'linear' | 'white' | 'common';\r\ntype Lock = {\r\n count: number;\r\n};\r\ntype LockOptions = Partial<{\r\n type: LockTypes;\r\n}>;\r\n\r\nexport class ScreenLocker {\r\n protected emitter = new StatefulEmitter<{\r\n locks: Record<LockTypes, Lock>;\r\n release: true;\r\n }>({\r\n locks: {\r\n common: { count: 0 },\r\n linear: { count: 0 },\r\n white: { count: 1 },\r\n },\r\n });\r\n\r\n lock = (options?: LockOptions) => {\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) + 1 },\r\n };\r\n });\r\n\r\n return () =>\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n };\r\n\r\n protected hasReleased = false;\r\n /**\r\n * This method will work once, then, the action will be ignored. The ScreenLocker starts always locked on white, when this method is called, all listeners of onRelease will be called and the lock will be released.\r\n */\r\n release = () => {\r\n if (this.hasReleased) return;\r\n this.hasReleased = true;\r\n\r\n this.emitter.setState('locks', (s) => {\r\n const key = 'white';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n this.emitter.emit('release', true);\r\n };\r\n\r\n /**\r\n * This method notifies when the screenLock is released by the first time.\r\n */\r\n onRelease = this.emitter.on.bind(this.emitter, 'release');\r\n\r\n /**\r\n * This component is the responsible for putting the lock courtain in the browser when it's required. It must be used once per application.\r\n */\r\n Component = () => {\r\n const locks = this.emitter.useState('locks');\r\n\r\n const style: CSSProperties = {\r\n alignItems: 'center',\r\n display: 'flex',\r\n inset: 0,\r\n justifyContent: 'center',\r\n position: 'fixed',\r\n };\r\n\r\n if (locks.white.count) {\r\n return (\r\n <div\r\n style={{\r\n ...style,\r\n background: 'white',\r\n }}\r\n >\r\n White\r\n </div>\r\n );\r\n }\r\n\r\n if (locks.linear.count) {\r\n return <div style={style}>Linear</div>;\r\n }\r\n\r\n if (locks.common.count) {\r\n return <div style={style}>Common</div>;\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n","import { createContext, useContext } from 'react';\r\nimport { AutocompleteController } from './store/AutocompleteController';\r\n\r\nexport const AutocompleteContext = createContext<AutocompleteController | null>(\r\n null,\r\n);\r\n\r\nexport function useAutocompleteContext() {\r\n const context = useContext(AutocompleteContext);\r\n\r\n if (!context) throw new Error('There is no AutocompleteContext');\r\n\r\n return context;\r\n}\r\n","import { observer } from 'mobx-react-lite';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { Box } from '@apia/theme';\r\nimport { Fragment } from '@apia/theme/jsx-runtime';\r\n\r\nexport const OptionsBox = observer(() => {\r\n const handler = useAutocompleteContext();\r\n\r\n return (\r\n <Fragment>\r\n {handler.state.options.map((c, i) => {\r\n if (c.filtered) {\r\n return <Fragment key={c.value} />;\r\n } else {\r\n return (\r\n <Box\r\n className={`autocomplete__option ${handler.focusedIndex === i ? 'focused' : ''}`}\r\n key={c.value}\r\n onMouseDown={(ev) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n\r\n handler.setValue(c.value);\r\n handler.close();\r\n\r\n window.requestAnimationFrame(() => {\r\n handler\r\n .getAutocompleteBox()\r\n ?.querySelector<HTMLElement>('input')\r\n ?.focus();\r\n });\r\n }}\r\n data-value={c.value}\r\n >\r\n {c.label}\r\n </Box>\r\n );\r\n }\r\n })}\r\n </Fragment>\r\n );\r\n});\r\n","import { debounce, uniqueId } from 'lodash-es';\r\nimport { makeAutoObservable, reaction } from 'mobx';\r\nimport { ReactNode } from 'react';\r\nimport { ApiaUtil, ApiaUtilTooltip } from '../../../../objects';\r\nimport { AutocompleteContext } from '../Context';\r\nimport { OptionsBox } from '../OptionsBox';\r\n\r\nexport type AutocompleteProps = {\r\n /**\r\n * Si este flag es true, la búsqueda se realiza con .toLowerCase() en el valor y en la cadena de búsqueda.\r\n */\r\n caseInsensitive?: boolean;\r\n onChange?: (value: string, controller: AutocompleteController) => unknown;\r\n /**\r\n * Si se pasa una función de búsqueda, cuando el usuario busque se llamará a esta función para determinar qué opciones deberán mostrarse. Las opciones devueltas deberán tener filtered !== true para mostrarse.\r\n *\r\n * La función de búsqueda será llamada mediante un debounce con tiempo = state.searchDebounce (ms).\r\n *\r\n * Si no se pasa función de búsqueda, la comparación se realizará contra this.state.options, siguiendo el algoritmo descrito en AutocompleteOption.\r\n *\r\n */\r\n onSearch?: (\r\n str: string,\r\n controller: AutocompleteController,\r\n ) => Promise<AutocompleteOption[]>;\r\n options: AutocompleteOption[];\r\n /**\r\n * Por defecto es 100ms.\r\n */\r\n searchDebounce?: number;\r\n} & AutocompleteBoxProps &\r\n Partial<Pick<AutocompleteState, 'disabled' | 'value'>>;\r\n\r\ntype AutocompleteBoxProps = Partial<{\r\n className: string;\r\n id: string;\r\n name: string;\r\n}>;\r\n\r\ntype AutocompleteState = {\r\n disabled: boolean;\r\n focusedValue?: null | string;\r\n loading: boolean;\r\n showValue: string;\r\n value: string;\r\n};\r\n\r\n/**\r\n * El componente buscará dentro de las opciones disponibles cuando el usuario realice una búsqueda en el cuadro de texto. Para ello, compara cada opción contra str según:\r\n *\r\n * Si caseInsensitive===true, la comparación se hará en lowerCase.\r\n *\r\n * Si se pasa searchLabel, se compara contra searchLabel.\r\n * Sino, si label?.toString() está definido, se utiliza label?.toSring().\r\n * Sino, se utiliza value.\r\n *\r\n * Un se mostrará en los resultados si el algoritmo determina que (result_search_label).indexOf(str) !== -1.\r\n */\r\nexport type AutocompleteOption = {\r\n /**\r\n * @private\r\n *\r\n * Se utiliza para determinar si debe mostrarse o no.\r\n */\r\n filtered?: boolean;\r\n label: ReactNode;\r\n /**\r\n * Si se pasa searchLabel, será utilizado en vez de label. Si no se pasa, se hará label.toString() para realizar la búsqueda, que solamente tiene sentido cuando label es un primitivo.\r\n */\r\n searchLabel?: string;\r\n /**\r\n * @default Por defecto toma el valor ''\r\n */\r\n value: string;\r\n};\r\n\r\nexport class AutocompleteController {\r\n state: AutocompleteState & AutocompleteProps = {\r\n disabled: false,\r\n id: uniqueId('autocomplete'),\r\n loading: false,\r\n options: [],\r\n searchDebounce: 100,\r\n showValue: '',\r\n value: '',\r\n };\r\n\r\n constructor(properties: Partial<AutocompleteProps>) {\r\n Object.assign(this.state, properties);\r\n if (properties.value) {\r\n this.state.showValue = properties.value;\r\n this.state.focusedValue = properties.value;\r\n }\r\n\r\n makeAutoObservable(this, {\r\n getAutocompleteBox: false,\r\n getOptionByValue: false,\r\n });\r\n\r\n reaction(\r\n () => this.state.searchDebounce,\r\n () => {\r\n this.#search = this.#makeSearch();\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.focusedValue,\r\n () => {\r\n if (this.state.focusedValue) {\r\n this.getOptionElement(this.state.focusedValue)?.scrollIntoView({\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n }\r\n },\r\n );\r\n }\r\n\r\n get focusedIndex() {\r\n const currentIndex = this.state.options.findIndex(\r\n (c) => c.value === this.state.focusedValue,\r\n );\r\n\r\n if (currentIndex === -1) {\r\n return 0;\r\n }\r\n\r\n return currentIndex;\r\n }\r\n\r\n get isOpen() {\r\n return !!this.getOptionsBox();\r\n }\r\n\r\n close(selectValue = true) {\r\n this.tooltipRef?.close();\r\n this.tooltipRef = null;\r\n this.#actualSearch('');\r\n\r\n if (selectValue) {\r\n let currentValue = this.state.options.find(\r\n (c) => c.value === this.state.focusedValue,\r\n );\r\n if (!currentValue) {\r\n currentValue = this.state.options.find((c) => !c.filtered);\r\n }\r\n\r\n this.setValue(currentValue?.value || '');\r\n }\r\n }\r\n\r\n getAutocompleteBox() {\r\n return document.querySelector<HTMLElement>(\r\n `[data-autocomplete-box=\"${this.state.id!}\"]`,\r\n );\r\n }\r\n\r\n getOptionsBox() {\r\n return document.querySelector<HTMLElement>(\r\n `[data-autocomplete-options=\"${this.state.id!}\"]`,\r\n );\r\n }\r\n\r\n getOptionElement(value: string) {\r\n return this.getOptionsBox()?.querySelector<HTMLElement>(\r\n `.autocomplete__option[data-value=\"${value}\"]`,\r\n );\r\n }\r\n\r\n getOptionByValue(value: string) {\r\n return this.state.options.find((current) => current.value === value);\r\n }\r\n\r\n focusFirst() {\r\n const option = this.state.options.find((c) => !c.filtered);\r\n\r\n if (option) {\r\n if (this.isOpen) {\r\n this.state.focusedValue = option.value;\r\n this.state.showValue = option.label?.toString?.() || option.value;\r\n } else {\r\n this.setValue(option.value);\r\n }\r\n }\r\n }\r\n\r\n focusLast() {\r\n const option = this.state.options.findLast((c) => !c.filtered);\r\n\r\n if (option) {\r\n if (this.isOpen) {\r\n this.state.focusedValue = option.value;\r\n this.state.showValue = option.label?.toString?.() || option.value;\r\n } else {\r\n this.setValue(option.value);\r\n }\r\n }\r\n }\r\n\r\n focusNext(n = 1) {\r\n const option = this.state.options[this.focusedIndex];\r\n if (option) {\r\n let newFocusedOption: AutocompleteOption = option;\r\n\r\n for (let i = this.focusedIndex + 1; i < this.state.options.length; i++) {\r\n if (\r\n !this.state.options[i].filtered &&\r\n (--n === 0 || i === this.state.options.length - 1)\r\n ) {\r\n newFocusedOption = this.state.options[i];\r\n break;\r\n }\r\n }\r\n\r\n if (this.isOpen) {\r\n this.state.focusedValue = newFocusedOption.value;\r\n this.state.showValue =\r\n newFocusedOption.label?.toString?.() || newFocusedOption.value;\r\n } else {\r\n this.setValue(newFocusedOption.value);\r\n }\r\n }\r\n }\r\n\r\n focusPrevious(n = 1) {\r\n const option = this.state.options[this.focusedIndex];\r\n if (option) {\r\n let newFocusedOption: AutocompleteOption = option;\r\n\r\n for (let i = this.focusedIndex - 1; i >= 0; i--) {\r\n if (!this.state.options[i].filtered && (--n === 0 || i === 0)) {\r\n newFocusedOption = this.state.options[i];\r\n break;\r\n }\r\n }\r\n\r\n if (this.isOpen) {\r\n this.state.focusedValue = newFocusedOption.value;\r\n this.state.showValue =\r\n newFocusedOption.label?.toString?.() || newFocusedOption.value;\r\n } else {\r\n this.setValue(newFocusedOption.value);\r\n }\r\n }\r\n }\r\n\r\n open() {\r\n if (this.state.disabled) {\r\n return;\r\n }\r\n\r\n this.tooltipRef = ApiaUtil.instance.tooltips.open({\r\n attachToElement: () => {\r\n return this.getAutocompleteBox()!;\r\n },\r\n closeOnMouseLeaveAttachedElement: false,\r\n closeOnMouseLeaveTooltip: false,\r\n closeOnClick: true,\r\n children: (\r\n <AutocompleteContext.Provider value={this}>\r\n <OptionsBox />\r\n </AutocompleteContext.Provider>\r\n ),\r\n onClose: () => {\r\n this.tooltipRef = null;\r\n this.close();\r\n },\r\n preferredOrientationY: 'bottom',\r\n preferredOrientationX: 'right',\r\n attachToElementAnchorPoint: 'bottomLeft',\r\n variant: 'layout.common.components.autocomplete.optionsContainer',\r\n className: 'autocomplete__options__box',\r\n 'data-autocomplete-options': this.state.id!,\r\n });\r\n }\r\n\r\n toggleOpen() {\r\n if (this.isOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n #actualSearch = (str: string) => {\r\n this.state.options.forEach((c) => {\r\n if (this.state.caseInsensitive) {\r\n c.filtered =\r\n (c.searchLabel ?? c.label?.toString?.() ?? c.value)\r\n .toLowerCase()\r\n .indexOf(str.toLowerCase()) === -1;\r\n } else {\r\n c.filtered =\r\n (c.searchLabel ?? c.label?.toString?.() ?? c.value)?.indexOf(str) ===\r\n -1;\r\n }\r\n\r\n if (this.getOptionByValue(this.state.focusedValue!)?.filtered) {\r\n this.state.focusedValue =\r\n this.state.options.find((c) => !c.filtered)?.value || null;\r\n }\r\n });\r\n };\r\n #makeSearch = () => {\r\n return debounce(this.#actualSearch, this.state.searchDebounce);\r\n };\r\n #search = this.#makeSearch();\r\n search(str: string) {\r\n this.#search(str);\r\n }\r\n\r\n selectFocused() {\r\n this.close();\r\n const newValue = this.state.focusedValue || this.state.options[0]?.value;\r\n\r\n if (newValue) {\r\n this.setValue(newValue);\r\n }\r\n }\r\n\r\n setValue(value: string) {\r\n const selectedOption = this.state.options.find((c) => c.value === value);\r\n\r\n this.state.value = selectedOption?.value || '';\r\n this.state.focusedValue = this.state.value;\r\n this.state.showValue =\r\n selectedOption?.label?.toString?.() || selectedOption?.value || '';\r\n this.state.onChange?.(this.state.value, this);\r\n }\r\n\r\n tooltipRef: ApiaUtilTooltip | null = null;\r\n}\r\n","import { Box, Input, Select, Spinner, useBreakpointIndex } from '@apia/theme';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Icon } from '@apia/icons';\r\n\r\nexport const SearchBox = observer(() => {\r\n const handler = useAutocompleteContext();\r\n const breakpoint = useBreakpointIndex();\r\n\r\n return (\r\n <Box className=\"autocomplete__inputWrapper\">\r\n <input\r\n type=\"hidden\"\r\n name={handler.state.name}\r\n value={handler.state.value}\r\n />\r\n {breakpoint <= 3 ? (\r\n <Select\r\n disabled={handler.state.disabled}\r\n onChange={(ev) => {\r\n handler.setValue(ev.target.value);\r\n }}\r\n >\r\n {handler.state.options.map((c) => (\r\n <option key={c.value} value={c.value}>\r\n {c.label}\r\n </option>\r\n ))}\r\n </Select>\r\n ) : (\r\n <>\r\n <Input\r\n className={`autocomplete__search ${handler.state.disabled ? 'disabled' : ''}`}\r\n onChange={(ev) => {\r\n handler.search(ev.target.value);\r\n handler.state.showValue = ev.target.value;\r\n }}\r\n onMouseDown={() => {\r\n handler.toggleOpen();\r\n }}\r\n onFocus={(ev) => {\r\n ev.target.setSelectionRange(0, ev.target.value.length);\r\n }}\r\n onBlur={() => {\r\n handler.close();\r\n }}\r\n value={handler.state.showValue}\r\n />\r\n <Box className=\"autocomplete__icons\">\r\n {handler.state.loading && (\r\n <Spinner className=\"autocomplete__loadingSpinner\" />\r\n )}\r\n <Icon\r\n title=\"\"\r\n name=\"ArrowDown\"\r\n className=\"autocomplete__downArrow\"\r\n />\r\n </Box>\r\n </>\r\n )}\r\n </Box>\r\n );\r\n});\r\n","import { Box, BoxProps } from '@apia/theme';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const KeyHandler = observer((props: BoxProps) => {\r\n const handler = useAutocompleteContext();\r\n\r\n return (\r\n <Box\r\n {...props}\r\n className={`autocomplete__keyhandler ${props.className ?? ''}`}\r\n onKeyDown={(ev) => {\r\n props.onKeyDown?.(ev);\r\n\r\n if (!ev.isDefaultPrevented()) {\r\n if (ev.key.match(/^[a-z ]$/i)) {\r\n if (!handler.isOpen) {\r\n handler.open();\r\n }\r\n }\r\n\r\n switch (ev.code) {\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n handler.focusNext();\r\n break;\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n handler.focusPrevious();\r\n break;\r\n case 'Enter':\r\n ev.preventDefault();\r\n\r\n if (handler.isOpen) {\r\n handler.selectFocused();\r\n } else {\r\n handler.open();\r\n }\r\n break;\r\n case 'End':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusLast();\r\n }\r\n break;\r\n case 'Escape':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n handler.close(false);\r\n }\r\n break;\r\n case 'Home':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusFirst();\r\n }\r\n break;\r\n case 'PageDown':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusNext(10);\r\n }\r\n break;\r\n case 'PageUp':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusPrevious(10);\r\n }\r\n break;\r\n }\r\n }\r\n }}\r\n ></Box>\r\n );\r\n});\r\n","import { useState } from 'react';\r\nimport {\r\n AutocompleteController,\r\n AutocompleteProps,\r\n} from './store/AutocompleteController';\r\nimport { useMount } from '@apia/util';\r\nimport { AutocompleteContext } from './Context';\r\nimport { getVariant } from '@apia/theme';\r\nimport { SearchBox } from './SearchBox';\r\nimport { KeyHandler } from './Keyhandler';\r\n\r\nexport type AutocompleteCmpProps = {\r\n handler?: AutocompleteController;\r\n getHandler?: (handler: AutocompleteController) => unknown;\r\n properties?: AutocompleteProps;\r\n};\r\n\r\nexport const Autocomplete = (props: AutocompleteCmpProps) => {\r\n const [handler, setHandler] = useState<AutocompleteController>();\r\n useMount(() => {\r\n const newHandler =\r\n props.handler ?? new AutocompleteController(props.properties ?? {});\r\n props.getHandler?.(newHandler);\r\n setHandler(newHandler);\r\n });\r\n\r\n if (!handler) {\r\n return null;\r\n }\r\n\r\n return (\r\n <AutocompleteContext.Provider value={handler}>\r\n <KeyHandler\r\n className={`autocomplete ${props.properties?.className || ''}`}\r\n data-autocomplete-box={handler.state.id}\r\n {...getVariant('layout.common.components.autocomplete')}\r\n >\r\n <SearchBox />\r\n </KeyHandler>\r\n </AutocompleteContext.Provider>\r\n );\r\n};\r\n\r\nexport * from './store/AutocompleteController';\r\n","import { Button, Spinner, Flex, ThemeUIStyleObject } from '@apia/theme';\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 '@apia/theme';\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 = Omit<IconButtonProps, 'sx'> &\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 { getSpecificParent } from '@apia/util';\nimport uniqueId from 'lodash-es/uniqueId';\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 '@apia/theme';\nimport { useState } from 'react';\nimport { IconButton } from './buttons';\nimport { getVariant } from '@apia/theme';\nimport { getLabel } from '@apia/util';\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={getLabel('lblCaptchaActivateAudio').text}\n onClick={handleSyncClick}\n ></IconButton>\n <IconButton\n icon=\"Volume\"\n type=\"button\"\n aria-label={getLabel('lblCaptchaActivateAudio').text}\n onClick={() => {}}\n ></IconButton>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import {\n Button,\n ButtonProps,\n Input,\n InputProps,\n ThemeUIStyleObject,\n} from '@apia/theme';\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, TIconName } from '@apia/icons';\n\nexport type TCheckbox = TModify<\n ButtonProps,\n {\n background?: string;\n checked?: boolean;\n color?: string;\n defaultChecked?: boolean;\n icon?: TIconName;\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 disabled,\n icon = 'Check',\n indeterminate,\n name,\n native,\n onChange,\n readOnly,\n required,\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(\n () => ({ variant: 'forms.checkbox' }) as ThemeUIStyleObject,\n [],\n );\n\n return native ? (\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 title=\"\" name={icon} size=\"32px\" />\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-es/isFunction';\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 { customEvents } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from '@apia/theme';\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, Box, InputProps } from '@apia/theme';\nimport { isChild, useCombinedRefs } from '@apia/util';\nimport React from 'react';\nimport { TIconName, TIconType } from '@apia/icons';\nimport { IconButton } from './buttons';\nimport ReactInputMask from 'react-input-mask';\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 additionalButtonsPosition?: 'before' | 'after';\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 additionalButtonsPosition = 'before',\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 = React.useRef<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.current,\n )))\n )\n onBlur(ev);\n },\n [onBlur],\n );\n\n return (\n <Box\n {...getVariant('forms.iconInput')}\n className={`${className ?? ''} iconInput`}\n ref={parentRef}\n onBlur={handleBlur}\n >\n <ReactInputMask\n mask={mask ?? ''}\n onBlur={handleBlur}\n disabled={isLoading || disabled}\n // eslint-disable-next-line @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 {additionalButtonsPosition === 'before' && additionalButtons}\n {!hideButton && (\n <IconButton\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 {additionalButtonsPosition === 'after' && additionalButtons}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from '@apia/theme';\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, Box, Close, InputProps } 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-es/uniqueId';\nimport React from 'react';\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\ndeclare global {\n interface Window {\n LANG_CODE: string;\n MSG_INVALID_DATE: string;\n MSG_FEC_FIN_MAY_FEC_INI: string;\n LBL_PICK_DATE: string;\n }\n}\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, { useRef } from 'react';\nimport { Input, InputProps } from '@apia/theme';\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 deleteValueOnError?: 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 (\n { value, avoidDecimalRestriction, deleteValueOnError = true, ...props },\n ref,\n ) => {\n const [actualValue, setActualValue] = React.useState<string>('');\n const [showValue, setShowValue] = React.useState<string>('');\n const lastEmittedValue = React.useRef<string>('');\n const inError = useRef(false);\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 inError.current = false;\n } else {\n const parsedValue = formatValueToShow(\n newValue,\n avoidDecimalRestriction,\n );\n if (parsedValue === null) {\n if (deleteValueOnError) {\n setActualValue('');\n setShowValue('');\n }\n props.onChange?.({ value: '', error: true });\n inError.current = true;\n } else {\n if (newValue === lastEmittedValue.current) {\n setShowValue(parsedValue);\n return;\n }\n setActualValue(newValue);\n setShowValue(parsedValue);\n props.onChange?.({ value: parsedValue, error: false });\n inError.current = false;\n }\n }\n lastEmittedValue.current = newValue;\n },\n [avoidDecimalRestriction, deleteValueOnError, 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 if (!inError.current || deleteValueOnError !== false) {\n setShowValue(\n String(actualValue).replaceAll(thousandsSeparator, ''),\n );\n }\n },\n [actualValue, deleteValueOnError, 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","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=\"requiredMark\" title={getLabel('msgReqField').text}>\n *\n </abbr>\n ) : null;\n};\n","import { injectStyles, getVariant, Box, BoxProps } from '@apia/theme';\nimport { forwardRef } from 'react';\nimport { RequiredMark } from './RequiredMark';\n\nexport type TFieldLabel = {\n avoidSemicolon?: boolean;\n /**\n * Permite mostrar un mensaje de error debajo del campo\n */\n error?: string;\n hideRequiredMark?: boolean;\n label: string;\n /**\n * La propiedad required se utiliza para mostrar el * de requerido.\n *\n * @see requiredMarkPosition\n * @see hideRequiredMark\n */\n required?: boolean;\n requiredMarkPosition?: 'before' | 'after';\n} & BoxProps;\n\ninjectStyles('layout.common.components.fieldLabel', {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n\n '.fieldLabel__label': {\n fontWeight: 'bold',\n },\n});\n\nexport const FieldLabel = forwardRef<HTMLDivElement, TFieldLabel>(\n (\n {\n as,\n avoidSemicolon,\n children,\n error,\n hideRequiredMark,\n label,\n required,\n requiredMarkPosition = 'after',\n ...props\n },\n ref,\n ) => {\n return (\n <Box\n as={as ?? 'label'}\n {...props}\n className={`fieldLabel ${props.className ?? ''}`}\n {...getVariant('layout.common.components.fieldLabel')}\n aria-label={props['aria-label'] ?? label}\n ref={ref}\n >\n <Box className=\"fieldLabel__label\">\n {requiredMarkPosition === 'before' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {label}\n {requiredMarkPosition === 'after' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {!avoidSemicolon && ':'}\n </Box>\n <Box>{children}</Box>\n {error && <Box className=\"fieldLabel__error\">{error}</Box>}\n </Box>\n );\n },\n);\n\nFieldLabel.displayName = 'FieldLabel';\n","import { Box } from '@apia/theme';\nimport { Icon } from '@apia/icons';\n\nexport interface ICheckbox {\n checked: boolean;\n disabled?: boolean;\n onChange: (checked: boolean) => unknown;\n}\n\nexport const Checkbox = (props: ICheckbox) => {\n return (\n <Box\n className=\"accordion__item__button__check\"\n onClick={(ev) => {\n ev.stopPropagation();\n ev.preventDefault();\n if (!props.disabled) props.onChange?.(!props.checked);\n }}\n >\n {props.checked && <Icon title=\"\" name=\"Check\" />}\n </Box>\n );\n};\n","import { useRef } from 'react';\nimport { useAccordionContext } from '../context';\nimport { IAccordionItemButton } from './DefaultAccordionItemButton';\n\nexport function useIsChecked(\n props: IAccordionItemButton,\n): [boolean, (isChecked: boolean) => void] {\n const handler = useAccordionContext();\n const isChecked = handler.hooks.useItemStateSelector(\n (current) => current.isChecked,\n );\n const id = handler.hooks.useItemId();\n\n const previousPropsChecked = useRef(props.checked);\n if (\n previousPropsChecked.current !== props.checked &&\n props.checked !== undefined\n ) {\n previousPropsChecked.current = props.checked;\n handler.udpateItem(id, { isChecked: props.checked });\n }\n\n return [\n isChecked,\n (isChecked) => {\n handler.udpateItem(id, { isChecked });\n props.onChange?.(isChecked);\n },\n ];\n}\n","/* eslint-disable no-param-reassign */\nimport { isChild } from '@apia/util';\nimport { useEffect, ReactNode, useRef, useCallback } from 'react';\nimport { Box } from '@apia/theme';\n\nexport const AutoEllipsis = ({\n children,\n findParent,\n overrideStyles,\n}: {\n children: ReactNode;\n /**\n * Si se pasa el método findParent, será invocado con el nodo de AutoEllipsis\n * para dar control sobre cuál es el elemento al que se le clonarán los\n * estilos.\n */\n findParent?: (currentElement: HTMLElement) => HTMLElement;\n /**\n * Si se pasa overrideStyles, será invocado con el nodo actual de\n * AutoEllipsis para tomar decisiones acerca de cuáles estilos serán\n * aplicados.\n */\n overrideStyles?: (\n currentElement: HTMLElement,\n ) => Partial<CSSStyleDeclaration>;\n}) => {\n const unsuscribe = useRef(() => {});\n const clone = useRef<HTMLElement | null>(null);\n const timeout = useRef(0);\n const ref = useCallback(\n (el: HTMLElement) => {\n if (!el) return;\n\n unsuscribe.current();\n\n function showBox() {\n clone.current = el.cloneNode(true) as HTMLElement;\n const target = findParent?.(el) ?? el;\n const styles = window.getComputedStyle(target);\n for (let i = 0; i < styles.length; i++) {\n try {\n const name = styles[i] as keyof typeof target.style;\n const value = styles[name];\n if (!(name as string).match(/webkit/)) {\n (clone.current as HTMLElement).style[name as any] = value as any;\n }\n } catch (e) {\n e;\n }\n }\n\n const bound = el.getBoundingClientRect();\n clone.current.style.position = 'fixed';\n clone.current.style.left = `${bound.left - 1}px`;\n clone.current.style.top = `${bound.top - 1}px`;\n clone.current.style.width = `${bound.width + 8}px`;\n clone.current.style.whiteSpace = 'break-spaces';\n clone.current.style.overflow = 'visible';\n clone.current.style.textOverflow = 'unset';\n clone.current.style.background =\n 'var(--theme-ui-colors-palette-background-paper)';\n clone.current.style.color =\n 'var(--theme-ui-colors-palette-text-primary)';\n clone.current.style.border = '1px solid';\n clone.current.style.borderColor =\n 'var(--theme-ui-colors-palette-border-field)';\n clone.current.style.zIndex = '1000000';\n clone.current.style.height = 'auto';\n clone.current.style.fill =\n 'var(--theme-ui-colors-palette-text-primary)';\n clone.current.style.pointerEvents = 'none';\n clone.current.style.wordBreak = 'break-all';\n\n const overridenStyles = overrideStyles?.(el);\n\n if (overridenStyles) {\n for (let i = 0; i < (overridenStyles?.length ?? 0); i++) {\n try {\n const name = overridenStyles[i] as keyof typeof target.style;\n const value = overridenStyles[name];\n if (!(name as string).match(/webkit/)) {\n (clone.current as HTMLElement).style[name as any] =\n value as any;\n }\n } catch (e) {\n e;\n }\n }\n }\n\n clone.current.addEventListener('mouseleave', (ev) => {\n if (\n isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === el,\n )\n )\n return;\n\n clone.current?.remove();\n });\n\n function close() {\n /* clone.current?.remove();\n document.removeEventListener('scroll', close); */\n }\n document.addEventListener('scroll', close);\n document.body.append(clone.current);\n\n const cloneBounding = clone.current.getBoundingClientRect();\n\n const difX = Math.abs(cloneBounding.width - bound.width);\n const difY = Math.abs(cloneBounding.height - bound.height);\n\n if (difX < 50 && difY < 10) {\n clone.current.remove();\n }\n }\n\n function hideBox(ev: MouseEvent) {\n if (\n isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === clone.current,\n )\n )\n return;\n\n clone.current?.remove();\n }\n\n function handleMouseEnter() {\n timeout.current = setTimeout(() => {\n showBox();\n }, 500) as unknown as number;\n }\n function handleMouseLeave(ev: MouseEvent) {\n clearTimeout(timeout.current);\n hideBox(ev);\n }\n\n el.addEventListener('mouseenter', handleMouseEnter);\n el.addEventListener('mouseleave', handleMouseLeave);\n\n unsuscribe.current = () => {\n el.removeEventListener('mouseenter', handleMouseEnter);\n el.removeEventListener('mouseleave', handleMouseLeave);\n clearTimeout(timeout.current);\n };\n },\n [findParent, overrideStyles],\n );\n\n useEffect(() => {\n return () => {\n clone.current?.remove();\n };\n }, []);\n\n return (\n <Box\n ref={ref}\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n className=\"autoellipsis__container\"\n >\n {children}\n </Box>\n );\n};\n","import {\n FC,\n FunctionComponent,\n useCallback,\n useDeferredValue,\n useEffect,\n useRef,\n useState,\n useTransition,\n} from 'react';\nimport { Box } from '@apia/theme';\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\nexport interface IResponsiveComponent<P> extends FC<P> {\n setBreakpoints: { current: (breakPoints: number[]) => void };\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 defaultBreakpoint,\n}: IMakeResponsiveComponent<P>): IResponsiveComponent<\n P & {\n breakPoints?: number[];\n }\n> => {\n const setBreakpoints: { current: (b: number[]) => void } = {\n current: () => {},\n };\n\n return Object.assign(\n function ResponsiveComponent(\n props: P & {\n breakPoints?: number[];\n },\n ) {\n const [breakPoint, setCurrentBreakpoint] = useState<number>(\n defaultBreakpoint ?? 4,\n );\n\n const [innerBreakpoints, setInnerBreakpoints] = useState(\n props.breakPoints ?? breakPoints,\n );\n setBreakpoints.current = setInnerBreakpoints;\n\n const [containerWidth, setContainerWidth] = useState(\n breakPoints[defaultBreakpoint ?? 4],\n );\n const observer = useRef<ResizeObserver | null>(null);\n const shouldDisconnect = useRef(false);\n\n const [hasRendered, setHasRendered] = useState(false);\n const [, startTransition] = useTransition();\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 startTransition(() => {\n setContainerWidth(resizeProps[0].contentRect.width);\n setCurrentBreakpoint(\n calcBreakPoint(\n resizeProps[0].contentRect.width,\n innerBreakpoints,\n ),\n );\n setHasRendered(true);\n });\n });\n\n if (element) observer.current.observe(element);\n },\n [innerBreakpoints],\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 }, [innerBreakpoints]);\n\n const deferBreakPoint = useDeferredValue(breakPoint);\n const deferContainerWidth = useDeferredValue(containerWidth);\n\n return (\n <Box ref={ref}>\n {hasRendered ? (\n <Component\n {...props}\n breakPoint={deferBreakPoint}\n breakPointWidth={breakPoints[deferBreakPoint]}\n containerWidth={deferContainerWidth}\n />\n ) : null}\n </Box>\n );\n },\n { setBreakpoints },\n );\n};\n","import { Box } from '@apia/theme';\nimport { Icon, type TIconName } from '@apia/icons';\nimport { useAccordionContext } from '../context';\nimport { ISimpleButton, SimpleButton } from '../../forms';\nimport { Checkbox } from './Checkbox';\nimport { useIsChecked } from './useIsChecked';\nimport { KeyboardEvent, MouseEvent, ReactNode, useCallback } from 'react';\nimport { AutoEllipsis } from '../../responsive';\n\nexport interface IAccordionItemButton {\n ariaLabel: string;\n /**\n * Si checked !== undefined => se mostrará un checkbox.\n */\n checked?: boolean;\n /**\n * Solamente se utiliza en conjunto con el checkbox y permite evitar que el\n * usuario pueda marcar o desmarcar el checkbox.\n */\n className?: string;\n disableSelection?: boolean;\n domButtonProps?: ISimpleButton;\n label: string;\n /**\n * Evento que se dispara cuando el usuario hace click en el checkbox o\n * presiona espacio sobre el botón del acordeón.\n */\n onChange?: (checked: boolean) => unknown;\n onClick?: (ev: MouseEvent) => unknown;\n onUserPressEnter?: (ev: KeyboardEvent) => unknown;\n rightButtons?: ReactNode;\n rightIcons?: TIconName[] | TIconName;\n tabIndex?: number;\n /**\n * Si no se pasa title se usará ariaLabel.\n */\n title?: string;\n}\n\nexport const DefaultAccordionItemButton = (props: IAccordionItemButton) => {\n const handler = useAccordionContext();\n\n const { isExpanded } = handler.hooks.useItemStateSelector((props) => props);\n const id = handler.hooks.useItemId();\n const [isChecked, setIsChecked] = useIsChecked(props);\n const handleClick = useCallback(\n (ev: MouseEvent) => {\n props.onClick?.(ev);\n if (!ev.isDefaultPrevented()) handler.toggleItem(id, !isExpanded);\n },\n [handler, id, isExpanded, props],\n );\n const handleKeyDown = useCallback(\n (ev: KeyboardEvent) => {\n if (ev.code === 'Enter') {\n props.onUserPressEnter?.(ev);\n if (!ev.isDefaultPrevented() && props.rightButtons)\n handler.toggleItem(id, !isExpanded);\n }\n },\n [handler, id, isExpanded, props],\n );\n\n return (\n <SimpleButton\n {...props.domButtonProps}\n className={`accordion__item__button ${props.className ?? ''} ${\n props.domButtonProps?.className ?? ''\n }`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n aria-expanded={isExpanded}\n aria-controls={`accordion__${handler.id}__${id}`}\n title={props.title}\n aria-label={props.ariaLabel}\n tabIndex={props.tabIndex}\n >\n <Box className=\"accordion__item__button__leftGroup\">\n {props.checked !== undefined && (\n <Checkbox\n checked={isChecked}\n disabled={props.disableSelection}\n onChange={setIsChecked}\n />\n )}\n <Box as=\"h3\" className=\"accordion__item__button__label\">\n <AutoEllipsis overrideStyles={() => ({ textAlign: 'left' })}>\n {props.label ?? props.title ?? props.ariaLabel}\n </AutoEllipsis>\n </Box>\n </Box>\n <Box className=\"accordion__item__button__rightGroup\">\n {props.rightButtons}\n <Icon\n name={isExpanded ? 'ArrowUpThin' : 'ArrowDownThin'}\n title={props.title ?? props.ariaLabel}\n size={23}\n />\n </Box>\n </SimpleButton>\n );\n};\n","import { Children, ReactElement } from 'react';\nimport { AccordionItemButton } from './AccordionItemButton';\nimport { DefaultAccordionItemButton } from './defaultElements/DefaultAccordionItemButton';\nimport { IAccordionItemProps } from './AccordionItem';\nimport AnimateHeight from 'react-animate-height';\nimport { useAccordionContext } from './context';\nimport { Box } from '@apia/theme';\n\nexport const AccordionItemContent = ({\n children,\n buttonProps,\n}: IAccordionItemProps) => {\n let button = null;\n\n const actualChildren = Children.toArray(children).filter((current) => {\n if (typeof current !== 'string' && typeof current !== 'number') {\n const element = current as ReactElement;\n\n if (element.type === AccordionItemButton) {\n button = element;\n return false;\n }\n }\n return true;\n });\n\n if (button === null && buttonProps)\n button = <DefaultAccordionItemButton {...buttonProps} />;\n\n const handler = useAccordionContext();\n const isExpanded = handler.hooks.useItemStateSelector(\n (current) => current.isExpanded,\n );\n const id = handler.hooks.useItemId();\n\n const duration = handler.hooks.usePropsSelector(\n (current) => current.animationDuration,\n );\n\n return (\n <Box className=\"accordion__item\" data-id={id}>\n {button}\n <AnimateHeight\n className=\"accordion__item__content\"\n height={isExpanded ? 'auto' : 0}\n duration={duration}\n id={`accordion__${handler.id}__${id}`}\n >\n {actualChildren}\n </AnimateHeight>\n </Box>\n );\n};\n","import { ReactNode, useRef } from 'react';\nimport { AccordionItemContent } from './AccordionItemContent';\nimport { useAccordionContext } from './context';\nimport { TId } from '@apia/util';\nimport { IAccordionItemButton } from './defaultElements/DefaultAccordionItemButton';\n\nexport interface IAccordionItemProps {\n /**\n * Cada elemento del acordeón tiene dos formas de renderizar el botón. O bien\n * se pasa un elemento AccordionItemButton como hijo o bien se pasan\n * buttonProps. En caso contrario, el elemento no tendrá botón.\n */\n buttonProps?: IAccordionItemButton;\n children?: ReactNode;\n defaultExpanded?: boolean;\n id: TId;\n}\n\nexport const AccordionItem = ({\n children,\n id,\n defaultExpanded,\n ...props\n}: IAccordionItemProps) => {\n const context = useAccordionContext();\n const Provider = context.hooks.useItemContextProvider(id);\n const hasRegistered = useRef(false);\n\n if (!hasRegistered.current) {\n hasRegistered.current = true;\n context.registerItem(id, {\n isChecked: false,\n isExpanded: !!defaultExpanded,\n });\n }\n\n return (\n <Provider>\n <AccordionItemContent id={id} {...props}>\n {children}\n </AccordionItemContent>\n </Provider>\n );\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 '@apia/theme';\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 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 React from 'react';\nimport { Box, BoxProps, Close } from '@apia/theme';\n\nexport interface ILabelBox {\n className?: string;\n label: string;\n tooltip?: string;\n closeTooltip?: string;\n onClose?: () => unknown;\n}\n\ntype TLabelBox = ILabelBox & BoxProps;\n\nexport const LabelBox = ({\n className,\n label,\n tooltip,\n closeTooltip,\n onClose,\n ...props\n}: TLabelBox) => {\n return (\n <Box\n {...props}\n title={tooltip}\n className={`labelBox ${className ?? ''}`}\n variant=\"layout.common.boxes.labelBox\"\n >\n <Box className=\"labelAndIcon\" as=\"span\">\n {label}\n </Box>\n <Box>\n <Close\n type=\"button\"\n className=\"closeButton\"\n onClick={onClose}\n disabled={!onClose}\n title={closeTooltip}\n variant=\"icon-outline-danger\"\n />\n </Box>\n </Box>\n );\n};\n","import { Box, Heading, getVariant } from '@apia/theme';\nimport { ReactNode, useState } from 'react';\nimport { IconButton } from '../../forms';\n\nexport const ContainerWithHeader = ({\n title,\n children,\n footerChildren,\n onClose,\n additionalButtons,\n}: {\n title: string;\n children: ReactNode;\n footerChildren?: ReactNode;\n additionalButtons?: ReactNode;\n onClose?: () => void;\n}) => {\n const [isFullScreen, setIsFullScreen] = useState(false);\n\n const handleExpandClick = () => {\n setIsFullScreen((prev) => !prev);\n };\n return (\n <Box\n className={`container ${isFullScreen ? 'fullScreen' : ''}`}\n {...getVariant('layout.common.components.containers.containerWithHeader')}\n >\n <Box className=\"container__header\">\n <Heading as=\"h2\">{title}</Heading>\n <Box className=\"container__rightButtons\">\n {additionalButtons}\n <IconButton\n className=\"container__rightButtons__maximizedBtn\"\n variant=\"outline\"\n icon={isFullScreen ? 'Minimize' : 'Maximize'}\n onClick={() => handleExpandClick()}\n />\n {onClose && (\n <IconButton\n variant=\"outline-danger\"\n icon=\"Close\"\n onClick={() => onClose()}\n />\n )}\n </Box>\n </Box>\n <Box className=\"container__content\">{children}</Box>\n {footerChildren && (\n <Box className=\"container__footer\">{footerChildren}</Box>\n )}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {};\n","import React from 'react';\nimport { Box, Button } from '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport isFunction from 'lodash-es/isFunction';\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 = 'ArrowDownThin',\n collapsed,\n defaultCollapsed,\n disableChildrenFocus,\n iconSize = '20px',\n id,\n onClose,\n onOpen,\n openIcon = 'ArrowRightThin',\n label,\n rememberCollapsedState,\n titleButtons,\n minHeight = 0,\n 'aria-hidden': ariaHidden,\n },\n outerRef,\n ) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const prefix = React.useMemo(() => (id ? '' : uniqueId()), []);\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n rememberCollapsedState\n ? ((persistentStorage[`collapsiblePanel${actualId}`] ??\n defaultCollapsed ??\n collapsed) as 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 >\n {isCollapsed ? (\n <Icon title=\"\" icon={openIcon} size={iconSize} />\n ) : (\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\n )}\n <span className=\"title\">{label}</span>\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={ariaHidden ?? isCollapsed}\n className=\"collapsiblePanel__content\"\n >\n {children}\n </AnimateHeight>\n </Box>\n );\n },\n);\n\nCollapsiblePanel.displayName = 'CollapsiblePanel';\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 '@apia/theme';\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' | 'sx'>;\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 '@apia/theme';\r\nimport { decodeHTMLEntities } from '@apia/util';\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 <>\r\n {domProps.className?.includes('separator') && (\r\n <li className=\"separator\"></li>\r\n )}\r\n <li\r\n {...(domProps as any)}\r\n className={`${\r\n domProps.className\r\n ?.split(' ')\r\n .filter((current) => current !== 'separator')\r\n .join(' ') ?? ''\r\n } listbox__row`}\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={useMemo(() => decodeHTMLEntities(label), [label])}\r\n >\r\n {children}\r\n </li>\r\n </>\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 '@apia/theme';\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__list')\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 '@apia/theme';\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 } from '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\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 overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n\n '&:hover': (theme) => {\n return {\n ...theme.palette.getOneState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n cursor: 'pointer',\n };\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 resetFocus: TListboxOperation<null> = makeOperation((state, _, keys) => {\n keys.push(makeRowKey(state.focusedRow));\n state.focusedRow = 0;\n keys.push(makeRowKey(0));\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 resetFocus,\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';\nimport { useStore } from './useStore';\n\nexport function useIndexedChildren(\n children: React.ReactNode | React.ReactNode[],\n listboxActions: ReturnType<typeof useStore>[0],\n) {\n return useMemo(\n function makeChildrenIndices() {\n listboxActions.resetFocus(null);\n\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, listboxActions],\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' as unknown as '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 '@apia/theme';\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, listboxActions);\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 role=\"listbox\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onFocus={onFocus}\r\n {...props.ulProps}\r\n className={`listbox__list ${props?.ulProps?.className ?? ''}`}\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 { BarLoader } from 'react-spinners';\nimport { Box, useThemeUI } from '@apia/theme';\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 width=\"100%\" color={theme.theme.palette.primary.main} />\n </Box>\n </Box>\n );\n};\n\nexport default LinearLoader;\n","import { getVariant } from '@apia/theme';\nimport { FC } from 'react';\nimport { Progress, Label } from '@apia/theme';\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 '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\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 { TDistinctors } from '@apia/dom-store';\nimport { TCellDistinctions, TGridDistinctions, TState } from './types';\n\nexport const distinctors: TDistinctors<TState> = {\n grid: [\n (distinctors: TGridDistinctions, state) => {\n return {\n etc: {\n 'aria-activedescendant':\n distinctors.iconsCount > 0\n ? `${state.storeId}__${state.focusedRow}__${state.focusedColumn}`\n : undefined,\n role: 'grid',\n 'aria-rowcount': distinctors.rows,\n 'aria-colcount': distinctors.columns,\n id: state.storeId,\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, TGridDistinctions, 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: [\n (\n distinctions: TGridDistinctions,\n state: TState,\n ) => TDistinctorProperties,\n ];\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Box } from '@apia/theme';\nimport {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useRef,\n} from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { isChild, TId, noNaN } from '@apia/util';\nimport { TIcon, TIconsList } from './types';\nimport { ApiaUtil } from '../../objects/ApiaUtil';\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 } = useIconsListStoreContext();\n const timeoutId = useRef(-1);\n const currentIcon = useRef<TIcon | null | undefined>(null);\n\n const showIconDetails = useCallback(\n (icon: TIcon) => {\n if (onIconGetDetails) {\n ApiaUtil.instance.tooltips.open({\n attachToElement: () =>\n document.querySelector(\n `#${storeId} .iconsList__iconWrapper[data-id=\"${icon.id}\"]`,\n ) as HTMLElement,\n children: onIconGetDetails(icon),\n closeOnClick: false,\n minSize: { width: 200, height: 0 },\n });\n }\n },\n [onIconGetDetails, storeId],\n );\n\n const handleMouseEnter = useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n const icon = findIcon(icons, ev.target);\n\n if (icon !== currentIcon.current || icon === null || icon === undefined) {\n if (timeoutId.current !== -1) {\n clearTimeout(timeoutId.current);\n }\n\n timeoutId.current = window.setTimeout(() => {\n if (icon) {\n showIconDetails(icon);\n if (onIconClick && icon) {\n onIconClick(ev, icon);\n }\n }\n }, 100);\n\n currentIcon.current = icon;\n }\n },\n [icons, onIconClick, showIconDetails],\n );\n\n return (\n <Box\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 onMouseOver={handleMouseEnter}\n onMouseLeave={useCallback(() => {\n currentIcon.current = null;\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={}\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 function shoutKeyDown() {\n const icon = findIcon(icons, getState().focusedId);\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 default:\n shoutKeyDown();\n break;\n }\n },\n [actions, getState, icons, onIconKeyDown, showIconDetails],\n )}\n >\n {children}\n </Box>\n );\n};\n","import { focusOutline } from '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {\n '&, *': {\n textAlign: 'center',\n },\n\n '.iconsList__icon__image__wrapper': {\n boxShadow: '1px 1px 3px #0001',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n '.iconsList__icon__image': {\n maxWidth: 'calc(100% - 4px)',\n },\n\n '.iconsList__icon__wrapper': {\n p: 2,\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n\n '&:hover': (theme) => {\n return {\n ...theme.palette.getOneState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n };\n },\n },\n\n '.iconsList__icon__label': {\n wordBreak: 'break-word',\n display: '-webkit-box',\n WebkitLineClamp: '3',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: '20px',\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const IconRendererContext = createContext<TIconRenderer<any> | null>(\n null,\n);\n\nexport function useIconRendererContext<\n P extends Record<string, unknown> = Record<string, unknown>,\n>() {\n const context = useContext(IconRendererContext);\n\n if (!context) throw new Error('There is no IconRendererContext');\n\n return context as TIconRenderer<P>;\n}\n","import { TIcon } from '.';\nimport { Box } from '@apia/theme';\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 ContextRenderer = useIconRendererContext();\n const Renderer = props.iconRenderer || ContextRenderer;\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 '.iconsList__icon__image__wrapper': {\n height: `${props.width - 4}px`,\n },\n\n '.iconsList__icon__image': {\n maxHeight: `${props.width - 32}px`,\n maxWidth: `${props.width - 32}px`,\n },\n }),\n [props.width],\n )}\n aria-colindex={props.colIndex}\n >\n <Renderer {...props} />\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\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 sx={{ width: `${iconWidth}px` }} className=\"fill__the__row\" />\n ) : (\n <Icon\n rowIndex={rowIndex}\n colIndex={colIndex}\n width={iconWidth}\n {...(icon as TIcon<P>)}\n />\n );\n};\n","import { Icon } from '@apia/icons';\nimport { TIconRenderer } from '../types';\nimport { Box, Image } from '@apia/theme';\nimport { memo } from 'react';\n\nconst DefaultIconRendererNoMemo: TIconRenderer = (props) => {\n if (!props.icon && !props.imageUrl) {\n console.error({ props });\n console.error('The icon has no imageUrl nor icon defined');\n }\n\n return (\n <Box title={props.label} className=\"iconsList__icon__wrapper\">\n <Box className=\"iconsList__icon__image__wrapper\">\n {props.imageUrl && (\n <Image\n className=\"iconsList__icon__image\"\n src={props.imageUrl}\n role=\"none\"\n alt=\"\"\n />\n )}\n {props.icon && <Icon icon={props.icon} title={props.ariaLabel} />}\n </Box>\n <Box className=\"iconsList__icon__label\">{props.label}</Box>\n </Box>\n );\n};\n\nexport const DefaultIconRenderer = memo(DefaultIconRendererNoMemo);\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport { Box, Grid } from '@apia/theme';\nimport {\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} 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';\nimport { useLatest, usePrevious } from '@apia/util';\nimport { shallowEqual } from '@apia/store';\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 propsRef = useLatest(props);\n let render: () => void = () => {};\n const previousProps = usePrevious(props);\n if (!shallowEqual(props, previousProps.current)) {\n setTimeout(() => render(), 0);\n }\n\n const ResponsiveContainer = useMemo(() => {\n const iconWidth = propsRef.current.iconWidth ?? 100;\n const minGap = propsRef.current.minHorizontalGap ?? 30;\n const blockWidth = iconWidth + minGap;\n const styledComponent = (styledComponentProps: unknown) => {\n const { breakPoint, containerWidth } = styledComponentProps as {\n breakPoint: number;\n containerWidth: number;\n };\n const [, doRender] = useState(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n render = useCallback(() => doRender((current) => !current), []);\n const storeId = useMemo(() => uniqueId('IconsList'), []);\n const [actions, useProps, , , Context] = useStore({ storeId });\n const rows = Math.ceil(propsRef.current.icons.length / breakPoint);\n const sx = useStyles({\n breakPoint,\n containerWidth,\n iconWidth: propsRef.current.iconWidth ?? 100,\n verticalGap: propsRef.current.verticalGap,\n removeHorizontalPadding: propsRef.current.removeHorizontalPadding,\n });\n\n useEffect(() => {\n actions.recalculateIndexByResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakPoint]);\n const IconRenderer = propsRef.current.iconRenderer ?? DefaultIconRenderer;\n const gridRef = useProps('grid', {\n columns: breakPoint,\n iconsCount: propsRef.current.icons.length,\n rows,\n });\n\n return (\n <IconRendererContext.Provider value={IconRenderer}>\n <Context>\n <KeyHandler\n icons={propsRef.current.icons}\n onIconClick={propsRef.current.onIconClick}\n onIconDoubleClick={propsRef.current.onIconDoubleClick}\n onIconGetDetails={propsRef.current.onIconGetDetails}\n onIconKeyDown={propsRef.current.onIconKeyDown}\n storeId={storeId}\n >\n <Box ref={gridRef}>\n {Array(rows)\n .fill(1)\n .map((_, i) => {\n const icons = getRowIcons({\n breakPoint,\n i,\n icons: propsRef.current.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={uniqueId(String(j + i))}\n colIndex={j + 1}\n icon={current}\n iconWidth={propsRef.current.iconWidth ?? 100}\n rowIndex={i + 1}\n />\n ))}\n </Grid>\n );\n })}\n </Box>\n </KeyHandler>\n </Context>\n </IconRendererContext.Provider>\n );\n };\n\n const Component = makeResponsiveComponent({\n breakPoints: getBreakpoints(blockWidth),\n Component: makeStyledComponent(\n 'IconsList',\n 'layout.common.components.iconsList',\n styles,\n styledComponent,\n ),\n debounce: 50,\n });\n\n return Component;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (previousProps.current?.iconWidth !== props.iconWidth) {\n const iconWidth = props.iconWidth ?? 100;\n const minGap = props.minHorizontalGap ?? 30;\n\n const blockWidth = iconWidth + minGap;\n setTimeout(\n () =>\n ResponsiveContainer.setBreakpoints.current(getBreakpoints(blockWidth)),\n 0,\n );\n }\n\n return <ResponsiveContainer />;\n};\n\nIconsListNonForwarded.displayName = 'IconsList';\n\nexport const IconsList = forwardRef(\n IconsListNonForwarded,\n) as typeof IconsListNonForwarded;\n\nexport { DefaultIconRenderer };\n","import { type ComponentType, lazy } from 'react';\n\n/**\n * Permite importar un componente en forma dinámica con ruta relativa a\n * /customComponents\n */\nexport function importComponent<T = unknown>(path: string) {\n return lazy<ComponentType<T>>(() => {\n return new Promise<{\n default: ComponentType<T>;\n }>((resolve) => {\n import(/* webpackInclude: /\\.tsx?$/ */ `/customComponents/${path}`)\n .then((result: { default: { default: ComponentType<T> } }) => {\n resolve(result.default);\n })\n .catch((error: unknown) => {\n resolve({\n default: () => {\n console.error(error);\n return <>Error</>;\n },\n });\n });\n });\n });\n}\n","import { EventEmitter } from '@apia/util';\nimport {\n createContext,\n useContext,\n ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { TToolbarIconButton } from './types';\n\ntype TClickListener = () => unknown;\ntype TItemState = Pick<\n TToolbarIconButton,\n 'disabled' | 'toggled' | 'isLoading'\n>;\n\nexport class ToolbarController extends EventEmitter<{\n pressEnter: string;\n updateItemState: string;\n}> {\n eventListeners: Record<string, TClickListener[]> = {};\n itemsState: Record<string, TItemState> = {};\n\n hooks = {\n useItemState: (id: string, initialState: TItemState) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n this.itemsState[id] = initialState;\n this.on('updateItemState', (evId) => {\n if (evId === id) {\n setState({ ...this.itemsState[id] });\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return state;\n },\n };\n\n setItemState = (id: string, newState: Partial<TItemState>) => {\n this.itemsState[id] = { ...this.itemsState[id], ...newState };\n this.emit('updateItemState', id);\n };\n\n Context = ({ children }: { children: ReactNode }) => {\n return (\n <ToolbarControllerContext.Provider value={this}>\n {children}\n </ToolbarControllerContext.Provider>\n );\n };\n}\n\nexport const ToolbarControllerContext = createContext<ToolbarController | null>(\n null,\n);\n\nexport const useToolbarControllerContext = () => {\n const context = useContext(ToolbarControllerContext);\n\n if (!context) throw new Error('There is no Toolbar controller context');\n\n return context;\n};\n","import { getVariant } from '@apia/theme';\nimport { ISimpleButton, SimpleButton } from '../forms';\n\nexport const ToolbarTextButton = (props: ISimpleButton) => {\n return (\n <SimpleButton\n {...props}\n className={`toolbar__textButton ${props?.className ?? ''}`}\n {...(props.variant ? getVariant(props.variant) : null)}\n >\n {props.children}\n </SimpleButton>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useToolbarControllerContext } from './ToolbarController';\nimport { TToolbarIconButton } from './types';\nimport { useMount, usePrevious } from '@apia/util';\nimport { IconButton } from '../forms';\n\nexport const ToolbarIconButton = ({\n id,\n action,\n actionSource,\n allowToggle,\n className,\n defaultToggled,\n disabled,\n icon,\n iconSize,\n isLoading: outerIsLoading,\n title,\n toggled: toggledProp,\n}: TToolbarIconButton) => {\n const [innerIsToggled, setInnerIsToggled] = useState<boolean>(\n toggledProp ?? (allowToggle ? defaultToggled ?? false : false),\n );\n const [isDisabled, setIsDisabled] = useState(!!disabled);\n const context = useToolbarControllerContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const previousIsLoading = usePrevious(outerIsLoading);\n if (previousIsLoading.current !== outerIsLoading)\n setIsLoading(!!outerIsLoading);\n\n const lastDisabledProp = usePrevious(disabled);\n if (lastDisabledProp.current !== disabled) {\n setIsDisabled(!!disabled);\n }\n\n /**\n * Si la prop toggled cambia y no está undefined, se debe actualizar el\n * estado interno.\n */\n const lastToggledProp = useRef<boolean | undefined>(toggledProp);\n if (\n toggledProp !== undefined &&\n innerIsToggled !== toggledProp &&\n lastToggledProp.current !== toggledProp\n ) {\n lastToggledProp.current = toggledProp;\n setInnerIsToggled(toggledProp);\n }\n\n const handleClick = useCallback(async () => {\n setIsLoading(true);\n try {\n if (lastToggledProp.current !== undefined) {\n await action(\n { isToggled: !lastToggledProp.current, isLoading },\n context,\n );\n } else if (allowToggle) {\n let isToggled = false;\n setInnerIsToggled((current) => {\n isToggled = !current;\n return isToggled;\n });\n await action({ isToggled, isLoading }, context);\n } else {\n await action({ isToggled: false, isLoading }, context);\n }\n } catch (e) {\n console.error(e);\n }\n setIsLoading(false);\n }, [action, allowToggle, context, isLoading]);\n\n /**\n * Se maneja el uso de teclado para hacer click sobre el elemento\n */\n useEffect(() => {\n const unsuscribe1 = context.on('updateItemState', (evId) => {\n if (evId === id) {\n setInnerIsToggled(!!context.itemsState[evId].toggled);\n setIsDisabled(!!context.itemsState[evId].disabled);\n }\n });\n const unsuscribe2 = context.on('pressEnter', (evId) => {\n if (evId === id) void handleClick();\n });\n\n return () => {\n unsuscribe1();\n unsuscribe2();\n };\n }, [context, id, handleClick]);\n\n useMount(() => {\n if (context.itemsState[id]) {\n if (context.itemsState[id].disabled !== undefined) {\n setIsDisabled(!!context.itemsState[id].disabled);\n }\n if (context.itemsState[id].toggled !== undefined) {\n setInnerIsToggled(!!context.itemsState[id].toggled);\n }\n } else\n context.itemsState[id] = {\n disabled: isDisabled,\n toggled: innerIsToggled,\n ...context.itemsState[id],\n };\n });\n\n return (\n <IconButton\n className={`toolbar__button ${innerIsToggled ? 'toggled' : ''} ${className ?? ''}`}\n data-id={id}\n disabled={isDisabled}\n icon={icon}\n onClick={actionSource !== 'mousedown' ? handleClick : undefined}\n isLoading={isLoading}\n onMouseDown={actionSource === 'mousedown' ? handleClick : undefined}\n size={iconSize ?? 'Md'}\n title={title}\n variant=\"icon-outline\"\n />\n );\n};\n","import { FieldLabel } from '../forms';\nimport { TToolInput } from './types';\nimport { Input } from '@apia/theme';\n\nexport const ToolbarInput = (tool: TToolInput) => {\n const input = <Input className=\"toolbar__input\" {...tool.inputProps} />;\n\n if (tool.label) return <FieldLabel label={tool.label}>{input}</FieldLabel>;\n\n return input;\n};\n","import { Box } from '@apia/theme';\n\nexport const ToolbarSeparator = () => {\n return <Box className=\"toolbar__separator\">&nbsp;</Box>;\n};\n","import { Select, SelectProps, getVariant } from '@apia/theme';\n\nexport const ToolbarSelect = (props: SelectProps) => {\n return (\n <Select\n {...props}\n className={`toolbar__select ${props?.className ?? ''}`}\n {...(props.variant ? getVariant(props.variant) : null)}\n >\n {props.children}\n </Select>\n );\n};\n","import { useMount } from '@apia/util';\nimport { TToolbarIconButton } from './types';\nimport { Box, getVariant } from '@apia/theme';\nimport { ReactNode, useMemo } from 'react';\nimport { ToolbarController } from './ToolbarController';\nimport { ToolbarTextButton } from './ToolbarTextButton';\nimport { ToolbarIconButton } from './ToolbarIconButton';\nimport { ToolbarInput } from './ToolbarInput';\nimport { ToolbarSeparator } from './ToolbarSeparator';\nimport { ToolbarSelect } from './ToolbarSelect';\n\nconst Toolbar = ({\n children,\n getController,\n}: {\n children: ReactNode;\n /**\n * El controlador permite gestionar el estado de los distintos elementos de\n * la toolbar\n */\n getController?: (newController: ToolbarController) => unknown;\n}) => {\n const controller = useMemo(() => new ToolbarController(), []);\n\n useMount(() => {\n getController?.(controller);\n });\n\n return (\n <controller.Context>\n <Box\n className=\"toolbar\"\n {...getVariant('layout.common.components.toolbar')}\n >\n {children}\n </Box>\n </controller.Context>\n );\n};\n\nexport type { TToolbarIconButton as TToolDefinition };\nexport {\n ToolbarIconButton,\n ToolbarInput,\n ToolbarTextButton,\n Toolbar,\n ToolbarController,\n ToolbarSeparator,\n ToolbarSelect,\n};\n","import { EventEmitter } from '@apia/util';\nimport {\n Children,\n ReactElement,\n ReactNode,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport { useSubscription } from '@apia/util';\nimport { Box, BoxProps } from '@apia/theme';\nimport { TSortableListItem } from './SortableListItem';\n\ntype THover = { id: string; after: boolean };\n\nfunction getTargetItem(ev: Event) {\n return (ev.target as HTMLElement).closest(\n '.sortableList__item',\n ) as HTMLElement;\n}\n\nexport class SortableListHandler {\n #emitter = new EventEmitter<{ hover: THover; sort: null }>();\n\n #items: ReactElement<{ id: string }>[] = [];\n\n updateChildren = (items: ReactNode) => {\n this.#items = Children.toArray(items).filter((el): el is ReactElement =>\n isValidElement(el),\n );\n };\n\n #moveItem = (movingId: string, idBefore: string, after: boolean) => {\n if (movingId === idBefore) return;\n\n const itemIndex = this.#items.findIndex(\n (search) => search.props.id === movingId,\n );\n const item = this.#items.splice(itemIndex, 1)![0]!;\n const insertIndex = this.#items.findIndex(\n (search) => search.props.id === idBefore,\n );\n\n this.#items.splice(insertIndex + (after ? 1 : 0), 0, item);\n this.#emitter.emit('sort', null);\n };\n\n useItemEvents = () => {\n const unsuscribe = useRef(() => {});\n const ref = useCallback((el: HTMLElement) => {\n unsuscribe.current();\n\n if (el) {\n const handleDragEnd = (ev: DragEvent) => {\n getTargetItem(ev).classList.remove('dragging');\n };\n\n const handleDrop = (ev: DragEvent) => {\n const target = getTargetItem(ev);\n\n this.#moveItem(\n ev.dataTransfer!.getData('text'),\n target.id,\n target.classList.contains('after'),\n );\n\n target.classList.remove('dragover');\n target.classList.remove('after');\n };\n\n const handleDragLeave = (ev: DragEvent) => {\n getTargetItem(ev).classList.remove('dragover');\n };\n\n const handleDragOver = (ev: DragEvent) => {\n ev.preventDefault();\n // eslint-disable-next-line no-param-reassign\n ev.dataTransfer!.dropEffect = 'move';\n getTargetItem(ev).classList.add('dragover');\n\n const bounding = getTargetItem(ev).getBoundingClientRect();\n if (ev.clientY - bounding.top > bounding.height / 2)\n getTargetItem(ev).classList.add('after');\n else getTargetItem(ev).classList.remove('after');\n };\n\n document.addEventListener('dragend', handleDragEnd);\n el.addEventListener('drop', handleDrop);\n el.addEventListener('dragleave', handleDragLeave);\n el.addEventListener('dragover', handleDragOver);\n\n unsuscribe.current = () => {\n document.removeEventListener('dragend', handleDragEnd);\n el.removeEventListener('drop', handleDrop);\n el.removeEventListener('dragleave', handleDragLeave);\n el.removeEventListener('dragover', handleDragOver);\n };\n }\n }, []);\n\n return ref;\n };\n\n useSortChange = (onSortChange?: (items: ReactElement[]) => unknown) => {\n useSubscription({\n makeSubscription: () => {\n return this.#emitter.on('sort', () => {\n onSortChange?.([...this.#items]);\n });\n },\n });\n };\n\n useWrapperEvents = () => {\n const unsuscribe = useRef(() => {});\n const ref = useCallback((el: HTMLElement) => {\n unsuscribe.current();\n\n if (el) {\n const handleDrag = (ev: DragEvent) => {\n const target = getTargetItem(ev);\n\n if (ev.dataTransfer) {\n // eslint-disable-next-line no-param-reassign\n ev.dataTransfer.effectAllowed = 'all';\n ev.dataTransfer.setData('text', target.id);\n target.classList.add('dragging');\n }\n };\n\n el.addEventListener('dragstart', handleDrag);\n\n unsuscribe.current = () => {\n el.removeEventListener('dragstart', handleDrag);\n };\n }\n }, []);\n\n return ref;\n };\n}\n\nconst con = createContext<SortableListHandler>({} as SortableListHandler);\n\nexport const SortableListContext = ({\n boxProps,\n children,\n onSortChange,\n}: {\n boxProps?: BoxProps;\n children: ReactNode;\n onSortChange?: (items: ReactElement<TSortableListItem>[]) => unknown;\n}) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const handler = useMemo(() => new SortableListHandler(), []);\n handler.useSortChange(onSortChange);\n handler.updateChildren(children);\n\n return (\n <Box\n {...boxProps}\n as={boxProps?.as ?? 'ul'}\n className={`sortableList ${boxProps?.className ?? ''}`}\n ref={handler.useWrapperEvents()}\n >\n <con.Provider value={handler}>{children}</con.Provider>\n </Box>\n );\n};\n\nexport function useSortableListHandler() {\n return useContext(con);\n}\n\nexport type { TSortableListItem };\n","import { Box, BoxProps } from '@apia/theme';\nimport { ReactNode, memo } from 'react';\nimport { useSortableListHandler } from './SortableListHandler';\n\nexport type TSortableListItem = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalProps?: any;\n boxProps?: Omit<BoxProps, 'id'>;\n id: string;\n children: ReactNode;\n};\n\nexport const SortableListItem = memo(\n ({ boxProps, id, children }: TSortableListItem) => {\n return (\n <Box\n {...boxProps}\n as={boxProps?.as ?? 'li'}\n className={`sortableList__item ${boxProps?.className ?? ''}`}\n draggable\n id={id}\n ref={useSortableListHandler().useItemEvents()}\n >\n {children}\n </Box>\n );\n },\n);\n","import { BoxProps, makeStyledComponent } from '@apia/theme';\nimport { Children, ReactElement, ReactNode } from 'react';\nimport { SortableListContext } from './SortableListHandler';\nimport { SortableListItem, TSortableListItem } from './SortableListItem';\n\nexport const UnstyledSortableList = ({\n boxProps,\n children,\n onSortChange,\n}: {\n boxProps?: BoxProps;\n children: ReactNode;\n onSortChange?: (items: ReactElement<TSortableListItem>[]) => unknown;\n}) => {\n Children.forEach(children, (el) => {\n if ((el as ReactElement<TSortableListItem>)?.type !== SortableListItem)\n throw new Error(\n `Every children of a SortableList must be of type SortableListItem`,\n );\n });\n\n return (\n <SortableListContext onSortChange={onSortChange} boxProps={boxProps}>\n {children}\n </SortableListContext>\n );\n};\n\nexport const SortableList = makeStyledComponent(\n 'SortableList',\n 'layout.common.components.sortableList',\n {\n '.sortableList': { display: 'flex', flexDirection: 'column' },\n '.sortableList__item': {\n cursor: 'pointer',\n },\n '.dragging': {\n opacity: '0.3',\n },\n '.dragover': { position: 'relative' },\n '.dragover:after': {\n display: 'block',\n content: '\"\"',\n position: 'absolute',\n height: '4px',\n left: '0',\n top: '-4px',\n bottom: 'auto',\n width: '100%',\n backgroundColor: 'palette.primary.main',\n zIndex: 9,\n },\n '.dragover.after:after': {\n top: 'auto',\n bottom: '-4px',\n },\n },\n UnstyledSortableList,\n);\n\nexport { SortableListItem };\n"],"names":["__publicField","KeyHandler","keysMakers","getInitialState","React","uniqueId","Fragment","DialogHeader","_a","__privateAdd","__privateGet","__privateSet","__privateMethod","useBreakpointIndex","_emitter","_maxId","current","__privateWrapper","Icon","useUpdateEffect","observer","Item","ContextMenu","fillZeros","fillThousandsZeros","decimalCount","decimalZeros","decimalSeparator","thousandsSeparator","regexpThousandsSeparator","regexpDecimalSeparator","y","x","_items","c","IconButtonThemeUI","Checkbox","isChecked","props","styles","disableChildrenFocus","disableChildrenFocusMethod","operations","useStore","distinctors"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/accordion/context.ts","../src/components/accordion/handler.tsx","../src/components/accordion/KeyHandler.tsx","../src/components/ListBox/common.ts","../src/components/accordion/Accordion.tsx","../src/components/accordion/AccordionItemButton.tsx","../src/components/modals/hooks/useModal.tsx","../src/components/modals/layout/DialogHeader.tsx","../src/components/modals/ModalContext.ts","../src/components/modals/hooks/useEscapeKey.ts","../src/components/modals/hooks/useInitialFocus.ts","../src/components/modals/hooks/useStyleState.ts","../src/components/modals/windowModal/handleMouseMove.ts","../src/components/modals/windowModal/bringToTop.ts","../src/components/modals/WindowModal.tsx","../src/hooks/useBodyScrollLock.ts","../src/components/modals/Overlay.tsx","../src/components/modals/StaticModal.tsx","../src/components/modals/Modal.tsx","../src/objects/ApiaUtil/modals/OpenModal.tsx","../src/objects/ApiaUtil/modals/ApiaUtilModals.tsx","../src/objects/ApiaUtil/notifications/ApiaUtilNotifications.tsx","../src/objects/ApiaUtil/tabs/util.ts","../src/tabs/util.ts","../src/tabs/ContextMenu.tsx","../src/tabs/renderers/DefaultTabsLabelRenderer.tsx","../src/tabs/Item.tsx","../src/tabs/TabsList.tsx","../src/tabs/tabsController.ts","../src/tabs/Content.tsx","../src/tabs/Tabs.tsx","../src/objects/ApiaUtil/tabs/ApiaUtilTabsController.tsx","../src/components/modals/CalendarModal.tsx","../src/components/modals/layout/DialogButtonBar.tsx","../src/components/forms/buttons/SimpleButton.tsx","../src/components/modals/layout/Confirm.tsx","../src/components/dialogs/ConfirmModal.tsx","../src/components/dialogs/AlertModal.tsx","../src/objects/ApiaUtil/dialogs/ApiaUtilDialogs.tsx","../src/objects/ApiaUtil/parsers/parseStringToApiaNumber.ts","../src/objects/ApiaUtil/parsers/ApiaUtilParsers.ts","../src/objects/ApiaUtil/tooltips/ApiaUtilTooltip.ts","../src/objects/ApiaUtil/tooltips/AutomaticTooltip.ts","../src/objects/ApiaUtil/tooltips/tooltip/util.ts","../src/objects/ApiaUtil/tooltips/tooltip/Tooltip.tsx","../src/objects/ApiaUtil/tooltips/ApiaUtilTooltips.tsx","../src/objects/ApiaUtil/menu/ApiaUtilMenu.tsx","../src/objects/ApiaUtil/mouse/ApiaUtilMouse.ts","../src/objects/ApiaUtil/index.tsx","../src/objects/ScreenLocker/index.tsx","../src/components/forms/Autocomplete/Context.tsx","../src/components/forms/Autocomplete/OptionsBox.tsx","../src/components/forms/Autocomplete/store/AutocompleteController.tsx","../src/components/forms/Autocomplete/SearchBox.tsx","../src/components/forms/Autocomplete/Keyhandler.tsx","../src/components/forms/Autocomplete/index.tsx","../src/components/forms/buttons/BaseButton.tsx","../src/components/forms/buttons/IconButton.tsx","../src/components/buttons/useOtherTagButton.ts","../src/components/forms/Captcha.tsx","../src/components/forms/Checkbox.tsx","../src/globalFocus.ts","../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/forms/FieldLabel.tsx","../src/components/accordion/defaultElements/Checkbox.tsx","../src/components/accordion/defaultElements/useIsChecked.ts","../src/components/responsive/AutoEllipsis.tsx","../src/components/responsive/makeResponsiveComponent.tsx","../src/components/accordion/defaultElements/DefaultAccordionItemButton.tsx","../src/components/accordion/AccordionItemContent.tsx","../src/components/accordion/AccordionItem.tsx","../src/components/apia/ApiaDateFilter.tsx","../src/components/apia/ApiaFilter.tsx","../src/components/boxes/LabelBox.tsx","../src/components/containers/ContainerWithHeader/index.tsx","../src/components/collapsiblePanel/styles.ts","../src/components/collapsiblePanel/index.tsx","../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/LinearLoader.tsx","../src/components/loaders/ProgressBar.tsx","../src/components/loaders/LoaderSpinner.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/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","../src/components/importComponent.tsx","../src/components/Toolbar/ToolbarController.tsx","../src/components/Toolbar/ToolbarTextButton.tsx","../src/components/Toolbar/ToolbarIconButton.tsx","../src/components/Toolbar/ToolbarInput.tsx","../src/components/Toolbar/ToolbarSeparator.tsx","../src/components/Toolbar/ToolbarSelect.tsx","../src/components/Toolbar/index.tsx","../src/components/SortableList/SortableListHandler.tsx","../src/components/SortableList/SortableListItem.tsx","../src/components/SortableList/index.tsx"],"sourcesContent":["import { TId } from '@apia/util';\nimport { createContext, useContext } from 'react';\nimport { TAccordionHandler } from '.';\n\nexport const AccordionContext = createContext<TAccordionHandler | null>(null);\nexport const AccordionItemContext = createContext<TId | null>(null);\n\nexport const useAccordionContext = () => {\n const context = useContext(AccordionContext);\n if (!context) throw new Error('There is no AccordionContext');\n return context;\n};\n","import { TId } from '@apia/util';\nimport { ReactNode, useContext, useEffect, useMemo, useState } from 'react';\nimport { AccordionContext, AccordionItemContext } from './context';\nimport { TItemState, TItemStateListener, TPropsListener } from './types';\nimport { shallowEqual } from '@apia/store';\nimport { IAccordionProps } from './Accordion';\n\ntype TSelectionComparator<T> = (prev: T, next: T) => boolean;\n\ntype TItemUpdater =\n | Partial<TItemState>\n | ((currentProps: TItemState) => Partial<TItemState>);\n\nfunction makeItemStateSelectorHook(handler: AccordionHandler) {\n return function useItemStateSelector<T>(\n selector: (props: TItemState) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const id = handler.hooks.useItemId();\n const [state, setState] = useState<T>(selector(handler.itemsState[id]));\n\n handler.hooks.useItemStateUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nfunction makePropsSelectorHook(handler: AccordionHandler) {\n return function usePropsSelector<T>(\n selector: (props: IAccordionProps) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const [state, setState] = useState<T>(selector(handler.props));\n\n handler.hooks.usePropsUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nexport class AccordionHandler {\n itemsState: Record<TId, TItemState> = {};\n itemsStateListeners: Record<TId, TItemStateListener[]> = {};\n\n propsListeners: TPropsListener[] = [];\n\n constructor(\n public id: string,\n public props: IAccordionProps,\n ) {}\n\n registerItem(itemId: TId, initialState: TItemState) {\n if (!this.itemsState[itemId]) this.itemsState[itemId] = initialState;\n }\n\n toggleItem(itemId: TId, expanded?: boolean) {\n const isExpanded = expanded ?? !this.itemsState[itemId].isExpanded;\n if (this.props.singleExpand && isExpanded) {\n Object.keys(this.itemsState).forEach((current) => {\n if (current !== itemId) {\n this.udpateItem(current, { isExpanded: false });\n }\n });\n }\n this.udpateItem(itemId, { isExpanded });\n }\n\n unregisterItem(itemId: TId) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.itemsState[itemId];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.itemsStateListeners[itemId];\n }\n\n /**\n * Permite actualizar parcialmente el estado de un item\n */\n udpateItem(itemId: TId, updater: TItemUpdater) {\n const newProps =\n updater instanceof Function ? updater(this.itemsState[itemId]) : updater;\n\n Object.assign(this.itemsState[itemId], newProps);\n this.itemsStateListeners[itemId].forEach((current) =>\n current(this.itemsState[itemId]),\n );\n }\n\n updateProps(props: IAccordionProps) {\n this.props = { ...this.props, ...props };\n this.propsListeners.forEach((current) => current(props));\n }\n\n hooks = {\n useAccordionContextProvider: () => {\n const Provider = useMemo(\n () =>\n ({ children }: { children: ReactNode }) => (\n <AccordionContext.Provider value={this}>\n {children}\n </AccordionContext.Provider>\n ),\n [],\n );\n return Provider;\n },\n useItemContextProvider: (itemId: TId) => {\n const Provider = useMemo(\n () =>\n ({ children }: { children: ReactNode }) => (\n <AccordionItemContext.Provider value={itemId}>\n {children}\n </AccordionItemContext.Provider>\n ),\n [itemId],\n );\n return Provider;\n },\n useItemId: () => {\n const id = useContext(AccordionItemContext);\n if (id === null) throw new Error('There is no AccordionItemContext');\n return id;\n },\n useItemStateSelector: makeItemStateSelectorHook(this),\n useItemStateUpdate: (cb: TItemStateListener) => {\n const itemId = this.hooks.useItemId();\n useEffect(() => {\n if (!this.itemsStateListeners[itemId])\n this.itemsStateListeners[itemId] = [];\n this.itemsStateListeners[itemId].push(cb);\n\n return () => {\n this.itemsStateListeners[itemId] = this.itemsStateListeners[\n itemId\n ].filter((current) => current != cb);\n };\n }, [cb, itemId]);\n },\n usePropsSelector: makePropsSelectorHook(this),\n usePropsUpdate: (cb: TPropsListener) => {\n useEffect(() => {\n this.propsListeners.push(cb);\n return () => {\n this.propsListeners = this.propsListeners.filter(\n (current) => current !== cb,\n );\n };\n }, [cb]);\n },\n };\n}\n","import { Box, type BoxProps } from '@apia/theme';\nimport { useAccordionContext } from './context';\nimport { getVariant } from '@apia/theme';\nimport { useCallback } from 'react';\n\nexport const KeyHandler = (props: BoxProps) => {\n const handler = useAccordionContext();\n\n const variant = handler.hooks.usePropsSelector((current) => current.variant);\n\n return (\n <Box\n {...props}\n ref={useCallback(\n (ref: HTMLElement | null) => {\n if (ref) {\n ref.addEventListener('keydown', (ev) => {\n if (\n (ev.target as HTMLElement).closest('.accordion__item__content')\n )\n return;\n\n const accordionItem = (ev.target as HTMLElement)?.closest(\n '.accordion__item',\n ) as HTMLElement;\n const accordion = (ev.target as HTMLElement)?.closest(\n '.accordion',\n );\n const allItems = [\n ...(accordion?.querySelectorAll('.accordion__item') ?? []),\n ];\n const currentIndex = allItems.findIndex(\n (current) => current === accordionItem,\n );\n\n if (ev.code === 'ArrowDown') {\n if (currentIndex < allItems.length - 1) {\n ev.preventDefault();\n (\n (allItems[currentIndex + 1] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.focus();\n }\n } else if (ev.code === 'ArrowUp') {\n if (currentIndex > 0) {\n ev.preventDefault();\n (\n (allItems[currentIndex - 1] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.focus();\n }\n } else if (ev.code === 'ArrowLeft') {\n if (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '[aria-expanded=\"true\"]',\n ) as HTMLElement\n ) {\n ev.preventDefault();\n (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.click();\n }\n } else if (ev.code === 'ArrowRight') {\n if (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '[aria-expanded=\"false\"]',\n ) as HTMLElement\n ) {\n ev.preventDefault();\n (\n (allItems[currentIndex] as HTMLElement)?.querySelector(\n '.accordion__item__button',\n ) as HTMLElement\n )?.click();\n }\n } else if (ev.code === 'Space') {\n ev.preventDefault();\n ev.stopPropagation();\n const id = accordionItem.dataset.id as string;\n handler.udpateItem(id, {\n isChecked: !handler.itemsState[id].isChecked,\n });\n }\n });\n }\n },\n [handler],\n )}\n {...(variant ? getVariant(variant) : undefined)}\n />\n );\n};\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':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\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':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\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 { useRef, FC, ReactNode, useEffect, useState, useMemo } from 'react';\nimport { AccordionHandler } from './handler';\nimport { KeyHandler } from './KeyHandler';\nimport { shallowEqual } from '@apia/store';\nimport { uniqueId } from '../ListBox/common';\n\nexport interface IAccordionProps {\n /**\n * Tiempo en ms que dura la animación. Por defecto se usa 150.\n */\n animationDuration?: number;\n children?: ReactNode;\n className?: string;\n getHandler?: (handler: AccordionHandler) => unknown;\n singleExpand?: boolean;\n /**\n * Por defecto usa la variante layout.common.components.accordion.primary\n */\n variant?: string;\n}\n\nexport const Accordion: FC<IAccordionProps> = ({\n animationDuration = 150,\n children,\n className,\n getHandler,\n variant = 'layout.common.components.accordion.primary',\n singleExpand = false,\n}) => {\n const id = useMemo(() => uniqueId(), []);\n\n const [handler] = useState(() => {\n return new AccordionHandler(id, {\n animationDuration,\n children,\n getHandler,\n variant,\n singleExpand,\n });\n });\n const propsRef = useRef({\n animationDuration,\n children,\n getHandler,\n variant,\n });\n if (\n !shallowEqual(\n {\n animationDuration,\n children,\n getHandler,\n variant,\n },\n propsRef.current,\n )\n ) {\n propsRef.current = {\n animationDuration,\n children,\n getHandler,\n variant,\n };\n handler.updateProps({\n animationDuration,\n children,\n getHandler,\n variant,\n });\n }\n\n const Provider = handler.hooks.useAccordionContextProvider();\n\n useEffect(() => {\n getHandler?.(handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getHandler, handler]);\n\n return (\n <Provider>\n <KeyHandler className={`accordion ${className ?? ''}`}>\n {children}\n </KeyHandler>\n </Provider>\n );\n};\n","import { ReactNode } from 'react';\n\nexport type TAccordionItemButton = {\n children?: ReactNode;\n};\n\nexport const AccordionItemButton = ({ children }: TAccordionItemButton) => {\n return <>{children}</>;\n};\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 { Box, Close, Heading, useBreakpointIndex } from '@apia/theme';\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\ndeclare global {\n interface Window {\n BTN_CLOSE: string;\n }\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} modal__header`}\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} modal__header`}\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 { createContext, useContext } from 'react';\n\nexport type TModalContext = {\n changeTitle: (newTitle: string) => void;\n close: () => unknown;\n descriptionId: string;\n};\n\nexport const ModalContext = createContext<TModalContext | null>(null);\n\nexport function useModalContext() {\n const context = useContext(ModalContext);\n\n if (!context) throw new Error('There is no ModalContext');\n\n return context;\n}\n","import { useEffect } from 'react';\r\nimport { ApiaUtil } from '../../../objects';\r\n\r\n/**\r\n * Contorla la lógica encargada de cerrar el modal al presionar la tecla escape.\r\n */\r\nexport function useEscapeKey({\r\n closeHandler,\r\n id,\r\n isOpenInner,\r\n shouldCloseOnEsc,\r\n}: {\r\n id: string;\r\n closeHandler: () => void;\r\n isOpenInner: boolean;\r\n shouldCloseOnEsc?: boolean;\r\n}) {\r\n useEffect(() => {\r\n function handleEscape(event: KeyboardEvent) {\r\n if (event.code !== 'Escape') return;\r\n\r\n const notifications = [\r\n ...(document.querySelectorAll(\r\n '.notificationsFloatingList .notification',\r\n ) ?? []),\r\n ];\r\n if (notifications.length) {\r\n ApiaUtil.instance.notifications.closeAll();\r\n return;\r\n }\r\n\r\n const tooltips = [\r\n ...(document.querySelectorAll('.tooltip__wrapper') ?? []),\r\n ];\r\n if (tooltips.length) {\r\n return;\r\n }\r\n\r\n const overlays = [\r\n ...document.querySelectorAll('.overlay, .window__modal'),\r\n ];\r\n\r\n const modal = (event.target as HTMLElement).closest(`#modal__${id}`);\r\n if (modal) {\r\n /**\r\n * Funcionamiento para el WindowModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n } else if (\r\n overlays.length > 0 &&\r\n (overlays[overlays.length - 1]?.id === id ||\r\n overlays[overlays.length - 1]?.id === `modal__${id}`)\r\n ) {\r\n /**\r\n * Legacy, para el StaticModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n }\r\n }\r\n if (isOpenInner && shouldCloseOnEsc)\r\n document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);\r\n}\r\n","import { useEffect } from 'react';\r\nimport { TModal } from '../Modal';\r\nimport { focus, focusSelector, getFocusSelector } from '@apia/util';\r\n\r\nexport function useInitialFocus({\r\n isOpenInner,\r\n initialFocusConfiguration,\r\n initialFocusGetter,\r\n initialFocusRef,\r\n noFocus,\r\n parentElement,\r\n}: { isOpenInner: boolean; parentElement?: HTMLElement | null } & Pick<\r\n TModal,\r\n | 'noFocus'\r\n | 'initialFocusGetter'\r\n | 'initialFocusRef'\r\n | 'initialFocusConfiguration'\r\n>) {\r\n useEffect(\r\n () => {\r\n if (!noFocus && isOpenInner) {\r\n if (parentElement) {\r\n void focus.on(\r\n () => {\r\n if (initialFocusGetter) return initialFocusGetter(parentElement);\r\n if (initialFocusRef?.current)\r\n return (\r\n (initialFocusRef?.current || parentElement) as HTMLElement\r\n ).querySelector(focusSelector) as HTMLElement;\r\n return parentElement.querySelector(\r\n getFocusSelector(':not(.modal__closeButton)'),\r\n ) as HTMLElement;\r\n },\r\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\r\n );\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [parentElement],\r\n );\r\n}\r\n","import { ThemeUICSSObject } from '@apia/theme';\r\nimport { SetStateAction, useCallback, useRef } from 'react';\r\n\r\ntype InitialStyleAssigner = (el: HTMLElement) => Partial<ThemeUICSSObject>;\r\ntype CSSState = Partial<ThemeUICSSObject>;\r\n\r\ntype UseStyleStateProps = {\r\n initialState?: CSSState | InitialStyleAssigner;\r\n onUpdateRef?: InitialStyleAssigner;\r\n};\r\n\r\nexport function applyStylesToElement(el: HTMLElement, styles: CSSState) {\r\n Object.entries(styles).forEach(([name, value]) => {\r\n try {\r\n el.style[name as 'width'] = value as any;\r\n } catch (e) {\r\n e; // Se intentó asignar un valor que no es correcto\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Este hook permite mantener un estado de estilos, para utilizar en un elemento del DOM.\r\n *\r\n * A diferencia de un setState común, al realizar setState en este hook no se re-renderiza el componente, sino que se aplican los estilos directamente en el DOM.\r\n *\r\n * Se garantiza además que estos estados no se perderán en los re-renderizados provocados por causas externas a este hook.\r\n */\r\nexport function useStyleState(props?: UseStyleStateProps) {\r\n const element = useRef<null | HTMLElement>(null);\r\n const state = useRef<CSSState>(\r\n typeof props?.initialState === 'object'\r\n ? props?.initialState\r\n : ({} as CSSState),\r\n );\r\n\r\n const applyStyles = useCallback(() => {\r\n applyStylesToElement(element.current!, state.current);\r\n }, []);\r\n\r\n const hasInitializedState = useRef(typeof props?.initialState !== 'function');\r\n return {\r\n ref: useCallback(\r\n (el: HTMLElement | null) => {\r\n element.current = el;\r\n if (el) {\r\n if (!hasInitializedState.current) {\r\n hasInitializedState.current = true;\r\n state.current = (props?.initialState as InitialStyleAssigner)(el);\r\n }\r\n\r\n if (props?.onUpdateRef) {\r\n state.current = props.onUpdateRef(el);\r\n }\r\n\r\n applyStyles();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [applyStyles],\r\n ),\r\n setState: useCallback(\r\n (newState: SetStateAction<CSSState>) => {\r\n state.current =\r\n typeof newState === 'function' ? newState(state.current) : newState;\r\n applyStyles();\r\n },\r\n [applyStyles],\r\n ),\r\n };\r\n}\r\n","import { ThemeUICSSObject } from '@apia/theme';\r\nimport { addBoundary } from '@apia/util';\r\nimport { MutableRefObject } from 'react';\r\nimport { applyStylesToElement } from '../hooks/useStyleState';\r\n\r\nexport function handleMouseMove({\r\n ev,\r\n initialPosition,\r\n initialMousePosition,\r\n modalMainElement,\r\n setStyle,\r\n}: {\r\n ev: MouseEvent;\r\n initialPosition: MutableRefObject<null | DOMRect>;\r\n initialMousePosition: MutableRefObject<null | { x: number; y: number }>;\r\n modalMainElement: HTMLElement;\r\n setStyle: (newState: React.SetStateAction<Partial<ThemeUICSSObject>>) => void;\r\n}) {\r\n if (initialPosition.current) {\r\n ev.preventDefault();\r\n const diffX = ev.clientX - initialMousePosition.current!.x;\r\n const diffY = ev.clientY - initialMousePosition.current!.y;\r\n\r\n const newLeft = addBoundary(\r\n initialPosition.current.left + diffX,\r\n 0,\r\n window.innerWidth - 50,\r\n );\r\n const newTop = addBoundary(\r\n initialPosition.current.top + diffY,\r\n 0,\r\n window.innerHeight - 50,\r\n );\r\n\r\n setStyle({\r\n left: `${newLeft}px`,\r\n top: `${newTop}px`,\r\n right: 'unset',\r\n bottom: 'unset',\r\n });\r\n\r\n const mainElement = modalMainElement;\r\n const headerElement = mainElement?.querySelector<HTMLElement>(\r\n '.window__modal .modal__header',\r\n );\r\n const modalContent = mainElement?.querySelector<HTMLElement>(\r\n '.window__modal .modal__content',\r\n );\r\n\r\n if (modalContent && mainElement) {\r\n const headerBounding = headerElement?.getBoundingClientRect();\r\n const contentBounding = mainElement.getBoundingClientRect();\r\n\r\n applyStylesToElement(modalContent, {\r\n maxHeight: `${window.innerHeight - newTop - (headerBounding?.height ?? 0)}px`,\r\n });\r\n\r\n mainElement.dataset.originalWidth =\r\n mainElement.dataset.originalWidth || String(contentBounding!.width);\r\n applyStylesToElement(mainElement, {\r\n maxWidth: `${Math.min(Number.parseInt(mainElement.dataset.originalWidth, 10), window.innerWidth - newLeft)}px`,\r\n });\r\n }\r\n }\r\n}\r\n","export function resetModalsPositions() {\r\n document.querySelectorAll<HTMLElement>('.window__modal').forEach((c) => {\r\n c.style.zIndex = '1200';\r\n });\r\n}\r\n\r\nexport function bringToTop(modalElement: HTMLElement) {\r\n document.querySelectorAll<HTMLElement>('.window__modal').forEach((c) => {\r\n if (c.querySelector<HTMLElement>('.modal__main') === modalElement) {\r\n c.style.zIndex = '1201';\r\n } else {\r\n c.style.zIndex = '1200';\r\n }\r\n });\r\n}\r\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n Fragment,\n} from 'react';\nimport { TModal } from './Modal';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, ThemeUICSSObject, getVariant } from '@apia/theme';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { getFocusSelector, useCombinedRefs } from '@apia/util';\nimport { useStyleState } from './hooks/useStyleState';\nimport { uniqueId } from '@apia/notifications';\nimport { FreeFocusInside } from 'react-focus-lock';\nimport { handleMouseMove } from './windowModal/handleMouseMove';\nimport { bringToTop } from './windowModal/bringToTop';\n\nexport const WindowModal = forwardRef<HTMLDivElement, TModal>(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n defaultPosition,\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 onDragStart = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n size = 'md',\n title = '',\n variant,\n },\n ref,\n ) => {\n const innerId = useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\n }\n const [isOpenInner, setIsOpen] = useState(isOpen);\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n\n const [parentElement, setParentElement] = useState<HTMLElement | null>(\n null,\n );\n\n useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement,\n });\n\n const Wrapper = useMemo(() => {\n return Portal ?? Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const hasSetPosition = useRef(false);\n const { ref: stylesRef, setState: setStyle } = useStyleState({\n onUpdateRef(el) {\n const mainElement = el.querySelector<HTMLElement>('.modal__main');\n const bounding = mainElement!.getBoundingClientRect();\n\n const returnObject: Partial<ThemeUICSSObject> = {\n position: 'fixed',\n };\n\n if (!hasSetPosition.current && mainElement) {\n bringToTop(mainElement);\n hasSetPosition.current =\n !!defaultPosition || (!!bounding && bounding.width > 200);\n Object.assign(\n returnObject,\n defaultPosition ?? {\n left: `${window.innerWidth / 2 - (bounding?.width ?? 0) / 2}px`,\n top: `${window.innerHeight / 2 - (bounding?.height ?? 0) / 2}px`,\n },\n );\n }\n\n return returnObject;\n },\n });\n\n const unSubscribe = useRef(() => {});\n const initialPosition = useRef<null | DOMRect>(null);\n const initialMousePosition = useRef<null | { x: number; y: number }>(null);\n const assignRefs = useCombinedRefs(\n setParentElement as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n stylesRef as unknown as React.Ref<unknown>,\n );\n\n return (\n <Wrapper>\n <ModalContext.Provider\n value={useMemo(() => {\n return {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, innerId])}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={setParentElement as any}\n onExited={onExited}\n >\n <Box\n ref={assignRefs}\n className={`modal__variantWrapper window__modal ${className ?? ''}`}\n id={`modal__${innerId}`}\n {...(variant ? getVariant(variant) : {})}\n sx={{ zIndex: 'modal' }}\n >\n <FreeFocusInside>\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={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 ref={useCallback(\n (el: null | HTMLElement) => {\n unSubscribe.current();\n unSubscribe.current = () => {};\n\n if (el) {\n const handleMouseDown = (ev: MouseEvent) => {\n if (\n (ev.target as HTMLElement).closest?.(\n '[draggable=\"true\"]',\n )\n )\n return;\n\n if (\n (ev.target as HTMLElement).closest(\n getFocusSelector(),\n )\n )\n return;\n\n const res = onDragStart?.(ev);\n if (res === false) return;\n\n const rect = el.getBoundingClientRect();\n initialPosition.current = rect;\n initialMousePosition.current = {\n x: ev.clientX,\n y: ev.clientY,\n };\n\n bringToTop(\n (ev.target as HTMLElement).closest<HTMLElement>(\n '.modal__main',\n )!,\n );\n };\n const innerHandleMouseMove = (ev: MouseEvent) => {\n if (initialPosition.current) {\n handleMouseMove({\n ev,\n initialMousePosition,\n initialPosition,\n modalMainElement: el,\n setStyle,\n });\n }\n };\n\n const handleMouseUp = () => {\n initialPosition.current = null;\n };\n\n el.addEventListener('mousedown', handleMouseDown);\n document.addEventListener(\n 'mousemove',\n innerHandleMouseMove,\n );\n document.addEventListener('mouseup', handleMouseUp);\n\n unSubscribe.current = () => {\n el.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener(\n 'mousemove',\n innerHandleMouseMove,\n );\n document.removeEventListener(\n 'mouseup',\n handleMouseUp,\n );\n };\n }\n },\n [onDragStart, setStyle],\n )}\n >\n {!noHeader && (\n <DialogHeader\n NavBar={NavBar}\n title={innerTitle}\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 </FreeFocusInside>\n </Box>\n </CSSTransition>\n </ModalContext.Provider>\n </Wrapper>\n );\n },\n);\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 '@apia/theme';\nimport ReactFocusLock, { FreeFocusInside } 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\n crossFrame={false}\n >\n <FreeFocusInside>{children}</FreeFocusInside>\n </ReactFocusLock>\n </Box>\n </CSSTransition>\n );\n },\n);\n\nOverlay.displayName = 'Overlay';\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 '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { useCombinedRefs } from '@apia/util';\nimport { getVariant } from '@apia/theme';\nimport { Overlay } from './Overlay';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { TModal } from './Modal';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { resetModalsPositions } from './windowModal/bringToTop';\n\nexport const StaticModal = 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 }: Omit<TModal, 'asWindow'>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\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 ((el: HTMLElement) => {\n if (el) {\n resetModalsPositions();\n }\n }) 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 useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement: 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 {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, 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={innerTitle}\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\nStaticModal.displayName = 'StaticModal';\n","import React, { forwardRef } from 'react';\nimport { IOnFocusConfiguration, TFocusRetriever } from '@apia/util';\nimport { TModalSize } from '../types';\nimport { IDialogHeader } from './layout/DialogHeader';\nimport { WindowModal } from './WindowModal';\nimport { StaticModal } from './StaticModal';\nimport { useBreakpointIndex } from '@theme-ui/match-media';\n\nexport type TModal = {\n animationDuration?: number;\n /**\n * Aplica solamente para modales que tengan draggable=true.\n */\n defaultPosition?: {\n left?: string;\n right?: string;\n top?: string;\n bottom?: string;\n };\n /**\n * Si esta variable está en true, el modal se comportará más como una ventana\n * que como un modal\n */\n draggable?: boolean;\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 * Este método recibe el evento del mousedown utilizado para controllar el dragstart. Si el usuario devuelve false, el drag no será realizado.\n */\n onDragStart?: (ev: MouseEvent) => boolean;\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 (props: TModal, ref: React.Ref<HTMLDivElement>) => {\n const breakpoint = useBreakpointIndex();\n\n if (props.draggable && breakpoint > 3) {\n return <WindowModal {...props} ref={ref} />;\n }\n return <StaticModal {...props} ref={ref} />;\n },\n);\n\nModal.displayName = 'Modal';\n","import { usePrevious } from '@apia/util';\nimport { useModal } from '../../../components/modals/hooks/useModal';\nimport { Modal, TModal } from '../../../components/modals/Modal';\nimport { Confirm, IConfirm } from '../../../components';\nimport React, { useRef } from 'react';\n\nexport type TOpenModal = Pick<\n TModal,\n | 'NavBar'\n | 'Portal'\n | 'children'\n | 'className'\n | 'hideCloseButton'\n | 'initialFocusGetter'\n | 'initialFocusConfiguration'\n | 'maxWidth'\n | 'noHeader'\n | 'onExited'\n | 'shouldCloseOnEsc'\n | 'shouldCloseOnOverlayClick'\n | 'size'\n | 'stretch'\n | 'title'\n | 'variant'\n | 'draggable'\n | 'onClose'\n | 'onDragStart'\n | 'defaultPosition'\n> & {\n id?: string;\n children?: React.ReactNode;\n confirmProps?: Omit<IConfirm, 'onConfirmOk' | 'onConfirmCancel' | 'children'>;\n /**\n * Determina si el modal debe abrirse al ser montado o no.\n */\n isDefaultOpen?: boolean;\n /**\n * El método onConfirm permite pasar un callback que devuelva una promesa. En\n * caso de ser así, si esta promesa resuelve a true, el modal será cerrado o\n * en caso contrario permanecerá abierto. Es útil en situaciones en donde es\n * necesario corroborar una condición antes de cerrar el modal. En la\n * situación en que se decida mantener el modal abierto, está a cargo del\n * usuario del componente realizar las indicaciones visuales correspondientes\n * para indicar al usuario el motivo por el cual el modal no fue cerrado.\n */\n onConfirm?: () => Promise<boolean> | boolean | void;\n /**\n * El método onCancel será llamado siempre que un usuario cierre el modal,\n * excepto cuando haya presionado en onConfirm.\n */\n onCancel?: () => void;\n /**\n * Permite introducir html directamente dentro del contenedor del modal.\n */\n html?: string;\n};\n\nexport const OpenModal = (props: TOpenModal & { isOpen: boolean }) => {\n const modalProps = useModal({\n isDefaultOpen: true,\n onExited: props.onExited,\n });\n\n const previousOpenProp = usePrevious(props.isOpen);\n if (previousOpenProp.current !== props.isOpen && !props.isOpen) {\n modalProps.hide();\n }\n\n const hasConfirmed = useRef(false);\n\n const confirmProps = props.confirmProps;\n if (props.onConfirm || props.onCancel) {\n return (\n <Modal\n {...props}\n {...modalProps}\n onExited={() => {\n props.onClose?.();\n if (!hasConfirmed.current) {\n props.onCancel?.();\n }\n }}\n >\n <Confirm\n {...confirmProps}\n onConfirm={() => {\n hasConfirmed.current = true;\n props.onConfirm?.();\n modalProps.hide();\n }}\n onCancel={() => {\n modalProps.hide();\n }}\n children={props.children}\n />\n </Modal>\n );\n }\n\n return <Modal {...props} {...modalProps} />;\n};\n","import { EventEmitter, useMount } from '@apia/util';\nimport { useState } from 'react';\nimport { OpenModal, TOpenModal } from './OpenModal';\n\nexport class ApiaUtilModalHandler {\n constructor(\n private id: string,\n public close: () => void,\n ) {}\n}\n\nexport class ApiaUtilModals {\n #emitter = new EventEmitter<{\n close: string;\n closeAll: boolean;\n open: TOpenModal;\n }>();\n #maxId = 0;\n\n constructor() {\n document.addEventListener('openModal', (event) => {\n const cevent = event as CustomEvent;\n\n this.open(cevent.detail as TOpenModal);\n });\n }\n\n open(props: TOpenModal) {\n const id = props.id ?? `modal_${this.#maxId++}`;\n\n this.#emitter.emit('open', { ...props, id });\n\n return new ApiaUtilModalHandler(id, () => {\n this.#emitter.emit('close', id);\n });\n }\n\n #useModalsList = () => {\n const [modals, setModals] = useState<(TOpenModal & { isOpen: boolean })[]>(\n [],\n );\n\n useMount(() => {\n const u1 = this.#emitter.on('open', (ev) => {\n setModals((current) => [\n ...current,\n {\n ...ev,\n isOpen: true,\n onExited: () => {\n ev.onExited?.();\n setModals((current) =>\n current.filter((modal) => modal.id !== ev.id),\n );\n },\n },\n ]);\n });\n const u2 = this.#emitter.on('closeAll', () => {\n setModals((current) =>\n current.map((modal) => ({ ...modal, isOpen: false })),\n );\n });\n const u3 = this.#emitter.on('close', (modalId) => {\n setModals((current) =>\n current.map((modal) =>\n modal.id === modalId ? { ...modal, isOpen: false } : modal,\n ),\n );\n });\n\n return () => {\n u1();\n u2();\n u3();\n };\n });\n\n return modals;\n };\n\n Component = () => {\n const modals = this.#useModalsList();\n\n return (\n <>\n {modals.map((current) => (\n <OpenModal key={current.id} {...current} />\n ))}\n </>\n );\n };\n}\n","import {\n NotificationsList,\n defaultNotifier,\n TNotificationId,\n INotification,\n TDispatchedNotification,\n TNotificationSelector,\n} from '@apia/notifications';\n\nexport class ApiaUtilNotifications {\n close = (id: TNotificationId | INotification) => {\n defaultNotifier.close(id);\n };\n\n closeAll = () => {\n defaultNotifier.closeAll();\n };\n\n notify = (notification: TDispatchedNotification): void => {\n defaultNotifier.notify({\n ...notification,\n type: notification.type ?? 'warning',\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useSelector = (selector: TNotificationSelector<any>) =>\n defaultNotifier.useSelector(selector);\n\n Component = () => {\n return <NotificationsList />;\n };\n}\n","import { ITabContainer } from '../types';\n\nexport function getIframe() {\n return window.frameElement as HTMLIFrameElement;\n}\n\nexport function getTabContainer() {\n const tabsController = getIframe()?.getReactTabsController?.();\n if (tabsController) return tabsController;\n\n const windowTop = window.top;\n const isIniFrame = windowTop?.document != null;\n let result: HTMLElement | typeof window.tabsController | null =\n document.getElementById('tabContainer');\n if (result === null && isIniFrame)\n result =\n windowTop.document.getElementById('tabContainer') ??\n windowTop.tabsController;\n\n return result as unknown as ITabContainer;\n}\n","import React, { useContext } from 'react';\nimport TabsController from './tabsController';\n\nexport const TabsContext = React.createContext<TabsController | null>(null);\n\nexport function defaultOnRequestClose() {\n return new Promise((resolve) => {\n resolve(true);\n });\n}\n\nexport function useTabsContext() {\n return React.useContext(TabsContext);\n}\n\nexport function useTabsController() {\n return useContext(TabsContext);\n}\n","import { ControlledMenu, MenuItem, useMenuState } from '@szhsin/react-menu';\nimport React from 'react';\nimport { useTabsContext } from './util';\nimport { getLabel } from '@apia/util';\nimport { observer } from 'mobx-react-lite';\n\nconst ContextMenu = observer(\n ({\n anchorPoint,\n isOpen,\n onClose,\n targetId,\n }: {\n anchorPoint: {\n x: number;\n y: number;\n };\n isOpen: boolean;\n onClose: () => unknown;\n targetId: string;\n }) => {\n const [menuProps, toggleMenu] = useMenuState();\n React.useEffect(() => {\n toggleMenu(isOpen);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const controller = useTabsContext();\n\n const closeOthers = React.useCallback(() => {\n void controller.closeOthers(targetId);\n }, [controller, targetId]);\n\n const closeToLeft = React.useCallback(() => {\n void controller.closeToLeft(targetId);\n }, [controller, targetId]);\n\n const closeToRight = React.useCallback(() => {\n void controller.closeToRight(targetId);\n }, [controller, targetId]);\n\n const firstNonFixedTab = controller.tabsList.find(\n (current) => !current.state.isFixed,\n );\n\n let lastNonFixedTab: string | null = null;\n if (controller.tabsList)\n for (let i = controller.tabsList.length - 1; i >= 0; i--) {\n if (!controller.tabsList[i].state.isFixed) {\n lastNonFixedTab = controller.tabsList[i].id;\n break;\n }\n }\n\n const nonFixedTabsLength =\n controller.tabsList?.filter((current) => !current.state.isFixed).length ??\n 0;\n\n return (\n <ControlledMenu\n {...menuProps}\n anchorPoint={anchorPoint}\n onClose={onClose}\n portal={{ target: document.getElementById('AppModals') as Element }}\n >\n {/* // No está bien implementado todavía\n <MenuItem\n onClick={React.useCallback(() => {\n controller.propsStore.updateField(targetId, { isFixed: true });\n }, [controller.propsStore, targetId])}\n >\n {window.LBL_FIX_TAB}\n </MenuItem> */}\n <MenuItem\n onClick={React.useCallback(() => {\n void controller.closeTab(targetId);\n }, [controller, targetId])}\n >\n {window.BTN_CLOSE}\n </MenuItem>\n <MenuItem\n onClick={React.useCallback(() => {\n void controller.closeAll();\n }, [controller])}\n >\n {getLabel('lblCloseAll').text}\n </MenuItem>\n {firstNonFixedTab?.id !== targetId && (\n <MenuItem onClick={closeToLeft}>\n {getLabel('lblCloseToLeft').text}\n </MenuItem>\n )}\n {lastNonFixedTab !== targetId && (\n <MenuItem onClick={closeToRight}>\n {getLabel('lblCloseToRight').text}\n </MenuItem>\n )}\n {nonFixedTabsLength > 1 && (\n <MenuItem onClick={closeOthers}>\n {getLabel('lblCloseOthers').text}\n </MenuItem>\n )}\n </ControlledMenu>\n );\n },\n);\n\nexport default ContextMenu;\n","import React, { MouseEvent } from 'react';\nimport { TTabLabelRenderer } from '../types';\nimport { useTabsContext } from '../util';\nimport { Icon, TIconName, isIconName } from '@apia/icons';\nimport { IconButton, SimpleButton } from '../../components';\nimport { getLabel } from '@apia/util';\nimport { observer } from 'mobx-react-lite';\n\nfunction makeIcon(name: TIconName) {\n return function IconComponent() {\n return <Icon title=\"\" name={name} />;\n };\n}\n\nexport const DefaultTabsLabelRenderer: TTabLabelRenderer = observer(\n ({ tab }) => {\n const controller = useTabsContext();\n const ActualIcon = React.useMemo(() => {\n if (tab.state.icon) {\n if (isIconName(tab.state.icon)) {\n return makeIcon(tab.state.icon);\n }\n return tab.state.icon;\n }\n return function C() {\n return null;\n };\n }, [tab.state.icon]);\n\n const handleClose = React.useCallback(\n (ev: MouseEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n controller?.closeTab(tab.id);\n },\n [controller, tab.id],\n );\n\n return (\n <>\n {tab.state.isIconTab ? (\n <IconButton\n className=\"tabs__item__button\"\n as=\"div\"\n icon={tab.state.icon as TIconName}\n variant=\"null\"\n iconSize=\"Sm\"\n size=\"Lg\"\n />\n ) : (\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\n <ActualIcon />\n {tab.state.label}\n </SimpleButton>\n )}\n\n {tab.state.isClosable && (\n <IconButton\n as=\"div\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={handleClose}\n className=\"tabs__item__close\"\n icon=\"Close\"\n variant=\"null\"\n title={\n getLabel('lblCloseSpecificTab', {\n text: { TOK1: tab.state.label },\n }).text\n }\n size=\"Lg\"\n iconSize=\"Sm\"\n />\n )}\n </>\n );\n },\n);\n","import { useUpdateEffect } from 'ahooks';\nimport React from 'react';\nimport { getSpecificParent } from '@apia/util';\nimport { SimpleButton } from '../components';\nimport { DefaultTabsLabelRenderer } from './renderers/DefaultTabsLabelRenderer';\nimport { observer } from 'mobx-react-lite';\nimport { Tab } from './tabsController';\n\nconst Item = observer(({ tab }: { tab: Tab }) => {\n const Renderer = React.useMemo(\n () => tab.state.labelRenderer ?? DefaultTabsLabelRenderer,\n [tab.state.labelRenderer],\n );\n\n const ref = React.useRef<HTMLButtonElement>({} as HTMLButtonElement);\n useUpdateEffect(() => {\n if (tab.state.isFocused) {\n ref.current?.focus({\n preventScroll: true,\n });\n }\n }, [tab.state.isFocused]);\n React.useEffect(() => {\n if (tab.state.isOpen) {\n const scrollParent = getSpecificParent(ref.current, (current) =>\n current.classList.contains('tabs__list'),\n ) as HTMLElement;\n\n scrollParent?.scroll({\n left: ref.current.offsetLeft - 100,\n });\n }\n }, [tab.state.isOpen]);\n\n const buttonProps = {\n className: `tabs__item__wrapper ${tab.state.isOpen ? 'open' : ''} ${\n tab.state.isDisabled ? 'disabled' : ''\n }`,\n title: tab.state.title ?? tab.state.label,\n onMouseDown: React.useCallback(\n (ev: React.MouseEvent) => {\n if (ev.button === 1) {\n tab.close();\n } else if (ev.button === 0) tab.open();\n },\n [tab],\n ),\n 'aria-controls': `tabpanel-${tab.controller.id}-${tab.state.id}`,\n 'aria-selected': tab.state.isOpen ?? false,\n id: `tab-${tab.controller.id}-${tab.id}`,\n tabIndex: tab.state.isFocused ? 0 : -1,\n role: 'tab',\n variant: 'inherit',\n };\n\n return (\n <SimpleButton data-id={tab.id} ref={ref} {...buttonProps}>\n <Renderer tab={tab} />\n </SimpleButton>\n );\n});\n\nexport default Item;\n","import React from 'react';\nimport { Box, getVariant } from '@apia/theme';\nimport ContextMenu from './ContextMenu';\nimport Item from './Item';\nimport { useTabsContext } from './util';\nimport { getLabel, getSpecificParent } from '@apia/util';\nimport { IconButton } from '../components';\nimport { observer } from 'mobx-react-lite';\n\nexport const TabsList = observer(\n ({ arrowsBehavior = 'focus' }: { arrowsBehavior?: 'open' | 'focus' }) => {\n const controller = useTabsContext();\n const [showScrollButtons, setShowScrollButtons] = React.useState(false);\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n React.useEffect(() => {\n if (ref && controller) {\n const observer = new MutationObserver(([{ addedNodes }]) => {\n const fixedTabsElement = ref.querySelector('.tabsList__fixedTabs');\n const hasFixedTabsScroll =\n (fixedTabsElement?.clientWidth ?? 0) <\n (fixedTabsElement?.scrollWidth ?? 0);\n const nonFixedTabsElement = ref.querySelector('.tabs__list');\n const hasFixedNonTabsScroll =\n (nonFixedTabsElement?.clientWidth ?? 0) <\n (nonFixedTabsElement?.scrollWidth ?? 0);\n\n setShowScrollButtons(hasFixedTabsScroll || hasFixedNonTabsScroll);\n\n if (addedNodes) {\n (ref.querySelector('.tabs__list') as HTMLElement).scrollLeft =\n 9999999;\n }\n });\n observer.observe(ref, { childList: true, subtree: true });\n return () => {\n observer.disconnect();\n };\n }\n\n return () => {};\n }, [controller, ref]);\n\n const onClickPrev = React.useCallback(() => {\n if (arrowsBehavior === 'focus') controller?.focusPreviousTab();\n if (arrowsBehavior === 'open') controller?.openPreviousTab();\n }, [arrowsBehavior, controller]);\n\n const onClickNext = React.useCallback(() => {\n if (arrowsBehavior === 'focus') controller?.focusNextTab();\n if (arrowsBehavior === 'open') controller?.openNextTab();\n }, [arrowsBehavior, controller]);\n\n const [anchorPoint, setAnchorPoint] = React.useState({ x: 0, y: 0 });\n const [isOpen, setIsOpen] = React.useState(false);\n const [targetId, setTargetId] = React.useState<string>('');\n\n if (!controller) return null;\n\n const tabs = controller.tabsList;\n\n const fixedTabs = (tabs ?? []).filter((current) => current.state.isFixed);\n const nonFixedTabs = (tabs ?? []).filter(\n (current) => !current.state.isFixed,\n );\n\n return (\n <Box\n id={`tabsList-${controller.id}`}\n className=\"tabsList__wrapper\"\n role=\"tablist\"\n {...getVariant('layout.common.tabs.primary')}\n ref={setRef}\n >\n <Box className=\"tabsList__fixedTabs\">\n {fixedTabs.map((current) => (\n <Item key={current.id} tab={current} />\n ))}\n </Box>\n <ContextMenu\n anchorPoint={anchorPoint}\n isOpen={isOpen}\n onClose={React.useCallback(() => setIsOpen(false), [])}\n targetId={targetId}\n />\n <Box\n className={`noScrollbar tabs__list ${\n controller.props.orientation === 'vertical' ? 'vertical' : ''\n }`}\n onContextMenu={React.useCallback((e: React.MouseEvent) => {\n const tabElement = getSpecificParent(\n e.target as HTMLElement,\n (current) => current.classList.contains('tabs__item__wrapper'),\n );\n if (tabElement) {\n e.preventDefault();\n e.stopPropagation();\n setTargetId(tabElement.dataset.id as string);\n setAnchorPoint({ x: e.clientX, y: e.clientY });\n setIsOpen(true);\n }\n }, [])}\n >\n {nonFixedTabs.map((current) => (\n <Item key={current.id} tab={current} />\n ))}\n </Box>\n {showScrollButtons && (\n <>\n <IconButton\n aria-label={getLabel('lblTogglePrevTab').text}\n className=\"tabs__switch__left\"\n icon=\"ArrowLeft\"\n iconSize=\"Xs\"\n onClick={onClickPrev}\n title={getLabel('lblTogglePrevTab').text}\n {...getVariant('icon-primary')}\n />\n <IconButton\n aria-label={getLabel('lblToggleNextTab').text}\n className=\"tabs__switch__right\"\n icon=\"ArrowRight\"\n iconSize=\"Xs\"\n onClick={onClickNext}\n title={getLabel('lblToggleNextTab').text}\n {...getVariant('icon-primary')}\n />\n </>\n )}\n </Box>\n );\n },\n);\n","import uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { TTab, TTabsListState, TabsControllerProps } from './types';\nimport { getLabel, getSpecificParent, isChild } from '@apia/util';\nimport { ApiaUtil } from '../objects/ApiaUtil';\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class Tab<TabType extends TTab = TTab> {\n constructor(\n public state: TabType,\n public controller: TabsController<TabType>,\n ) {\n makeAutoObservable(this, { state: observable });\n }\n\n get id() {\n return this.state.id;\n }\n\n /**\n * El parámetro force evita que se muestre cartel de confirmación al usuario cuando puede haber pérdida de datos.\n */\n async close(force?: boolean) {\n return this.controller.closeTab(this.state.id, force);\n }\n\n open() {\n this.controller.openTab(this.id);\n }\n}\n\nexport default class TabsController<TabType extends TTab = TTab> {\n state: TTabsListState<TabType> = {\n openTabs: new Set(),\n tabs: new Map(),\n timestamp: 0,\n };\n\n getActiveTab() {\n return this.activeTab;\n }\n /**\n * Es el tab que está abierto\n */\n get activeTab() {\n const tabs = [...this.state.openTabs];\n\n return tabs[tabs.length - 1];\n }\n\n getTab(id: string) {\n return this.state.tabs.get(id);\n }\n\n get tabsList() {\n return [...this.state.tabs.values()];\n }\n\n constructor(\n public id: string,\n public props: Omit<TabsControllerProps<TabType>, 'id'>,\n ) {\n props.initialTabs?.forEach(this.append.bind(this));\n if (props.initialTabs && props.initialTabs.length > 0)\n this.focusTab(props.initialTabs[0].id);\n\n makeAutoObservable(this);\n }\n\n #innerAppend(tab: TabType) {\n this.state.tabs.set(tab.id, new Tab(tab, this));\n\n if (tab.isOpen) {\n this.openTab(tab.id);\n this.focusTab(tab.id);\n }\n }\n\n /**\n * Obviamente agrega un tab al listado de tabs\n */\n append(tab: TabType) {\n if (this.getTab(tab.id)) {\n void ApiaUtil.instance.dialogs\n .confirm({\n children: getLabel('msgTabIsOpen').text,\n title: getLabel('titMsgWarning').text,\n })\n .then((hasConfirmed) => {\n if (hasConfirmed)\n this.#innerAppend({\n ...tab,\n id: `${tab.id}_${uniqueId()}`,\n additionalProps: tab.additionalProps ?? {},\n } as TabType);\n });\n } else this.#innerAppend(tab);\n }\n\n async closeAll(closeFixedTabsAsWell = false, force = false) {\n for (const tab of this.tabsList) {\n if (!tab.state.isFixed || closeFixedTabsAsWell) {\n tab.close(force);\n }\n }\n }\n\n closeOpenTab(force?: boolean) {\n const openTab = this.activeTab;\n openTab?.close(force);\n }\n\n async closeToRight(targetId: string, force?: boolean) {\n const tabsList = this.tabsList;\n const startIndex = tabsList.findIndex((c) => c.state.id === targetId);\n\n if (startIndex >= 0) {\n for (let i = startIndex + 1; i < tabsList.length; i++) {\n tabsList[i].close(force);\n }\n }\n }\n\n async closeToLeft(targetId: string, force?: boolean) {\n const tabsList = this.tabsList;\n const startIndex = tabsList.findIndex((c) => c.state.id === targetId);\n\n if (startIndex >= 0) {\n for (let i = startIndex - 1; i >= 0; i--) {\n await tabsList[i].close(force);\n }\n }\n }\n\n async closeOthers(targetId: string, force?: boolean) {\n for await (const tab of this.tabsList) {\n if (tab.state.id !== targetId) {\n await tab.close(force);\n }\n }\n }\n\n async closeTab(tabId: string, force = false) {\n const tab = this.getTab(tabId);\n const tabProps = tab?.state;\n\n if (tab && tabProps) {\n if (!tabProps.isClosable && !force) return false;\n\n const { onBeforeClose } = tabProps;\n if (onBeforeClose) {\n const canClose = await onBeforeClose();\n const message =\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\n if (message !== true && !force) {\n const hasConfirmed = await ApiaUtil.instance.dialogs.confirm({\n children: message,\n title: getLabel('lbl_atention').text,\n });\n if (!hasConfirmed) return false;\n }\n }\n\n this.state.openTabs.delete(tab);\n this.getActiveTab().open();\n this.state.tabs.delete(tab.id);\n\n this.props?.onCloseTab?.(tab);\n }\n return true;\n }\n\n focusNextTab() {\n const tabsList = this.tabsList;\n const focusedIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (focusedIndex === tabsList.length - 1 || focusedIndex === -1)\n return null;\n\n const newFocusIndex: number = focusedIndex + 1;\n this.focusTab(tabsList[newFocusIndex].id);\n\n return tabsList[newFocusIndex];\n }\n\n focusPreviousTab() {\n const tabsList = this.tabsList;\n const focusedIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (focusedIndex <= 0) return null;\n\n const newFocusIndex: number = focusedIndex - 1;\n this.focusTab(tabsList[newFocusIndex].id);\n\n return tabsList[newFocusIndex];\n }\n\n focusTab(tabId: string) {\n this.openTab(tabId);\n }\n\n getTabElement(tabId: string) {\n return document.querySelector(`#tabpanel-${this.id}-${tabId}`);\n }\n\n handleKeyDown(ev: React.KeyboardEvent) {\n if (\n !isChild(\n ev.target as HTMLElement,\n (current) => current.id === `tabsList-${this.id}`,\n )\n )\n return;\n\n switch (ev.code) {\n case 'ArrowDown':\n case 'ArrowRight': {\n if (\n (this.props?.orientation === 'horizontal' &&\n ev.code === 'ArrowDown') ||\n (this.props?.orientation === 'vertical' && ev.code === 'ArrowRight')\n )\n return;\n\n this.focusNextTab();\n\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n if (\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\n )\n return;\n\n this.focusPreviousTab();\n\n break;\n }\n case 'Delete': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n if (!this.getTab(tabId)?.state.isClosable) return;\n\n void this.closeTab(tabId);\n }\n break;\n }\n case 'Enter':\n case 'Space': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n this.openTab(tabId);\n }\n\n break;\n }\n case 'End': {\n this.openTab(this.tabsList[this.tabsList.length - 1].id);\n break;\n }\n case 'Home': {\n this.focusTab(this.tabsList[0].id);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n openNextTab() {\n const tabsList = this.tabsList;\n const openIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (openIndex == tabsList.length - 1) return null;\n\n const newOpenIndex: number = openIndex + 1;\n this.openTab(tabsList[newOpenIndex].id);\n\n return tabsList[newOpenIndex];\n }\n\n openPreviousTab() {\n const tabsList = this.tabsList;\n const openIndex = tabsList.findIndex(\n (current) => current === this.activeTab,\n );\n\n if (openIndex <= 0) return null;\n\n const newOpenIndex: number = openIndex - 1;\n this.openTab(tabsList[newOpenIndex].id);\n\n return tabsList[newOpenIndex];\n }\n\n /**\n * Se utiliza para hacer que el tab aparezca visible en el listado\n */\n openTab(tabId: string) {\n const tab = this.getTab(tabId);\n if (!tab) {\n console.warn(`There is no tab with such id: ${tabId}`);\n } else {\n try {\n this.state.tabs.forEach((c) => {\n c.state.isOpen = false;\n });\n } catch (e) {\n e; // No hay ningún tab abierto, no me importa\n }\n tab.state.isOpen = true;\n tab.state.onFocus?.(tab);\n if (this.state.openTabs.has(tab)) {\n this.state.openTabs.delete(tab);\n }\n this.state.openTabs.add(tab);\n }\n }\n}\n","import { useDeferredValue } from 'react';\nimport { Box, BoxProps, Spinner, getVariant } from '@apia/theme';\nimport { useTabsContext } from './util';\nimport { observer } from 'mobx-react-lite';\nimport { Tab } from './tabsController';\n\nconst InnerRenderer = observer(({ tab }: { tab: Tab }) => {\n const state = tab.state;\n const Render = useDeferredValue(state.content);\n\n return (\n <Box\n aria-hidden={!state.isOpen}\n aria-labelledby={`tab-${tab.controller.id}-${state.id}`}\n className={`tabs__content ${state.isOpen ? 'open' : ''}`}\n data-id={state.id}\n id={`tabpanel-${tab.controller.id}-${state.id}`}\n key={state.id}\n role=\"tabpanel\"\n >\n <Render tab={tab} />\n {state.isLoading && (\n <Box className=\"tabs__content__spinner__wrapper\">\n <Spinner />\n </Box>\n )}\n </Box>\n );\n});\n\nexport const TabsContent = observer((props: Omit<BoxProps, 'children'>) => {\n const controller = useTabsContext();\n\n if (!controller) return null;\n\n return (\n <Box\n className=\"tabs__content__wrapper\"\n {...getVariant('layout.common.tabs.primary.content')}\n {...props}\n >\n {controller.tabsList.map((tab) => {\n return <InnerRenderer tab={tab} key={tab.id} />;\n })}\n </Box>\n );\n});\n","import React from 'react';\nimport { Box, BoxProps } from '@apia/theme';\nimport TabsController from './tabsController';\nimport { TabsContext } from './util';\nimport { useMount } from '@apia/util';\nimport { TTab, TabsControllerProps } from './types';\n\nconst NonForwardedTabs = (\n {\n id,\n getController,\n initialTabs,\n orientation,\n ...props\n }: TabsControllerProps<TTab> & Omit<BoxProps, 'id' | 'as' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [handler, setHandler] = React.useState<TabsController | null>(null);\n\n useMount(() => {\n const newHandler = new TabsController(String(id), {\n initialTabs,\n orientation: orientation || 'horizontal',\n });\n setHandler(newHandler);\n getController?.(newHandler);\n });\n\n if (!handler) return null;\n\n return (\n <TabsContext.Provider value={handler}>\n <Box\n {...props}\n onKeyDown={(ev: React.KeyboardEvent<HTMLDivElement>) => {\n handler.handleKeyDown(ev);\n }}\n ref={ref}\n />\n </TabsContext.Provider>\n );\n};\n\nexport const Tabs = React.forwardRef<\n HTMLDivElement,\n TabsControllerProps<TTab> & Omit<BoxProps, 'id' | 'as' | 'role'>\n>(NonForwardedTabs) as unknown as typeof NonForwardedTabs;\n","import { TId } from '@apia/util';\nimport { getTabContainer } from './util';\nimport { TabsController } from '../../../tabs';\n\nexport class ApiaUtilTabsController {\n get currentTab() {\n try {\n return getTabContainer().getHandler().getActiveTab();\n } catch (e) {\n e;\n }\n const i = new TabsController('1', { orientation: 'horizontal' });\n i.append({\n content: () => null,\n id: '1',\n label: '',\n tabId: '1',\n });\n return i.getTab('1')!;\n }\n\n closeTab(tabId: string, force?: boolean) {\n const tabContainer = getTabContainer();\n if (tabContainer !== null) {\n tabContainer.getTab(tabId)?.close(force);\n return;\n }\n }\n\n getHandler() {\n return getTabContainer()?.getHandler();\n }\n\n /**\n * openApiaTab y openTab son sinónimos.\n */\n openTab(title: string, url: string): Promise<TId> {\n const tabContainer = getTabContainer();\n if (tabContainer !== null) {\n return tabContainer.addNewTab(title, url);\n }\n\n return new Promise((resolve) => resolve(''));\n }\n}\n","import React, { ComponentType, FC, Suspense, lazy } from 'react';\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 const Calendar = lazy(\n () =>\n import('react-calendar') as unknown as Promise<{\n default: ComponentType<any>;\n }>,\n );\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 <Suspense fallback={null}>\n <Calendar\n onClickDay={handleClickDay}\n locale={locale}\n value={calValue ?? new Date()}\n nextLabel=\"›\"\n next2Label=\"»\"\n prevLabel=\"‹\"\n prev2Label=\"«\"\n />\n </Suspense>\n </Modal>\n );\n },\n);\n\nCalendarModal.displayName = 'CalendarModal';\n","import { getVariant } from '@apia/theme';\nimport * as React from 'react';\nimport { Box } from '@apia/theme';\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 { TIconType } from '@apia/icons';\nimport {\n getVariant,\n spacing,\n Box,\n Button,\n ButtonProps,\n Spinner,\n ThemeUICSSObject,\n ThemeUIStyleObject,\n} from '@apia/theme';\nimport * as React from 'react';\n\nexport interface ISimpleButton extends ButtonProps {\n buttonSx?: ThemeUICSSObject;\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 svg: {\n flexShrink: 0,\n path: {\n fill: 'currentColor',\n },\n },\n\n '.toggled': {\n backgroundColor: 'primary',\n },\n\n '.button__content': {\n overflowWrap: 'break-word',\n },\n\n /* PREPEND HERE */\n};\n\nexport const SimpleButton = React.forwardRef(\n (\n {\n buttonSx,\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 sx,\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 alignItems: 'center',\n justifyContent: '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 {...buttonProps}\n sx={{ ...simpleButton, ...buttonSx, ...sx }}\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 { Box, getVariant } from '@apia/theme';\nimport { IConfirm } from '../../dialogs';\nimport { getLabel } from '@apia/util';\nimport { MouseEvent, useCallback } from 'react';\nimport { DialogButtonBar } from './DialogButtonBar';\nimport { SimpleButton } from '../../forms/buttons/SimpleButton';\nimport { useModalContext } from '../ModalContext';\n\nexport const Confirm = ({\n children,\n additionalButtons,\n additionalButtonsOnRight,\n cancelButtonText: cancelText = getLabel('btnCan').text,\n className,\n confirmButtonText: confirmText = getLabel('btnCon').text,\n confirmButtonVariant = 'primary',\n contentRef,\n disabled,\n hideCancelButton,\n hideConfirmButton,\n isLoading,\n onCancel,\n onConfirm,\n variant,\n}: Omit<IConfirm, 'title'>) => {\n const { descriptionId } = useModalContext();\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={useCallback(\n (ev: MouseEvent) => {\n if ((ev.target as HTMLElement).closest('button')) onCancel?.();\n },\n [onCancel],\n )}\n >\n {additionalButtons}\n </Box>\n\n <Box className=\"confirm__defaultButtons\">\n <Box\n className=\"confirm__customButtonsOnRight\"\n onClick={useCallback(\n (ev: MouseEvent) => {\n if ((ev.target as HTMLElement).closest('button')) onCancel?.();\n },\n [onCancel],\n )}\n >\n {additionalButtonsOnRight}\n </Box>\n {!hideConfirmButton && (\n <SimpleButton\n onClick={onConfirm}\n title={confirmText}\n variant={confirmButtonVariant}\n disabled={isLoading ?? disabled}\n isLoading={isLoading}\n className=\"confirm__confirmButton\"\n type=\"submit\"\n >\n {confirmText}\n </SimpleButton>\n )}\n {onCancel && !hideCancelButton && (\n <SimpleButton\n onClick={onCancel}\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","import { Modal, useModal } from '../modals';\nimport { TApiaButtonType } from '../types';\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\nimport { Confirm } from '../modals/layout/Confirm';\n\nexport interface IConfirm {\n additionalButtons?: ReactNode;\n additionalButtonsOnRight?: ReactNode;\n cancelButtonText?: string;\n children: ReactNode;\n className?: string;\n confirmButtonText?: string;\n confirmButtonVariant?: TApiaButtonType;\n contentRef?: Ref<HTMLDivElement>;\n disabled?: boolean;\n hideCancelButton?: boolean;\n hideConfirmButton?: boolean;\n isLoading?: boolean;\n onConfirm?: () => unknown;\n onCancel?: () => unknown;\n title?: string;\n variant?: string;\n}\n\nexport const ConfirmModal = ({\n onConfirm,\n onCancel,\n title,\n ...props\n}: IConfirm): JSX.Element => {\n const hasConfirmed = useRef(false);\n\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: () => {\n if (hasConfirmed.current) onConfirm?.();\n else onCancel?.();\n },\n });\n\n const handleCancel = useCallback(() => {\n hide();\n }, [hide]);\n\n const handleConfirm = useCallback(() => {\n hasConfirmed.current = true;\n hide();\n }, [hide]);\n\n return (\n <Modal\n {...modalProps}\n initialFocusGetter={useCallback(\n (current: HTMLElement) =>\n current.querySelector<HTMLElement>('.confirm__confirmButton'),\n [],\n )}\n title={title}\n >\n <Confirm {...props} onCancel={handleCancel} onConfirm={handleConfirm} />\n </Modal>\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { Confirm, Modal, useModal } from '../modals';\n\nexport interface IAlert {\n children: React.ReactNode;\n onClose: () => void;\n title?: string;\n}\n\nexport const AlertModal = ({ children, onClose, title }: IAlert) => {\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: onClose,\n });\n\n return (\n <Modal\n {...modalProps}\n sx={useMemo(\n () => ({\n '.modal__content .confirm__content': {\n overflow: 'visible',\n },\n }),\n [],\n )}\n initialFocusGetter={useCallback((ref: HTMLElement) => {\n return ref?.querySelector('.confirm__confirmButton') as HTMLElement;\n }, [])}\n title={title}\n >\n <Confirm\n onConfirm={useCallback(() => {\n hide();\n }, [hide])}\n >\n {children}\n </Confirm>\n </Modal>\n );\n};\n","import { EventEmitter, useMount } from '@apia/util';\nimport { ReactNode, useCallback, useState } from 'react';\nimport {\n ConfirmModal,\n IConfirm,\n} from '../../../components/dialogs/ConfirmModal';\nimport { AlertModal } from '../../../components/dialogs/AlertModal';\n\ntype TApiaUtilConfirm = Pick<\n IConfirm,\n | 'additionalButtons'\n | 'additionalButtonsOnRight'\n | 'cancelButtonText'\n | 'children'\n | 'className'\n | 'confirmButtonText'\n | 'confirmButtonVariant'\n | 'contentRef'\n | 'hideCancelButton'\n | 'hideConfirmButton'\n | 'title'\n | 'variant'\n>;\n\ntype TApiaUtilInnerConfirm = TApiaUtilConfirm & { id: string } & Pick<\n IConfirm,\n 'onCancel' | 'onConfirm'\n >;\n\ntype TAlert = {\n children: ReactNode;\n title: string;\n};\n\ntype TApiaUtilInnerAlert = TAlert & { onClose: () => unknown; id: string };\n\nexport class ApiaUtilDialogs {\n #emitter = new EventEmitter<{\n alert: TApiaUtilInnerAlert;\n confirm: TApiaUtilInnerConfirm;\n }>();\n #maxIdAlert = 0;\n #maxIdConfirm = 0;\n\n alert(props: TAlert): Promise<void> {\n return new Promise((resolve) => {\n this.#emitter.emit('alert', {\n ...props,\n onClose: () => resolve(),\n id: `confirm${this.#maxIdAlert++}`,\n });\n });\n }\n\n confirm(props: TApiaUtilConfirm): Promise<boolean> {\n return new Promise((resolve) => {\n this.#emitter.emit('confirm', {\n ...props,\n id: `confirm${this.#maxIdConfirm++}`,\n onCancel: () => resolve(false),\n onConfirm: () => resolve(true),\n });\n });\n }\n\n Component = () => {\n const [confirmDialogs, setConfirmDialogs] = useState<\n TApiaUtilInnerConfirm[]\n >([]);\n const [alertsDialogs, setAlertsDialogs] = useState<TApiaUtilInnerAlert[]>(\n [],\n );\n\n useMount(() => {\n const unsuscribe1 = this.#emitter.on('alert', (ev) => {\n setAlertsDialogs((current) => [...current, ev]);\n });\n const unsuscribe2 = this.#emitter.on('confirm', (ev) => {\n setConfirmDialogs((current) => [...current, ev]);\n });\n\n return () => {\n unsuscribe1();\n unsuscribe2();\n };\n });\n\n const removeModal = useCallback(\n (which: TApiaUtilConfirm & { id: string }) => {\n setConfirmDialogs((current) =>\n current.filter((search) => search !== which),\n );\n },\n [],\n );\n\n return (\n <>\n {alertsDialogs.map((current) => (\n <AlertModal {...current} key={current.id} />\n ))}\n {confirmDialogs.map((current) => (\n <ConfirmModal\n {...current}\n key={current.id}\n onCancel={() => {\n removeModal(current);\n current.onCancel?.();\n }}\n onConfirm={() => {\n removeModal(current);\n current.onConfirm?.();\n }}\n />\n ))}\n </>\n );\n };\n}\n","function 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\n/* \nfunction parseNumberInputValueToNumber(value: string): number {\n return Number.parseFloat(\n value.replaceAll(thousandsSeparator, '').replaceAll(decimalSeparator, '.'),\n );\n}\n\nfunction 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 parseStringToApiaNumber(\n `${isNegative ? '-' : ''}${integer}${decimalsString}`,\n ) ?? ''\n );\n} */\n\nexport function parseStringToApiaNumber(value: string): 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 = result[3]?.slice(0, decimalCount + 1) ?? '';\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\n const decimalsString: string = `${noZeroDecimals}${fillZeros(\n decimalZeros - noZeroDecimals.length,\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","import { parseStringToApiaNumber } from './parseStringToApiaNumber';\n\nconst delimiters = [',', ';', '\\t', '|'];\nexport class ApiaUtilParsers {\n /**\n * Toma un número sin separadores de miles y lo devuelve en el formato\n * establecido por los parámetros de Apia para separadores de miles y\n * separadores de decimales.\n */\n addThousSeparator(nStr: string | number): string {\n // Apia Original Function\n let str = String(nStr);\n str += '';\n const x =\n window.CHAR_DECIMAL_SEPARATOR && str.split(window.CHAR_DECIMAL_SEPARATOR);\n let x1 = x?.[0];\n const x2 =\n x && x.length > 1 && window.CHAR_DECIMAL_SEPARATOR\n ? `${window.CHAR_DECIMAL_SEPARATOR}${x[1]}`\n : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (x1 && rgx.test(x1)) {\n x1 =\n x1 &&\n window.CHAR_THOUS_SEPARATOR &&\n x1.replace(rgx, `$1${window.CHAR_THOUS_SEPARATOR}$2`);\n }\n return x1 ? `${x1}${x2}` : String(nStr);\n }\n\n #parseString(value: string): string {\n return parseStringToApiaNumber(value) || '';\n }\n\n /**\n * Toma un número y lo devuelve formateado con los parámetros de Apia\n */\n apiaNumber(pValue: number): number | string;\n /**\n * Toma una cadena de caracteres y lo parsea en el formato de Apia.\n * Esta cadena de caracteres podría venir por ejemplo de un evento\n * onChange en un campo de tipo input.\n */\n apiaNumber(pValue: string): string;\n apiaNumber(pValue: string | number): number | string {\n if (typeof pValue === 'string') {\n return this.#parseString(pValue);\n }\n // Apia Classic Original Function\n let value = '';\n try {\n value = pValue.toFixed(parseInt(window.AMOUNT_DECIMAL_SEPARATOR, 10));\n } catch (e) {\n console.error(e);\n }\n let s = value;\n if (!s.includes('.')) {\n if (window.ADD_THOUSAND_SEPARATOR) {\n s = this.addThousSeparator(s);\n }\n return s;\n }\n if (window.ADD_THOUSAND_SEPARATOR) {\n s = this.addThousSeparator(s.replace('.', window.CHAR_DECIMAL_SEPARATOR));\n } else {\n s = s.replace('.', window.CHAR_DECIMAL_SEPARATOR);\n }\n const int = s.split(window.CHAR_DECIMAL_SEPARATOR)[0];\n let decimals: string = s.split(window.CHAR_DECIMAL_SEPARATOR)[1];\n let decCount: number = decimals.length - 1;\n while (\n decCount >= parseInt(window.AMOUNT_DECIMAL_ZEROS, 10) &&\n decimals.charAt(decCount) === '0'\n ) {\n decimals = decimals.substring(0, decCount);\n decCount -= 1;\n }\n return (\n int +\n (decimals || decimals === '0'\n ? window.CHAR_DECIMAL_SEPARATOR + decimals\n : '')\n );\n }\n\n /**\n * Toma un número en formato Apia y lo devuelve como float en javascript.\n */\n jsNumber(value: string): number {\n // Apia Classic Original Function\n let re;\n if (window.CHAR_THOUS_SEPARATOR === '.')\n re = new RegExp(`\\\\${window.CHAR_THOUS_SEPARATOR}`, 'g');\n else\n re =\n window.CHAR_THOUS_SEPARATOR &&\n new RegExp(window.CHAR_THOUS_SEPARATOR, 'g');\n let aux = re && value.replace(re, '');\n aux =\n aux &&\n window.CHAR_DECIMAL_SEPARATOR &&\n aux.replace(window.CHAR_DECIMAL_SEPARATOR, '.');\n\n if (typeof aux !== 'string') {\n return parseFloat(value);\n }\n return aux ? parseFloat(aux) : parseFloat(value);\n }\n\n /**\n * Hay muchos valores que podrían querer ser interpretados como booleano\n *\n * Devuelve true si el valor coincide con true|T|t|1 y false si coincide con\n * false|F|f|0. Si no coincide con ninguna de éstas hace throw de un error.\n */\n parseBool(val: string): boolean {\n if (/^(?:true|T|t|1)$/i.test(val)) return true;\n if (/^(?:false|F|f|0)$/i.test(val)) return false;\n throw new Error('Property/Value is a boolean, try using true or false');\n }\n\n /**\n * Toma una estructura bidimensional y la convierte a csv, usando el método\n * String(...) sobre cada celda de datos.\n */\n toCsv(data: any[][], delimiter = ',') {\n return data.map((c) => c.map((d) => String(d)).join(delimiter)).join('\\n');\n }\n\n /**\n * Inspecciona las primeras filas de un array de strings, en búsqueda del mejor delimitador\n * para convertir esos strings a array de datos, que serán el resultado de haber interpretado\n * un documento CSV.\n */\n #findDelimiter(rows: string[]) {\n const maxColsByDelimiter: Record<string, number> = {};\n\n for (const delimiter of delimiters) {\n const headCols = rows[0].split(delimiter).length;\n\n let allTrue = true;\n for (let i = 1; i < Math.min(30, rows.length) && allTrue; i++) {\n allTrue = allTrue && headCols === rows[i].split(delimiter).length;\n }\n\n if (allTrue) {\n maxColsByDelimiter[delimiter] = headCols;\n }\n }\n\n let max = 0;\n let bestDelimiter: string | null = null;\n\n Object.entries(maxColsByDelimiter).forEach(([delimiter, count]) => {\n if (count > max) {\n max = count;\n bestDelimiter = delimiter;\n }\n });\n\n if (bestDelimiter !== null) {\n return bestDelimiter as string;\n }\n\n throw new Error(\n `Cannot determine delimiter, it's none of: ${delimiters.join(', ')}`,\n );\n }\n\n #parseCellValue(cellValue: string) {\n return cellValue.match(/^\\s*\"?([^\"]+)\"?[\\s\\r\\n]*$/)?.[1] ?? cellValue;\n }\n\n /**\n * Convierte un string a array de arrays, parseándolo en formato CSV, encontrando el delimitador en forma automática.\n */\n fromCsv(data: string): string[][] {\n const rows = data.split(/\\r?\\n\\r?/).filter((row) => !row.match(/^\\s*$/));\n const delimiter = this.#findDelimiter(rows);\n\n return rows.map((c) => {\n const a = c.split(delimiter);\n if (a[0][a[0].length - 1] === '') {\n a.pop();\n }\n return a.map((d) => this.#parseCellValue(d));\n });\n }\n}\n","import { TTooltip } from './tooltip';\n\nlet maxId = 0;\n\nexport class ApiaUtilTooltip {\n id = `tooltip__${maxId++}`;\n\n constructor(\n public props: TTooltip,\n public close: () => void,\n ) {}\n}\n","import { ApiaUtilTooltip } from './ApiaUtilTooltip';\nimport type { ApiaUtilTooltips } from './ApiaUtilTooltips';\nimport { TTooltip } from './tooltip';\n\nlet y = 0,\n x = 0;\ndocument?.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport class AutomaticTooltip {\n #timeout = 500;\n #tooltipTimeout = 0;\n #unsuscribe: (() => void) | null = null;\n #tooltipController: ApiaUtilTooltip | null = null;\n\n ref = (el: HTMLElement | null) => {\n this.#unsuscribe?.();\n\n const listener = () => {\n clearTimeout(this.#tooltipTimeout);\n\n this.#tooltipTimeout = setTimeout(() => {\n if (this.#tooltip?.children)\n this.#tooltipController = this.handler.open({\n closeOnMouseLeaveTooltip: true,\n closeOnEscape: true,\n closeOnScrollOut: true,\n ...this.#tooltip,\n anchorPoint: { left: x + 3, top: y + 3 },\n });\n }, this.#timeout) as unknown as number;\n };\n\n const reset = () => {\n clearTimeout(this.#tooltipTimeout);\n if (this.#tooltip?.closeOnMouseLeaveAttachedElement) {\n this.#tooltipController?.close();\n }\n };\n\n if (el) {\n el.addEventListener('mousemove', listener);\n el.addEventListener('mouseleave', reset);\n\n this.#unsuscribe = () => {\n el.removeEventListener('mousemove', listener);\n el.removeEventListener('mouseleave', reset);\n };\n } else {\n this.#unsuscribe?.();\n reset();\n }\n };\n\n #tooltip: Partial<TTooltip> | null = null;\n\n constructor(\n tooltip: (Partial<TTooltip> & { timeout?: number }) | null = null,\n private handler: ApiaUtilTooltips,\n ) {\n this.#tooltip = tooltip;\n if (tooltip?.timeout !== undefined) {\n this.#timeout = tooltip?.timeout;\n }\n }\n\n update = (tooltip: Partial<TTooltip>) => {\n this.#tooltip = tooltip;\n };\n}\n","import { isChild } from '@apia/util';\nimport { TAttachToElement, TPosition, TTooltip } from './types';\nimport { ThemeUICSSObject } from '@apia/theme';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nexport function isAttachToElementAFunction(\n attachToElement: TAttachToElement,\n): attachToElement is () => HTMLElement {\n return (\n attachToElement instanceof Function &&\n getParamNames(attachToElement).length === 0\n );\n}\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\nlet x = 0;\nlet y = 0;\ndocument.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport function calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize = { height: 'auto', width: 'auto' },\n}: Pick<\n TTooltip,\n | 'anchorPoint'\n | 'attachToElement'\n | 'attachToElementAnchorPoint'\n | 'attachToMousePosition'\n | 'minSize'\n | 'preferredOrientationX'\n | 'preferredOrientationY'\n | 'preferredSize'\n>): ThemeUICSSObject {\n let actualAnchorPoint = anchorPoint;\n\n if (attachToMousePosition) {\n actualAnchorPoint = {\n left: x + 3,\n top: y + 3,\n };\n }\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 onClose,\n}: Pick<\n TTooltip,\n | 'attachToElement'\n | 'closeOnClick'\n | 'closeOnClickOut'\n | 'closeOnEscape'\n | 'closeOnMouseLeaveTooltip'\n | 'closeOnMouseLeaveAttachedElement'\n | 'closeOnScrollOut'\n | 'onClose'\n>) {\n const hasInited = useRef(false);\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n useEffect(() => {\n function handleEscape(ev: KeyboardEvent) {\n if (ev.code === 'Escape' && closeOnEscape !== false) {\n close();\n }\n }\n function handleMouseDownOut(ev: MouseEvent) {\n if (!hasInited.current) return;\n\n const actuallyCloseOnClickOut =\n (closeOnClickOut instanceof Function\n ? closeOnClickOut(ev)\n : closeOnClickOut) === true;\n\n if (\n actuallyCloseOnClickOut &&\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 const actuallyCloseOnMouseLeaveTooltip =\n closeOnMouseLeaveTooltip instanceof Function\n ? closeOnMouseLeaveTooltip(event)\n : closeOnMouseLeaveTooltip;\n\n const actuallyCloseOnMouseLeaveAttachedElement =\n closeOnMouseLeaveAttachedElement instanceof Function\n ? closeOnMouseLeaveAttachedElement(event)\n : closeOnMouseLeaveAttachedElement;\n\n if (\n !hasInited.current ||\n (!actuallyCloseOnMouseLeaveAttachedElement &&\n !actuallyCloseOnMouseLeaveTooltip)\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 (isTooltipRelated || isAttachedRelated) return;\n if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)\n return;\n if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip) return;\n\n if (isTooltipTheTarget || isAttachedTheTarget) 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('mousedown', handleMouseDownOut);\n document.removeEventListener('scroll', handleScroll);\n document.removeEventListener('mouseout', handleMouseLeave);\n };\n }, [\n attachToElement,\n close,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveAttachedElement,\n closeOnMouseLeaveTooltip,\n closeOnScrollOut,\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 '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { calculateTooltipPosition, useHandlers } from './util';\n\nexport const Tooltip = ({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\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 onClose,\n preferredOrientationX = 'right',\n preferredOrientationY = 'bottom',\n preferredSize = { height: 'auto', width: 'auto' },\n variant = 'layout.common.tooltips.primary',\n closeOthers,\n initialFocusGetter,\n ...dataset\n}: TTooltip) => {\n const calculatedPosition = calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\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 onClose,\n });\n\n return (\n <Box\n {...dataset}\n className={`tooltip__wrapper ${className ?? ''}`}\n {...getVariant(variant)}\n sx={sx}\n onClick={handleOnClick}\n ref={(el) => {\n if (el) {\n initialFocusGetter?.(el)?.focus();\n }\n }}\n >\n {children}\n </Box>\n );\n};\n","import { useMemo, useState } from 'react';\nimport { EventEmitter, useMount, useUnmount } from '@apia/util';\nimport { ApiaUtilTooltip } from './ApiaUtilTooltip';\nimport { AutomaticTooltip } from './AutomaticTooltip';\nimport { TTooltip, Tooltip } from './tooltip';\nimport { FreeFocusInside } from 'react-focus-lock';\n\nexport class ApiaUtilTooltips {\n #emitter = new EventEmitter<{\n changedList: ApiaUtilTooltip[];\n }>();\n tooltips: ApiaUtilTooltip[] = [];\n\n constructor() {\n document.addEventListener('keydown', (ev) => {\n if (\n ev.code === 'Escape' &&\n this.tooltips.find((c) => c.props.closeOnEscape !== false)\n ) {\n ev.stopImmediatePropagation();\n ev.preventDefault();\n\n this.tooltips = this.tooltips.filter(\n (current) => current.props.closeOnEscape === false,\n );\n this.#shoutChangedList();\n }\n });\n }\n\n #shoutChangedList = () => {\n this.#emitter.emit('changedList', [...this.tooltips]);\n };\n\n /**\n * Permite crear un tooltip que se abrirá automáticamente al estar parado\n * sobre un elemento durante 300ms\n */\n useHover = (tooltip?: Partial<TTooltip> & { timeout?: number }) => {\n let tt: AutomaticTooltip | undefined = undefined;\n\n tt = useMemo(() => {\n tt?.ref(null);\n return new AutomaticTooltip(tooltip ?? null, this);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tooltip]);\n\n useUnmount(() => {\n tt?.ref(null);\n });\n\n return tt;\n };\n\n close = (id: string) => {\n this.tooltips = this.tooltips.filter((current) => current.id !== id);\n this.#shoutChangedList();\n };\n\n closeAll = () => {\n this.tooltips = [];\n this.#shoutChangedList();\n };\n\n open = (tooltip: TTooltip) => {\n const controller = new ApiaUtilTooltip(tooltip, () => {\n this.close(controller.id);\n controller.props.onClose?.();\n });\n\n if (tooltip.closeOthers !== false) {\n this.tooltips = [controller];\n } else {\n this.tooltips = [...this.tooltips, controller];\n }\n this.#shoutChangedList();\n\n return controller;\n };\n\n Component = () => {\n const [tooltips, setTooltips] = useState<ApiaUtilTooltip[]>(this.tooltips);\n\n useMount(() => {\n const unsuscribeToList = this.#emitter.on('changedList', (ev) => {\n setTooltips(ev);\n });\n\n return () => {\n unsuscribeToList();\n };\n });\n\n return (\n <FreeFocusInside sx={{ position: 'relative', zIndex: 'tooltip' }}>\n {tooltips.map((current) => (\n <Tooltip\n {...current.props}\n onClose={() => {\n current.close();\n }}\n key={current.id}\n />\n ))}\n </FreeFocusInside>\n );\n };\n}\n","import { EventEmitter, useMount } from '@apia/util';\nimport {\n ControlledMenu,\n MenuItem,\n MenuItemProps,\n ControlledMenuProps,\n MenuDivider,\n SubMenu,\n} from '@szhsin/react-menu';\nimport { useCallback, useState } from 'react';\nimport { FreeFocusInside } from 'react-focus-lock';\n\nexport type TSubmenu = { label: string; items: TMenuItems };\n\nexport type TMenuItem =\n | (MenuItemProps & { key: string })\n | 'separator'\n | TSubmenu;\n\nexport type TMenuItems = TMenuItem[];\n\nfunction isSubmenu(item: TMenuItem): item is TSubmenu {\n return Array.isArray((item as TSubmenu).items);\n}\n\nexport class ApiaUtilMenu {\n #emitter = new EventEmitter<{ toggle: boolean }>();\n #items: TMenuItems = [];\n menuProps: ControlledMenuProps | null = null;\n\n #hooks = {\n useIsOpen: (): [boolean, () => void] => {\n const [isOpen, setIsOpen] = useState(false);\n\n useMount(() => {\n return this.#emitter.on('toggle', setIsOpen);\n });\n\n return [\n isOpen,\n useCallback(() => {\n setIsOpen(false);\n }, []),\n ];\n },\n };\n\n close = () => {\n this.#emitter.emit('toggle', false);\n };\n\n open = ({\n menuProps,\n items,\n }: {\n menuProps: ControlledMenuProps;\n items: TMenuItems;\n }) => {\n this.#items = items;\n this.menuProps = menuProps;\n\n this.#emitter.emit('toggle', true);\n };\n\n #maxId = 0;\n\n #RenderMenu = (submenu: TSubmenu) => {\n return (\n <>\n {submenu.items.map((current, i) => {\n if (current === 'separator')\n return <MenuDivider key={`separator${i}`} />;\n\n if (isSubmenu(current)) {\n return (\n <SubMenu label={current.label} key={`submenu${this.#maxId++}`}>\n {this.#RenderMenu(current)}\n </SubMenu>\n );\n }\n\n return <MenuItem {...current} key={current.key} />;\n })}\n </>\n );\n };\n\n Component = () => {\n const [isOpen, close] = this.#hooks.useIsOpen();\n\n if (!isOpen) return null;\n\n return (\n <FreeFocusInside>\n <ControlledMenu\n {...this.menuProps}\n state={isOpen ? 'open' : 'closed'}\n onClose={(ev) => {\n close();\n this.menuProps?.onClose?.(ev);\n }}\n >\n {this.#RenderMenu({ label: '', items: this.#items })}\n </ControlledMenu>\n </FreeFocusInside>\n );\n };\n}\n","import { EventEmitter } from '@apia/util';\n\nexport class ApiaUtilMouse extends EventEmitter<{\n updatePosition: { x: number; y: number };\n}> {\n x = 0;\n y = 0;\n\n get position() {\n return { x: this.x, y: this.y };\n }\n\n constructor() {\n super();\n\n document.addEventListener('mousemove', (ev) => {\n this.x = ev.clientX;\n this.y = ev.clientY;\n\n this.emit('updatePosition', { x: this.x, y: this.y });\n });\n }\n}\n","import { ApiaUtilModals } from './modals/ApiaUtilModals';\nimport { ApiaUtilNotifications } from './notifications/ApiaUtilNotifications';\nimport { ApiaUtilTabsController } from './tabs/ApiaUtilTabsController';\nimport { ApiaUtilDialogs } from './dialogs/ApiaUtilDialogs';\nimport { ApiaUtilParsers } from './parsers/ApiaUtilParsers';\nimport { ApiaUtilTooltips } from './tooltips/ApiaUtilTooltips';\nimport { ApiaUtilMenu } from './menu/ApiaUtilMenu';\nimport { ApiaUtilMouse } from './mouse/ApiaUtilMouse';\n\nexport class ApiaUtil {\n static #instance: ApiaUtil;\n public static get instance() {\n if (!this.#instance) {\n this.#instance = new ApiaUtil();\n }\n\n return this.#instance;\n }\n\n private constructor() {\n this.dialogs = new ApiaUtilDialogs();\n this.menu = new ApiaUtilMenu();\n this.modals = new ApiaUtilModals();\n this.mouse = new ApiaUtilMouse();\n this.notifications = new ApiaUtilNotifications();\n this.parsers = new ApiaUtilParsers();\n this.tabs = new ApiaUtilTabsController();\n this.tooltips = new ApiaUtilTooltips();\n }\n\n dialogs: ApiaUtilDialogs;\n menu: ApiaUtilMenu;\n modals: ApiaUtilModals;\n mouse: ApiaUtilMouse;\n notifications: ApiaUtilNotifications;\n parsers: ApiaUtilParsers;\n tabs: ApiaUtilTabsController;\n tooltips: ApiaUtilTooltips;\n\n Component = () => {\n return (\n <>\n <this.dialogs.Component />\n <this.modals.Component />\n <this.notifications.Component />\n <this.tooltips.Component />\n <this.menu.Component />\n </>\n );\n };\n}\n","import { CSSProperties } from '@apia/theme';\r\nimport { StatefulEmitter } from '@apia/util';\r\n\r\ntype LockTypes = 'linear' | 'white' | 'common';\r\ntype Lock = {\r\n count: number;\r\n};\r\ntype LockOptions = Partial<{\r\n type: LockTypes;\r\n}>;\r\n\r\nexport class ScreenLocker {\r\n protected emitter = new StatefulEmitter<{\r\n locks: Record<LockTypes, Lock>;\r\n release: true;\r\n }>({\r\n locks: {\r\n common: { count: 0 },\r\n linear: { count: 0 },\r\n white: { count: 1 },\r\n },\r\n });\r\n\r\n lock = (options?: LockOptions) => {\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) + 1 },\r\n };\r\n });\r\n\r\n return () =>\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n };\r\n\r\n protected hasReleased = false;\r\n /**\r\n * This method will work once, then, the action will be ignored. The ScreenLocker starts always locked on white, when this method is called, all listeners of onRelease will be called and the lock will be released.\r\n */\r\n release = () => {\r\n if (this.hasReleased) return;\r\n this.hasReleased = true;\r\n\r\n this.emitter.setState('locks', (s) => {\r\n const key = 'white';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n this.emitter.emit('release', true);\r\n };\r\n\r\n /**\r\n * This method notifies when the screenLock is released by the first time.\r\n */\r\n onRelease = this.emitter.on.bind(this.emitter, 'release');\r\n\r\n /**\r\n * This component is the responsible for putting the lock courtain in the browser when it's required. It must be used once per application.\r\n */\r\n Component = () => {\r\n const locks = this.emitter.useState('locks');\r\n\r\n const style: CSSProperties = {\r\n alignItems: 'center',\r\n display: 'flex',\r\n inset: 0,\r\n justifyContent: 'center',\r\n position: 'fixed',\r\n };\r\n\r\n if (locks.white.count) {\r\n return (\r\n <div\r\n style={{\r\n ...style,\r\n background: 'white',\r\n }}\r\n >\r\n White\r\n </div>\r\n );\r\n }\r\n\r\n if (locks.linear.count) {\r\n return <div style={style}>Linear</div>;\r\n }\r\n\r\n if (locks.common.count) {\r\n return <div style={style}>Common</div>;\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n","import { createContext, useContext } from 'react';\r\nimport { AutocompleteController } from './store/AutocompleteController';\r\n\r\nexport const AutocompleteContext = createContext<AutocompleteController | null>(\r\n null,\r\n);\r\n\r\nexport function useAutocompleteContext() {\r\n const context = useContext(AutocompleteContext);\r\n\r\n if (!context) throw new Error('There is no AutocompleteContext');\r\n\r\n return context;\r\n}\r\n","import { observer } from 'mobx-react-lite';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { Box } from '@apia/theme';\r\nimport { Fragment } from '@apia/theme/jsx-runtime';\r\n\r\nexport const OptionsBox = observer(() => {\r\n const handler = useAutocompleteContext();\r\n\r\n return (\r\n <Fragment>\r\n {handler.state.options.map((c, i) => {\r\n if (c.filtered) {\r\n return <Fragment key={c.value} />;\r\n } else {\r\n return (\r\n <Box\r\n className={`autocomplete__option ${handler.focusedIndex === i ? 'focused' : ''}`}\r\n key={c.value}\r\n onMouseDown={(ev) => {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n\r\n handler.setValue(c.value);\r\n handler.close();\r\n\r\n window.requestAnimationFrame(() => {\r\n handler\r\n .getAutocompleteBox()\r\n ?.querySelector<HTMLElement>('input')\r\n ?.focus();\r\n });\r\n }}\r\n data-value={c.value}\r\n >\r\n {c.label}\r\n </Box>\r\n );\r\n }\r\n })}\r\n </Fragment>\r\n );\r\n});\r\n","import { debounce, uniqueId } from 'lodash-es';\r\nimport { makeAutoObservable, reaction } from 'mobx';\r\nimport { ReactNode } from 'react';\r\nimport { ApiaUtil, ApiaUtilTooltip } from '../../../../objects';\r\nimport { AutocompleteContext } from '../Context';\r\nimport { OptionsBox } from '../OptionsBox';\r\n\r\nexport type AutocompleteProps = {\r\n /**\r\n * Si este flag es true, la búsqueda se realiza con .toLowerCase() en el valor y en la cadena de búsqueda.\r\n */\r\n caseInsensitive?: boolean;\r\n onChange?: (value: string, controller: AutocompleteController) => unknown;\r\n /**\r\n * Si se pasa una función de búsqueda, cuando el usuario busque se llamará a esta función para determinar qué opciones deberán mostrarse. Las opciones devueltas deberán tener filtered !== true para mostrarse.\r\n *\r\n * La función de búsqueda será llamada mediante un debounce con tiempo = state.searchDebounce (ms).\r\n *\r\n * Si no se pasa función de búsqueda, la comparación se realizará contra this.state.options, siguiendo el algoritmo descrito en AutocompleteOption.\r\n *\r\n */\r\n onSearch?: (\r\n str: string,\r\n controller: AutocompleteController,\r\n ) => Promise<AutocompleteOption[]>;\r\n options: AutocompleteOption[];\r\n /**\r\n * Por defecto es 100ms.\r\n */\r\n searchDebounce?: number;\r\n} & AutocompleteBoxProps &\r\n Partial<Pick<AutocompleteState, 'disabled' | 'value'>>;\r\n\r\ntype AutocompleteBoxProps = Partial<{\r\n className: string;\r\n id: string;\r\n name: string;\r\n}>;\r\n\r\ntype AutocompleteState = {\r\n disabled: boolean;\r\n focusedValue?: null | string;\r\n loading: boolean;\r\n showValue: string;\r\n value: string;\r\n};\r\n\r\n/**\r\n * El componente buscará dentro de las opciones disponibles cuando el usuario realice una búsqueda en el cuadro de texto. Para ello, compara cada opción contra str según:\r\n *\r\n * Si caseInsensitive===true, la comparación se hará en lowerCase.\r\n *\r\n * Si se pasa searchLabel, se compara contra searchLabel.\r\n * Sino, si label?.toString() está definido, se utiliza label?.toSring().\r\n * Sino, se utiliza value.\r\n *\r\n * Un se mostrará en los resultados si el algoritmo determina que (result_search_label).indexOf(str) !== -1.\r\n */\r\nexport type AutocompleteOption = {\r\n /**\r\n * @private\r\n *\r\n * Se utiliza para determinar si debe mostrarse o no.\r\n */\r\n filtered?: boolean;\r\n label: ReactNode;\r\n /**\r\n * Si se pasa searchLabel, será utilizado en vez de label. Si no se pasa, se hará label.toString() para realizar la búsqueda, que solamente tiene sentido cuando label es un primitivo.\r\n */\r\n searchLabel?: string;\r\n /**\r\n * @default Por defecto toma el valor ''\r\n */\r\n value: string;\r\n};\r\n\r\nexport class AutocompleteController {\r\n state: AutocompleteState & AutocompleteProps = {\r\n disabled: false,\r\n id: uniqueId('autocomplete'),\r\n loading: false,\r\n options: [],\r\n searchDebounce: 100,\r\n showValue: '',\r\n value: '',\r\n };\r\n\r\n constructor(properties: Partial<AutocompleteProps>) {\r\n Object.assign(this.state, properties);\r\n if (properties.value) {\r\n this.state.showValue = properties.value;\r\n this.state.focusedValue = properties.value;\r\n }\r\n\r\n makeAutoObservable(this, {\r\n getAutocompleteBox: false,\r\n getOptionByValue: false,\r\n });\r\n\r\n reaction(\r\n () => this.state.searchDebounce,\r\n () => {\r\n this.#search = this.#makeSearch();\r\n },\r\n );\r\n\r\n reaction(\r\n () => this.state.focusedValue,\r\n () => {\r\n if (this.state.focusedValue) {\r\n this.getOptionElement(this.state.focusedValue)?.scrollIntoView({\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n }\r\n },\r\n );\r\n }\r\n\r\n get focusedIndex() {\r\n const currentIndex = this.state.options.findIndex(\r\n (c) => c.value === this.state.focusedValue,\r\n );\r\n\r\n if (currentIndex === -1) {\r\n return 0;\r\n }\r\n\r\n return currentIndex;\r\n }\r\n\r\n get isOpen() {\r\n return !!this.getOptionsBox();\r\n }\r\n\r\n close(selectValue = true) {\r\n this.tooltipRef?.close();\r\n this.tooltipRef = null;\r\n this.#actualSearch('');\r\n\r\n if (selectValue) {\r\n let currentValue = this.state.options.find(\r\n (c) => c.value === this.state.focusedValue,\r\n );\r\n if (!currentValue) {\r\n currentValue = this.state.options.find((c) => !c.filtered);\r\n }\r\n\r\n this.setValue(currentValue?.value || '');\r\n }\r\n }\r\n\r\n getAutocompleteBox() {\r\n return document.querySelector<HTMLElement>(\r\n `[data-autocomplete-box=\"${this.state.id!}\"]`,\r\n );\r\n }\r\n\r\n getOptionsBox() {\r\n return document.querySelector<HTMLElement>(\r\n `[data-autocomplete-options=\"${this.state.id!}\"]`,\r\n );\r\n }\r\n\r\n getOptionElement(value: string) {\r\n return this.getOptionsBox()?.querySelector<HTMLElement>(\r\n `.autocomplete__option[data-value=\"${value}\"]`,\r\n );\r\n }\r\n\r\n getOptionByValue(value: string) {\r\n return this.state.options.find((current) => current.value === value);\r\n }\r\n\r\n focusFirst() {\r\n const option = this.state.options.find((c) => !c.filtered);\r\n\r\n if (option) {\r\n if (this.isOpen) {\r\n this.state.focusedValue = option.value;\r\n this.state.showValue = option.label?.toString?.() || option.value;\r\n } else {\r\n this.setValue(option.value);\r\n }\r\n }\r\n }\r\n\r\n focusLast() {\r\n const option = this.state.options.findLast((c) => !c.filtered);\r\n\r\n if (option) {\r\n if (this.isOpen) {\r\n this.state.focusedValue = option.value;\r\n this.state.showValue = option.label?.toString?.() || option.value;\r\n } else {\r\n this.setValue(option.value);\r\n }\r\n }\r\n }\r\n\r\n focusNext(n = 1) {\r\n const option = this.state.options[this.focusedIndex];\r\n if (option) {\r\n let newFocusedOption: AutocompleteOption = option;\r\n\r\n for (let i = this.focusedIndex + 1; i < this.state.options.length; i++) {\r\n if (\r\n !this.state.options[i].filtered &&\r\n (--n === 0 || i === this.state.options.length - 1)\r\n ) {\r\n newFocusedOption = this.state.options[i];\r\n break;\r\n }\r\n }\r\n\r\n if (this.isOpen) {\r\n this.state.focusedValue = newFocusedOption.value;\r\n this.state.showValue =\r\n newFocusedOption.label?.toString?.() || newFocusedOption.value;\r\n } else {\r\n this.setValue(newFocusedOption.value);\r\n }\r\n }\r\n }\r\n\r\n focusPrevious(n = 1) {\r\n const option = this.state.options[this.focusedIndex];\r\n if (option) {\r\n let newFocusedOption: AutocompleteOption = option;\r\n\r\n for (let i = this.focusedIndex - 1; i >= 0; i--) {\r\n if (!this.state.options[i].filtered && (--n === 0 || i === 0)) {\r\n newFocusedOption = this.state.options[i];\r\n break;\r\n }\r\n }\r\n\r\n if (this.isOpen) {\r\n this.state.focusedValue = newFocusedOption.value;\r\n this.state.showValue =\r\n newFocusedOption.label?.toString?.() || newFocusedOption.value;\r\n } else {\r\n this.setValue(newFocusedOption.value);\r\n }\r\n }\r\n }\r\n\r\n open() {\r\n if (this.state.disabled) {\r\n return;\r\n }\r\n\r\n this.tooltipRef = ApiaUtil.instance.tooltips.open({\r\n attachToElement: () => {\r\n return this.getAutocompleteBox()!;\r\n },\r\n closeOnMouseLeaveAttachedElement: false,\r\n closeOnMouseLeaveTooltip: false,\r\n closeOnClick: true,\r\n children: (\r\n <AutocompleteContext.Provider value={this}>\r\n <OptionsBox />\r\n </AutocompleteContext.Provider>\r\n ),\r\n onClose: () => {\r\n this.tooltipRef = null;\r\n this.close();\r\n },\r\n preferredOrientationY: 'bottom',\r\n preferredOrientationX: 'right',\r\n attachToElementAnchorPoint: 'bottomLeft',\r\n variant: 'layout.common.components.autocomplete.optionsContainer',\r\n className: 'autocomplete__options__box',\r\n 'data-autocomplete-options': this.state.id!,\r\n });\r\n }\r\n\r\n toggleOpen() {\r\n if (this.isOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n #actualSearch = (str: string) => {\r\n this.state.options.forEach((c) => {\r\n if (this.state.caseInsensitive) {\r\n c.filtered =\r\n (c.searchLabel ?? c.label?.toString?.() ?? c.value)\r\n .toLowerCase()\r\n .indexOf(str.toLowerCase()) === -1;\r\n } else {\r\n c.filtered =\r\n (c.searchLabel ?? c.label?.toString?.() ?? c.value)?.indexOf(str) ===\r\n -1;\r\n }\r\n\r\n if (this.getOptionByValue(this.state.focusedValue!)?.filtered) {\r\n this.state.focusedValue =\r\n this.state.options.find((c) => !c.filtered)?.value || null;\r\n }\r\n });\r\n };\r\n #makeSearch = () => {\r\n return debounce(this.#actualSearch, this.state.searchDebounce);\r\n };\r\n #search = this.#makeSearch();\r\n search(str: string) {\r\n this.#search(str);\r\n }\r\n\r\n selectFocused() {\r\n this.close();\r\n const newValue = this.state.focusedValue || this.state.options[0]?.value;\r\n\r\n if (newValue) {\r\n this.setValue(newValue);\r\n }\r\n }\r\n\r\n setValue(value: string) {\r\n const selectedOption = this.state.options.find((c) => c.value === value);\r\n\r\n this.state.value = selectedOption?.value || '';\r\n this.state.focusedValue = this.state.value;\r\n this.state.showValue =\r\n selectedOption?.label?.toString?.() || selectedOption?.value || '';\r\n this.state.onChange?.(this.state.value, this);\r\n }\r\n\r\n tooltipRef: ApiaUtilTooltip | null = null;\r\n}\r\n","import { Box, Input, Select, Spinner, useBreakpointIndex } from '@apia/theme';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Icon } from '@apia/icons';\r\n\r\nexport const SearchBox = observer(() => {\r\n const handler = useAutocompleteContext();\r\n const breakpoint = useBreakpointIndex();\r\n\r\n return (\r\n <Box className=\"autocomplete__inputWrapper\">\r\n <input\r\n type=\"hidden\"\r\n name={handler.state.name}\r\n value={handler.state.value}\r\n />\r\n {breakpoint <= 3 ? (\r\n <Select\r\n disabled={handler.state.disabled}\r\n onChange={(ev) => {\r\n handler.setValue(ev.target.value);\r\n }}\r\n >\r\n {handler.state.options.map((c) => (\r\n <option key={c.value} value={c.value}>\r\n {c.label}\r\n </option>\r\n ))}\r\n </Select>\r\n ) : (\r\n <>\r\n <Input\r\n className={`autocomplete__search ${handler.state.disabled ? 'disabled' : ''}`}\r\n onChange={(ev) => {\r\n handler.search(ev.target.value);\r\n handler.state.showValue = ev.target.value;\r\n }}\r\n onMouseDown={() => {\r\n handler.toggleOpen();\r\n }}\r\n onFocus={(ev) => {\r\n ev.target.setSelectionRange(0, ev.target.value.length);\r\n }}\r\n onBlur={() => {\r\n handler.close();\r\n }}\r\n value={handler.state.showValue}\r\n />\r\n <Box className=\"autocomplete__icons\">\r\n {handler.state.loading && (\r\n <Spinner className=\"autocomplete__loadingSpinner\" />\r\n )}\r\n <Icon\r\n title=\"\"\r\n name=\"ArrowDown\"\r\n className=\"autocomplete__downArrow\"\r\n />\r\n </Box>\r\n </>\r\n )}\r\n </Box>\r\n );\r\n});\r\n","import { Box, BoxProps } from '@apia/theme';\r\nimport { useAutocompleteContext } from './Context';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const KeyHandler = observer((props: BoxProps) => {\r\n const handler = useAutocompleteContext();\r\n\r\n return (\r\n <Box\r\n {...props}\r\n className={`autocomplete__keyhandler ${props.className ?? ''}`}\r\n onKeyDown={(ev) => {\r\n props.onKeyDown?.(ev);\r\n\r\n if (!ev.isDefaultPrevented()) {\r\n if (ev.key.match(/^[a-z ]$/i)) {\r\n if (!handler.isOpen) {\r\n handler.open();\r\n }\r\n }\r\n\r\n switch (ev.code) {\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n handler.focusNext();\r\n break;\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n handler.focusPrevious();\r\n break;\r\n case 'Enter':\r\n ev.preventDefault();\r\n\r\n if (handler.isOpen) {\r\n handler.selectFocused();\r\n } else {\r\n handler.open();\r\n }\r\n break;\r\n case 'End':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusLast();\r\n }\r\n break;\r\n case 'Escape':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n handler.close(false);\r\n }\r\n break;\r\n case 'Home':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusFirst();\r\n }\r\n break;\r\n case 'PageDown':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusNext(10);\r\n }\r\n break;\r\n case 'PageUp':\r\n if (handler.isOpen) {\r\n ev.preventDefault();\r\n handler.focusPrevious(10);\r\n }\r\n break;\r\n }\r\n }\r\n }}\r\n ></Box>\r\n );\r\n});\r\n","import { useState } from 'react';\r\nimport {\r\n AutocompleteController,\r\n AutocompleteProps,\r\n} from './store/AutocompleteController';\r\nimport { useMount } from '@apia/util';\r\nimport { AutocompleteContext } from './Context';\r\nimport { getVariant } from '@apia/theme';\r\nimport { SearchBox } from './SearchBox';\r\nimport { KeyHandler } from './Keyhandler';\r\n\r\nexport type AutocompleteCmpProps = {\r\n handler?: AutocompleteController;\r\n getHandler?: (handler: AutocompleteController) => unknown;\r\n properties?: AutocompleteProps;\r\n};\r\n\r\nexport const Autocomplete = (props: AutocompleteCmpProps) => {\r\n const [handler, setHandler] = useState<AutocompleteController>();\r\n useMount(() => {\r\n const newHandler =\r\n props.handler ?? new AutocompleteController(props.properties ?? {});\r\n props.getHandler?.(newHandler);\r\n setHandler(newHandler);\r\n });\r\n\r\n if (!handler) {\r\n return null;\r\n }\r\n\r\n return (\r\n <AutocompleteContext.Provider value={handler}>\r\n <KeyHandler\r\n className={`autocomplete ${props.properties?.className || ''}`}\r\n data-autocomplete-box={handler.state.id}\r\n {...getVariant('layout.common.components.autocomplete')}\r\n >\r\n <SearchBox />\r\n </KeyHandler>\r\n </AutocompleteContext.Provider>\r\n );\r\n};\r\n\r\nexport * from './store/AutocompleteController';\r\n","import { Button, Spinner, Flex, ThemeUIStyleObject } from '@apia/theme';\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 '@apia/theme';\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 = Omit<IconButtonProps, 'sx'> &\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 { getSpecificParent } from '@apia/util';\nimport uniqueId from 'lodash-es/uniqueId';\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 '@apia/theme';\nimport { useState } from 'react';\nimport { IconButton } from './buttons';\nimport { getVariant } from '@apia/theme';\nimport { getLabel } from '@apia/util';\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={getLabel('lblCaptchaActivateAudio').text}\n onClick={handleSyncClick}\n ></IconButton>\n <IconButton\n icon=\"Volume\"\n type=\"button\"\n aria-label={getLabel('lblCaptchaActivateAudio').text}\n onClick={() => {}}\n ></IconButton>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import {\n Button,\n ButtonProps,\n Input,\n InputProps,\n ThemeUIStyleObject,\n} from '@apia/theme';\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, TIconName } from '@apia/icons';\n\nexport type TCheckbox = TModify<\n ButtonProps,\n {\n background?: string;\n checked?: boolean;\n color?: string;\n defaultChecked?: boolean;\n icon?: TIconName;\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 disabled,\n icon = 'Check',\n indeterminate,\n name,\n native,\n onChange,\n readOnly,\n required,\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(\n () => ({ variant: 'forms.checkbox' }) as ThemeUIStyleObject,\n [],\n );\n\n return native ? (\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 title=\"\" name={icon} size=\"32px\" />\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-es/isFunction';\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 { customEvents } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from '@apia/theme';\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, Box, InputProps } from '@apia/theme';\nimport { isChild, useCombinedRefs } from '@apia/util';\nimport React from 'react';\nimport { TIconName, TIconType } from '@apia/icons';\nimport { IconButton } from './buttons';\nimport ReactInputMask from 'react-input-mask';\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 additionalButtonsPosition?: 'before' | 'after';\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 additionalButtonsPosition = 'before',\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 = React.useRef<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.current,\n )))\n )\n onBlur(ev);\n },\n [onBlur],\n );\n\n return (\n <Box\n {...getVariant('forms.iconInput')}\n className={`${className ?? ''} iconInput`}\n ref={parentRef}\n onBlur={handleBlur}\n >\n <ReactInputMask\n mask={mask ?? ''}\n onBlur={handleBlur}\n disabled={isLoading || disabled}\n // eslint-disable-next-line @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 {additionalButtonsPosition === 'before' && additionalButtons}\n {!hideButton && (\n <IconButton\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 {additionalButtonsPosition === 'after' && additionalButtons}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from '@apia/theme';\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, Box, Close, InputProps } 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-es/uniqueId';\nimport React from 'react';\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\ndeclare global {\n interface Window {\n LANG_CODE: string;\n MSG_INVALID_DATE: string;\n MSG_FEC_FIN_MAY_FEC_INI: string;\n LBL_PICK_DATE: string;\n }\n}\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, { useRef } from 'react';\nimport { Input, InputProps } from '@apia/theme';\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 deleteValueOnError?: 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 (\n { value, avoidDecimalRestriction, deleteValueOnError = true, ...props },\n ref,\n ) => {\n const [actualValue, setActualValue] = React.useState<string>('');\n const [showValue, setShowValue] = React.useState<string>('');\n const lastEmittedValue = React.useRef<string>('');\n const inError = useRef(false);\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 inError.current = false;\n } else {\n const parsedValue = formatValueToShow(\n newValue,\n avoidDecimalRestriction,\n );\n if (parsedValue === null) {\n if (deleteValueOnError) {\n setActualValue('');\n setShowValue('');\n }\n props.onChange?.({ value: '', error: true });\n inError.current = true;\n } else {\n if (newValue === lastEmittedValue.current) {\n setShowValue(parsedValue);\n return;\n }\n setActualValue(newValue);\n setShowValue(parsedValue);\n props.onChange?.({ value: parsedValue, error: false });\n inError.current = false;\n }\n }\n lastEmittedValue.current = newValue;\n },\n [avoidDecimalRestriction, deleteValueOnError, 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 if (!inError.current || deleteValueOnError !== false) {\n setShowValue(\n String(actualValue).replaceAll(thousandsSeparator, ''),\n );\n }\n },\n [actualValue, deleteValueOnError, 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","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=\"requiredMark\" title={getLabel('msgReqField').text}>\n *\n </abbr>\n ) : null;\n};\n","import { injectStyles, getVariant, Box, BoxProps } from '@apia/theme';\nimport { forwardRef } from 'react';\nimport { RequiredMark } from './RequiredMark';\n\nexport type TFieldLabel = {\n avoidSemicolon?: boolean;\n /**\n * Permite mostrar un mensaje de error debajo del campo\n */\n error?: string;\n hideRequiredMark?: boolean;\n label: string;\n /**\n * La propiedad required se utiliza para mostrar el * de requerido.\n *\n * @see requiredMarkPosition\n * @see hideRequiredMark\n */\n required?: boolean;\n requiredMarkPosition?: 'before' | 'after';\n} & BoxProps;\n\ninjectStyles('layout.common.components.fieldLabel', {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n\n '.fieldLabel__label': {\n fontWeight: 'bold',\n },\n});\n\nexport const FieldLabel = forwardRef<HTMLDivElement, TFieldLabel>(\n (\n {\n as,\n avoidSemicolon,\n children,\n error,\n hideRequiredMark,\n label,\n required,\n requiredMarkPosition = 'after',\n ...props\n },\n ref,\n ) => {\n return (\n <Box\n as={as ?? 'label'}\n {...props}\n className={`fieldLabel ${props.className ?? ''}`}\n {...getVariant('layout.common.components.fieldLabel')}\n aria-label={props['aria-label'] ?? label}\n ref={ref}\n >\n <Box className=\"fieldLabel__label\">\n {requiredMarkPosition === 'before' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {label}\n {requiredMarkPosition === 'after' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {!avoidSemicolon && ':'}\n </Box>\n <Box>{children}</Box>\n {error && <Box className=\"fieldLabel__error\">{error}</Box>}\n </Box>\n );\n },\n);\n\nFieldLabel.displayName = 'FieldLabel';\n","import { Box } from '@apia/theme';\nimport { Icon } from '@apia/icons';\n\nexport interface ICheckbox {\n checked: boolean;\n disabled?: boolean;\n onChange: (checked: boolean) => unknown;\n}\n\nexport const Checkbox = (props: ICheckbox) => {\n return (\n <Box\n className=\"accordion__item__button__check\"\n onClick={(ev) => {\n ev.stopPropagation();\n ev.preventDefault();\n if (!props.disabled) props.onChange?.(!props.checked);\n }}\n >\n {props.checked && <Icon title=\"\" name=\"Check\" />}\n </Box>\n );\n};\n","import { useRef } from 'react';\nimport { useAccordionContext } from '../context';\nimport { IAccordionItemButton } from './DefaultAccordionItemButton';\n\nexport function useIsChecked(\n props: IAccordionItemButton,\n): [boolean, (isChecked: boolean) => void] {\n const handler = useAccordionContext();\n const isChecked = handler.hooks.useItemStateSelector(\n (current) => current.isChecked,\n );\n const id = handler.hooks.useItemId();\n\n const previousPropsChecked = useRef(props.checked);\n if (\n previousPropsChecked.current !== props.checked &&\n props.checked !== undefined\n ) {\n previousPropsChecked.current = props.checked;\n handler.udpateItem(id, { isChecked: props.checked });\n }\n\n return [\n isChecked,\n (isChecked) => {\n handler.udpateItem(id, { isChecked });\n props.onChange?.(isChecked);\n },\n ];\n}\n","/* eslint-disable no-param-reassign */\nimport { isChild } from '@apia/util';\nimport { useEffect, ReactNode, useRef, useCallback } from 'react';\nimport { Box } from '@apia/theme';\n\nexport const AutoEllipsis = ({\n children,\n findParent,\n overrideStyles,\n}: {\n children: ReactNode;\n /**\n * Si se pasa el método findParent, será invocado con el nodo de AutoEllipsis\n * para dar control sobre cuál es el elemento al que se le clonarán los\n * estilos.\n */\n findParent?: (currentElement: HTMLElement) => HTMLElement;\n /**\n * Si se pasa overrideStyles, será invocado con el nodo actual de\n * AutoEllipsis para tomar decisiones acerca de cuáles estilos serán\n * aplicados.\n */\n overrideStyles?: (\n currentElement: HTMLElement,\n ) => Partial<CSSStyleDeclaration>;\n}) => {\n const unsuscribe = useRef(() => {});\n const clone = useRef<HTMLElement | null>(null);\n const timeout = useRef(0);\n const ref = useCallback(\n (el: HTMLElement) => {\n if (!el) return;\n\n unsuscribe.current();\n\n function showBox() {\n clone.current = el.cloneNode(true) as HTMLElement;\n const target = findParent?.(el) ?? el;\n const styles = window.getComputedStyle(target);\n for (let i = 0; i < styles.length; i++) {\n try {\n const name = styles[i] as keyof typeof target.style;\n const value = styles[name];\n if (!(name as string).match(/webkit/)) {\n (clone.current as HTMLElement).style[name as any] = value as any;\n }\n } catch (e) {\n e;\n }\n }\n\n const bound = el.getBoundingClientRect();\n clone.current.style.position = 'fixed';\n clone.current.style.left = `${bound.left - 1}px`;\n clone.current.style.top = `${bound.top - 1}px`;\n clone.current.style.width = `${bound.width + 8}px`;\n clone.current.style.whiteSpace = 'break-spaces';\n clone.current.style.overflow = 'visible';\n clone.current.style.textOverflow = 'unset';\n clone.current.style.background =\n 'var(--theme-ui-colors-palette-background-paper)';\n clone.current.style.color =\n 'var(--theme-ui-colors-palette-text-primary)';\n clone.current.style.border = '1px solid';\n clone.current.style.borderColor =\n 'var(--theme-ui-colors-palette-border-field)';\n clone.current.style.zIndex = '1000000';\n clone.current.style.height = 'auto';\n clone.current.style.fill =\n 'var(--theme-ui-colors-palette-text-primary)';\n clone.current.style.pointerEvents = 'none';\n clone.current.style.wordBreak = 'break-all';\n\n const overridenStyles = overrideStyles?.(el);\n\n if (overridenStyles) {\n for (let i = 0; i < (overridenStyles?.length ?? 0); i++) {\n try {\n const name = overridenStyles[i] as keyof typeof target.style;\n const value = overridenStyles[name];\n if (!(name as string).match(/webkit/)) {\n (clone.current as HTMLElement).style[name as any] =\n value as any;\n }\n } catch (e) {\n e;\n }\n }\n }\n\n clone.current.addEventListener('mouseleave', (ev) => {\n if (\n isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === el,\n )\n )\n return;\n\n clone.current?.remove();\n });\n\n function close() {\n /* clone.current?.remove();\n document.removeEventListener('scroll', close); */\n }\n document.addEventListener('scroll', close);\n document.body.append(clone.current);\n\n const cloneBounding = clone.current.getBoundingClientRect();\n\n const difX = Math.abs(cloneBounding.width - bound.width);\n const difY = Math.abs(cloneBounding.height - bound.height);\n\n if (difX < 50 && difY < 10) {\n clone.current.remove();\n }\n }\n\n function hideBox(ev: MouseEvent) {\n if (\n isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === clone.current,\n )\n )\n return;\n\n clone.current?.remove();\n }\n\n function handleMouseEnter() {\n timeout.current = setTimeout(() => {\n showBox();\n }, 500) as unknown as number;\n }\n function handleMouseLeave(ev: MouseEvent) {\n clearTimeout(timeout.current);\n hideBox(ev);\n }\n\n el.addEventListener('mouseenter', handleMouseEnter);\n el.addEventListener('mouseleave', handleMouseLeave);\n\n unsuscribe.current = () => {\n el.removeEventListener('mouseenter', handleMouseEnter);\n el.removeEventListener('mouseleave', handleMouseLeave);\n clearTimeout(timeout.current);\n };\n },\n [findParent, overrideStyles],\n );\n\n useEffect(() => {\n return () => {\n clone.current?.remove();\n };\n }, []);\n\n return (\n <Box\n ref={ref}\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n className=\"autoellipsis__container\"\n >\n {children}\n </Box>\n );\n};\n","import {\n FC,\n FunctionComponent,\n useCallback,\n useDeferredValue,\n useEffect,\n useRef,\n useState,\n useTransition,\n} from 'react';\nimport { Box } from '@apia/theme';\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\nexport interface IResponsiveComponent<P> extends FC<P> {\n setBreakpoints: { current: (breakPoints: number[]) => void };\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 defaultBreakpoint,\n}: IMakeResponsiveComponent<P>): IResponsiveComponent<\n P & {\n breakPoints?: number[];\n }\n> => {\n const setBreakpoints: { current: (b: number[]) => void } = {\n current: () => {},\n };\n\n return Object.assign(\n function ResponsiveComponent(\n props: P & {\n breakPoints?: number[];\n },\n ) {\n const [breakPoint, setCurrentBreakpoint] = useState<number>(\n defaultBreakpoint ?? 4,\n );\n\n const [innerBreakpoints, setInnerBreakpoints] = useState(\n props.breakPoints ?? breakPoints,\n );\n setBreakpoints.current = setInnerBreakpoints;\n\n const [containerWidth, setContainerWidth] = useState(\n breakPoints[defaultBreakpoint ?? 4],\n );\n const observer = useRef<ResizeObserver | null>(null);\n const shouldDisconnect = useRef(false);\n\n const [hasRendered, setHasRendered] = useState(false);\n const [, startTransition] = useTransition();\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 startTransition(() => {\n setContainerWidth(resizeProps[0].contentRect.width);\n setCurrentBreakpoint(\n calcBreakPoint(\n resizeProps[0].contentRect.width,\n innerBreakpoints,\n ),\n );\n setHasRendered(true);\n });\n });\n\n if (element) observer.current.observe(element);\n },\n [innerBreakpoints],\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 }, [innerBreakpoints]);\n\n const deferBreakPoint = useDeferredValue(breakPoint);\n const deferContainerWidth = useDeferredValue(containerWidth);\n\n return (\n <Box ref={ref}>\n {hasRendered ? (\n <Component\n {...props}\n breakPoint={deferBreakPoint}\n breakPointWidth={breakPoints[deferBreakPoint]}\n containerWidth={deferContainerWidth}\n />\n ) : null}\n </Box>\n );\n },\n { setBreakpoints },\n );\n};\n","import { Box } from '@apia/theme';\nimport { Icon, type TIconName } from '@apia/icons';\nimport { useAccordionContext } from '../context';\nimport { ISimpleButton, SimpleButton } from '../../forms';\nimport { Checkbox } from './Checkbox';\nimport { useIsChecked } from './useIsChecked';\nimport { KeyboardEvent, MouseEvent, ReactNode, useCallback } from 'react';\nimport { AutoEllipsis } from '../../responsive';\n\nexport interface IAccordionItemButton {\n ariaLabel: string;\n /**\n * Si checked !== undefined => se mostrará un checkbox.\n */\n checked?: boolean;\n /**\n * Solamente se utiliza en conjunto con el checkbox y permite evitar que el\n * usuario pueda marcar o desmarcar el checkbox.\n */\n className?: string;\n disableSelection?: boolean;\n domButtonProps?: ISimpleButton;\n label: string;\n /**\n * Evento que se dispara cuando el usuario hace click en el checkbox o\n * presiona espacio sobre el botón del acordeón.\n */\n onChange?: (checked: boolean) => unknown;\n onClick?: (ev: MouseEvent) => unknown;\n onUserPressEnter?: (ev: KeyboardEvent) => unknown;\n rightButtons?: ReactNode;\n rightIcons?: TIconName[] | TIconName;\n tabIndex?: number;\n /**\n * Si no se pasa title se usará ariaLabel.\n */\n title?: string;\n}\n\nexport const DefaultAccordionItemButton = (props: IAccordionItemButton) => {\n const handler = useAccordionContext();\n\n const { isExpanded } = handler.hooks.useItemStateSelector((props) => props);\n const id = handler.hooks.useItemId();\n const [isChecked, setIsChecked] = useIsChecked(props);\n const handleClick = useCallback(\n (ev: MouseEvent) => {\n props.onClick?.(ev);\n if (!ev.isDefaultPrevented()) handler.toggleItem(id, !isExpanded);\n },\n [handler, id, isExpanded, props],\n );\n const handleKeyDown = useCallback(\n (ev: KeyboardEvent) => {\n if (ev.code === 'Enter') {\n props.onUserPressEnter?.(ev);\n if (!ev.isDefaultPrevented() && props.rightButtons)\n handler.toggleItem(id, !isExpanded);\n }\n },\n [handler, id, isExpanded, props],\n );\n\n return (\n <SimpleButton\n {...props.domButtonProps}\n className={`accordion__item__button ${props.className ?? ''} ${\n props.domButtonProps?.className ?? ''\n }`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n aria-expanded={isExpanded}\n aria-controls={`accordion__${handler.id}__${id}`}\n title={props.title}\n aria-label={props.ariaLabel}\n tabIndex={props.tabIndex}\n >\n <Box className=\"accordion__item__button__leftGroup\">\n {props.checked !== undefined && (\n <Checkbox\n checked={isChecked}\n disabled={props.disableSelection}\n onChange={setIsChecked}\n />\n )}\n <Box as=\"h3\" className=\"accordion__item__button__label\">\n <AutoEllipsis overrideStyles={() => ({ textAlign: 'left' })}>\n {props.label ?? props.title ?? props.ariaLabel}\n </AutoEllipsis>\n </Box>\n </Box>\n <Box className=\"accordion__item__button__rightGroup\">\n {props.rightButtons}\n <Icon\n name={isExpanded ? 'ArrowUpThin' : 'ArrowDownThin'}\n title={props.title ?? props.ariaLabel}\n size={23}\n />\n </Box>\n </SimpleButton>\n );\n};\n","import { Children, ReactElement } from 'react';\nimport { AccordionItemButton } from './AccordionItemButton';\nimport { DefaultAccordionItemButton } from './defaultElements/DefaultAccordionItemButton';\nimport { IAccordionItemProps } from './AccordionItem';\nimport AnimateHeight from 'react-animate-height';\nimport { useAccordionContext } from './context';\nimport { Box } from '@apia/theme';\n\nexport const AccordionItemContent = ({\n children,\n buttonProps,\n}: IAccordionItemProps) => {\n let button = null;\n\n const actualChildren = Children.toArray(children).filter((current) => {\n if (typeof current !== 'string' && typeof current !== 'number') {\n const element = current as ReactElement;\n\n if (element.type === AccordionItemButton) {\n button = element;\n return false;\n }\n }\n return true;\n });\n\n if (button === null && buttonProps)\n button = <DefaultAccordionItemButton {...buttonProps} />;\n\n const handler = useAccordionContext();\n const isExpanded = handler.hooks.useItemStateSelector(\n (current) => current.isExpanded,\n );\n const id = handler.hooks.useItemId();\n\n const duration = handler.hooks.usePropsSelector(\n (current) => current.animationDuration,\n );\n\n return (\n <Box className=\"accordion__item\" data-id={id}>\n {button}\n <AnimateHeight\n className=\"accordion__item__content\"\n height={isExpanded ? 'auto' : 0}\n duration={duration}\n id={`accordion__${handler.id}__${id}`}\n >\n {actualChildren}\n </AnimateHeight>\n </Box>\n );\n};\n","import { ReactNode, useRef } from 'react';\nimport { AccordionItemContent } from './AccordionItemContent';\nimport { useAccordionContext } from './context';\nimport { TId } from '@apia/util';\nimport { IAccordionItemButton } from './defaultElements/DefaultAccordionItemButton';\n\nexport interface IAccordionItemProps {\n /**\n * Cada elemento del acordeón tiene dos formas de renderizar el botón. O bien\n * se pasa un elemento AccordionItemButton como hijo o bien se pasan\n * buttonProps. En caso contrario, el elemento no tendrá botón.\n */\n buttonProps?: IAccordionItemButton;\n children?: ReactNode;\n defaultExpanded?: boolean;\n id: TId;\n}\n\nexport const AccordionItem = ({\n children,\n id,\n defaultExpanded,\n ...props\n}: IAccordionItemProps) => {\n const context = useAccordionContext();\n const Provider = context.hooks.useItemContextProvider(id);\n const hasRegistered = useRef(false);\n\n if (!hasRegistered.current) {\n hasRegistered.current = true;\n context.registerItem(id, {\n isChecked: false,\n isExpanded: !!defaultExpanded,\n });\n }\n\n return (\n <Provider>\n <AccordionItemContent id={id} {...props}>\n {children}\n </AccordionItemContent>\n </Provider>\n );\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 '@apia/theme';\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 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 React from 'react';\nimport { Box, BoxProps, Close } from '@apia/theme';\n\nexport interface ILabelBox {\n className?: string;\n label: string;\n tooltip?: string;\n closeTooltip?: string;\n onClose?: () => unknown;\n}\n\ntype TLabelBox = ILabelBox & BoxProps;\n\nexport const LabelBox = ({\n className,\n label,\n tooltip,\n closeTooltip,\n onClose,\n ...props\n}: TLabelBox) => {\n return (\n <Box\n {...props}\n title={tooltip}\n className={`labelBox ${className ?? ''}`}\n variant=\"layout.common.boxes.labelBox\"\n >\n <Box className=\"labelAndIcon\" as=\"span\">\n {label}\n </Box>\n <Box>\n <Close\n type=\"button\"\n className=\"closeButton\"\n onClick={onClose}\n disabled={!onClose}\n title={closeTooltip}\n variant=\"icon-outline-danger\"\n />\n </Box>\n </Box>\n );\n};\n","import { Box, Heading, getVariant } from '@apia/theme';\nimport { ReactNode, useState } from 'react';\nimport { IconButton } from '../../forms';\n\nexport const ContainerWithHeader = ({\n title,\n children,\n footerChildren,\n onClose,\n additionalButtons,\n}: {\n title: string;\n children: ReactNode;\n footerChildren?: ReactNode;\n additionalButtons?: ReactNode;\n onClose?: () => void;\n}) => {\n const [isFullScreen, setIsFullScreen] = useState(false);\n\n const handleExpandClick = () => {\n setIsFullScreen((prev) => !prev);\n };\n return (\n <Box\n className={`container ${isFullScreen ? 'fullScreen' : ''}`}\n {...getVariant('layout.common.components.containers.containerWithHeader')}\n >\n <Box className=\"container__header\">\n <Heading as=\"h2\">{title}</Heading>\n <Box className=\"container__rightButtons\">\n {additionalButtons}\n <IconButton\n className=\"container__rightButtons__maximizedBtn\"\n variant=\"outline\"\n icon={isFullScreen ? 'Minimize' : 'Maximize'}\n onClick={() => handleExpandClick()}\n />\n {onClose && (\n <IconButton\n variant=\"outline-danger\"\n icon=\"Close\"\n onClick={() => onClose()}\n />\n )}\n </Box>\n </Box>\n <Box className=\"container__content\">{children}</Box>\n {footerChildren && (\n <Box className=\"container__footer\">{footerChildren}</Box>\n )}\n </Box>\n );\n};\n","import { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {};\n","import React from 'react';\nimport { Box, Button } from '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport isFunction from 'lodash-es/isFunction';\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 = 'ArrowDownThin',\n collapsed,\n defaultCollapsed,\n disableChildrenFocus,\n iconSize = '20px',\n id,\n onClose,\n onOpen,\n openIcon = 'ArrowRightThin',\n label,\n rememberCollapsedState,\n titleButtons,\n minHeight = 0,\n 'aria-hidden': ariaHidden,\n },\n outerRef,\n ) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const prefix = React.useMemo(() => (id ? '' : uniqueId()), []);\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n rememberCollapsedState\n ? ((persistentStorage[`collapsiblePanel${actualId}`] ??\n defaultCollapsed ??\n collapsed) as 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 >\n {isCollapsed ? (\n <Icon title=\"\" icon={openIcon} size={iconSize} />\n ) : (\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\n )}\n <span className=\"title\">{label}</span>\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={ariaHidden ?? isCollapsed}\n className=\"collapsiblePanel__content\"\n >\n {children}\n </AnimateHeight>\n </Box>\n );\n },\n);\n\nCollapsiblePanel.displayName = 'CollapsiblePanel';\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 '@apia/theme';\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' | 'sx'>;\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 '@apia/theme';\r\nimport { decodeHTMLEntities } from '@apia/util';\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 <>\r\n {domProps.className?.includes('separator') && (\r\n <li className=\"separator\"></li>\r\n )}\r\n <li\r\n {...(domProps as any)}\r\n className={`${\r\n domProps.className\r\n ?.split(' ')\r\n .filter((current) => current !== 'separator')\r\n .join(' ') ?? ''\r\n } listbox__row`}\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={useMemo(() => decodeHTMLEntities(label), [label])}\r\n >\r\n {children}\r\n </li>\r\n </>\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 '@apia/theme';\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__list')\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 '@apia/theme';\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 } from '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\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 overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n\n '&:hover': (theme) => {\n return {\n ...theme.palette.getOneState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n cursor: 'pointer',\n };\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 resetFocus: TListboxOperation<null> = makeOperation((state, _, keys) => {\n keys.push(makeRowKey(state.focusedRow));\n state.focusedRow = 0;\n keys.push(makeRowKey(0));\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 resetFocus,\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';\nimport { useStore } from './useStore';\n\nexport function useIndexedChildren(\n children: React.ReactNode | React.ReactNode[],\n listboxActions: ReturnType<typeof useStore>[0],\n) {\n return useMemo(\n function makeChildrenIndices() {\n listboxActions.resetFocus(null);\n\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, listboxActions],\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' as unknown as '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 '@apia/theme';\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, listboxActions);\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 role=\"listbox\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onFocus={onFocus}\r\n {...props.ulProps}\r\n className={`listbox__list ${props?.ulProps?.className ?? ''}`}\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 { BarLoader } from 'react-spinners';\nimport { Box, useThemeUI } from '@apia/theme';\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 width=\"100%\" color={theme.theme.palette.primary.main} />\n </Box>\n </Box>\n );\n};\n\nexport default LinearLoader;\n","import { getVariant } from '@apia/theme';\nimport { FC } from 'react';\nimport { Progress, Label } from '@apia/theme';\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 '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\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 { TDistinctors } from '@apia/dom-store';\nimport { TCellDistinctions, TGridDistinctions, TState } from './types';\n\nexport const distinctors: TDistinctors<TState> = {\n grid: [\n (distinctors: TGridDistinctions, state) => {\n return {\n etc: {\n 'aria-activedescendant':\n distinctors.iconsCount > 0\n ? `${state.storeId}__${state.focusedRow}__${state.focusedColumn}`\n : undefined,\n role: 'grid',\n 'aria-rowcount': distinctors.rows,\n 'aria-colcount': distinctors.columns,\n id: state.storeId,\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, TGridDistinctions, 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: [\n (\n distinctions: TGridDistinctions,\n state: TState,\n ) => TDistinctorProperties,\n ];\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Box } from '@apia/theme';\nimport {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useRef,\n} from 'react';\nimport { useIconsListStoreContext } from './store/context';\nimport { isChild, TId, noNaN } from '@apia/util';\nimport { TIcon, TIconsList } from './types';\nimport { ApiaUtil } from '../../objects/ApiaUtil';\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 } = useIconsListStoreContext();\n const timeoutId = useRef(-1);\n const currentIcon = useRef<TIcon | null | undefined>(null);\n\n const showIconDetails = useCallback(\n (icon: TIcon) => {\n if (onIconGetDetails) {\n ApiaUtil.instance.tooltips.open({\n attachToElement: () =>\n document.querySelector(\n `#${storeId} .iconsList__iconWrapper[data-id=\"${icon.id}\"]`,\n ) as HTMLElement,\n children: onIconGetDetails(icon),\n closeOnClick: false,\n minSize: { width: 200, height: 0 },\n });\n }\n },\n [onIconGetDetails, storeId],\n );\n\n const handleMouseEnter = useCallback(\n (ev: MouseEvent<HTMLElement>) => {\n const icon = findIcon(icons, ev.target);\n\n if (icon !== currentIcon.current || icon === null || icon === undefined) {\n if (timeoutId.current !== -1) {\n clearTimeout(timeoutId.current);\n }\n\n timeoutId.current = window.setTimeout(() => {\n if (icon) {\n showIconDetails(icon);\n if (onIconClick && icon) {\n onIconClick(ev, icon);\n }\n }\n }, 100);\n\n currentIcon.current = icon;\n }\n },\n [icons, onIconClick, showIconDetails],\n );\n\n return (\n <Box\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 onMouseOver={handleMouseEnter}\n onMouseLeave={useCallback(() => {\n currentIcon.current = null;\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 (onIconClick && icon) {\n onIconClick(ev, icon);\n }\n },\n [icons, onIconClick],\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 function shoutKeyDown() {\n const icon = findIcon(icons, getState().focusedId);\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 default:\n shoutKeyDown();\n break;\n }\n },\n [actions, getState, icons, onIconKeyDown, showIconDetails],\n )}\n >\n {children}\n </Box>\n );\n};\n","import { focusOutline } from '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {\n '&, *': {\n textAlign: 'center',\n },\n\n '.iconsList__icon__image__wrapper': {\n boxShadow: '1px 1px 3px #0001',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n '.iconsList__icon__image': {\n maxWidth: 'calc(100% - 4px)',\n },\n\n '.iconsList__icon__wrapper': {\n p: 2,\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n\n '&:hover': (theme) => {\n return {\n ...theme.palette.getOneState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n };\n },\n },\n\n '.iconsList__icon__label': {\n wordBreak: 'break-word',\n display: '-webkit-box',\n WebkitLineClamp: '3',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: '20px',\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const IconRendererContext = createContext<TIconRenderer<any> | null>(\n null,\n);\n\nexport function useIconRendererContext<\n P extends Record<string, unknown> = Record<string, unknown>,\n>() {\n const context = useContext(IconRendererContext);\n\n if (!context) throw new Error('There is no IconRendererContext');\n\n return context as TIconRenderer<P>;\n}\n","import { TIcon } from '.';\nimport { Box } from '@apia/theme';\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 ContextRenderer = useIconRendererContext();\n const Renderer = props.iconRenderer || ContextRenderer;\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 '.iconsList__icon__image__wrapper': {\n height: `${props.width - 4}px`,\n },\n\n '.iconsList__icon__image': {\n maxHeight: `${props.width - 32}px`,\n maxWidth: `${props.width - 32}px`,\n },\n }),\n [props.width],\n )}\n aria-colindex={props.colIndex}\n >\n <Renderer {...props} />\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\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 sx={{ width: `${iconWidth}px` }} className=\"fill__the__row\" />\n ) : (\n <Icon\n rowIndex={rowIndex}\n colIndex={colIndex}\n width={iconWidth}\n {...(icon as TIcon<P>)}\n />\n );\n};\n","import { Icon } from '@apia/icons';\nimport { TIconRenderer } from '../types';\nimport { Box, Image } from '@apia/theme';\nimport { memo } from 'react';\n\nconst DefaultIconRendererNoMemo: TIconRenderer = (props) => {\n if (!props.icon && !props.imageUrl) {\n console.error({ props });\n console.error('The icon has no imageUrl nor icon defined');\n }\n\n return (\n <Box title={props.label} className=\"iconsList__icon__wrapper\">\n <Box className=\"iconsList__icon__image__wrapper\">\n {props.imageUrl && (\n <Image\n className=\"iconsList__icon__image\"\n src={props.imageUrl}\n role=\"none\"\n alt=\"\"\n />\n )}\n {props.icon && <Icon icon={props.icon} title={props.ariaLabel} />}\n </Box>\n <Box className=\"iconsList__icon__label\">{props.label}</Box>\n </Box>\n );\n};\n\nexport const DefaultIconRenderer = memo(DefaultIconRendererNoMemo);\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport { Box, Grid } from '@apia/theme';\nimport {\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} 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';\nimport { useLatest, usePrevious } from '@apia/util';\nimport { shallowEqual } from '@apia/store';\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 propsRef = useLatest(props);\n let render: () => void = () => {};\n const previousProps = usePrevious(props);\n if (!shallowEqual(props, previousProps.current)) {\n setTimeout(() => render(), 0);\n }\n\n const ResponsiveContainer = useMemo(() => {\n const iconWidth = propsRef.current.iconWidth ?? 100;\n const minGap = propsRef.current.minHorizontalGap ?? 30;\n const blockWidth = iconWidth + minGap;\n const styledComponent = (styledComponentProps: unknown) => {\n const { breakPoint, containerWidth } = styledComponentProps as {\n breakPoint: number;\n containerWidth: number;\n };\n const [, doRender] = useState(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n render = useCallback(() => doRender((current) => !current), []);\n const storeId = useMemo(() => uniqueId('IconsList'), []);\n const [actions, useProps, , , Context] = useStore({ storeId });\n const rows = Math.ceil(propsRef.current.icons.length / breakPoint);\n const sx = useStyles({\n breakPoint,\n containerWidth,\n iconWidth: propsRef.current.iconWidth ?? 100,\n verticalGap: propsRef.current.verticalGap,\n removeHorizontalPadding: propsRef.current.removeHorizontalPadding,\n });\n\n useEffect(() => {\n actions.recalculateIndexByResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakPoint]);\n const IconRenderer = propsRef.current.iconRenderer ?? DefaultIconRenderer;\n const gridRef = useProps('grid', {\n columns: breakPoint,\n iconsCount: propsRef.current.icons.length,\n rows,\n });\n\n return (\n <IconRendererContext.Provider value={IconRenderer}>\n <Context>\n <KeyHandler\n icons={propsRef.current.icons}\n onIconClick={propsRef.current.onIconClick}\n onIconDoubleClick={propsRef.current.onIconDoubleClick}\n onIconGetDetails={propsRef.current.onIconGetDetails}\n onIconKeyDown={propsRef.current.onIconKeyDown}\n storeId={storeId}\n >\n <Box ref={gridRef}>\n {Array(rows)\n .fill(1)\n .map((_, i) => {\n const icons = getRowIcons({\n breakPoint,\n i,\n icons: propsRef.current.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={uniqueId(String(j + i))}\n colIndex={j + 1}\n icon={current}\n iconWidth={propsRef.current.iconWidth ?? 100}\n rowIndex={i + 1}\n />\n ))}\n </Grid>\n );\n })}\n </Box>\n </KeyHandler>\n </Context>\n </IconRendererContext.Provider>\n );\n };\n\n const Component = makeResponsiveComponent({\n breakPoints: getBreakpoints(blockWidth),\n Component: makeStyledComponent(\n 'IconsList',\n 'layout.common.components.iconsList',\n styles,\n styledComponent,\n ),\n debounce: 50,\n });\n\n return Component;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (previousProps.current?.iconWidth !== props.iconWidth) {\n const iconWidth = props.iconWidth ?? 100;\n const minGap = props.minHorizontalGap ?? 30;\n\n const blockWidth = iconWidth + minGap;\n setTimeout(\n () =>\n ResponsiveContainer.setBreakpoints.current(getBreakpoints(blockWidth)),\n 0,\n );\n }\n\n return <ResponsiveContainer />;\n};\n\nIconsListNonForwarded.displayName = 'IconsList';\n\nexport const IconsList = forwardRef(\n IconsListNonForwarded,\n) as typeof IconsListNonForwarded;\n\nexport { DefaultIconRenderer };\n","import { type ComponentType, lazy } from 'react';\n\n/**\n * Permite importar un componente en forma dinámica con ruta relativa a\n * /customComponents\n */\nexport function importComponent<T = unknown>(path: string) {\n return lazy<ComponentType<T>>(() => {\n return new Promise<{\n default: ComponentType<T>;\n }>((resolve) => {\n import(/* webpackInclude: /\\.tsx?$/ */ `/customComponents/${path}`)\n .then((result: { default: { default: ComponentType<T> } }) => {\n resolve(result.default);\n })\n .catch((error: unknown) => {\n resolve({\n default: () => {\n console.error(error);\n return <>Error</>;\n },\n });\n });\n });\n });\n}\n","import { EventEmitter } from '@apia/util';\nimport {\n createContext,\n useContext,\n ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { TToolbarIconButton } from './types';\n\ntype TClickListener = () => unknown;\ntype TItemState = Pick<\n TToolbarIconButton,\n 'disabled' | 'toggled' | 'isLoading'\n>;\n\nexport class ToolbarController extends EventEmitter<{\n pressEnter: string;\n updateItemState: string;\n}> {\n eventListeners: Record<string, TClickListener[]> = {};\n itemsState: Record<string, TItemState> = {};\n\n hooks = {\n useItemState: (id: string, initialState: TItemState) => {\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n this.itemsState[id] = initialState;\n this.on('updateItemState', (evId) => {\n if (evId === id) {\n setState({ ...this.itemsState[id] });\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return state;\n },\n };\n\n setItemState = (id: string, newState: Partial<TItemState>) => {\n this.itemsState[id] = { ...this.itemsState[id], ...newState };\n this.emit('updateItemState', id);\n };\n\n Context = ({ children }: { children: ReactNode }) => {\n return (\n <ToolbarControllerContext.Provider value={this}>\n {children}\n </ToolbarControllerContext.Provider>\n );\n };\n}\n\nexport const ToolbarControllerContext = createContext<ToolbarController | null>(\n null,\n);\n\nexport const useToolbarControllerContext = () => {\n const context = useContext(ToolbarControllerContext);\n\n if (!context) throw new Error('There is no Toolbar controller context');\n\n return context;\n};\n","import { getVariant } from '@apia/theme';\nimport { ISimpleButton, SimpleButton } from '../forms';\n\nexport const ToolbarTextButton = (props: ISimpleButton) => {\n return (\n <SimpleButton\n {...props}\n className={`toolbar__textButton ${props?.className ?? ''}`}\n {...(props.variant ? getVariant(props.variant) : null)}\n >\n {props.children}\n </SimpleButton>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useToolbarControllerContext } from './ToolbarController';\nimport { TToolbarIconButton } from './types';\nimport { useMount, usePrevious } from '@apia/util';\nimport { IconButton } from '../forms';\n\nexport const ToolbarIconButton = ({\n id,\n action,\n actionSource,\n allowToggle,\n className,\n defaultToggled,\n disabled,\n icon,\n iconSize,\n isLoading: outerIsLoading,\n title,\n toggled: toggledProp,\n}: TToolbarIconButton) => {\n const [innerIsToggled, setInnerIsToggled] = useState<boolean>(\n toggledProp ?? (allowToggle ? defaultToggled ?? false : false),\n );\n const [isDisabled, setIsDisabled] = useState(!!disabled);\n const context = useToolbarControllerContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const previousIsLoading = usePrevious(outerIsLoading);\n if (previousIsLoading.current !== outerIsLoading)\n setIsLoading(!!outerIsLoading);\n\n const lastDisabledProp = usePrevious(disabled);\n if (lastDisabledProp.current !== disabled) {\n setIsDisabled(!!disabled);\n }\n\n /**\n * Si la prop toggled cambia y no está undefined, se debe actualizar el\n * estado interno.\n */\n const lastToggledProp = useRef<boolean | undefined>(toggledProp);\n if (\n toggledProp !== undefined &&\n innerIsToggled !== toggledProp &&\n lastToggledProp.current !== toggledProp\n ) {\n lastToggledProp.current = toggledProp;\n setInnerIsToggled(toggledProp);\n }\n\n const handleClick = useCallback(async () => {\n setIsLoading(true);\n try {\n if (lastToggledProp.current !== undefined) {\n await action(\n { isToggled: !lastToggledProp.current, isLoading },\n context,\n );\n } else if (allowToggle) {\n let isToggled = false;\n setInnerIsToggled((current) => {\n isToggled = !current;\n return isToggled;\n });\n await action({ isToggled, isLoading }, context);\n } else {\n await action({ isToggled: false, isLoading }, context);\n }\n } catch (e) {\n console.error(e);\n }\n setIsLoading(false);\n }, [action, allowToggle, context, isLoading]);\n\n /**\n * Se maneja el uso de teclado para hacer click sobre el elemento\n */\n useEffect(() => {\n const unsuscribe1 = context.on('updateItemState', (evId) => {\n if (evId === id) {\n setInnerIsToggled(!!context.itemsState[evId].toggled);\n setIsDisabled(!!context.itemsState[evId].disabled);\n }\n });\n const unsuscribe2 = context.on('pressEnter', (evId) => {\n if (evId === id) void handleClick();\n });\n\n return () => {\n unsuscribe1();\n unsuscribe2();\n };\n }, [context, id, handleClick]);\n\n useMount(() => {\n if (context.itemsState[id]) {\n if (context.itemsState[id].disabled !== undefined) {\n setIsDisabled(!!context.itemsState[id].disabled);\n }\n if (context.itemsState[id].toggled !== undefined) {\n setInnerIsToggled(!!context.itemsState[id].toggled);\n }\n } else\n context.itemsState[id] = {\n disabled: isDisabled,\n toggled: innerIsToggled,\n ...context.itemsState[id],\n };\n });\n\n return (\n <IconButton\n className={`toolbar__button ${innerIsToggled ? 'toggled' : ''} ${className ?? ''}`}\n data-id={id}\n disabled={isDisabled}\n icon={icon}\n onClick={actionSource !== 'mousedown' ? handleClick : undefined}\n isLoading={isLoading}\n onMouseDown={actionSource === 'mousedown' ? handleClick : undefined}\n size={iconSize ?? 'Md'}\n title={title}\n variant=\"icon-outline\"\n />\n );\n};\n","import { FieldLabel } from '../forms';\nimport { TToolInput } from './types';\nimport { Input } from '@apia/theme';\n\nexport const ToolbarInput = (tool: TToolInput) => {\n const input = <Input className=\"toolbar__input\" {...tool.inputProps} />;\n\n if (tool.label) return <FieldLabel label={tool.label}>{input}</FieldLabel>;\n\n return input;\n};\n","import { Box } from '@apia/theme';\n\nexport const ToolbarSeparator = () => {\n return <Box className=\"toolbar__separator\">&nbsp;</Box>;\n};\n","import { Select, SelectProps, getVariant } from '@apia/theme';\n\nexport const ToolbarSelect = (props: SelectProps) => {\n return (\n <Select\n {...props}\n className={`toolbar__select ${props?.className ?? ''}`}\n {...(props.variant ? getVariant(props.variant) : null)}\n >\n {props.children}\n </Select>\n );\n};\n","import { useMount } from '@apia/util';\nimport { TToolbarIconButton } from './types';\nimport { Box, getVariant } from '@apia/theme';\nimport { ReactNode, useMemo } from 'react';\nimport { ToolbarController } from './ToolbarController';\nimport { ToolbarTextButton } from './ToolbarTextButton';\nimport { ToolbarIconButton } from './ToolbarIconButton';\nimport { ToolbarInput } from './ToolbarInput';\nimport { ToolbarSeparator } from './ToolbarSeparator';\nimport { ToolbarSelect } from './ToolbarSelect';\n\nconst Toolbar = ({\n children,\n getController,\n}: {\n children: ReactNode;\n /**\n * El controlador permite gestionar el estado de los distintos elementos de\n * la toolbar\n */\n getController?: (newController: ToolbarController) => unknown;\n}) => {\n const controller = useMemo(() => new ToolbarController(), []);\n\n useMount(() => {\n getController?.(controller);\n });\n\n return (\n <controller.Context>\n <Box\n className=\"toolbar\"\n {...getVariant('layout.common.components.toolbar')}\n >\n {children}\n </Box>\n </controller.Context>\n );\n};\n\nexport type { TToolbarIconButton as TToolDefinition };\nexport {\n ToolbarIconButton,\n ToolbarInput,\n ToolbarTextButton,\n Toolbar,\n ToolbarController,\n ToolbarSeparator,\n ToolbarSelect,\n};\n","import { EventEmitter } from '@apia/util';\nimport {\n Children,\n ReactElement,\n ReactNode,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport { useSubscription } from '@apia/util';\nimport { Box, BoxProps } from '@apia/theme';\nimport { TSortableListItem } from './SortableListItem';\n\ntype THover = { id: string; after: boolean };\n\nfunction getTargetItem(ev: Event) {\n return (ev.target as HTMLElement).closest(\n '.sortableList__item',\n ) as HTMLElement;\n}\n\nexport class SortableListHandler {\n #emitter = new EventEmitter<{ hover: THover; sort: null }>();\n\n #items: ReactElement<{ id: string }>[] = [];\n\n updateChildren = (items: ReactNode) => {\n this.#items = Children.toArray(items).filter((el): el is ReactElement =>\n isValidElement(el),\n );\n };\n\n #moveItem = (movingId: string, idBefore: string, after: boolean) => {\n if (movingId === idBefore) return;\n\n const itemIndex = this.#items.findIndex(\n (search) => search.props.id === movingId,\n );\n const item = this.#items.splice(itemIndex, 1)![0]!;\n const insertIndex = this.#items.findIndex(\n (search) => search.props.id === idBefore,\n );\n\n this.#items.splice(insertIndex + (after ? 1 : 0), 0, item);\n this.#emitter.emit('sort', null);\n };\n\n useItemEvents = () => {\n const unsuscribe = useRef(() => {});\n const ref = useCallback((el: HTMLElement) => {\n unsuscribe.current();\n\n if (el) {\n const handleDragEnd = (ev: DragEvent) => {\n getTargetItem(ev).classList.remove('dragging');\n };\n\n const handleDrop = (ev: DragEvent) => {\n const target = getTargetItem(ev);\n\n this.#moveItem(\n ev.dataTransfer!.getData('text'),\n target.id,\n target.classList.contains('after'),\n );\n\n target.classList.remove('dragover');\n target.classList.remove('after');\n };\n\n const handleDragLeave = (ev: DragEvent) => {\n getTargetItem(ev).classList.remove('dragover');\n };\n\n const handleDragOver = (ev: DragEvent) => {\n ev.preventDefault();\n // eslint-disable-next-line no-param-reassign\n ev.dataTransfer!.dropEffect = 'move';\n getTargetItem(ev).classList.add('dragover');\n\n const bounding = getTargetItem(ev).getBoundingClientRect();\n if (ev.clientY - bounding.top > bounding.height / 2)\n getTargetItem(ev).classList.add('after');\n else getTargetItem(ev).classList.remove('after');\n };\n\n document.addEventListener('dragend', handleDragEnd);\n el.addEventListener('drop', handleDrop);\n el.addEventListener('dragleave', handleDragLeave);\n el.addEventListener('dragover', handleDragOver);\n\n unsuscribe.current = () => {\n document.removeEventListener('dragend', handleDragEnd);\n el.removeEventListener('drop', handleDrop);\n el.removeEventListener('dragleave', handleDragLeave);\n el.removeEventListener('dragover', handleDragOver);\n };\n }\n }, []);\n\n return ref;\n };\n\n useSortChange = (onSortChange?: (items: ReactElement[]) => unknown) => {\n useSubscription({\n makeSubscription: () => {\n return this.#emitter.on('sort', () => {\n onSortChange?.([...this.#items]);\n });\n },\n });\n };\n\n useWrapperEvents = () => {\n const unsuscribe = useRef(() => {});\n const ref = useCallback((el: HTMLElement) => {\n unsuscribe.current();\n\n if (el) {\n const handleDrag = (ev: DragEvent) => {\n const target = getTargetItem(ev);\n\n if (ev.dataTransfer) {\n // eslint-disable-next-line no-param-reassign\n ev.dataTransfer.effectAllowed = 'all';\n ev.dataTransfer.setData('text', target.id);\n target.classList.add('dragging');\n }\n };\n\n el.addEventListener('dragstart', handleDrag);\n\n unsuscribe.current = () => {\n el.removeEventListener('dragstart', handleDrag);\n };\n }\n }, []);\n\n return ref;\n };\n}\n\nconst con = createContext<SortableListHandler>({} as SortableListHandler);\n\nexport const SortableListContext = ({\n boxProps,\n children,\n onSortChange,\n}: {\n boxProps?: BoxProps;\n children: ReactNode;\n onSortChange?: (items: ReactElement<TSortableListItem>[]) => unknown;\n}) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const handler = useMemo(() => new SortableListHandler(), []);\n handler.useSortChange(onSortChange);\n handler.updateChildren(children);\n\n return (\n <Box\n {...boxProps}\n as={boxProps?.as ?? 'ul'}\n className={`sortableList ${boxProps?.className ?? ''}`}\n ref={handler.useWrapperEvents()}\n >\n <con.Provider value={handler}>{children}</con.Provider>\n </Box>\n );\n};\n\nexport function useSortableListHandler() {\n return useContext(con);\n}\n\nexport type { TSortableListItem };\n","import { Box, BoxProps } from '@apia/theme';\nimport { ReactNode, memo } from 'react';\nimport { useSortableListHandler } from './SortableListHandler';\n\nexport type TSortableListItem = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalProps?: any;\n boxProps?: Omit<BoxProps, 'id'>;\n id: string;\n children: ReactNode;\n};\n\nexport const SortableListItem = memo(\n ({ boxProps, id, children }: TSortableListItem) => {\n return (\n <Box\n {...boxProps}\n as={boxProps?.as ?? 'li'}\n className={`sortableList__item ${boxProps?.className ?? ''}`}\n draggable\n id={id}\n ref={useSortableListHandler().useItemEvents()}\n >\n {children}\n </Box>\n );\n },\n);\n","import { BoxProps, makeStyledComponent } from '@apia/theme';\nimport { Children, ReactElement, ReactNode } from 'react';\nimport { SortableListContext } from './SortableListHandler';\nimport { SortableListItem, TSortableListItem } from './SortableListItem';\n\nexport const UnstyledSortableList = ({\n boxProps,\n children,\n onSortChange,\n}: {\n boxProps?: BoxProps;\n children: ReactNode;\n onSortChange?: (items: ReactElement<TSortableListItem>[]) => unknown;\n}) => {\n Children.forEach(children, (el) => {\n if ((el as ReactElement<TSortableListItem>)?.type !== SortableListItem)\n throw new Error(\n `Every children of a SortableList must be of type SortableListItem`,\n );\n });\n\n return (\n <SortableListContext onSortChange={onSortChange} boxProps={boxProps}>\n {children}\n </SortableListContext>\n );\n};\n\nexport const SortableList = makeStyledComponent(\n 'SortableList',\n 'layout.common.components.sortableList',\n {\n '.sortableList': { display: 'flex', flexDirection: 'column' },\n '.sortableList__item': {\n cursor: 'pointer',\n },\n '.dragging': {\n opacity: '0.3',\n },\n '.dragover': { position: 'relative' },\n '.dragover:after': {\n display: 'block',\n content: '\"\"',\n position: 'absolute',\n height: '4px',\n left: '0',\n top: '-4px',\n bottom: 'auto',\n width: '100%',\n backgroundColor: 'palette.primary.main',\n zIndex: 9,\n },\n '.dragover.after:after': {\n top: 'auto',\n bottom: '-4px',\n },\n },\n UnstyledSortableList,\n);\n\nexport { SortableListItem };\n"],"names":["__publicField","KeyHandler","keysMakers","getInitialState","React","uniqueId","Fragment","DialogHeader","_a","__privateAdd","__privateGet","__privateSet","__privateMethod","useBreakpointIndex","_emitter","_maxId","current","__privateWrapper","Icon","useUpdateEffect","observer","Item","ContextMenu","fillZeros","fillThousandsZeros","decimalCount","decimalZeros","decimalSeparator","thousandsSeparator","regexpThousandsSeparator","regexpDecimalSeparator","y","x","_items","c","IconButtonThemeUI","Checkbox","isChecked","props","styles","disableChildrenFocus","disableChildrenFocusMethod","operations","useStore","distinctors"],"mappings":"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"}