@apia/table 0.3.5 → 1.0.0

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/types.ts","../src/store/selection/getInitialState.ts","../src/store/selection/setNewFocused.ts","../src/store/selection/handleKey.ts","../src/store/selection/makeKeyHandler.tsx","../src/store/selection/getReduxActions.ts","../src/store/index.ts","../src/ResponsiveTableContext.tsx","../src/KeyHandler.tsx","../src/store/selection/useDomProps.ts","../src/HeaderCell.tsx","../src/renderers/RowStatesRenderer.tsx","../src/StateCell.tsx","../src/filters/RangeFilter.tsx","../src/FilterCell.tsx","../src/Header.tsx","../src/renderers/AdditionalColumnDefaultRenderer.tsx","../src/SeparatorCell.tsx","../src/renderers/DefaultRowRenderer.tsx","../src/renderers/DefaultCellRenderer.tsx","../src/Cell.tsx","../src/Row.tsx","../src/renderers/NoRegistersRenderer.tsx","../src/renderers/TableRenderer.tsx","../src/renderers/AccordionCell.tsx","../src/renderers/AccordionElement.tsx","../src/renderers/AccordionRenderer.tsx","../src/ResponsiveTable.tsx","../src/renderers/DocNameCellRenderer.tsx","../src/renderers/AccordionDocNameCellRenderer.tsx","../src/renderers/AccordionHTMLCellRenderer.tsx","../src/renderers/HTMLCellRenderer.tsx","../src/renderers/IsLoadingRenderer.tsx","../src/renderers/makeAccordionAsyncRenderer.tsx","../src/renderers/makeAsyncRenderer.tsx","../src/renderers/PriorityRenderer.tsx","../src/renderers/PriorityAccordionRenderer.tsx","../src/renderers/StatusRenderer.tsx","../src/renderers/StatusAccordionRenderer.tsx"],"sourcesContent":["import { IconType } from '@meronex/icons';\nimport React from 'react';\nimport { TApiaFilter, TModify } from '@apia/util';\nimport { TAccordionCellRenderer } from './renderers/AccordionCell';\nimport { ISelectableState, TBasicRow } from './store/selection/types';\n\nexport type TColoredElement = {\n background?: string;\n color?: string;\n};\n\n/**\n * Se encontró en algunos casos particulares que\n * el servidor devuelve Up y Down para referirse\n * al orden actual de una columna.\n */\nexport type TResponsiveTableSortValue = null | 'A' | 'D' | 'Down' | 'Up';\n\n/**\n * Cada vez que se hace click en el botón del\n * cabezal de una columna, si la columna tiene\n * habilitado el ordenamiento, se emite un\n * evento de este tipo, informando cuál columna\n * emitió el evento, y cuál es el nuevo sortValue.\n */\nexport type TResponsiveTableSortChangeEvent = {\n name: string;\n column: TResponsiveTableColumn;\n columnIndex: number;\n /**\n * Es el orden que la columna debería tener\n * si no hay ningún motivo para evitar que\n * la acción de ordenamiento se lleve a cabo.\n *\n * Es importante notar que el componente\n * responsiveTable no realiza ninguna acción\n * de ordenamiento por defecto, sino que es\n * quien la usa, quien debe realizar las\n * acciones correspondientes e informarlo a\n * la tabla actualizando los registros y el\n * estado de la columna correspondiente.\n */\n sortValue: TResponsiveTableSortValue;\n};\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableCellRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n HTML = HTMLTableCellElement,\n> = {\n cell: TResponsiveTableCell<RendererPropsType>;\n column: TResponsiveTableColumn;\n row: TResponsiveTableRow;\n} & React.AllHTMLAttributes<HTML>;\n\nexport type TResponsiveTableCellRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableCellRendererProps<RendererPropsType>\n>;\n\n/**\n * Algunos elementos de la tabla admiten un\n * Renderer personalizado. Dichos elementos\n * extienden este tipo.\n */\nexport type TResponsiveTableWithRendererElement<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo en el modo responsivo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AccordionRenderer?: TAccordionCellRenderer<any>;\n /**\n * Son las propiedades que se desean pasar al\n * componente de renderizado personalizado que\n * se haya establecido.\n *\n * Estas props serán obviadas en caso de que\n * no haya componente de renderizado personalizado.\n */\n rendererProps?: RendererPropsType;\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Renderer?: TResponsiveTableCellRenderer<any>;\n};\n\nexport type TResponsiveTableCell<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n children?: number | string;\n} & TResponsiveTableWithRendererElement<RendererPropsType> &\n Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'id' | 'rowSpan' | 'title'\n >\n > &\n TColoredElement;\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableRowRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n row: TResponsiveTableRow<RendererPropsType>;\n rowIndex: number;\n} & React.AllHTMLAttributes<HTMLTableRowElement>;\n\nexport type TResponsiveTableRowRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableRowRendererProps<RendererPropsType>\n>;\n\nexport type TResponsiveTableRow<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = TBasicRow &\n TColoredElement & {\n accordionButtonProps?: {\n rightButtons?: React.ReactNode;\n onUserPressEnter?: (ev: React.KeyboardEvent) => unknown;\n };\n cells: TResponsiveTableCell[];\n /**\n * Si se pasa en true, la fila se mostrará como un separador\n */\n separator?: boolean;\n initiallySelected?: boolean;\n\n renderer?: TResponsiveTableRowRenderer<RendererPropsType>;\n rendererProps?: RendererPropsType;\n /**\n * Permite pasar propiedades arbitrarias a un row y recuperarlas en los\n * eventos de onClick por ejemplo.\n */\n rowProps?: RendererPropsType;\n isHidden?: boolean;\n /**\n * Los estados de la fila agregan un ícono en la columna\n * especial que es la que se muestra a la izquierda y\n * contiene, cuando existe, el botón de más información.\n */\n states?: TResponsiveTableRowState[];\n } & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'colSpan' | 'className' | 'rowSpan' | 'title'\n >\n >;\n\nexport type TResponsiveTableRowState = {\n /**\n * Es un className que se agregará al elemento <tr>\n */\n className?: string;\n Icon: IconType;\n color?: string;\n tooltip: string;\n};\n\nexport type TResponsiveTableColumn = TResponsiveTableWithRendererElement & {\n /** Con esta propiedad se puede pasar parámetros opcionales */\n additionalData?: Record<string, unknown>;\n /**\n * Determina si la columna admite ordenamiento.\n */\n allowSorting?: boolean;\n children?: React.ReactNode;\n /**\n * Cuando la columna admite ordenamiento, muestra\n * una flecha indicando el orden actual. Esta\n * propiedad establece si la flecha apunta hacia\n * arriba, abajo, o si la flecha es un guión.\n */\n currentSorting?: TResponsiveTableSortValue;\n /** *\n * Valor para decirle al server cuál columna se está ordenando\n */\n dataSortBy?: string;\n hidden?: boolean;\n /**\n * Normalmente, todas las columnas se van a mostrar\n * como renglones en el acordión, cuando este es\n * expandido.\n *\n * Si este flag es pasado en true, la columna\n * correspondiente no se va a mostrar en modo\n * responsivo.\n */\n hideFromAccordion?: boolean;\n /**\n * Elemento id del dom.\n */\n id?: string;\n /**\n * Es el texto que se mostrará en el cabezal.\n */\n label: string;\n maxWidth?: number | string;\n minWidth?: number | string;\n /**\n * El nombre de la columna debe ser único, se utiliza\n * para realizar la asosiación entre las columnas\n * y los filtros, así como con los eventos de orden.\n */\n name: string;\n /**\n * Si se pasa required: true, se pone un asterisco\n * rojo en el cabezal de la columna para señalar que\n * la columna es requerida.\n */\n required?: boolean;\n /**\n * Algunas columnas podrán mostrarse mediante un botón\n * \"mostrar más\", para ello deberán ser marcadas con\n * esta prop en true.\n */\n showAsAdditional?: boolean;\n /**\n * Cuando no se pasa esta propiedad en ninguna columna,\n * la aplicación encuentra la primera fila sin celdas\n * vacías y la utiliza como título.\n *\n * En cambio, si al menos una columna tiene este flag\n * en true, el título de cada fila del acordión estará\n * compuesto por los valores de estas columnas.\n */\n showInAccordionTitle?: boolean;\n /**\n * Elemento title de html (El tooltip).\n */\n title?: string;\n width?: number | string;\n} & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'rowSpan'\n >\n >;\n\nexport type TResponsiveTableStoreProps = {\n /**\n * Habla sobre el orden de las filas en función de\n * las columnas. Esta propiedad habilita/deshabilita\n * el ordenado de las columnas al hacer click en los\n * cabezales.\n *\n * La tabla admite ordenamiento por defecto, a menos\n * que esta prop venga en false. En caso de que se\n * pase false no importa qué digan las columnas,\n * el ordenamiento no estará habilitado.\n */\n allowSorting?: boolean;\n\n // Composition\n columns: TResponsiveTableColumn[];\n filters?: TApiaFilter[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows: TResponsiveTableRow<any>[];\n\n /**\n * Por defecto, la tabla permitirá seleccionar\n * múltiples valores, a menos que esta prop venga\n * en false.\n */\n isMultiple?: boolean;\n\n label?: string;\n\n /**\n * Es normal que una tabla tenga paginación y que en cada página haya una\n * cantidad distinta de estados. Si se quiere mantener consistencia en el\n * tamaño de las páginas, es posible reservar un tamaño para una cantidad\n * definida de estados con este parámetro.\n */\n reserveColumnsForStates?: number;\n};\n\nexport type TResponsiveTableRowsSelectionEvent = {\n index: number;\n row: TResponsiveTableRow;\n}[];\n\nexport type TResponsiveTableContextProps = TResponsiveTableStoreProps &\n Pick<\n ISelectableState,\n 'allowRowsKeyboardSorting' | 'allowEdition' | 'allowSelection'\n > & {\n /**\n * Cuando se actualiza el array de rows de la tabla\n * desde las props del ResponsiveTableContext, se\n * reinicia el estado de selección de acuerdo a cómo\n * viene definido en el prop. **Si esta prop se pasa\n * en true**, este comportamiento es deshabilitado.\n */\n avoidReparseSelectionOnRowChange?: boolean;\n children?: React.ReactNode;\n className?: string;\n /**\n * Permite redefinir el comportamiento de los breakpoints pasando un índice\n * personalizado. Cuando es pasado, deja de prestar atención al breakpoint\n * de la pantalla y comienza a prestar atención a este índice.\n */\n currentBreakPoint?: number;\n customLabels?: typeof defaultLabels;\n /**\n * Se puede utilizar este booleano para que la tabla\n * deshabilite las opciones de filtrado y ordenado mientras\n * se está ejecutando una acción ajax.\n */\n isLoading?: boolean;\n /**\n * La tabla debe tener un nombre único que será usado para\n * acceder a las propiedades de la misma en el store. En caso\n * de que no se pase ninguno, la tabla lo generará\n * automaticamente.\n */\n name?: string;\n\n // Filtering\n onFilterChange?: (ev: TApiaFilter) => void | Promise<boolean>;\n onFilterBlur?: (ev: TApiaFilter) => unknown;\n onFilterPressEnter?: (ev: TApiaFilter) => unknown;\n\n // Selection\n onChangeSelection?: (ev: TResponsiveTableRowsSelectionEvent) => unknown;\n /**\n * Este evento será llamado cada vez que el usuario esté\n * haciendo foco en la tabla, tenga una selección de\n * filas no vacía y presione la tecla Enter.\n */\n onSelectRows?: (\n ev: TResponsiveTableRowsSelectionEvent,\n focusedRowIndex: number,\n ) => unknown;\n\n // Sorting\n /**\n * Es llamado cada vez que el usuario hace click en el botón\n * del cabezal de la columna. **Importante:** la tabla no\n * realizará ninguna acción de ordenamiento, sino solamente\n * avisar de que el usuario desea que las filas sean ordenadas\n * por alguna columna en particular.\n */\n onSortChange?: (ev: TResponsiveTableSortChangeEvent) => unknown;\n variant?: string;\n };\n\n/**\n * Los callbacks del responsiveTable estarán\n * disponibles a través de un contexto, de\n * forma que cualquier elemento activo que\n * desee informar de un evento en particular\n * pueda hacerlo en forma sencilla.\n */\nexport type TResponsiveTableContext = TModify<\n Pick<\n TResponsiveTableContextProps,\n | 'currentBreakPoint'\n | 'name'\n | 'onChangeSelection'\n | 'onFilterBlur'\n | 'onFilterChange'\n | 'onFilterPressEnter'\n | 'onSelectRows'\n | 'onSortChange'\n | 'label'\n >,\n { labels: typeof defaultLabels; name: string }\n>;\n\ndeclare global {\n interface Window {\n FINDER_NO_DATA: string;\n }\n}\n\nexport const defaultLabels = {\n noRegisters: window.FINDER_NO_DATA,\n};\n","import { TApiaFilter } from '@apia/util';\nimport { ISelectableState, TBasicRow } from './types';\n\nexport function getInitialState<\n ColumnsType extends { name: string },\n RowsType extends TBasicRow | string,\n>(): ISelectableState<ColumnsType, TApiaFilter, RowsType> {\n return {\n allowEdition: false,\n allowSelection: true,\n columns: [],\n expandedRows: [],\n isEditionMode: false,\n isFocused: false,\n filters: [],\n focusedColumn: 0,\n focusedRow: 0,\n hasNonAdditionalFilters: false,\n isMultiple: true,\n nonAdditionalColumnsCount: 0,\n rows: [],\n selectedRows: [],\n statesColumns: 0,\n };\n}\n","import { addBoundary } from '@apia/util';\nimport { Draft } from '@apia/store';\nimport { INewFocus, ISelectableState, TBasicRow } from './types';\n\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una fila, evitando\n * que se haga foco en filas inexistentes.\n */\nexport function addRowBoundary(newRow: number, state: ISelectableState) {\n const hasFiltersRow = !!state.filters.find(\n (current) =>\n !!state.columns.find((search) => search.name === current.column),\n );\n return addBoundary({\n number: newRow,\n min: hasFiltersRow ? -2 : -1,\n max: Math.max(0, state.rows.length - 1),\n });\n}\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una columna, evitando\n * que se haga foco en columnas inexistentes.\n */\nexport function addColumnBoundary(newColumn: number, state: ISelectableState) {\n return addBoundary({\n number: newColumn,\n min: 0,\n max:\n state.nonAdditionalColumnsCount +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n });\n}\n\nfunction isBasicRow(row: unknown): row is TBasicRow {\n return typeof row === 'object' && !!row && 'forbidSelection' in row;\n}\n\nfunction filterNonSellectableRows(\n state: Draft<ISelectableState>,\n newSelection: number[],\n) {\n let expandedRowsBefore = 0;\n return newSelection.filter((selectedRowIndex) => {\n const row = state.rows[selectedRowIndex + expandedRowsBefore];\n if (state.expandedRows.includes(selectedRowIndex)) expandedRowsBefore += 1;\n return !(isBasicRow(row) && row.forbidSelection);\n });\n}\n\n/**\n * Normalmente, este método será llamado desde un\n * action de Redux, para eso fue diseñado. Su\n * utilidad es la de tomar el estado y alterarlo\n * dependiendo de los parámetros pasados y la lógica\n * de selección de filas y columnas en una grilla,\n * devolviendo un estado coherente que represente\n * las acciones de un usuario en la grilla.\n */\nexport function setNewFocused(\n state: Draft<ISelectableState>,\n {\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n ctrlKey,\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n shiftKey,\n newFocusedColumn,\n newFocusedRow,\n /**\n * Con este método se puede seleccionar cuál celda\n * va a recibir el foco y la selección, o solamente\n * el foco si esta propiedad es pasada en false.\n */\n shouldSelectNewFocused,\n }: INewFocus,\n) {\n let actualNewFocusedRow =\n Math.round(\n addRowBoundary(newFocusedRow ?? state.focusedRow ?? 0, state) * 2,\n ) / 2;\n const actualNewFocusedColumn = addColumnBoundary(\n newFocusedColumn ?? state.focusedColumn,\n state,\n );\n\n state.focusedColumn = actualNewFocusedColumn;\n state.focusedRow = actualNewFocusedRow;\n state.isFocused = shouldSelectNewFocused ?? false;\n\n if (shouldSelectNewFocused === false || actualNewFocusedRow < 0) return;\n\n if (Math.round(actualNewFocusedRow) - actualNewFocusedRow !== 0)\n actualNewFocusedRow = Math.floor(actualNewFocusedRow);\n\n const isDeselectingWithCtrl =\n ctrlKey && state.selectedRows.includes(actualNewFocusedRow);\n\n if (state.allowSelection !== false)\n if (\n (!ctrlKey && !shiftKey) ||\n (state.isMultiple === false && !isDeselectingWithCtrl)\n )\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n else if ((ctrlKey && state.isMultiple) || isDeselectingWithCtrl) {\n state.selectedRows = filterNonSellectableRows(\n state,\n state.selectedRows.includes(actualNewFocusedRow)\n ? state.selectedRows.filter(\n (current) => current !== actualNewFocusedRow,\n )\n : [...state.selectedRows, actualNewFocusedRow],\n );\n } else if (shiftKey && state.isMultiple) {\n const sortedSelectedRows = [...state.selectedRows].sort((a, b) => a - b);\n let minSelectedRow = sortedSelectedRows[0];\n let maxSelectedRow = sortedSelectedRows[sortedSelectedRows.length - 1];\n\n if (minSelectedRow === undefined) {\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n return;\n }\n\n if (actualNewFocusedRow < minSelectedRow)\n minSelectedRow = actualNewFocusedRow;\n if (actualNewFocusedRow > maxSelectedRow)\n maxSelectedRow = actualNewFocusedRow;\n\n const newSelectedRows = filterNonSellectableRows(\n state,\n new Array(maxSelectedRow - minSelectedRow + 1)\n .fill('')\n .map((_, i) => i + (minSelectedRow ?? 0)),\n );\n\n state.selectedRows = filterNonSellectableRows(state, newSelectedRows);\n }\n}\n","import { Draft } from '@apia/store';\nimport React from 'react';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\n/**\n * Este método es de uso interno y normalmente\n * no será necesario fuera de este documento,\n * su utilidad es la de determinar si un evento\n * de teclado será controlado por el keyHandler.\n */\nexport function willHandleKey(\n ev: React.KeyboardEvent,\n state: ISelectableState,\n) {\n const actualKey = ev.key.toLowerCase();\n if (state.isEditionMode) return false;\n\n if (actualKey === ' ' && ev.ctrlKey) return true;\n if (actualKey === 'a' && ev.ctrlKey) return true;\n if (actualKey === 'm' && ev.ctrlKey) return true;\n if (state.draggingRow !== undefined) {\n return ['Escape', 'Enter'].includes(ev.key);\n }\n return [\n 'arrowup',\n 'arrowdown',\n 'arrowleft',\n 'arrowright',\n 'end',\n 'enter',\n 'home',\n 'pageup',\n 'pagedown',\n ].includes(ev.key.toLowerCase());\n}\n\n/**\n * Este método será llamado normalmente desde un action\n * de Redux. Su utilidad es la de evaluar qué tecla\n * se presionó y decidir qué alteración se debe producir\n * en base a eso.\n */\nexport function handleKey(state: Draft<ISelectableState>, { ev }: THandleKey) {\n const {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n key,\n shiftKey: isShiftPressed,\n } = ev;\n if (willHandleKey(ev, state)) ev.preventDefault();\n const actualKey = key.toLowerCase();\n const setFocus = ({\n newFocusedColumn,\n newFocusedRow,\n ...rest\n }: Partial<INewFocus>) =>\n setNewFocused(state, {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n shiftKey: isShiftPressed,\n newFocusedColumn,\n newFocusedRow,\n ...rest,\n });\n\n if (!state.isEditionMode) {\n if (\n actualKey === 'enter' &&\n (state.allowEdition === true || state.focusedRow < 0)\n )\n state.isEditionMode = true;\n else\n switch (actualKey) {\n case 'arrowup': {\n let sumRate = state.expandedRows.includes(state.focusedRow - 1)\n ? 0.6\n : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow - sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowdown': {\n let sumRate = state.expandedRows.includes(state.focusedRow) ? 0.6 : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow + sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowleft':\n case 'arrowright': {\n setFocus({\n newFocusedColumn:\n state.focusedColumn + (actualKey === 'arrowleft' ? -1 : 1),\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'home': {\n if (isCtrlPressed)\n setFocus({ newFocusedColumn: 0, newFocusedRow: 0, ctrlKey: false });\n else setFocus({ newFocusedColumn: 0 });\n break;\n }\n case 'end': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: Number.POSITIVE_INFINITY,\n newFocusedColumn: Number.POSITIVE_INFINITY,\n ctrlKey: false,\n });\n else\n setFocus({\n newFocusedColumn: Number.POSITIVE_INFINITY,\n });\n break;\n }\n case 'pageup': {\n setFocus({\n newFocusedRow: state.focusedRow - 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'pagedown': {\n setFocus({\n newFocusedRow: state.focusedRow + 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case ' ': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: state.focusedRow,\n });\n break;\n }\n case 'a': {\n if (isCtrlPressed && state.allowSelection)\n state.selectedRows = state.rows.map((_, i) => i);\n break;\n }\n default:\n break;\n }\n } else\n switch (actualKey) {\n case 'escape':\n case 'enter': {\n if (state.isEditionMode) state.isEditionMode = false;\n ev.stopPropagation();\n break;\n }\n default:\n break;\n }\n}\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box, BoxProps } from '@apia/theme';\nimport {\n autoDisconnectMutationObserver,\n customEvents,\n getFocusSelector,\n getSpecificParent,\n globalFocus,\n isChild,\n cantFocusSelector,\n scrollParentIntoElement,\n useLatest,\n useUpdateEffect,\n} from '@apia/util';\nimport { ThrottleOptions } from 'ahooks/lib/useThrottle/throttleOptions';\nimport { useThrottleFn } from 'ahooks';\nimport { TUpdateByClickPayload } from './getReduxActions';\nimport { willHandleKey } from './handleKey';\nimport { INewFocus, ISelectableState, THandleKey, TUseDomProps } from './types';\nimport {\n TResponsiveTableRow,\n TResponsiveTableRowsSelectionEvent,\n} from '../../types';\nimport { responsiveTableStore, useResponsiveTable } from '..';\n\nexport function shoutKeyhandlerLive(\n liveType: 'reset' | 'howToStartDrag' | 'howToEndDrag' | 'whichIsTheNewIndex',\n additionalData?: {\n newIndex: number;\n },\n) {\n console.warn('Not implemented arialiveemitter', additionalData);\n switch (liveType) {\n /* case 'howToEndDrag':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_END_DRAG,\n });\n break;\n case 'whichIsTheNewIndex':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n * message:\n * formatMessage(window.ARIA_HOW_TO_WHICH_IS_THE_NEW_POSITION, {\n TOK1: String(additionalData?.newIndex ?? 0),\n }),\n });\n break;\n case 'reset':\n AriaLiveEmitter.emit('live', {\n type: 'reset',\n message: '',\n });\n break;\n default:\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_START_DRAG,\n }); */\n default:\n }\n}\n\nlet scrollTimeout: number;\n/**\n * Devuelve un elemento KeyHandler que puede usarse como\n * en el ejemplo.\n *\n * Su función es la de manejar los eventos de teclado y\n * ejecutar las acciones necesarias en el estado de la\n * grilla de acuerdo a la funcionalidad estándar de\n * usabilidad de grillas.\n *\n * @example\n *\n <KeyHandler>\n <table ... />\n </KeyHandler>\n */\nexport function makeKeyHandler(\n actions: {\n handleKey: (payload: THandleKey & { id: string }) => {\n payload: THandleKey & { id: string };\n type: string;\n };\n selectionStateUpdate: (\n payload: Partial<ISelectableState> & { id: string },\n ) => {\n payload: Partial<ISelectableState> & { id: string };\n type: string;\n };\n setNewFocused: (payload: INewFocus & { id: string }) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n swapFocusedRow?: (\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n },\n ) => {\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n };\n type: string;\n };\n updateByClick: (payload: TUpdateByClickPayload['payload']) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n },\n id: string,\n config: { throttleOptions?: ThrottleOptions; stateSelector: TUseDomProps },\n) {\n return function KeyHandler({\n children,\n onChangeSelection,\n onSelectRows,\n ...props\n }: BoxProps & {\n /**\n * Se emite un evento cada vez que el usuario modifica\n * la selección actual.\n */\n onChangeSelection?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n ) => unknown;\n onSelectRows?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n focusedIndex: number,\n ) => unknown;\n }) {\n const { run: keyHandler } = useThrottleFn<\n React.KeyboardEventHandler<HTMLDivElement>\n >((ev) => {\n if (!['shift', 'alt', 'control'].includes(ev.key.toLowerCase())) {\n responsiveTableStore.dispatch(actions.handleKey({ id, ev }));\n }\n }, config?.throttleOptions ?? { wait: 100 });\n\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\n\n const selectedRows = useResponsiveTable(\n (global) => {\n const state = config.stateSelector(global);\n return (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n },\n (a, b) =>\n shallowEqual(\n a.map((current) => current.index),\n b.map((current) => current.index),\n ),\n );\n const selectedRowsRef = useLatest(selectedRows);\n const focusedRow = useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return state?.focusedRow ?? -1;\n });\n const { allowKeyboardSorting, focusedCell, isEditionMode, isFocused } =\n useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return {\n focusedCell:\n state?.focusedRow !== undefined\n ? `${state?.focusedRow}_${state?.focusedColumn}`\n : undefined,\n isEditionMode: state?.isEditionMode,\n rows: state?.rows,\n isFocused: state?.isFocused,\n allowKeyboardSorting: state?.allowRowsKeyboardSorting,\n };\n }, shallowEqual);\n useUpdateEffect(() => {\n if (onChangeSelection) onChangeSelection(selectedRows);\n }, [onChangeSelection, selectedRows]);\n\n const handleClick = React.useCallback(\n (ev: MouseEvent | FocusEvent | Event) => {\n if ((ev.target as HTMLElement).closest('.moreInformationButton'))\n return;\n\n if ((ev as MouseEvent).shiftKey) {\n document.getSelection()?.removeAllRanges();\n }\n const parentRow = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('tr')) {\n return true;\n }\n return false;\n },\n );\n const parentCell = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('td,th')) {\n return true;\n }\n return false;\n },\n );\n if (parentCell && parentRow) {\n responsiveTableStore.dispatch(\n actions.updateByClick({\n altKey: (ev as MouseEvent).altKey,\n id,\n ctrlKey: (ev as MouseEvent).ctrlKey,\n ariaColIndex: Number(parentCell.getAttribute('aria-colindex')),\n rowIndex: Number(parentRow.getAttribute('data-focusindex')),\n shiftKey: (ev as MouseEvent).shiftKey,\n }),\n );\n }\n },\n [],\n );\n const handleDoubleClick = React.useCallback(\n (ev: MouseEvent) => {\n if (\n isChild(\n ev.target as HTMLElement,\n (current) => current.tagName === 'THEAD',\n )\n )\n return;\n ev.preventDefault();\n if (onSelectRows)\n onSelectRows(\n selectedRowsRef.current,\n config.stateSelector(responsiveTableStore.getState()).focusedRow,\n );\n },\n [onSelectRows, selectedRowsRef],\n );\n\n const initialized = React.useRef(true);\n\n const running = React.useRef(false);\n const doFocusThings = React.useCallback(() => {\n if (!running.current) {\n running.current = true;\n if (focusedCell === undefined) {\n running.current = false;\n return () => {};\n }\n\n if (ref) {\n const disconnectObserver = autoDisconnectMutationObserver(\n ref,\n () => {\n scrollTimeout = setTimeout(() => {\n const focusedElement = ref.querySelector(\n '[data-focused=\"true\"]',\n );\n\n let tableCellElement: HTMLElement | null = null;\n let tableCellWidget: HTMLElement | null = null;\n\n if (\n ['td', 'th'].includes(\n focusedElement?.tagName.toLowerCase() ?? '',\n )\n ) {\n tableCellElement = focusedElement as HTMLElement;\n tableCellWidget = focusedElement?.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement;\n }\n\n if (focusedElement?.tagName.toLowerCase() === 'tr') {\n tableCellElement = focusedElement.querySelector('td,th');\n tableCellWidget =\n (focusedElement.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement) || tableCellElement;\n }\n\n if (tableCellWidget) {\n tableCellElement?.setAttribute('tabIndex', '-1');\n tableCellWidget.setAttribute('tabIndex', '0');\n } else tableCellElement?.setAttribute('tabIndex', '0');\n\n if (!isEditionMode) {\n const allFocusableElements = ref?.querySelectorAll(\n getFocusSelector(\n `${cantFocusSelector}:not([data-focused=\"true\"])`,\n ),\n );\n allFocusableElements?.forEach((current) => {\n if (current !== tableCellWidget) {\n current.setAttribute('tabIndex', '-1');\n }\n if (tableCellWidget?.tagName === 'BUTTON')\n tableCellWidget.setAttribute('role', 'gridcell');\n });\n } else {\n const focusableElements =\n tableCellElement?.querySelectorAll('[tabindex=\"-1\"]');\n\n focusableElements?.forEach((current) =>\n current.setAttribute('tabIndex', '0'),\n );\n }\n\n const focusElement = tableCellWidget ?? tableCellElement;\n const row = getSpecificParent(\n focusElement,\n (current) => current.tagName === 'TR',\n );\n\n if (\n focusElement &&\n initialized.current &&\n config.stateSelector(responsiveTableStore.getState())\n .isFocused\n ) {\n globalFocus.focus = focusElement;\n\n focusElement.focus();\n }\n\n if (row) {\n scrollParentIntoElement(row, 55, 2, 100, 'makeKeyHandler');\n }\n\n if (!initialized.current) {\n initialized.current = true;\n }\n }, 0) as unknown as number;\n },\n { timeout: 5000 },\n );\n\n running.current = false;\n return () => {\n disconnectObserver();\n clearTimeout(scrollTimeout);\n };\n }\n running.current = false;\n }\n return () => {};\n }, [focusedCell, ref, isEditionMode]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(doFocusThings, [\n focusedCell,\n isFocused,\n isEditionMode,\n ]);\n React.useEffect(() => {\n function handleFocus(ev: FocusEvent) {\n const targetTable = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n const relatedTargetTable = getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n\n if (!relatedTargetTable || relatedTargetTable !== targetTable)\n handleClick(ev);\n }\n\n ref?.addEventListener('dblclick', handleDoubleClick);\n ref?.addEventListener('mousedown', handleClick);\n ref?.addEventListener('focusin', handleFocus);\n ref?.addEventListener(customEvents.focus, handleClick);\n return () => {\n ref?.removeEventListener('mousedown', handleClick);\n ref?.removeEventListener('dblclick', handleDoubleClick);\n ref?.removeEventListener('focusin', handleFocus);\n ref?.removeEventListener(customEvents.focus, handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n\n const isDragging = React.useRef(false);\n const isFocusedRef = React.useRef(false);\n\n return (\n <Box\n ref={setRef}\n {...props}\n className={`selection__keyHandler ${props.className ?? ''}`}\n onBlur={React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n !ev.relatedTarget ||\n !getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current === ref,\n )\n ) {\n responsiveTableStore.dispatch(\n actions.selectionStateUpdate({ id, isFocused: false }),\n );\n shoutKeyhandlerLive('reset');\n isFocusedRef.current = false;\n }\n },\n [ref],\n )}\n onFocus={React.useCallback(() => {\n if (!isFocusedRef.current) shoutKeyhandlerLive('howToStartDrag');\n isFocusedRef.current = true;\n }, [])}\n sx={React.useMemo(\n () => ({ overflow: 'auto', position: 'relative' }),\n [],\n )}\n onKeyDown={React.useCallback<\n React.KeyboardEventHandler<HTMLDivElement>\n >(\n (ev) => {\n const state = config.stateSelector(responsiveTableStore.getState());\n\n if (\n willHandleKey(\n ev,\n config.stateSelector(responsiveTableStore.getState()),\n )\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (\n actions.swapFocusedRow &&\n isDragging.current &&\n allowKeyboardSorting\n ) {\n if (\n (ev.key === 'Enter' || ev.key === 'Escape') &&\n isDragging.current\n ) {\n shoutKeyhandlerLive('howToStartDrag');\n isDragging.current = false;\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else if (['ArrowDown', 'ArrowUp'].includes(ev.key)) {\n if (ev.key === 'ArrowDown') {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow + 1,\n }),\n );\n } else {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow - 1,\n }),\n );\n }\n }\n } else if (\n ev.key === 'm' &&\n ev.ctrlKey &&\n !isDragging.current &&\n state.focusedRow >= 0 &&\n actions.swapFocusedRow\n ) {\n isDragging.current = true;\n shoutKeyhandlerLive('howToEndDrag');\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else {\n const currentSelectedRows = (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n if (props.onKeyDown) props.onKeyDown(ev);\n if (ev.key === 'Enter' && onSelectRows && state.focusedRow >= 0) {\n onSelectRows(currentSelectedRows, state.focusedRow);\n }\n keyHandler(ev);\n }\n },\n [allowKeyboardSorting, keyHandler, onSelectRows, props],\n )}\n >\n {children}\n </Box>\n );\n };\n}\n","import type { Draft, PayloadAction } from '@apia/store';\nimport type { TRequireOnlyOne } from '@apia/util';\nimport { handleKey } from './handleKey';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\ntype TState = Draft<Record<string, ISelectableState>>;\n\nexport type TPayloadWithId<\n P = Record<string, unknown>,\n T extends string = string,\n M = never,\n E = never,\n> = PayloadAction<P & { id: string }, T, M, E>;\n\nexport type THandleKeyPayload = TPayloadWithId<THandleKey>;\nexport type TSelectionStateUpdatePayload = TPayloadWithId<\n Partial<ISelectableState>\n>;\nexport type TSetNewFocusedPayload = TPayloadWithId<INewFocus>;\nexport type TUpdateByClickPayload = TPayloadWithId<\n TRequireOnlyOne<{ ariaRowIndex: number; rowIndex: number }> &\n TRequireOnlyOne<{ ariaColIndex?: number; colIndex: number }> &\n Pick<INewFocus, 'altKey' | 'ctrlKey' | 'shiftKey' | 'isFocused'>\n>;\n\nexport function getReduxActions() {\n return {\n handleKey(state: TState, { payload }: THandleKeyPayload) {\n handleKey(state[payload.id], payload);\n },\n selectionStateUpdate(\n state: TState,\n { payload: { id, ...payload } }: TSelectionStateUpdatePayload,\n ) {\n state[id] = { ...state[id], ...payload };\n },\n setNewFocused(\n state: TState,\n { payload: { id, ...payload } }: TSetNewFocusedPayload,\n ) {\n setNewFocused(state[id], payload);\n },\n updateByClick(\n state: TState,\n {\n payload: {\n id,\n colIndex,\n rowIndex,\n ariaColIndex,\n ariaRowIndex,\n isFocused,\n ...payload\n },\n }: TUpdateByClickPayload,\n ) {\n const hasFiltersRow = state[id].hasNonAdditionalFilters;\n state[id].isEditionMode = false;\n\n const newFocusedColumn = colIndex ?? ariaColIndex ?? 1;\n const newFocusedRow =\n ariaRowIndex !== undefined\n ? ariaRowIndex\n : (rowIndex ?? 0) - (1 + (hasFiltersRow ? 2 : 1));\n\n setNewFocused(state[id], {\n ...payload,\n newFocusedColumn,\n newFocusedRow,\n });\n\n if (isFocused !== undefined) state[id].isFocused = isFocused;\n },\n };\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { createSlice, injectReducers } from '@apia/store';\nimport {\n TResponsiveTableAction,\n TResponsiveTableIndexColumns,\n TResponsiveTableSlice,\n TResponsiveTableState,\n} from './types';\nimport { getInitialState as selectionGetInitialState } from './selection/getInitialState';\nimport { setNewFocused } from './selection/setNewFocused';\nimport { TResponsiveTableRow } from '../types';\nimport { shoutKeyhandlerLive } from './selection/makeKeyHandler';\nimport { getReduxActions } from './selection/getReduxActions';\n\nfunction getInitialState(): TResponsiveTableState {\n const newState: TResponsiveTableState = {\n ...selectionGetInitialState(),\n allowSelection: true,\n allowSorting: true,\n filters: [],\n isLoading: false,\n isMultiple: true,\n accordionIndexColumns: {} as TResponsiveTableIndexColumns,\n expandedRows: [],\n };\n\n return newState;\n}\n\nconst responsiveTableSlice = createSlice({\n name: 'responsiveTableSlice',\n initialState: {} as TResponsiveTableSlice,\n reducers: {\n update(\n state,\n {\n payload: { tableName, ...rest },\n }: TResponsiveTableAction<\n Partial<TResponsiveTableState> & { isFocused?: boolean }\n >,\n ) {\n if (!state[tableName]) state[tableName] = getInitialState();\n state[tableName] = { ...state[tableName], ...rest };\n setNewFocused(state[tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: rest.isFocused ?? state[tableName].isFocused,\n });\n\n if (rest.columns) {\n state[tableName].nonAdditionalColumnsCount = rest.columns.filter(\n (current) => !current.showAsAdditional,\n ).length;\n }\n\n if (rest.rows) {\n state[tableName].statesColumns = Math.max(\n state[tableName]?.reserveColumnsForStates ?? 0,\n ...(state[tableName]?.rows?.map(\n (current) => current.states?.length ?? 0,\n ) ?? [0]),\n );\n }\n\n if (rest.filters) {\n state[tableName].hasNonAdditionalFilters =\n rest.filters.filter(\n (current) =>\n !current.asAdditional &&\n (rest.columns ?? state[tableName].columns)?.find(\n (search) => search.name === current.column,\n ),\n ).length > 0;\n }\n },\n addRows(\n state,\n { payload }: TResponsiveTableAction<{ newRows: TResponsiveTableRow[] }>,\n ) {\n if (!state[payload.tableName])\n state[payload.tableName] = getInitialState();\n state[payload.tableName].rows = state[payload.tableName].rows.concat(\n ...payload.newRows,\n );\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: state[payload.tableName].rows.length,\n });\n },\n deleteRows(\n state,\n { payload }: TResponsiveTableAction<{ rowIndices: number[] }>,\n ) {\n const table = state[payload.tableName];\n const minIndex = payload.rowIndices.reduce((min, current) => {\n return current < min ? current : min;\n }, Infinity);\n table.rows = table.rows.filter(\n (_, index) => !payload.rowIndices.includes(index),\n );\n\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: minIndex,\n });\n state[payload.tableName].isFocused = false;\n },\n destroy(state, { payload: { tableName } }: TResponsiveTableAction) {\n delete state[tableName];\n },\n swapFocusedRow(\n state,\n {\n payload: { newIndex, tableName },\n }: TResponsiveTableAction<{ newIndex: number }>,\n ) {\n const tableState = state[tableName];\n const focusedIndex = tableState.focusedRow;\n\n if (\n focusedIndex === undefined ||\n newIndex < 0 ||\n newIndex >= tableState.rows.length\n )\n return;\n\n if (focusedIndex === newIndex) {\n if (tableState.draggingRow === newIndex)\n tableState.draggingRow = undefined;\n else tableState.draggingRow = newIndex;\n return;\n }\n\n shoutKeyhandlerLive('whichIsTheNewIndex', { newIndex });\n\n const isSelected = tableState.selectedRows.includes(focusedIndex);\n\n if (isSelected) {\n tableState.selectedRows = [\n ...tableState.selectedRows.filter(\n (current) => current !== focusedIndex,\n ),\n newIndex,\n ];\n }\n\n const aux = tableState.rows[newIndex];\n tableState.rows[newIndex] = tableState.rows[focusedIndex];\n tableState.rows[focusedIndex] = aux;\n\n tableState.focusedRow = newIndex;\n tableState.draggingRow = newIndex;\n },\n\n // Rows selection\n ...getReduxActions(),\n },\n});\n\nexport const { store: responsiveTableStore, useSelector: useResponsiveTable } =\n injectReducers({\n responsiveTableSlice: responsiveTableSlice.reducer,\n });\n\nexport const responsiveTableActions = responsiveTableSlice.actions;\n","import { useMount, useUnmount, useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n defaultLabels,\n TResponsiveTableContext,\n TResponsiveTableContextProps,\n} from './types';\nimport { responsiveTableActions, responsiveTableStore } from './store';\nimport { ResponsiveTable } from './ResponsiveTable';\nimport { getVariant } from '@apia/theme';\n\nexport const ResponsiveTableReactContext =\n React.createContext<TResponsiveTableContext>({} as TResponsiveTableContext);\n\nexport function useResponsiveTableContext() {\n const context = React.useContext(ResponsiveTableReactContext);\n if (!context) throw new Error('There is no ResponsiveTableContext');\n return context;\n}\n\n/**\n * Este contexto busca facilitar la tarea de centralizar las\n * propiedades y callbacks asociados a la tabla, de forma de\n * evitar la necesidad de distribuir comportamientos.\n *\n * **MUY IMPORTANTE**\n * Asegurarse de memoizar las propiedades rows, filters y\n * columns, ya que en caso contrario eso va a disparar\n * actualizaciones en el responsiveTableStore cada vez que el padre del\n * contexto renderice.\n *\n */\nconst NoMemoResponsiveTableContext = ({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n avoidReparseSelectionOnRowChange,\n children = <ResponsiveTable />,\n className,\n currentBreakPoint,\n customLabels,\n columns,\n filters,\n rows,\n label,\n isMultiple,\n name,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n reserveColumnsForStates,\n variant,\n}: TResponsiveTableContextProps) => {\n const actualName = React.useMemo(\n () => name ?? uniqueId('responsiveTable'),\n [name],\n );\n const labels = React.useMemo(\n () => ({ ...defaultLabels, ...customLabels }),\n [customLabels],\n );\n const contextValue = React.useMemo<TResponsiveTableContext>(\n () => ({\n currentBreakPoint,\n label,\n labels,\n name: actualName,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n }),\n [\n actualName,\n currentBreakPoint,\n label,\n labels,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n ],\n );\n\n useMount(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n columns,\n filters: filters ?? [],\n rows,\n isMultiple,\n tableName: actualName,\n reserveColumnsForStates,\n }),\n );\n });\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n columns,\n }),\n );\n }, [columns]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n rows,\n }),\n );\n if (avoidReparseSelectionOnRowChange !== true) {\n const selected = rows\n .map((current, i) => ({ ...current, i }))\n .filter((current) => current.initiallySelected);\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n selectedRows: selected.map((current) => current.i),\n }),\n );\n }\n }, [rows]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n filters,\n }),\n );\n }, [filters]);\n\n useUnmount(() => {\n /* responsiveTableStore.dispatch(\n responsiveTableActions.destroy({ tableName: actualName }),\n ); */\n });\n\n return (\n <ResponsiveTableReactContext.Provider value={contextValue}>\n <Box\n id={name}\n className={`responsiveTableContext__wrapper ${className ?? ''}`}\n {...(variant ? getVariant(variant) : null)}\n >\n {children}\n </Box>\n </ResponsiveTableReactContext.Provider>\n );\n};\n\nexport const ResponsiveTableContext = React.memo(NoMemoResponsiveTableContext);\n","import React from 'react';\nimport { BoxProps } from '@apia/theme';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { makeKeyHandler } from './store/selection/makeKeyHandler';\nimport { responsiveTableActions } from './store';\n\nexport interface IKeyHandler {\n children: React.ReactNode;\n}\n\nconst NoMemoKeyHandler = (props: BoxProps) => {\n const { name, onChangeSelection, onSelectRows } = useResponsiveTableContext();\n\n const Handler = React.useMemo(\n () =>\n makeKeyHandler(responsiveTableActions, name, {\n throttleOptions: { wait: 50 },\n stateSelector: (global) => global.responsiveTableSlice[name],\n }),\n [name],\n );\n\n return (\n <Handler\n onChangeSelection={onChangeSelection}\n onSelectRows={onSelectRows}\n {...props}\n />\n );\n};\n\nexport const KeyHandler = React.memo(NoMemoKeyHandler);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { addBoundary } from '@apia/util';\nimport { TDomProps, IRequiredDomProps, TUseDomProps } from './types';\nimport { useResponsiveTable } from '..';\n\n/**\n * Este hook extrae según el estado de la tabla actual\n * y el nombre del elemento al que se le desean calcular\n * los atributos que deben mostrarse en el dom para\n * cumplir con las reglas de accesibilidad.\n *\n * @param element Es el nombre del elemento\n *\n * @param elementProps Las propiedades necesarias que se\n * deben suministrar para lograr un cálculo apropiado de\n * las propiedades que deben mostrarse.\n *\n * @param stateSelector Es una función que acepta el estado\n * global de la aplicación y devuelve el estado de la tabla\n * actual. Este método es necesario ya que el useDomProps\n * no sabe contra qué slice va a trabajar.\n *\n * @returns un objeto que contiene las propiedades\n * del DOM que deben destructurarse en el elemento html.\n */\nexport function useDomProps<ElementType extends keyof IRequiredDomProps>(\n element: ElementType,\n elementProps: IRequiredDomProps[typeof element],\n stateSelector: TUseDomProps,\n): TDomProps {\n const state = useResponsiveTable((globalState) => {\n const tableState = stateSelector(globalState);\n const hasNonAdditionalFilters = tableState?.hasNonAdditionalFilters;\n const startDataRowIndex = hasNonAdditionalFilters ? 2 : 1;\n\n const statesColumns = tableState?.statesColumns ?? 0;\n\n let expandedBeforeThisRow = 0;\n\n if (element === 'tr')\n expandedBeforeThisRow = tableState?.expandedRows.filter(\n (current) =>\n current < (elementProps as IRequiredDomProps['td']).rowIndex,\n ).length;\n\n let isFocused = false;\n let isSelected = false;\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n isFocused =\n tableState?.focusedRow === 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn ?? 0, 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n isFocused = !tableState\n ? false\n : (tableState.focusedRow === castedProps.rowIndex &&\n tableState?.focusedColumn === 0) ||\n (Math.floor(tableState?.focusedRow) === castedProps.rowIndex &&\n Math.round(tableState?.focusedRow) - tableState.focusedRow !==\n 0 &&\n !!castedProps.isTheExpandedRow);\n isSelected =\n !castedProps.isTheExpandedRow &&\n tableState?.selectedRows.includes(castedProps.rowIndex);\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['additionalTd'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) === 1;\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow ===\n castedProps.rowIndex - 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n isFocused =\n tableState?.focusedRow === 0 - startDataRowIndex &&\n addBoundary((tableState?.focusedColumn ?? 0) - statesColumns, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n isFocused = !tableState\n ? false\n : tableState.focusedRow === castedProps.rowIndex;\n break;\n }\n default:\n break;\n }\n\n return {\n columns: tableState?.columns ?? [],\n expandedBeforeThisRow,\n isEditionMode: tableState?.isEditionMode,\n hasNonAdditionalFilters,\n rowsLength: element === 'table' ? tableState?.rows.length : '',\n isSelected,\n isFocused,\n startDataRowIndex,\n statesColumns: tableState?.statesColumns,\n };\n }, shallowEqual);\n\n let returnObject: Omit<TDomProps, 'ref'> = React.useMemo(() => ({}), []);\n\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 2,\n };\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow,\n 'data-focusindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': false,\n };\n break;\n }\n case 'table': {\n returnObject = {\n role: 'treegrid',\n 'aria-colcount': state.columns.length,\n 'aria-rowcount': state.rowsLength,\n };\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow +\n (castedProps.isTheExpandedRow ? 1 : 0),\n 'data-focusindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n (castedProps.isTheExpandedRow ? 0.5 : 0),\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': castedProps.isThisRowExpanded,\n tabIndex: state.isFocused ? 0 : -1,\n };\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex': 1,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'aria-sort': 'none',\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex,\n };\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'aria-sort': ['ascending', 'descending', 'none'][\n ['Asc', 'Desc', null].findIndex(\n (current) =>\n current === state.columns[castedProps.columnIndex].currentSorting,\n )\n ] as 'none' | 'ascending' | 'descending' | 'other' | undefined,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 1,\n };\n break;\n }\n default:\n break;\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useMemo(() => returnObject, Object.values(returnObject));\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { FaSortUp, FaSortDown, FaSort } from '@meronex/icons/fa';\nimport React, { CSSProperties } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport {\n EventEmitter,\n TMap,\n debugDispatcher,\n getSpecificParent,\n isChild,\n persistentStorage,\n} from '@apia/util';\nimport { AutoEllipsis, useOtherTagButton } from '@apia/components';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { TResponsiveTableSortValue } from './types';\nimport { useResponsiveTable } from './store';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IHeaderCell {\n /**\n * Para ordenar en Apia se usa un índice de columna, que se\n * corresponde con su posición en base 0, sin tomar en cuenta\n * las columnas adicionales.\n */\n apiaColumnIndex: number;\n columnIndex: number;\n inTableColumnIndex: number;\n}\n\nconst widthStorageName = 'tablesWidths';\n\n/**\n * Calcula el ancho de la columna dependiendo del valor establecido,\n * si el valor es numérico o un string que contiene un número sin\n * unidad, devuelve el doble de ese número para establecer una\n * relatividad con los tamaños de las columnas actuales en Apia.\n *\n * Es decir, como todo en Apia era más chico, los tamaños que se\n * establecían antes no quedan visualmente agradables con los\n * tamaños actuales, por eso se magnifican multiplicando por 2.\n */\nfunction getColumnWidth(width?: string | number) {\n if (typeof width === 'string') {\n if (width.match(/(%|px|vw|vh|vmin|vmax|cm|mm|in|pt|pc)/)) return width;\n if (width === '') return 'auto';\n const numberValue = Number.parseInt(width, 10);\n if (isNaN(numberValue)) return 'auto';\n return numberValue;\n }\n if (typeof width === 'number') return width;\n return width;\n}\ndebugDispatcher.on(\n 'cleanTableSizes',\n ([tableName]) => {\n const currentWidths = persistentStorage[widthStorageName] as TMap<unknown>;\n delete currentWidths[tableName as string];\n persistentStorage[widthStorageName] = currentWidths;\n },\n 'Se usa para borrar el estado de una tabla. Uso: dd.cleanTableSizes(\"TableName\")',\n);\nfunction makeColumnName(tableName: string, columnName: string): string {\n return `${tableName}${columnName}`;\n}\n\nconst thWidthEmitter = new (class ThWidthEmitter extends EventEmitter<{\n resize: { name: string; width: number };\n}> {})();\n\nconst NoMemoHeaderCell = ({\n apiaColumnIndex,\n columnIndex,\n inTableColumnIndex,\n}: IHeaderCell) => {\n const { name, onSortChange } = useResponsiveTableContext();\n const uniqueId =\n (window.location.href.match(/busEntId=(\\d+)/)?.[1] as string) ??\n (window.location.href.match(/query=(\\d+)/)?.[1] as string) ??\n '';\n const isGlobal = window.isGlobal ? 'isGlobal' : 'notGlobal';\n const actualName = name + uniqueId + String(isGlobal);\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n const storedWidth = (\n (persistentStorage[widthStorageName] as TMap<unknown>)?.[\n actualName\n ] as TMap<unknown>\n )?.[column.name] as number;\n\n const [width, setWidth] = React.useState(storedWidth ?? 200);\n const [isResize, setIsResize] = React.useState(storedWidth !== undefined);\n\n React.useEffect(() => {\n return void thWidthEmitter.on('resize', (ev) => {\n if (ev.name === makeColumnName(actualName, column.name)) {\n setIsResize(true);\n setWidth(ev.width);\n }\n });\n }, [column.name, actualName]);\n\n const isFilterRequired = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n const columnFilter = tableState?.filters.find(\n (current) => current.column === column.title,\n );\n return columnFilter?.required;\n }, shallowEqual);\n\n const isSortingAllowed = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.allowSorting;\n });\n\n const domProps = useDomProps(\n 'th',\n {\n columnIndex: inTableColumnIndex,\n },\n domPropsSelector(name),\n );\n\n const sx: CSSProperties = React.useMemo(\n () =>\n !isResize\n ? {\n minWidth: getColumnWidth(column.minWidth ?? column.width),\n maxWidth:\n column.maxWidth !== undefined\n ? getColumnWidth(column.maxWidth)\n : undefined,\n width: getColumnWidth(column.width),\n position: 'relative',\n }\n : {\n width: `${width}px`,\n minWidth: `${width}px`,\n position: 'relative',\n },\n [column.maxWidth, column.minWidth, column.width, isResize, width],\n );\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'headButton',\n onClick: (ev) => {\n if (\n isChild(ev.target as HTMLElement, (current) =>\n current.classList.contains('headButton__resizer'),\n )\n )\n return;\n\n console.warn('Buttons slice is not defined');\n /* if (\n responsiveTableStore\n .getState()\n .buttonsSlice.performingActions.includes('disableTable')\n )\n return; */\n if (\n onSortChange &&\n column.allowSorting !== false &&\n isSortingAllowed !== false\n )\n onSortChange({\n column,\n columnIndex: apiaColumnIndex,\n name: column.name,\n sortValue: ['Asc', 'Desc'][\n column.currentSorting !== 'A' ? 0 : 1\n ] as TResponsiveTableSortValue,\n });\n },\n }),\n [apiaColumnIndex, column, isSortingAllowed, onSortChange],\n ),\n );\n return (\n <Box\n as=\"th\"\n style={sx}\n data-columnname={column.name}\n title={column.title ?? column.label ?? column.name}\n {...buttonProps}\n {...domProps}\n role=\"rowheader\"\n className={`${\n isFilterRequired && window.SHOW_REQUIRED_POSITION\n ? 'requiredFilterColumn'\n : ''\n }`}\n >\n <Box as=\"span\" className=\"headButton__container\">\n <Box\n as=\"span\"\n className={`${\n isFilterRequired ? 'requiredFilter__Column' : ''\n } headButton__label`}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const th = el.closest('th') as HTMLElement;\n return {\n width: `${Math.max(\n 100,\n Number.parseInt(window.getComputedStyle(th).width),\n )}px`,\n };\n }}\n >\n {column.label}\n </AutoEllipsis>\n </Box>\n <Box as=\"span\" className=\"headButton__sortIcon\">\n {column.allowSorting !== false && column.currentSorting === 'A' && (\n <FaSortUp />\n )}\n {column.allowSorting !== false && column.currentSorting === 'D' && (\n <FaSortDown />\n )}\n {column.allowSorting !== false && !column.currentSorting && (\n <FaSort />\n )}\n </Box>\n <Box\n // sx={{ display: 'none' }}\n className=\"headButton__resizer\"\n onMouseDown={(ev) => {\n if (!isResize) {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n\n trElement?.querySelectorAll('th').forEach((current) => {\n thWidthEmitter.emit('resize', {\n name: makeColumnName(\n actualName,\n current.dataset.columnname as string,\n ),\n width: (current as HTMLElement).clientWidth,\n });\n });\n\n setIsResize(true);\n }\n\n const th = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TH',\n );\n if (!th) throw new Error('There is no th');\n\n const initialX = ev.clientX;\n const initialWidth = th.clientWidth;\n\n const resize = (mousemoveEv: MouseEvent) => {\n const dif = mousemoveEv.clientX - initialX;\n\n setWidth(initialWidth + dif);\n };\n const unsuscribe = () => {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n trElement?.querySelectorAll('th').forEach((current) => {\n persistentStorage[widthStorageName] = {\n ...(persistentStorage[widthStorageName] as TMap<unknown>),\n [actualName]: {\n ...((\n persistentStorage[widthStorageName] as TMap<unknown>\n )?.[actualName] as TMap<unknown>),\n [current.dataset.columnname as string]: (\n current as HTMLElement\n ).clientWidth,\n },\n };\n });\n document.removeEventListener('mousemove', resize);\n document.removeEventListener('mouseup', unsuscribe);\n };\n\n document.addEventListener('mousemove', resize);\n document.addEventListener('mouseup', unsuscribe);\n\n return false;\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const HeaderCell = React.memo(NoMemoHeaderCell);\n","import React from 'react';\nimport { Button } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { TResponsiveTableRowState } from '../types';\n\nconst NoMemoRowStatesRenderer = ({\n state,\n}: {\n state: TResponsiveTableRowState;\n}) => {\n const { Icon } = state;\n return (\n <Button\n {...getVariant('inherit')}\n title={state.tooltip}\n className={`${state.className ?? 'state'}_icon state_icon`}\n sx={React.useMemo(\n () => ({\n 'svg, path': {\n color: state.color ?? '',\n },\n }),\n [state.color],\n )}\n >\n <Icon />\n </Button>\n );\n};\n\nexport const RowStatesRenderer = React.memo(NoMemoRowStatesRenderer);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { RowStatesRenderer } from './renderers/RowStatesRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { TResponsiveTableRowState } from './types';\nimport { Box } from '@apia/theme';\n\ninterface IStateCell {\n index: number;\n isHeader?: boolean;\n rowIndex: number;\n state?: TResponsiveTableRowState;\n}\n\nexport const StateCell = ({ index, rowIndex, state, isHeader }: IStateCell) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n isHeader ? 'headerStateCell' : 'stateCell',\n { columnIndex: index, rowIndex },\n domPropsSelector(name),\n );\n return (\n <Box as=\"td\" className=\"stateCell\" {...domProps}>\n {state ? <RowStatesRenderer state={state} /> : ''}\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { TApiaFilter } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nconst NoMemoRangeFilter = ({ filter }: { filter: TApiaFilter }) => {\n const { onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const filterLow: TApiaFilter = {\n id: filter.id,\n currentValue: filter.currentValue,\n type: 'number',\n };\n const filterHigh: TApiaFilter = {\n id: filter.filterToId ?? '',\n currentValue: filter.filterToValue ?? '',\n type: 'number',\n };\n return (\n <Box className=\"ApiaFilter__Range\">\n <Box className=\"ApiaFilter__Range__Low\">\n <ApiaFilter\n filter={filterLow}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterLow, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur) void onFilterBlur({ ...filterLow, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterLow, currentValue });\n }}\n />\n </Box>\n {' - '}\n <Box className=\"ApiaFilter__Range__High\">\n <ApiaFilter\n filter={filterHigh}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterHigh, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur)\n void onFilterBlur({ ...filterHigh, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterHigh, currentValue });\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const RangeFilter = NoMemoRangeFilter;\n","import { Input } from '@apia/theme';\nimport React from 'react';\nimport { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { RangeFilter } from './filters/RangeFilter';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IFilterCell {\n columnIndex: number;\n filter?: TApiaFilter;\n}\n\nexport const FilterCell = ({ columnIndex, filter }: IFilterCell) => {\n const { name, onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const domProps = useDomProps(\n 'filterTd',\n {\n columnIndex,\n },\n domPropsSelector(name),\n );\n\n const handleOnBlur = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterBlur) onFilterBlur({ ...filter, currentValue });\n },\n [filter, onFilterBlur],\n );\n\n const handleOnChange = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterChange)\n return onFilterChange({ ...filter, currentValue });\n return true;\n },\n [filter, onFilterChange],\n );\n\n const handleOnPressEnter = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterPressEnter)\n onFilterPressEnter({ ...filter, currentValue });\n },\n [filter, onFilterPressEnter],\n );\n\n function findFilter() {\n if (filter?.isRange) {\n return <RangeFilter filter={filter} />;\n }\n if (filter && !(filter.asAdditional || !filter.column || filter.isRange)) {\n return (\n <ApiaFilter\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n onPressEnter={handleOnPressEnter}\n filter={filter}\n />\n );\n }\n\n let label: string;\n if (filter && (filter.asAdditional || !filter.column || filter.isRange)) {\n label = window.LBL_ADDITIONAL_FILTER;\n } else {\n label = window.LBL_NO_COLUMN_FILTER;\n }\n\n return <Input aria-label={label} disabled />;\n }\n return <td {...domProps}>{findFilter()}</td>;\n};\n","import { useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React, { useState } from 'react';\nimport { customEvents, persistentStorage, TApiaFilter } from '@apia/util';\nimport { shallowEqual } from '@apia/store';\nimport { useOtherTagButton } from '@apia/components';\nimport { Icon } from '@apia/icons';\nimport { HeaderCell } from './HeaderCell';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useResponsiveTable } from './store';\nimport { StateCell } from './StateCell';\nimport { FilterCell } from './FilterCell';\n\ndeclare global {\n interface Window {\n focusedRow: number;\n focusedColumn: number;\n hasNonAdditionalFilters: boolean;\n }\n}\n\nconst NoMemoHeader = () => {\n const { name } = useResponsiveTableContext();\n const { columns, hasNonAdditionalFilters, focusedColumn, focusedRow } =\n useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n window.focusedRow = tableState?.focusedRow;\n window.focusedColumn = tableState?.focusedColumn;\n window.hasNonAdditionalFilters =\n tableState?.hasNonAdditionalFilters || false;\n return {\n columns: tableState?.columns ?? [],\n focusedColumn: tableState?.focusedColumn,\n focusedRow: tableState?.focusedRow,\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n\n const filters = useResponsiveTable<\n {\n columnIndex: number;\n definition: TApiaFilter;\n }[]\n >(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n const returnObject = (tableState?.filters ?? [])\n .map((current) => ({\n columnIndex: tableState.columns.findIndex(\n (search) => search.name === current.column,\n ),\n definition: current,\n }))\n .filter((current) => current.columnIndex >= 0);\n\n return returnObject;\n },\n (a, b) => {\n return (\n a.length === b.length &&\n a.reduce<boolean>((result, current, index) => {\n return (\n result && shallowEqual(current.definition, b[index].definition)\n );\n }, true)\n );\n },\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const additionalColumns = React.useMemo(\n () =>\n columns.reduce(\n (count, column) => count + (column.showAsAdditional ? 1 : 0),\n 0,\n ),\n [columns],\n );\n\n const statesIds = React.useMemo(() => {\n return Array(statesCount)\n .fill('')\n .map(() => uniqueId());\n }, [statesCount]);\n\n const [isFiltersRowVisible, setIsFiltersRowVisible] = React.useState<boolean>(\n /* (persistentStorage.showResponsiveTableFilters as boolean) ?? */ false,\n );\n React.useEffect(() => {\n persistentStorage.showResponsiveTableFilters = isFiltersRowVisible;\n }, [isFiltersRowVisible]);\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'additionalColumn',\n onClick: () => setIsFiltersRowVisible((current) => !current),\n }),\n [],\n ),\n );\n\n const [ref, setRef] = useState<HTMLTableRowElement | null>(null);\n\n useUpdateEffect(() => {\n const handleFocus = (ev: Event) => {\n ev.stopPropagation();\n setIsFiltersRowVisible(true);\n };\n ref?.addEventListener(customEvents.focus, handleFocus);\n return () => {\n ref?.removeEventListener(customEvents.focus, handleFocus);\n };\n }, [ref]);\n\n return (\n <thead>\n <tr data-focusindex={1}>\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <th\n aria-colindex={1}\n aria-rowindex={1}\n data-focused={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n }\n {...buttonProps}\n tabIndex={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n ? 0\n : -1\n }\n role=\"rowheader\"\n >\n {hasNonAdditionalFilters ? (\n <Icon\n className=\"filterButton\"\n name=\"Filter\"\n title={\n isFiltersRowVisible\n ? window.LBL_HIDE_FILTERS\n : window.LBL_SHOW_FILTERS\n }\n aria-label={\n isFiltersRowVisible\n ? window.LBL_HIDE_FILTERS\n : window.LBL_SHOW_FILTERS\n }\n />\n ) : (\n <>&nbsp;</>\n )}\n </th>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={1} />\n ))}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualTableColumnIndex: actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n if (current.hidden) return null;\n\n return (\n <HeaderCell\n apiaColumnIndex={current.actualTableColumnIndex}\n columnIndex={current.actualTableColumnIndex}\n inTableColumnIndex={columnIndex}\n key={current.name}\n />\n );\n })}\n </tr>\n {filters.length > 0 && (\n <tr\n ref={setRef}\n data-focusindex={2}\n className={`responsiveTable__filters__row ${\n isFiltersRowVisible ? '' : 'hidden'\n }`}\n >\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <td\n className=\"noFilter\"\n aria-colindex={1}\n aria-rowindex={2}\n tabIndex={focusedColumn === 1 && focusedRow === -1 ? 0 : -1}\n data-focused={focusedColumn === 1 && focusedRow === -1}\n >\n &nbsp;\n </td>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={2} />\n ))}\n {columns\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n const filter = filters.find(\n (search) => search.definition.column === current.name,\n );\n\n return current.showAsAdditional ? null : (\n <FilterCell\n key={current.name}\n columnIndex={columnIndex}\n filter={filter?.definition}\n />\n );\n })}\n </tr>\n )}\n </thead>\n );\n};\n\nexport const Header = React.memo(NoMemoHeader);\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\n\nconst NoMemoAdditionalColumnDefaultRenderer = ({\n column,\n cell,\n}: TResponsiveTableCellRendererProps) => {\n return (\n <Box\n className={`${cell.className ?? ''} responsiveTable__additionalInfoItem`}\n id={cell.id}\n title={cell.title}\n >\n <Box as=\"strong\">{column.name}:</Box> {cell.children}\n </Box>\n );\n};\n\nexport const AdditionalColumnDefaultRenderer = React.memo(\n NoMemoAdditionalColumnDefaultRenderer,\n);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\n\nexport const SeparatorCell = ({\n colSpan,\n rowIndex,\n}: {\n colSpan: number;\n rowIndex: number;\n}) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'separator',\n { rowIndex },\n domPropsSelector(name),\n );\n return (\n <td className=\"row__separator__cell\" colSpan={colSpan} {...domProps} />\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TResponsiveTableRowRenderer,\n TResponsiveTableRowRendererProps,\n} from '../types';\n\nconst NoMemoDefaultRowRenderer: TResponsiveTableRowRenderer = React.forwardRef<\n HTMLTableRowElement,\n TResponsiveTableRowRendererProps\n>(({ row, rowIndex, ...props }, currentRef) => (\n <Box\n as={'tr' as any}\n sx={useMemo(\n () => ({\n '&.colored, & > *': {\n color: row.color,\n background: row.background,\n },\n }),\n [row.background, row.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableRowElement>}\n {...props}\n />\n));\n\nNoMemoDefaultRowRenderer.displayName = 'DefaultRowRenderer';\n\nexport const DefaultRowRenderer = NoMemoDefaultRowRenderer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { AutoEllipsis } from '@apia/components';\n\nconst NoMemoDefaultCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps\n>(\n (\n {\n cell: { Renderer, rendererProps, AccordionRenderer, ariaLabel, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <Box\n as={'td' as any}\n sx={useMemo(\n () => ({\n '&.colored': {\n background: cell.background,\n color: cell.color,\n fontWeight: 'bold',\n },\n }),\n [cell.background, cell.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n aria-label={ariaLabel as string}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const td = el.closest('td') as HTMLElement;\n\n return {\n width: window.getComputedStyle(td).width,\n };\n }}\n >\n {props.children ?? cell.children}\n </AutoEllipsis>\n </Box>\n ),\n);\nNoMemoDefaultCellRenderer.displayName = 'DefaultCellRenderer';\nexport const DefaultCellRenderer = NoMemoDefaultCellRenderer;\n","import React, { FC } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { DefaultCellRenderer } from './renderers/DefaultCellRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { useResponsiveTable } from './store';\n\ninterface ICell {\n columnIndex: number;\n inTableColumnIndex: number;\n rowIndex: number;\n}\n\nconst NoMemoCell: FC<ICell> = ({\n columnIndex,\n inTableColumnIndex,\n rowIndex,\n}) => {\n const { name } = useResponsiveTableContext();\n\n const domProps = useDomProps(\n 'td',\n { columnIndex: inTableColumnIndex, rowIndex },\n domPropsSelector(name),\n );\n\n const cell = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n\n return tableState?.rows[rowIndex]?.cells[columnIndex];\n }, shallowEqual);\n\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n\n const row = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.rows[rowIndex];\n }, shallowEqual);\n\n const Renderer = React.useMemo(\n () => cell?.Renderer ?? column.Renderer ?? DefaultCellRenderer,\n [cell?.Renderer, column.Renderer],\n );\n\n if (!Renderer || !cell)\n return row.separator ? <div className=\"separator\"></div> : null;\n\n return (\n <Renderer\n {...(domProps as Omit<React.HTMLProps<HTMLTableCellElement>, 'ref'>)}\n cell={cell}\n column={column}\n row={row}\n />\n );\n};\n\nexport const Cell = React.memo(NoMemoCell);\n","import { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { MdKeyboardArrowRight, MdKeyboardArrowDown } from '@meronex/icons/md/';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { getVariant } from '@apia/theme';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { TResponsiveTableCell, TResponsiveTableColumn } from './types';\nimport { AdditionalColumnDefaultRenderer } from './renderers/AdditionalColumnDefaultRenderer';\nimport { SeparatorCell } from './SeparatorCell';\nimport { DefaultRowRenderer } from './renderers/DefaultRowRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from './store';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { StateCell } from './StateCell';\nimport { Cell } from './Cell';\n\ninterface IRow {\n rowIndex: number;\n}\n\ntype TAdditionalCell = {\n cell: TResponsiveTableCell;\n column: TResponsiveTableColumn;\n columnIndex: number;\n};\n\nconst NoMemoRow = ({ rowIndex }: IRow) => {\n const { name } = useResponsiveTableContext();\n\n const { columns, hasNonAdditionalFilters } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns ?? [],\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n const row = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].rows[rowIndex],\n shallowEqual,\n );\n const additionalCells: TAdditionalCell[] = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState.columns\n .map((current, index) =>\n current.showAsAdditional\n ? {\n index,\n column: current,\n }\n : null,\n )\n .filter(\n (\n current,\n ): current is {\n index: number;\n column: TResponsiveTableColumn;\n } => !!current,\n )\n .map((current) => {\n return {\n cell: tableState.rows[rowIndex]?.cells[current.index],\n column: current.column,\n columnIndex: current.index,\n };\n });\n },\n (currentValue, newValue) => {\n return currentValue.reduce<boolean>(\n (accumulatedBoolean, currentCell, cellIndex) => {\n return (\n accumulatedBoolean && shallowEqual(currentCell, newValue[cellIndex])\n );\n },\n true,\n );\n },\n );\n const { isDragging, isExpanded, shouldForbidSelection } = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n isExpanded: tableState.expandedRows.includes(rowIndex),\n isDragging: tableState.draggingRow === rowIndex,\n shouldForbidSelection: tableState.rows[rowIndex]?.forbidSelection,\n };\n },\n shallowEqual,\n );\n\n const domProps = useDomProps(\n 'tr',\n {\n isThisRowExpanded: isExpanded,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const expandedRowDomProps = useDomProps(\n 'tr',\n {\n isTheExpandedRow: true,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const handleExpandedState = React.useCallback(\n (ev: boolean | React.MouseEvent) => {\n const willBeExpanded = typeof ev === 'boolean' ? ev : !isExpanded;\n if (!willBeExpanded)\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: responsiveTableStore\n .getState()\n .responsiveTableSlice[name].expandedRows.filter(\n (current) => current !== rowIndex,\n ),\n }),\n );\n else\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: [\n ...responsiveTableStore.getState().responsiveTableSlice[name]\n .expandedRows,\n rowIndex,\n ],\n }),\n );\n },\n [isExpanded, name, rowIndex],\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const states = React.useMemo(\n () => (row.states ?? []).map((current) => ({ ...current, id: uniqueId() })),\n [row.states],\n );\n\n const { ref, ...additionalCellDomProps } = useDomProps(\n 'additionalTd',\n { rowIndex },\n domPropsSelector(name),\n );\n\n const Renderer = React.useMemo(\n () => row.renderer ?? DefaultRowRenderer,\n [row.renderer],\n );\n\n return (\n <>\n <Renderer\n {...domProps}\n row={row}\n rowIndex={rowIndex}\n className={`responsiveTable__row ${row.isHidden ? 'hidden' : ''} ${\n domProps['aria-selected'] ? 'selected' : ''\n } ${shouldForbidSelection ? 'non-selectable' : ''} ${states\n .map((current) => current.className)\n .join(' ')} ${row.className ?? ''} ${\n row.separator ? 'row__separator' : ''\n } ${isDragging ? 'draggingRow' : ''}`}\n onKeyDown={React.useCallback(\n (ev: React.KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'arrowleft' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(false);\n }\n if (ev.key.toLowerCase() === 'arrowright' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(true);\n }\n },\n [handleExpandedState],\n )}\n >\n {row.separator ? (\n <SeparatorCell\n colSpan={\n (additionalCells.length > 0 || hasNonAdditionalFilters ? 1 : 0) +\n statesCount +\n columns.filter((current) => !current.showAsAdditional).length\n }\n rowIndex={rowIndex}\n />\n ) : (\n <>\n {(additionalCells.length > 0 || hasNonAdditionalFilters) && (\n <td className=\"additionalInfo__cell\" {...additionalCellDomProps}>\n {additionalCells.length > 0 && (\n <IconButton\n size={'Lg'}\n {...getVariant('icon-outline')}\n icon={\n isExpanded ? MdKeyboardArrowDown : MdKeyboardArrowRight\n }\n aria-label={\n isExpanded\n ? window.LBL_COLLAPSE_ROW\n : window.LBL_EXPAND_ROW\n }\n className=\"moreInformationButton\"\n onClick={handleExpandedState}\n />\n )}\n </td>\n )}\n {Array(statesCount)\n .fill('')\n .map((_, i) => {\n return (\n <StateCell\n key={states[i]?.id ?? i}\n index={i}\n state={states[i]}\n rowIndex={rowIndex}\n />\n );\n })}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, inTableColumnIndex) => {\n if (current.hidden) return null;\n return (\n <Cell\n key={current.name}\n columnIndex={current.actualColumnIndex}\n rowIndex={rowIndex}\n inTableColumnIndex={inTableColumnIndex}\n />\n );\n })}\n </>\n )}\n </Renderer>\n {isExpanded && (\n <tr className=\"expandedRow\" {...expandedRowDomProps}>\n <td\n colSpan={\n columns.length - additionalCells.length + states.length + 1\n }\n >\n <Box className=\"responsiveTable__additionalInfoContainer\">\n {additionalCells.map((current) => {\n const { Renderer: ColumnRenderer } = current.column;\n if (ColumnRenderer)\n return (\n <ColumnRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n return (\n <AdditionalColumnDefaultRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n })}\n </Box>\n </td>\n </tr>\n )}\n </>\n );\n};\n\nexport const Row = React.memo(NoMemoRow);\n","import { Box } from '@apia/theme';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nexport const NoRegistersRenderer = () => {\n const { labels } = useResponsiveTableContext();\n return <Box className=\"no__registers\">{labels.noRegisters}</Box>;\n};\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { Header } from '../Header';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { Row } from '../Row';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport { useDomProps } from '../store/selection/useDomProps';\nimport { useResponsiveTable } from '../store';\n\nconst NoMemoTableRenderer = () => {\n const { name, label } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'table',\n {},\n (global) => global.responsiveTableSlice[name],\n );\n\n const rows = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return (tableState?.rows ?? []).map((current) => current.id);\n }, shallowEqual);\n\n const { columnsCount, rowsCount } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n rowsCount: tableState?.rows.length ?? 0,\n columnsCount:\n (tableState?.nonAdditionalColumnsCount ?? 0) +\n (tableState?.hasNonAdditionalFilters ? 1 : 0) +\n (tableState?.statesColumns ?? 0) +\n (tableState?.columns.find((current) => current.showAsAdditional)\n ? 1\n : 0),\n };\n }, shallowEqual);\n\n return (\n <Box\n {...domProps}\n as=\"table\"\n className=\"responsiveTable__table\"\n {...getVariant('layout.common.tables.primary')}\n aria-label={label}\n >\n <Header />\n <tbody>\n {rowsCount > 0 ? (\n rows.map((row, index) => {\n return (\n <Row key={row ?? `${row as string}-${index}`} rowIndex={index} />\n );\n })\n ) : (\n <tr>\n <td colSpan={columnsCount}>\n <NoRegistersRenderer />\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n );\n};\n\nexport const TableRenderer = React.memo(NoMemoTableRenderer);\n","import { Box } from '@apia/theme';\nimport { FunctionComponent } from 'react';\nimport {\n TResponsiveTableCell,\n TResponsiveTableColumn,\n TResponsiveTableRow,\n} from '../types';\n\nexport type TAccordionCellRendererProps<CellProps = Record<string, unknown>> = {\n cell: TResponsiveTableCell<CellProps>;\n column: TResponsiveTableColumn;\n columnIndex: number;\n row: TResponsiveTableRow;\n rowIndex: number;\n};\n\nexport type TAccordionCellRenderer<CellProps = Record<string, unknown>> =\n FunctionComponent<TAccordionCellRendererProps<CellProps>>;\n\nconst NoMemoAccordionCell: TAccordionCellRenderer = ({ cell, column }) => {\n return (\n <Box\n key={column.name}\n className={`responsiveTable__accordionElement__column ${\n cell.className ?? ''\n }`}\n >\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" sx={{ color: cell.color, background: cell.background }}>\n {cell?.children}\n </Box>\n </Box>\n );\n};\n\nexport const AccordionCell = NoMemoAccordionCell;\n","import React, { memo, useMemo } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableRow } from '../types';\nimport { AccordionCell } from './AccordionCell';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from '../store';\nimport { AccordionItem, IAccordionItemButton } from '@apia/components';\n\nexport interface IAccordionElement {\n row: TResponsiveTableRow;\n rowIndex: number;\n}\n\nconst NoMemoAccordionElement = ({ row, rowIndex }: IAccordionElement) => {\n const { name } = useResponsiveTableContext();\n\n const indexColumns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.accordionIndexColumns;\n }, shallowEqual);\n const columns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns;\n }, shallowEqual);\n\n const title = React.useMemo(() => {\n if (row.title) return row.title;\n if (Array.isArray(indexColumns))\n return indexColumns\n .map(\n (current) =>\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n row.cells[current.index].title ||\n (row.cells[current.index].children as string),\n )\n .join(' | ');\n return row.cells[0].title ?? (row.cells[0].children as string);\n }, [indexColumns, row.cells, row.title]);\n const isSelected = useResponsiveTable((global) =>\n global.responsiveTableSlice[name].allowSelection !== false\n ? global.responsiveTableSlice[name].selectedRows.includes(rowIndex)\n : undefined,\n );\n const isFocused = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].focusedRow === rowIndex,\n );\n const buttonProps = useMemo<IAccordionItemButton>(\n () => ({\n title,\n ariaLabel: title,\n label: title,\n checked: isSelected,\n onChange: (isChecked: boolean) => {\n const isMultiple =\n responsiveTableStore.getState().responsiveTableSlice[name].isMultiple;\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n selectedRows: isMultiple\n ? isChecked\n ? [\n ...responsiveTableStore.getState().responsiveTableSlice[\n name\n ].selectedRows,\n rowIndex,\n ]\n : responsiveTableStore\n .getState()\n .responsiveTableSlice[name].selectedRows.filter(\n (current) => current !== rowIndex,\n )\n : [rowIndex],\n }),\n );\n },\n tabIndex: isFocused ? 0 : -1,\n rightButtons: row.accordionButtonProps?.rightButtons,\n onUserPressEnter: row.accordionButtonProps?.onUserPressEnter,\n domButtonProps: {\n buttonSx: {\n '&.accordion__item__button .accordion__item__button__label': {\n color: row.color,\n },\n },\n },\n }),\n [\n isFocused,\n isSelected,\n name,\n row.accordionButtonProps?.onUserPressEnter,\n row.accordionButtonProps?.rightButtons,\n row.color,\n rowIndex,\n title,\n ],\n );\n\n if (!Array.isArray(indexColumns) || !columns) return null;\n\n return (\n <AccordionItem id={row.id} buttonProps={buttonProps}>\n {columns.map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ||\n currentColumn.showAsAdditional ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n\n {columns\n .filter((current) => !!current.showAsAdditional)\n .map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n </AccordionItem>\n );\n};\n\nexport const AccordionElement = memo(NoMemoAccordionElement);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableColumn } from '../types';\nimport { AccordionElement } from './AccordionElement';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport {\n responsiveTableActions,\n useResponsiveTable,\n responsiveTableStore,\n} from '../store';\nimport { TResponsiveTableIndexColumns } from '../store/types';\nimport { Accordion } from '@apia/components';\n\nconst NoMemoAccordionRenderer = () => {\n const { name } = useResponsiveTableContext();\n\n const { columns, rows } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns,\n rows: tableState?.rows,\n };\n }, shallowEqual);\n\n React.useEffect(() => {\n /**\n * Método para seleccionar qué columnas se utilizarán\n * como cabezal en cada fila.\n *\n * - Si existe al menos una columna marcada con showInAccordionTitle,\n * todas las columnas que estén marcadas con esta propiedad serán\n * mostradas como parte del título.\n *\n * - Si no existe ninguna, se busca cuál es la primera columna\n * que no tiene ninguna entrada vacía y se utiliza como título\n * del acordión.\n *\n * - Si ninguna columna no tiene ninguna fila vacía, entonces se\n * utiliza la primera columna.\n */\n\n if (columns && rows) {\n /**\n * Buscar columnas marcadas\n */\n const markedAsTitleColumns: TResponsiveTableIndexColumns = [];\n columns.forEach((column, index) => {\n if (column.showInAccordionTitle)\n markedAsTitleColumns.push({ column, index });\n });\n if (markedAsTitleColumns.length > 0) {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: markedAsTitleColumns,\n }),\n );\n } else {\n /**\n * No se encontró ninguna columna marcada, se busca la primera sin\n * entradas vacías.\n */\n const columnsLength = columns.length;\n let indexColumn: TResponsiveTableColumn | null = null;\n let currentIndex = 0;\n\n while (!indexColumn && currentIndex < columns.length) {\n let isAnyEmptyRow = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const row of rows) {\n if (!row.cells[currentIndex].children) {\n isAnyEmptyRow = true;\n break;\n }\n }\n if (!isAnyEmptyRow && columns[currentIndex]) {\n indexColumn = columns[currentIndex];\n } else {\n currentIndex += 1;\n if (currentIndex === columnsLength) break;\n }\n }\n if (!indexColumn) {\n /**\n * No hay ninguna sin ninguna entrada vacía,\n * se usa la primera columna.\n */\n [indexColumn] = columns;\n currentIndex = 0;\n }\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: [\n { column: indexColumn, index: currentIndex },\n ],\n }),\n );\n }\n }\n }, [columns, name, rows]);\n\n return (\n <Accordion>\n {!rows || (rows.length === 0 && <NoRegistersRenderer />)}\n {rows?.map((current, rowIndex) => (\n <AccordionElement row={current} rowIndex={rowIndex} key={current.id} />\n ))}\n </Accordion>\n );\n};\n\nexport const AccordionRenderer = React.memo(NoMemoAccordionRenderer);\n","import React from 'react';\nimport { Box, BoxProps, useBreakpointIndex } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { KeyHandler } from './KeyHandler';\nimport { TableRenderer } from './renderers/TableRenderer';\nimport { AccordionRenderer } from './renderers/AccordionRenderer';\nimport { TUseDomProps } from './store/selection/types';\nimport { responsiveTableStore } from './store';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\n\ntype TResponsiveTable = BoxProps;\n\n/**\n * Este objeto determina qué partes de la tabla deben\n * ser 'debugueadas'. Sobre todo para conocer el\n * impacto en el performance de la misma.\n */\nexport const rtDebug = {\n cell: false,\n context: false,\n filterCell: false,\n filters: {\n additional: false,\n grouped: false,\n inner: false,\n responsive: false,\n sort: false,\n },\n header: false,\n headerCell: false,\n index: false,\n keyHandler: false,\n row: false,\n tableRenderer: false,\n};\n\nexport const domPropsSelector: (name: string) => TUseDomProps =\n (name: string) =>\n (global: ReturnType<typeof responsiveTableStore.getState>) =>\n global.responsiveTableSlice[name];\n\n/**\n * El ResponsiveTable renderiza una tabla en base a la\n * información provista por ResponsiveTableContext, quien\n * debe ser ancestro de este elemento. La finalidad última\n * de este componente es lograr responsividad y performance.\n *\n * Las props pasadas sarán colocadas directamente en el\n * wrapper de la tabla. Con esta estructura se busca que\n * a la hora de dar estilos a este componente, se pueda pasar\n * un variant al Wrapper, sin afectar los estilos por defecto\n * de la tabla ni del acordión en modo responsivo. Esto no limita\n * en ningún concepto la posibilidad de cambiar el variant a\n * la tabla o al acordión, ya que eso puede hacerse desde un\n * variante personalizado con la estructura mostrada en el\n * ejemplo.\n *\n * Además, de esta manera es posible aplicar estilo a algunos\n * componentes nada más, sin la necesidad de cambiar el layout\n * que usa la tabla por defecto. Por ejemplo, con esta estructura\n * se puede utilizar un variant personalizado para definir\n * el ancho de las columnas de la tabla.\n *\n * @example\n * 'customVariant': {\n * '.responsiveTable__accordion': {\n * variant: 'layout.tables.otherAccordion'\n * }\n * '.responsiveTable__table': {\n * variant: 'layout.tables.otherTable'\n * }\n * }\n */\nconst NoMemoResponsiveTable = React.forwardRef<\n HTMLDivElement,\n TResponsiveTable\n>(({ className, ...props }, ref) => {\n const breakpoint = useBreakpointIndex({ defaultIndex: 3 });\n const { currentBreakPoint } = useResponsiveTableContext();\n\n const actualBreakpoint = currentBreakPoint ?? breakpoint;\n\n return (\n <Box\n {...props}\n {...getVariant('layout.common.tables.responsive')}\n className={`responsiveTable__wrapper ${className ?? ''}`}\n ref={ref}\n >\n {actualBreakpoint >= 3 ? (\n <KeyHandler>\n <TableRenderer />\n </KeyHandler>\n ) : (\n <AccordionRenderer />\n )}\n </Box>\n );\n});\n\nNoMemoResponsiveTable.displayName = 'ResponsiveTable';\n\nexport const ResponsiveTable = React.memo(NoMemoResponsiveTable);\n","import React from 'react';\nimport { Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TResponsiveTableCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoDocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLTableCellElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n >\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </td>\n ),\n );\n\nNoMemoDocNameCellRenderer.displayName = 'DocNameCellRenderer';\n\nexport const DocNameCellRenderer = NoMemoDocNameCellRenderer;\n","import React from 'react';\nimport { Box, Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TAccordionCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoAccordionDocNameCellRenderer: TAccordionCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n },\n currentRef,\n ) => (\n <Box ref={currentRef as React.RefObject<HTMLElement>} {...cell}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </Box>\n ),\n );\n\nNoMemoAccordionDocNameCellRenderer.displayName = 'AccordionDocNameCellRenderer';\n\nexport const AccordionDocNameCellRenderer = NoMemoAccordionDocNameCellRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { TAccordionCellRenderer } from './AccordionCell';\n\nconst NoMemoAccordionHTMLCellRenderer: TAccordionCellRenderer<{\n html: string;\n}> = React.forwardRef<\n HTMLSpanElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n /**\n * Aca falta el title de la columna\n */\n <Box\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n {...(rendererProps?.html\n ? {\n dangerouslySetInnerHTML: {\n __html: rendererProps.html.replaceAll(/<TOK(\\d+)/g, '&lt;TOK$1'),\n },\n }\n : { children })}\n as=\"span\"\n />\n ),\n);\n\nNoMemoAccordionHTMLCellRenderer.displayName = 'AccordionHTMLCellRenderer';\n\nexport const AccordionHTMLCellRenderer = NoMemoAccordionHTMLCellRenderer;\n","import React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nconst NoMemoHTMLCellRenderer: TResponsiveTableCellRenderer<{ html: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n {...(rendererProps?.html\n ? {\n dangerouslySetInnerHTML: {\n __html: rendererProps.html.replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n },\n }\n : { children })}\n />\n ),\n );\n\nNoMemoHTMLCellRenderer.displayName = 'HTMLCellRenderer';\n\nexport const HTMLCellRenderer = NoMemoHTMLCellRenderer;\n","import { Box, Spinner } from '@apia/theme';\n\nexport const IsLoadingRenderer = () => {\n return (\n <Box className=\"responsiveTable__isLoading\">\n <Spinner />\n </Box>\n );\n};\n","import { forwardRef, useCallback, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { arrayOrArray } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAccordionAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n }[]\n | null\n >(null);\n const loadMore = useCallback(async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n }, [row]);\n\n return (\n <>\n {moreInfo ? (\n <>\n <IconButton icon=\"Minus\" onClick={() => setMoreInfo(null)} />\n {arrayOrArray(moreInfo).map(\n (dataCell: { label?: string; name: string }) => {\n return (\n <Box key={dataCell.name} ref={ref} as=\"div\">\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </Box>\n );\n },\n )}\n </>\n ) : (\n <IconButton icon=\"Plus\" onClick={() => void loadMore()} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAccordionAsyncRenderer';\n\n return InnerRender;\n}\n","import { uniqueId } from 'lodash-es';\nimport { forwardRef, useState } from 'react';\nimport { Box, Spinner } from '@apia/theme';\nimport { arrayOrArray, useMount } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n | null\n >(null);\n useMount(() => {\n void (async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n })();\n });\n\n return (\n <>\n {moreInfo ? (\n arrayOrArray(moreInfo).map((dataCell) => {\n return (\n <Box\n key={`${dataCell.name}-${uniqueId()}`}\n ref={ref}\n className={`responsiveTable__additionalInfoItem ${\n dataCell.newline ? 'separator' : ''\n }`}\n >\n {dataCell.newline ? (\n <>\n <Box sx={{ height: '20px' }} as=\"strong\">\n {dataCell.name}:\n </Box>{' '}\n {dataCell.label}\n </>\n ) : (\n <>\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </>\n )}\n </Box>\n );\n })\n ) : (\n <Spinner size={15} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAsyncRenderer';\n\n return InnerRender;\n}\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getPriorityHandler(priority: string | undefined) {\n let prio;\n if (priority?.includes('priority0')) prio = 'priorityNone';\n if (priority?.includes('priority1')) prio = 'priorityLow';\n if (priority?.includes('priority2')) prio = 'priorityNormal';\n if (priority?.includes('priority3')) prio = 'priorityHigh';\n if (priority?.includes('priority4')) prio = 'priorityUrgent';\n return prio;\n}\nconst NoMemoPriorityRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskPriorityColor = getPriorityHandler(rendererProps?.src);\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </td>\n );\n },\n );\nNoMemoPriorityRenderer.displayName = 'PriorityRenderer';\nexport const PriorityRenderer = NoMemoPriorityRenderer;\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getPriorityHandler } from './PriorityRenderer';\n\nconst NoMemoPriorityAccordionRenderer: TAccordionCellRenderer =\n React.forwardRef<HTMLTableCellElement, TAccordionCellRendererProps>(\n ({ cell, column }, currentRef) => {\n const taskPriorityColor = getPriorityHandler(\n cell.rendererProps?.src as string,\n );\n const title = column.label ?? column.name;\n return (\n <Box ref={currentRef} className=\"priority_container\">\n {title && <Box as=\"strong\">{column.label ?? column.name}: </Box>}\n <Box\n as=\"span\"\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </Box>\n </Box>\n );\n },\n );\n\nNoMemoPriorityAccordionRenderer.displayName = 'PriorityAccordionRenderer';\n\nexport const PriorityAccordionRenderer = NoMemoPriorityAccordionRenderer;\n","import dayjs from 'dayjs';\nimport React from 'react';\nimport { TDateFormat, getDateFormat } from '@apia/util';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getStatusRendererClassName(\n cellValue: string,\n columnName: string,\n) {\n if (cellValue === undefined) return '';\n\n const cellValueDate = cellValue.split(' ')[0];\n const cellValueHour = cellValue.split(' ')[1] ?? '00:00:00';\n\n const dateFormat: TDateFormat = getDateFormat();\n const currentDate = dayjs();\n const currentHour = Number(dayjs().format('HHmm'));\n const queriedDate = dayjs(cellValueDate, dateFormat);\n const queriedHour = Number(dayjs(cellValueHour, dateFormat));\n let statusClassName = '';\n\n if (currentDate >= queriedDate) {\n statusClassName = columnName;\n }\n if (!queriedHour) return statusClassName;\n\n if (currentDate <= queriedDate && currentHour < queriedHour) {\n statusClassName = columnName;\n }\n return statusClassName;\n}\n\nconst NoMemoStatusRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskStatusClassName = getStatusRendererClassName(\n children as string,\n column.name,\n );\n\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className={taskStatusClassName}\n >\n {children}\n </td>\n );\n },\n );\n\nNoMemoStatusRenderer.displayName = 'StatusRenderer';\n\nexport const StatusRenderer = NoMemoStatusRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getStatusRendererClassName } from './StatusRenderer';\n\nconst NoMemoStatusAccordionRenderer: TAccordionCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TAccordionCellRendererProps\n>(({ cell, column }, currentRef) => {\n const taskStatusClassName = getStatusRendererClassName(\n cell.children as string,\n column.name,\n );\n\n return (\n <Box ref={currentRef}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" className={taskStatusClassName}>\n {cell.children}\n </Box>\n </Box>\n );\n});\n\nNoMemoStatusAccordionRenderer.displayName = 'StatusAccordionRenderer';\n\nexport const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;\n"],"names":["getInitialState","__objRest","__spreadValues","_a","_b","__spreadProps","selectionGetInitialState","_c","useUpdateEffect","shallowEqual","__async","useMount"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/types.ts","../src/store/selection/getInitialState.ts","../src/store/selection/setNewFocused.ts","../src/store/selection/handleKey.ts","../src/store/selection/makeKeyHandler.tsx","../src/store/selection/getReduxActions.ts","../src/store/index.ts","../src/ResponsiveTableContext.tsx","../src/KeyHandler.tsx","../src/store/selection/useDomProps.ts","../src/HeaderCell.tsx","../src/renderers/RowStatesRenderer.tsx","../src/StateCell.tsx","../src/filters/RangeFilter.tsx","../src/FilterCell.tsx","../src/Header.tsx","../src/renderers/AdditionalColumnDefaultRenderer.tsx","../src/SeparatorCell.tsx","../src/renderers/DefaultRowRenderer.tsx","../src/renderers/DefaultCellRenderer.tsx","../src/Cell.tsx","../src/Row.tsx","../src/renderers/NoRegistersRenderer.tsx","../src/renderers/TableRenderer.tsx","../src/renderers/AccordionCell.tsx","../src/renderers/AccordionElement.tsx","../src/renderers/AccordionRenderer.tsx","../src/ResponsiveTable.tsx","../src/renderers/DocNameCellRenderer.tsx","../src/renderers/AccordionDocNameCellRenderer.tsx","../src/renderers/AccordionHTMLCellRenderer.tsx","../src/renderers/HTMLCellRenderer.tsx","../src/renderers/IsLoadingRenderer.tsx","../src/renderers/makeAccordionAsyncRenderer.tsx","../src/renderers/makeAsyncRenderer.tsx","../src/renderers/PriorityRenderer.tsx","../src/renderers/PriorityAccordionRenderer.tsx","../src/renderers/StatusRenderer.tsx","../src/renderers/StatusAccordionRenderer.tsx"],"sourcesContent":["import { IconType } from '@meronex/icons';\nimport React from 'react';\nimport { TApiaFilter, TModify } from '@apia/util';\nimport { TAccordionCellRenderer } from './renderers/AccordionCell';\nimport { ISelectableState, TBasicRow } from './store/selection/types';\n\nexport type TColoredElement = {\n background?: string;\n color?: string;\n};\n\n/**\n * Se encontró en algunos casos particulares que\n * el servidor devuelve Up y Down para referirse\n * al orden actual de una columna.\n */\nexport type TResponsiveTableSortValue = null | 'A' | 'D' | 'Down' | 'Up';\n\n/**\n * Cada vez que se hace click en el botón del\n * cabezal de una columna, si la columna tiene\n * habilitado el ordenamiento, se emite un\n * evento de este tipo, informando cuál columna\n * emitió el evento, y cuál es el nuevo sortValue.\n */\nexport type TResponsiveTableSortChangeEvent = {\n name: string;\n column: TResponsiveTableColumn;\n columnIndex: number;\n /**\n * Es el orden que la columna debería tener\n * si no hay ningún motivo para evitar que\n * la acción de ordenamiento se lleve a cabo.\n *\n * Es importante notar que el componente\n * responsiveTable no realiza ninguna acción\n * de ordenamiento por defecto, sino que es\n * quien la usa, quien debe realizar las\n * acciones correspondientes e informarlo a\n * la tabla actualizando los registros y el\n * estado de la columna correspondiente.\n */\n sortValue: TResponsiveTableSortValue;\n};\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableCellRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n HTML = HTMLTableCellElement,\n> = {\n cell: TResponsiveTableCell<RendererPropsType>;\n column: TResponsiveTableColumn;\n row: TResponsiveTableRow;\n} & React.AllHTMLAttributes<HTML>;\n\nexport type TResponsiveTableCellRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableCellRendererProps<RendererPropsType>\n>;\n\n/**\n * Algunos elementos de la tabla admiten un\n * Renderer personalizado. Dichos elementos\n * extienden este tipo.\n */\nexport type TResponsiveTableWithRendererElement<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo en el modo responsivo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AccordionRenderer?: TAccordionCellRenderer<any>;\n /**\n * Son las propiedades que se desean pasar al\n * componente de renderizado personalizado que\n * se haya establecido.\n *\n * Estas props serán obviadas en caso de que\n * no haya componente de renderizado personalizado.\n */\n rendererProps?: RendererPropsType;\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Renderer?: TResponsiveTableCellRenderer<any>;\n};\n\nexport type TResponsiveTableCell<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n children?: number | string;\n} & TResponsiveTableWithRendererElement<RendererPropsType> &\n Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'id' | 'rowSpan' | 'title'\n >\n > &\n TColoredElement;\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableRowRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n row: TResponsiveTableRow<RendererPropsType>;\n rowIndex: number;\n} & React.AllHTMLAttributes<HTMLTableRowElement>;\n\nexport type TResponsiveTableRowRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableRowRendererProps<RendererPropsType>\n>;\n\nexport type TResponsiveTableRow<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = TBasicRow &\n TColoredElement & {\n accordionButtonProps?: {\n rightButtons?: React.ReactNode;\n onUserPressEnter?: (ev: React.KeyboardEvent) => unknown;\n };\n cells: TResponsiveTableCell[];\n /**\n * Si se pasa en true, la fila se mostrará como un separador\n */\n separator?: boolean;\n initiallySelected?: boolean;\n\n renderer?: TResponsiveTableRowRenderer<RendererPropsType>;\n rendererProps?: RendererPropsType;\n /**\n * Permite pasar propiedades arbitrarias a un row y recuperarlas en los\n * eventos de onClick por ejemplo.\n */\n rowProps?: RendererPropsType;\n isHidden?: boolean;\n /**\n * Los estados de la fila agregan un ícono en la columna\n * especial que es la que se muestra a la izquierda y\n * contiene, cuando existe, el botón de más información.\n */\n states?: TResponsiveTableRowState[];\n } & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'colSpan' | 'className' | 'rowSpan' | 'title'\n >\n >;\n\nexport type TResponsiveTableRowState = {\n /**\n * Es un className que se agregará al elemento <tr>\n */\n className?: string;\n Icon: IconType;\n color?: string;\n tooltip: string;\n};\n\nexport type TResponsiveTableColumn = TResponsiveTableWithRendererElement & {\n /** Con esta propiedad se puede pasar parámetros opcionales */\n additionalData?: Record<string, unknown>;\n /**\n * Determina si la columna admite ordenamiento.\n */\n allowSorting?: boolean;\n children?: React.ReactNode;\n /**\n * Cuando la columna admite ordenamiento, muestra\n * una flecha indicando el orden actual. Esta\n * propiedad establece si la flecha apunta hacia\n * arriba, abajo, o si la flecha es un guión.\n */\n currentSorting?: TResponsiveTableSortValue;\n /** *\n * Valor para decirle al server cuál columna se está ordenando\n */\n dataSortBy?: string;\n hidden?: boolean;\n /**\n * Normalmente, todas las columnas se van a mostrar\n * como renglones en el acordión, cuando este es\n * expandido.\n *\n * Si este flag es pasado en true, la columna\n * correspondiente no se va a mostrar en modo\n * responsivo.\n */\n hideFromAccordion?: boolean;\n /**\n * Elemento id del dom.\n */\n id?: string;\n /**\n * Es el texto que se mostrará en el cabezal.\n */\n label: string;\n maxWidth?: number | string;\n minWidth?: number | string;\n /**\n * El nombre de la columna debe ser único, se utiliza\n * para realizar la asosiación entre las columnas\n * y los filtros, así como con los eventos de orden.\n */\n name: string;\n /**\n * Si se pasa required: true, se pone un asterisco\n * rojo en el cabezal de la columna para señalar que\n * la columna es requerida.\n */\n required?: boolean;\n /**\n * Algunas columnas podrán mostrarse mediante un botón\n * \"mostrar más\", para ello deberán ser marcadas con\n * esta prop en true.\n */\n showAsAdditional?: boolean;\n /**\n * Cuando no se pasa esta propiedad en ninguna columna,\n * la aplicación encuentra la primera fila sin celdas\n * vacías y la utiliza como título.\n *\n * En cambio, si al menos una columna tiene este flag\n * en true, el título de cada fila del acordión estará\n * compuesto por los valores de estas columnas.\n */\n showInAccordionTitle?: boolean;\n /**\n * Elemento title de html (El tooltip).\n */\n title?: string;\n width?: number | string;\n} & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'rowSpan'\n >\n >;\n\nexport type TResponsiveTableStoreProps = {\n /**\n * Habla sobre el orden de las filas en función de\n * las columnas. Esta propiedad habilita/deshabilita\n * el ordenado de las columnas al hacer click en los\n * cabezales.\n *\n * La tabla admite ordenamiento por defecto, a menos\n * que esta prop venga en false. En caso de que se\n * pase false no importa qué digan las columnas,\n * el ordenamiento no estará habilitado.\n */\n allowSorting?: boolean;\n\n // Composition\n columns: TResponsiveTableColumn[];\n filters?: TApiaFilter[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows: TResponsiveTableRow<any>[];\n\n /**\n * Por defecto, la tabla permitirá seleccionar\n * múltiples valores, a menos que esta prop venga\n * en false.\n */\n isMultiple?: boolean;\n\n label?: string;\n\n /**\n * Es normal que una tabla tenga paginación y que en cada página haya una\n * cantidad distinta de estados. Si se quiere mantener consistencia en el\n * tamaño de las páginas, es posible reservar un tamaño para una cantidad\n * definida de estados con este parámetro.\n */\n reserveColumnsForStates?: number;\n};\n\nexport type TResponsiveTableRowsSelectionEvent = {\n index: number;\n row: TResponsiveTableRow;\n}[];\n\nexport type TResponsiveTableContextProps = TResponsiveTableStoreProps &\n Pick<\n ISelectableState,\n 'allowRowsKeyboardSorting' | 'allowEdition' | 'allowSelection'\n > & {\n /**\n * Cuando se actualiza el array de rows de la tabla\n * desde las props del ResponsiveTableContext, se\n * reinicia el estado de selección de acuerdo a cómo\n * viene definido en el prop. **Si esta prop se pasa\n * en true**, este comportamiento es deshabilitado.\n */\n avoidReparseSelectionOnRowChange?: boolean;\n children?: React.ReactNode;\n className?: string;\n /**\n * Permite redefinir el comportamiento de los breakpoints pasando un índice\n * personalizado. Cuando es pasado, deja de prestar atención al breakpoint\n * de la pantalla y comienza a prestar atención a este índice.\n */\n currentBreakPoint?: number;\n customLabels?: typeof defaultLabels;\n /**\n * Se puede utilizar este booleano para que la tabla\n * deshabilite las opciones de filtrado y ordenado mientras\n * se está ejecutando una acción ajax.\n */\n isLoading?: boolean;\n /**\n * La tabla debe tener un nombre único que será usado para\n * acceder a las propiedades de la misma en el store. En caso\n * de que no se pase ninguno, la tabla lo generará\n * automaticamente.\n */\n name?: string;\n\n // Filtering\n onFilterChange?: (ev: TApiaFilter) => void | Promise<boolean>;\n onFilterBlur?: (ev: TApiaFilter) => unknown;\n onFilterPressEnter?: (ev: TApiaFilter) => unknown;\n\n // Selection\n onChangeSelection?: (ev: TResponsiveTableRowsSelectionEvent) => unknown;\n /**\n * Este evento será llamado cada vez que el usuario esté\n * haciendo foco en la tabla, tenga una selección de\n * filas no vacía y presione la tecla Enter.\n */\n onSelectRows?: (\n ev: TResponsiveTableRowsSelectionEvent,\n focusedRowIndex: number,\n ) => unknown;\n\n // Sorting\n /**\n * Es llamado cada vez que el usuario hace click en el botón\n * del cabezal de la columna. **Importante:** la tabla no\n * realizará ninguna acción de ordenamiento, sino solamente\n * avisar de que el usuario desea que las filas sean ordenadas\n * por alguna columna en particular.\n */\n onSortChange?: (ev: TResponsiveTableSortChangeEvent) => unknown;\n variant?: string;\n };\n\n/**\n * Los callbacks del responsiveTable estarán\n * disponibles a través de un contexto, de\n * forma que cualquier elemento activo que\n * desee informar de un evento en particular\n * pueda hacerlo en forma sencilla.\n */\nexport type TResponsiveTableContext = TModify<\n Pick<\n TResponsiveTableContextProps,\n | 'currentBreakPoint'\n | 'name'\n | 'onChangeSelection'\n | 'onFilterBlur'\n | 'onFilterChange'\n | 'onFilterPressEnter'\n | 'onSelectRows'\n | 'onSortChange'\n | 'label'\n >,\n { labels: typeof defaultLabels; name: string }\n>;\n\ndeclare global {\n interface Window {\n FINDER_NO_DATA: string;\n }\n}\n\nexport const defaultLabels = {\n noRegisters: window.FINDER_NO_DATA,\n};\n","import { TApiaFilter } from '@apia/util';\nimport { ISelectableState, TBasicRow } from './types';\n\nexport function getInitialState<\n ColumnsType extends { name: string },\n RowsType extends TBasicRow | string,\n>(): ISelectableState<ColumnsType, TApiaFilter, RowsType> {\n return {\n allowEdition: false,\n allowSelection: true,\n columns: [],\n expandedRows: [],\n isEditionMode: false,\n isFocused: false,\n filters: [],\n focusedColumn: 0,\n focusedRow: 0,\n hasNonAdditionalFilters: false,\n isMultiple: true,\n nonAdditionalColumnsCount: 0,\n rows: [],\n selectedRows: [],\n statesColumns: 0,\n };\n}\n","import { addBoundary } from '@apia/util';\nimport { Draft } from '@apia/store';\nimport { INewFocus, ISelectableState, TBasicRow } from './types';\n\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una fila, evitando\n * que se haga foco en filas inexistentes.\n */\nexport function addRowBoundary(newRow: number, state: ISelectableState) {\n const hasFiltersRow = !!state.filters.find(\n (current) =>\n !!state.columns.find((search) => search.name === current.column),\n );\n return addBoundary({\n number: newRow,\n min: hasFiltersRow ? -2 : -1,\n max: Math.max(0, state.rows.length - 1),\n });\n}\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una columna, evitando\n * que se haga foco en columnas inexistentes.\n */\nexport function addColumnBoundary(newColumn: number, state: ISelectableState) {\n return addBoundary({\n number: newColumn,\n min: 0,\n max:\n state.nonAdditionalColumnsCount +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n });\n}\n\nfunction isBasicRow(row: unknown): row is TBasicRow {\n return typeof row === 'object' && !!row && 'forbidSelection' in row;\n}\n\nfunction filterNonSellectableRows(\n state: Draft<ISelectableState>,\n newSelection: number[],\n) {\n let expandedRowsBefore = 0;\n return newSelection.filter((selectedRowIndex) => {\n const row = state.rows[selectedRowIndex + expandedRowsBefore];\n if (state.expandedRows.includes(selectedRowIndex)) expandedRowsBefore += 1;\n return !(isBasicRow(row) && row.forbidSelection);\n });\n}\n\n/**\n * Normalmente, este método será llamado desde un\n * action de Redux, para eso fue diseñado. Su\n * utilidad es la de tomar el estado y alterarlo\n * dependiendo de los parámetros pasados y la lógica\n * de selección de filas y columnas en una grilla,\n * devolviendo un estado coherente que represente\n * las acciones de un usuario en la grilla.\n */\nexport function setNewFocused(\n state: Draft<ISelectableState>,\n {\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n ctrlKey,\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n shiftKey,\n newFocusedColumn,\n newFocusedRow,\n /**\n * Con este método se puede seleccionar cuál celda\n * va a recibir el foco y la selección, o solamente\n * el foco si esta propiedad es pasada en false.\n */\n shouldSelectNewFocused,\n }: INewFocus,\n) {\n let actualNewFocusedRow =\n Math.round(\n addRowBoundary(newFocusedRow ?? state.focusedRow ?? 0, state) * 2,\n ) / 2;\n const actualNewFocusedColumn = addColumnBoundary(\n newFocusedColumn ?? state.focusedColumn,\n state,\n );\n\n state.focusedColumn = actualNewFocusedColumn;\n state.focusedRow = actualNewFocusedRow;\n state.isFocused = shouldSelectNewFocused ?? false;\n\n if (shouldSelectNewFocused === false || actualNewFocusedRow < 0) return;\n\n if (Math.round(actualNewFocusedRow) - actualNewFocusedRow !== 0)\n actualNewFocusedRow = Math.floor(actualNewFocusedRow);\n\n const isDeselectingWithCtrl =\n ctrlKey && state.selectedRows.includes(actualNewFocusedRow);\n\n if (state.allowSelection !== false)\n if (\n (!ctrlKey && !shiftKey) ||\n (state.isMultiple === false && !isDeselectingWithCtrl)\n )\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n else if ((ctrlKey && state.isMultiple) || isDeselectingWithCtrl) {\n state.selectedRows = filterNonSellectableRows(\n state,\n state.selectedRows.includes(actualNewFocusedRow)\n ? state.selectedRows.filter(\n (current) => current !== actualNewFocusedRow,\n )\n : [...state.selectedRows, actualNewFocusedRow],\n );\n } else if (shiftKey && state.isMultiple) {\n const sortedSelectedRows = [...state.selectedRows].sort((a, b) => a - b);\n let minSelectedRow = sortedSelectedRows[0];\n let maxSelectedRow = sortedSelectedRows[sortedSelectedRows.length - 1];\n\n if (minSelectedRow === undefined) {\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n return;\n }\n\n if (actualNewFocusedRow < minSelectedRow)\n minSelectedRow = actualNewFocusedRow;\n if (actualNewFocusedRow > maxSelectedRow)\n maxSelectedRow = actualNewFocusedRow;\n\n const newSelectedRows = filterNonSellectableRows(\n state,\n new Array(maxSelectedRow - minSelectedRow + 1)\n .fill('')\n .map((_, i) => i + (minSelectedRow ?? 0)),\n );\n\n state.selectedRows = filterNonSellectableRows(state, newSelectedRows);\n }\n}\n","import { Draft } from '@apia/store';\nimport React from 'react';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\n/**\n * Este método es de uso interno y normalmente\n * no será necesario fuera de este documento,\n * su utilidad es la de determinar si un evento\n * de teclado será controlado por el keyHandler.\n */\nexport function willHandleKey(\n ev: React.KeyboardEvent,\n state: ISelectableState,\n) {\n const actualKey = ev.key.toLowerCase();\n if (state.isEditionMode) return false;\n\n if (actualKey === ' ' && ev.ctrlKey) return true;\n if (actualKey === 'a' && ev.ctrlKey) return true;\n if (actualKey === 'm' && ev.ctrlKey) return true;\n if (state.draggingRow !== undefined) {\n return ['Escape', 'Enter'].includes(ev.key);\n }\n return [\n 'arrowup',\n 'arrowdown',\n 'arrowleft',\n 'arrowright',\n 'end',\n 'enter',\n 'home',\n 'pageup',\n 'pagedown',\n ].includes(ev.key.toLowerCase());\n}\n\n/**\n * Este método será llamado normalmente desde un action\n * de Redux. Su utilidad es la de evaluar qué tecla\n * se presionó y decidir qué alteración se debe producir\n * en base a eso.\n */\nexport function handleKey(state: Draft<ISelectableState>, { ev }: THandleKey) {\n const {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n key,\n shiftKey: isShiftPressed,\n } = ev;\n if (willHandleKey(ev, state)) ev.preventDefault();\n const actualKey = key.toLowerCase();\n const setFocus = ({\n newFocusedColumn,\n newFocusedRow,\n ...rest\n }: Partial<INewFocus>) =>\n setNewFocused(state, {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n shiftKey: isShiftPressed,\n newFocusedColumn,\n newFocusedRow,\n ...rest,\n });\n\n if (!state.isEditionMode) {\n if (\n actualKey === 'enter' &&\n (state.allowEdition === true || state.focusedRow < 0)\n )\n state.isEditionMode = true;\n else\n switch (actualKey) {\n case 'arrowup': {\n let sumRate = state.expandedRows.includes(state.focusedRow - 1)\n ? 0.6\n : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow - sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowdown': {\n let sumRate = state.expandedRows.includes(state.focusedRow) ? 0.6 : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow + sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowleft':\n case 'arrowright': {\n setFocus({\n newFocusedColumn:\n state.focusedColumn + (actualKey === 'arrowleft' ? -1 : 1),\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'home': {\n if (isCtrlPressed)\n setFocus({ newFocusedColumn: 0, newFocusedRow: 0, ctrlKey: false });\n else setFocus({ newFocusedColumn: 0 });\n break;\n }\n case 'end': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: Number.POSITIVE_INFINITY,\n newFocusedColumn: Number.POSITIVE_INFINITY,\n ctrlKey: false,\n });\n else\n setFocus({\n newFocusedColumn: Number.POSITIVE_INFINITY,\n });\n break;\n }\n case 'pageup': {\n setFocus({\n newFocusedRow: state.focusedRow - 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'pagedown': {\n setFocus({\n newFocusedRow: state.focusedRow + 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case ' ': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: state.focusedRow,\n });\n break;\n }\n case 'a': {\n if (isCtrlPressed && state.allowSelection)\n state.selectedRows = state.rows.map((_, i) => i);\n break;\n }\n default:\n break;\n }\n } else\n switch (actualKey) {\n case 'escape':\n case 'enter': {\n if (state.isEditionMode) state.isEditionMode = false;\n ev.stopPropagation();\n break;\n }\n default:\n break;\n }\n}\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box, BoxProps } from '@apia/theme';\nimport {\n autoDisconnectMutationObserver,\n customEvents,\n getFocusSelector,\n getSpecificParent,\n globalFocus,\n isChild,\n cantFocusSelector,\n scrollParentIntoElement,\n useLatest,\n useUpdateEffect,\n} from '@apia/util';\nimport { ThrottleOptions } from 'ahooks/lib/useThrottle/throttleOptions';\nimport { useThrottleFn } from 'ahooks';\nimport { TUpdateByClickPayload } from './getReduxActions';\nimport { willHandleKey } from './handleKey';\nimport { INewFocus, ISelectableState, THandleKey, TUseDomProps } from './types';\nimport {\n TResponsiveTableRow,\n TResponsiveTableRowsSelectionEvent,\n} from '../../types';\nimport { responsiveTableStore, useResponsiveTable } from '..';\n\nexport function shoutKeyhandlerLive(\n liveType: 'reset' | 'howToStartDrag' | 'howToEndDrag' | 'whichIsTheNewIndex',\n additionalData?: {\n newIndex: number;\n },\n) {\n console.warn('Not implemented arialiveemitter', additionalData);\n switch (liveType) {\n /* case 'howToEndDrag':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_END_DRAG,\n });\n break;\n case 'whichIsTheNewIndex':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n * message:\n * formatMessage(window.ARIA_HOW_TO_WHICH_IS_THE_NEW_POSITION, {\n TOK1: String(additionalData?.newIndex ?? 0),\n }),\n });\n break;\n case 'reset':\n AriaLiveEmitter.emit('live', {\n type: 'reset',\n message: '',\n });\n break;\n default:\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_START_DRAG,\n }); */\n default:\n }\n}\n\nlet scrollTimeout: number;\n/**\n * Devuelve un elemento KeyHandler que puede usarse como\n * en el ejemplo.\n *\n * Su función es la de manejar los eventos de teclado y\n * ejecutar las acciones necesarias en el estado de la\n * grilla de acuerdo a la funcionalidad estándar de\n * usabilidad de grillas.\n *\n * @example\n *\n <KeyHandler>\n <table ... />\n </KeyHandler>\n */\nexport function makeKeyHandler(\n actions: {\n handleKey: (payload: THandleKey & { id: string }) => {\n payload: THandleKey & { id: string };\n type: string;\n };\n selectionStateUpdate: (\n payload: Partial<ISelectableState> & { id: string },\n ) => {\n payload: Partial<ISelectableState> & { id: string };\n type: string;\n };\n setNewFocused: (payload: INewFocus & { id: string }) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n swapFocusedRow?: (\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n },\n ) => {\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n };\n type: string;\n };\n updateByClick: (payload: TUpdateByClickPayload['payload']) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n },\n id: string,\n config: { throttleOptions?: ThrottleOptions; stateSelector: TUseDomProps },\n) {\n return function KeyHandler({\n children,\n onChangeSelection,\n onSelectRows,\n ...props\n }: BoxProps & {\n /**\n * Se emite un evento cada vez que el usuario modifica\n * la selección actual.\n */\n onChangeSelection?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n ) => unknown;\n onSelectRows?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n focusedIndex: number,\n ) => unknown;\n }) {\n const { run: keyHandler } = useThrottleFn<\n React.KeyboardEventHandler<HTMLDivElement>\n >((ev) => {\n if (!['shift', 'alt', 'control'].includes(ev.key.toLowerCase())) {\n responsiveTableStore.dispatch(actions.handleKey({ id, ev }));\n }\n }, config?.throttleOptions ?? { wait: 100 });\n\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\n\n const selectedRows = useResponsiveTable(\n (global) => {\n const state = config.stateSelector(global);\n return (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n },\n (a, b) =>\n shallowEqual(\n a.map((current) => current.index),\n b.map((current) => current.index),\n ),\n );\n const selectedRowsRef = useLatest(selectedRows);\n const focusedRow = useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return state?.focusedRow ?? -1;\n });\n const { allowKeyboardSorting, focusedCell, isEditionMode, isFocused } =\n useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return {\n focusedCell:\n state?.focusedRow !== undefined\n ? `${state?.focusedRow}_${state?.focusedColumn}`\n : undefined,\n isEditionMode: state?.isEditionMode,\n rows: state?.rows,\n isFocused: state?.isFocused,\n allowKeyboardSorting: state?.allowRowsKeyboardSorting,\n };\n }, shallowEqual);\n useUpdateEffect(() => {\n if (onChangeSelection) onChangeSelection(selectedRows);\n }, [onChangeSelection, selectedRows]);\n\n const handleClick = React.useCallback(\n (ev: MouseEvent | FocusEvent | Event) => {\n if ((ev.target as HTMLElement).closest('.moreInformationButton'))\n return;\n\n if ((ev as MouseEvent).shiftKey) {\n document.getSelection()?.removeAllRanges();\n }\n const parentRow = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('tr')) {\n return true;\n }\n return false;\n },\n );\n const parentCell = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('td,th')) {\n return true;\n }\n return false;\n },\n );\n if (parentCell && parentRow) {\n responsiveTableStore.dispatch(\n actions.updateByClick({\n altKey: (ev as MouseEvent).altKey,\n id,\n ctrlKey: (ev as MouseEvent).ctrlKey,\n ariaColIndex: Number(parentCell.getAttribute('aria-colindex')),\n rowIndex: Number(parentRow.getAttribute('data-focusindex')),\n shiftKey: (ev as MouseEvent).shiftKey,\n }),\n );\n }\n },\n [],\n );\n const handleDoubleClick = React.useCallback(\n (ev: MouseEvent) => {\n if (\n isChild(\n ev.target as HTMLElement,\n (current) => current.tagName === 'THEAD',\n )\n )\n return;\n ev.preventDefault();\n if (onSelectRows)\n onSelectRows(\n selectedRowsRef.current,\n config.stateSelector(responsiveTableStore.getState()).focusedRow,\n );\n },\n [onSelectRows, selectedRowsRef],\n );\n\n const initialized = React.useRef(true);\n\n const running = React.useRef(false);\n const doFocusThings = React.useCallback(() => {\n if (!running.current) {\n running.current = true;\n if (focusedCell === undefined) {\n running.current = false;\n return () => {};\n }\n\n if (ref) {\n const disconnectObserver = autoDisconnectMutationObserver(\n ref,\n () => {\n scrollTimeout = setTimeout(() => {\n const focusedElement = ref.querySelector(\n '[data-focused=\"true\"]',\n );\n\n let tableCellElement: HTMLElement | null = null;\n let tableCellWidget: HTMLElement | null = null;\n\n if (\n ['td', 'th'].includes(\n focusedElement?.tagName.toLowerCase() ?? '',\n )\n ) {\n tableCellElement = focusedElement as HTMLElement;\n tableCellWidget = focusedElement?.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement;\n }\n\n if (focusedElement?.tagName.toLowerCase() === 'tr') {\n tableCellElement = focusedElement.querySelector('td,th');\n tableCellWidget =\n (focusedElement.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement) || tableCellElement;\n }\n\n if (tableCellWidget) {\n tableCellElement?.setAttribute('tabIndex', '-1');\n tableCellWidget.setAttribute('tabIndex', '0');\n } else tableCellElement?.setAttribute('tabIndex', '0');\n\n if (!isEditionMode) {\n const allFocusableElements = ref?.querySelectorAll(\n getFocusSelector(\n `${cantFocusSelector}:not([data-focused=\"true\"])`,\n ),\n );\n allFocusableElements?.forEach((current) => {\n if (current !== tableCellWidget) {\n current.setAttribute('tabIndex', '-1');\n }\n if (tableCellWidget?.tagName === 'BUTTON')\n tableCellWidget.setAttribute('role', 'gridcell');\n });\n } else {\n const focusableElements =\n tableCellElement?.querySelectorAll('[tabindex=\"-1\"]');\n\n focusableElements?.forEach((current) =>\n current.setAttribute('tabIndex', '0'),\n );\n }\n\n const focusElement = tableCellWidget ?? tableCellElement;\n const row = getSpecificParent(\n focusElement,\n (current) => current.tagName === 'TR',\n );\n\n if (\n focusElement &&\n initialized.current &&\n config.stateSelector(responsiveTableStore.getState())\n .isFocused\n ) {\n globalFocus.focus = focusElement;\n\n focusElement.focus();\n }\n\n if (row) {\n scrollParentIntoElement(row, 55, 2, 100, 'makeKeyHandler');\n }\n\n if (!initialized.current) {\n initialized.current = true;\n }\n }, 0) as unknown as number;\n },\n { timeout: 5000 },\n );\n\n running.current = false;\n return () => {\n disconnectObserver();\n clearTimeout(scrollTimeout);\n };\n }\n running.current = false;\n }\n return () => {};\n }, [focusedCell, ref, isEditionMode]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(doFocusThings, [\n focusedCell,\n isFocused,\n isEditionMode,\n ]);\n React.useEffect(() => {\n function handleFocus(ev: FocusEvent) {\n const targetTable = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n const relatedTargetTable = getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n\n if (!relatedTargetTable || relatedTargetTable !== targetTable)\n handleClick(ev);\n }\n\n ref?.addEventListener('dblclick', handleDoubleClick);\n ref?.addEventListener('mousedown', handleClick);\n ref?.addEventListener('focusin', handleFocus);\n ref?.addEventListener(customEvents.focus, handleClick);\n return () => {\n ref?.removeEventListener('mousedown', handleClick);\n ref?.removeEventListener('dblclick', handleDoubleClick);\n ref?.removeEventListener('focusin', handleFocus);\n ref?.removeEventListener(customEvents.focus, handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n\n const isDragging = React.useRef(false);\n const isFocusedRef = React.useRef(false);\n\n return (\n <Box\n ref={setRef}\n {...props}\n className={`selection__keyHandler ${props.className ?? ''}`}\n onBlur={React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n !ev.relatedTarget ||\n !getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current === ref,\n )\n ) {\n responsiveTableStore.dispatch(\n actions.selectionStateUpdate({ id, isFocused: false }),\n );\n shoutKeyhandlerLive('reset');\n isFocusedRef.current = false;\n }\n },\n [ref],\n )}\n onFocus={React.useCallback(() => {\n if (!isFocusedRef.current) shoutKeyhandlerLive('howToStartDrag');\n isFocusedRef.current = true;\n }, [])}\n sx={React.useMemo(\n () => ({ overflow: 'auto', position: 'relative' }),\n [],\n )}\n onKeyDown={React.useCallback<\n React.KeyboardEventHandler<HTMLDivElement>\n >(\n (ev) => {\n const state = config.stateSelector(responsiveTableStore.getState());\n\n if (\n willHandleKey(\n ev,\n config.stateSelector(responsiveTableStore.getState()),\n )\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (\n actions.swapFocusedRow &&\n isDragging.current &&\n allowKeyboardSorting\n ) {\n if (\n (ev.key === 'Enter' || ev.key === 'Escape') &&\n isDragging.current\n ) {\n shoutKeyhandlerLive('howToStartDrag');\n isDragging.current = false;\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else if (['ArrowDown', 'ArrowUp'].includes(ev.key)) {\n if (ev.key === 'ArrowDown') {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow + 1,\n }),\n );\n } else {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow - 1,\n }),\n );\n }\n }\n } else if (\n ev.key === 'm' &&\n ev.ctrlKey &&\n !isDragging.current &&\n state.focusedRow >= 0 &&\n actions.swapFocusedRow\n ) {\n isDragging.current = true;\n shoutKeyhandlerLive('howToEndDrag');\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else {\n const currentSelectedRows = (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n if (props.onKeyDown) props.onKeyDown(ev);\n if (ev.key === 'Enter' && onSelectRows && state.focusedRow >= 0) {\n onSelectRows(currentSelectedRows, state.focusedRow);\n }\n keyHandler(ev);\n }\n },\n [allowKeyboardSorting, keyHandler, onSelectRows, props],\n )}\n >\n {children}\n </Box>\n );\n };\n}\n","import type { Draft, PayloadAction } from '@apia/store';\nimport type { TRequireOnlyOne } from '@apia/util';\nimport { handleKey } from './handleKey';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\ntype TState = Draft<Record<string, ISelectableState>>;\n\nexport type TPayloadWithId<\n P = Record<string, unknown>,\n T extends string = string,\n M = never,\n E = never,\n> = PayloadAction<P & { id: string }, T, M, E>;\n\nexport type THandleKeyPayload = TPayloadWithId<THandleKey>;\nexport type TSelectionStateUpdatePayload = TPayloadWithId<\n Partial<ISelectableState>\n>;\nexport type TSetNewFocusedPayload = TPayloadWithId<INewFocus>;\nexport type TUpdateByClickPayload = TPayloadWithId<\n TRequireOnlyOne<{ ariaRowIndex: number; rowIndex: number }> &\n TRequireOnlyOne<{ ariaColIndex?: number; colIndex: number }> &\n Pick<INewFocus, 'altKey' | 'ctrlKey' | 'shiftKey' | 'isFocused'>\n>;\n\nexport function getReduxActions() {\n return {\n handleKey(state: TState, { payload }: THandleKeyPayload) {\n handleKey(state[payload.id], payload);\n },\n selectionStateUpdate(\n state: TState,\n { payload: { id, ...payload } }: TSelectionStateUpdatePayload,\n ) {\n state[id] = { ...state[id], ...payload };\n },\n setNewFocused(\n state: TState,\n { payload: { id, ...payload } }: TSetNewFocusedPayload,\n ) {\n setNewFocused(state[id], payload);\n },\n updateByClick(\n state: TState,\n {\n payload: {\n id,\n colIndex,\n rowIndex,\n ariaColIndex,\n ariaRowIndex,\n isFocused,\n ...payload\n },\n }: TUpdateByClickPayload,\n ) {\n const hasFiltersRow = state[id].hasNonAdditionalFilters;\n state[id].isEditionMode = false;\n\n const newFocusedColumn = colIndex ?? ariaColIndex ?? 1;\n const newFocusedRow =\n ariaRowIndex !== undefined\n ? ariaRowIndex\n : (rowIndex ?? 0) - (1 + (hasFiltersRow ? 2 : 1));\n\n setNewFocused(state[id], {\n ...payload,\n newFocusedColumn,\n newFocusedRow,\n });\n\n if (isFocused !== undefined) state[id].isFocused = isFocused;\n },\n };\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { createSlice, injectReducers } from '@apia/store';\nimport {\n TResponsiveTableAction,\n TResponsiveTableIndexColumns,\n TResponsiveTableSlice,\n TResponsiveTableState,\n} from './types';\nimport { getInitialState as selectionGetInitialState } from './selection/getInitialState';\nimport { setNewFocused } from './selection/setNewFocused';\nimport { TResponsiveTableRow } from '../types';\nimport { shoutKeyhandlerLive } from './selection/makeKeyHandler';\nimport { getReduxActions } from './selection/getReduxActions';\n\nfunction getInitialState(): TResponsiveTableState {\n const newState: TResponsiveTableState = {\n ...selectionGetInitialState(),\n allowSelection: true,\n allowSorting: true,\n filters: [],\n isLoading: false,\n isMultiple: true,\n accordionIndexColumns: {} as TResponsiveTableIndexColumns,\n expandedRows: [],\n };\n\n return newState;\n}\n\nconst responsiveTableSlice = createSlice({\n name: 'responsiveTableSlice',\n initialState: {} as TResponsiveTableSlice,\n reducers: {\n update(\n state,\n {\n payload: { tableName, ...rest },\n }: TResponsiveTableAction<\n Partial<TResponsiveTableState> & { isFocused?: boolean }\n >,\n ) {\n if (!state[tableName]) state[tableName] = getInitialState();\n state[tableName] = { ...state[tableName], ...rest };\n setNewFocused(state[tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: rest.isFocused ?? state[tableName].isFocused,\n });\n\n if (rest.columns) {\n state[tableName].nonAdditionalColumnsCount = rest.columns.filter(\n (current) => !current.showAsAdditional,\n ).length;\n }\n\n if (rest.rows) {\n state[tableName].statesColumns = Math.max(\n state[tableName]?.reserveColumnsForStates ?? 0,\n ...(state[tableName]?.rows?.map(\n (current) => current.states?.length ?? 0,\n ) ?? [0]),\n );\n }\n\n if (rest.filters) {\n state[tableName].hasNonAdditionalFilters =\n rest.filters.filter(\n (current) =>\n !current.asAdditional &&\n (rest.columns ?? state[tableName].columns)?.find(\n (search) => search.name === current.column,\n ),\n ).length > 0;\n }\n },\n addRows(\n state,\n { payload }: TResponsiveTableAction<{ newRows: TResponsiveTableRow[] }>,\n ) {\n if (!state[payload.tableName])\n state[payload.tableName] = getInitialState();\n state[payload.tableName].rows = state[payload.tableName].rows.concat(\n ...payload.newRows,\n );\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: state[payload.tableName].rows.length,\n });\n },\n deleteRows(\n state,\n { payload }: TResponsiveTableAction<{ rowIndices: number[] }>,\n ) {\n const table = state[payload.tableName];\n const minIndex = payload.rowIndices.reduce((min, current) => {\n return current < min ? current : min;\n }, Infinity);\n table.rows = table.rows.filter(\n (_, index) => !payload.rowIndices.includes(index),\n );\n\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: minIndex,\n });\n state[payload.tableName].isFocused = false;\n },\n destroy(state, { payload: { tableName } }: TResponsiveTableAction) {\n delete state[tableName];\n },\n swapFocusedRow(\n state,\n {\n payload: { newIndex, tableName },\n }: TResponsiveTableAction<{ newIndex: number }>,\n ) {\n const tableState = state[tableName];\n const focusedIndex = tableState.focusedRow;\n\n if (\n focusedIndex === undefined ||\n newIndex < 0 ||\n newIndex >= tableState.rows.length\n )\n return;\n\n if (focusedIndex === newIndex) {\n if (tableState.draggingRow === newIndex)\n tableState.draggingRow = undefined;\n else tableState.draggingRow = newIndex;\n return;\n }\n\n shoutKeyhandlerLive('whichIsTheNewIndex', { newIndex });\n\n const isSelected = tableState.selectedRows.includes(focusedIndex);\n\n if (isSelected) {\n tableState.selectedRows = [\n ...tableState.selectedRows.filter(\n (current) => current !== focusedIndex,\n ),\n newIndex,\n ];\n }\n\n const aux = tableState.rows[newIndex];\n tableState.rows[newIndex] = tableState.rows[focusedIndex];\n tableState.rows[focusedIndex] = aux;\n\n tableState.focusedRow = newIndex;\n tableState.draggingRow = newIndex;\n },\n\n // Rows selection\n ...getReduxActions(),\n },\n});\n\nexport const { store: responsiveTableStore, useSelector: useResponsiveTable } =\n injectReducers({\n responsiveTableSlice: responsiveTableSlice.reducer,\n });\n\nexport const responsiveTableActions = responsiveTableSlice.actions;\n","import { useMount, useUnmount, useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n defaultLabels,\n TResponsiveTableContext,\n TResponsiveTableContextProps,\n} from './types';\nimport { responsiveTableActions, responsiveTableStore } from './store';\nimport { ResponsiveTable } from './ResponsiveTable';\nimport { getVariant } from '@apia/theme';\n\nexport const ResponsiveTableReactContext =\n React.createContext<TResponsiveTableContext>({} as TResponsiveTableContext);\n\nexport function useResponsiveTableContext() {\n const context = React.useContext(ResponsiveTableReactContext);\n if (!context) throw new Error('There is no ResponsiveTableContext');\n return context;\n}\n\n/**\n * Este contexto busca facilitar la tarea de centralizar las\n * propiedades y callbacks asociados a la tabla, de forma de\n * evitar la necesidad de distribuir comportamientos.\n *\n * **MUY IMPORTANTE**\n * Asegurarse de memoizar las propiedades rows, filters y\n * columns, ya que en caso contrario eso va a disparar\n * actualizaciones en el responsiveTableStore cada vez que el padre del\n * contexto renderice.\n *\n */\nconst NoMemoResponsiveTableContext = ({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n avoidReparseSelectionOnRowChange,\n children = <ResponsiveTable />,\n className,\n currentBreakPoint,\n customLabels,\n columns,\n filters,\n rows,\n label,\n isMultiple,\n name,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n reserveColumnsForStates,\n variant,\n}: TResponsiveTableContextProps) => {\n const actualName = React.useMemo(\n () => name ?? uniqueId('responsiveTable'),\n [name],\n );\n const labels = React.useMemo(\n () => ({ ...defaultLabels, ...customLabels }),\n [customLabels],\n );\n const contextValue = React.useMemo<TResponsiveTableContext>(\n () => ({\n currentBreakPoint,\n label,\n labels,\n name: actualName,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n }),\n [\n actualName,\n currentBreakPoint,\n label,\n labels,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n ],\n );\n\n useMount(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n columns,\n filters: filters ?? [],\n rows,\n isMultiple,\n tableName: actualName,\n reserveColumnsForStates,\n }),\n );\n });\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n columns,\n }),\n );\n }, [columns]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n rows,\n }),\n );\n if (avoidReparseSelectionOnRowChange !== true) {\n const selected = rows\n .map((current, i) => ({ ...current, i }))\n .filter((current) => current.initiallySelected);\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n selectedRows: selected.map((current) => current.i),\n }),\n );\n }\n }, [rows]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n filters,\n }),\n );\n }, [filters]);\n\n useUnmount(() => {\n /* responsiveTableStore.dispatch(\n responsiveTableActions.destroy({ tableName: actualName }),\n ); */\n });\n\n return (\n <ResponsiveTableReactContext.Provider value={contextValue}>\n <Box\n id={name}\n className={`responsiveTableContext__wrapper ${className ?? ''}`}\n {...(variant ? getVariant(variant) : null)}\n >\n {children}\n </Box>\n </ResponsiveTableReactContext.Provider>\n );\n};\n\nexport const ResponsiveTableContext = React.memo(NoMemoResponsiveTableContext);\n","import React from 'react';\nimport { BoxProps } from '@apia/theme';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { makeKeyHandler } from './store/selection/makeKeyHandler';\nimport { responsiveTableActions } from './store';\n\nexport interface IKeyHandler {\n children: React.ReactNode;\n}\n\nconst NoMemoKeyHandler = (props: BoxProps) => {\n const { name, onChangeSelection, onSelectRows } = useResponsiveTableContext();\n\n const Handler = React.useMemo(\n () =>\n makeKeyHandler(responsiveTableActions, name, {\n throttleOptions: { wait: 50 },\n stateSelector: (global) => global.responsiveTableSlice[name],\n }),\n [name],\n );\n\n return (\n <Handler\n onChangeSelection={onChangeSelection}\n onSelectRows={onSelectRows}\n {...props}\n />\n );\n};\n\nexport const KeyHandler = React.memo(NoMemoKeyHandler);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { addBoundary } from '@apia/util';\nimport { TDomProps, IRequiredDomProps, TUseDomProps } from './types';\nimport { useResponsiveTable } from '..';\n\n/**\n * Este hook extrae según el estado de la tabla actual\n * y el nombre del elemento al que se le desean calcular\n * los atributos que deben mostrarse en el dom para\n * cumplir con las reglas de accesibilidad.\n *\n * @param element Es el nombre del elemento\n *\n * @param elementProps Las propiedades necesarias que se\n * deben suministrar para lograr un cálculo apropiado de\n * las propiedades que deben mostrarse.\n *\n * @param stateSelector Es una función que acepta el estado\n * global de la aplicación y devuelve el estado de la tabla\n * actual. Este método es necesario ya que el useDomProps\n * no sabe contra qué slice va a trabajar.\n *\n * @returns un objeto que contiene las propiedades\n * del DOM que deben destructurarse en el elemento html.\n */\nexport function useDomProps<ElementType extends keyof IRequiredDomProps>(\n element: ElementType,\n elementProps: IRequiredDomProps[typeof element],\n stateSelector: TUseDomProps,\n): TDomProps {\n const state = useResponsiveTable((globalState) => {\n const tableState = stateSelector(globalState);\n const hasNonAdditionalFilters = tableState?.hasNonAdditionalFilters;\n const startDataRowIndex = hasNonAdditionalFilters ? 2 : 1;\n\n const statesColumns = tableState?.statesColumns ?? 0;\n\n let expandedBeforeThisRow = 0;\n\n if (element === 'tr')\n expandedBeforeThisRow = tableState?.expandedRows.filter(\n (current) =>\n current < (elementProps as IRequiredDomProps['td']).rowIndex,\n ).length;\n\n let isFocused = false;\n let isSelected = false;\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n isFocused =\n tableState?.focusedRow === 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn ?? 0, 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n isFocused = !tableState\n ? false\n : (tableState.focusedRow === castedProps.rowIndex &&\n tableState?.focusedColumn === 0) ||\n (Math.floor(tableState?.focusedRow) === castedProps.rowIndex &&\n Math.round(tableState?.focusedRow) - tableState.focusedRow !==\n 0 &&\n !!castedProps.isTheExpandedRow);\n isSelected =\n !castedProps.isTheExpandedRow &&\n tableState?.selectedRows.includes(castedProps.rowIndex);\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['additionalTd'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) === 1;\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow ===\n castedProps.rowIndex - 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n isFocused =\n tableState?.focusedRow === 0 - startDataRowIndex &&\n addBoundary((tableState?.focusedColumn ?? 0) - statesColumns, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n isFocused = !tableState\n ? false\n : tableState.focusedRow === castedProps.rowIndex;\n break;\n }\n default:\n break;\n }\n\n return {\n columns: tableState?.columns ?? [],\n expandedBeforeThisRow,\n isEditionMode: tableState?.isEditionMode,\n hasNonAdditionalFilters,\n rowsLength: element === 'table' ? tableState?.rows.length : '',\n isSelected,\n isFocused,\n startDataRowIndex,\n statesColumns: tableState?.statesColumns,\n };\n }, shallowEqual);\n\n let returnObject: Omit<TDomProps, 'ref'> = React.useMemo(() => ({}), []);\n\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 2,\n };\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow,\n 'data-focusindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': false,\n };\n break;\n }\n case 'table': {\n returnObject = {\n role: 'treegrid',\n 'aria-colcount': state.columns.length,\n 'aria-rowcount': state.rowsLength,\n };\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow +\n (castedProps.isTheExpandedRow ? 1 : 0),\n 'data-focusindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n (castedProps.isTheExpandedRow ? 0.5 : 0),\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': castedProps.isThisRowExpanded,\n tabIndex: state.isFocused ? 0 : -1,\n };\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex': 1,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex,\n };\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'aria-sort': ['ascending', 'descending', undefined][\n ['Asc', 'Desc', null].findIndex(\n (current) =>\n current === state.columns[castedProps.columnIndex].currentSorting,\n )\n ] as 'none' | 'ascending' | 'descending' | 'other' | undefined,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 1,\n };\n break;\n }\n default:\n break;\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useMemo(() => returnObject, Object.values(returnObject));\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { FaSortUp, FaSortDown, FaSort } from '@meronex/icons/fa';\nimport React, { CSSProperties } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport {\n EventEmitter,\n TMap,\n debugDispatcher,\n getSpecificParent,\n isChild,\n persistentStorage,\n} from '@apia/util';\nimport { AutoEllipsis, useOtherTagButton } from '@apia/components';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { TResponsiveTableSortValue } from './types';\nimport { useResponsiveTable } from './store';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IHeaderCell {\n /**\n * Para ordenar en Apia se usa un índice de columna, que se\n * corresponde con su posición en base 0, sin tomar en cuenta\n * las columnas adicionales.\n */\n apiaColumnIndex: number;\n columnIndex: number;\n inTableColumnIndex: number;\n}\n\nconst widthStorageName = 'tablesWidths';\n\n/**\n * Calcula el ancho de la columna dependiendo del valor establecido,\n * si el valor es numérico o un string que contiene un número sin\n * unidad, devuelve el doble de ese número para establecer una\n * relatividad con los tamaños de las columnas actuales en Apia.\n *\n * Es decir, como todo en Apia era más chico, los tamaños que se\n * establecían antes no quedan visualmente agradables con los\n * tamaños actuales, por eso se magnifican multiplicando por 2.\n */\nfunction getColumnWidth(width?: string | number) {\n if (typeof width === 'string') {\n if (width.match(/(%|px|vw|vh|vmin|vmax|cm|mm|in|pt|pc)/)) return width;\n if (width === '') return 'auto';\n const numberValue = Number.parseInt(width, 10);\n if (isNaN(numberValue)) return 'auto';\n return numberValue;\n }\n if (typeof width === 'number') return width;\n return width;\n}\ndebugDispatcher.on(\n 'cleanTableSizes',\n ([tableName]) => {\n const currentWidths = persistentStorage[widthStorageName] as TMap<unknown>;\n delete currentWidths[tableName as string];\n persistentStorage[widthStorageName] = currentWidths;\n },\n 'Se usa para borrar el estado de una tabla. Uso: dd.cleanTableSizes(\"TableName\")',\n);\nfunction makeColumnName(tableName: string, columnName: string): string {\n return `${tableName}${columnName}`;\n}\n\nconst thWidthEmitter = new (class ThWidthEmitter extends EventEmitter<{\n resize: { name: string; width: number };\n}> {})();\n\nconst NoMemoHeaderCell = ({\n apiaColumnIndex,\n columnIndex,\n inTableColumnIndex,\n}: IHeaderCell) => {\n const { name, onSortChange } = useResponsiveTableContext();\n const uniqueId =\n (window.location.href.match(/busEntId=(\\d+)/)?.[1] as string) ??\n (window.location.href.match(/query=(\\d+)/)?.[1] as string) ??\n '';\n const isGlobal = window.isGlobal ? 'isGlobal' : 'notGlobal';\n const actualName = name + uniqueId + String(isGlobal);\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n const storedWidth = (\n (persistentStorage[widthStorageName] as TMap<unknown>)?.[\n actualName\n ] as TMap<unknown>\n )?.[column.name] as number;\n\n const [width, setWidth] = React.useState(storedWidth ?? 200);\n const [isResize, setIsResize] = React.useState(storedWidth !== undefined);\n\n React.useEffect(() => {\n return void thWidthEmitter.on('resize', (ev) => {\n if (ev.name === makeColumnName(actualName, column.name)) {\n setIsResize(true);\n setWidth(ev.width);\n }\n });\n }, [column.name, actualName]);\n\n const isFilterRequired = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n const columnFilter = tableState?.filters.find(\n (current) => current.column === column.title,\n );\n return columnFilter?.required;\n }, shallowEqual);\n\n const isSortingAllowed = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.allowSorting;\n });\n\n const domProps = useDomProps(\n 'th',\n {\n columnIndex: inTableColumnIndex,\n },\n domPropsSelector(name),\n );\n\n const sx: CSSProperties = React.useMemo(\n () =>\n !isResize\n ? {\n minWidth: getColumnWidth(column.minWidth ?? column.width),\n maxWidth:\n column.maxWidth !== undefined\n ? getColumnWidth(column.maxWidth)\n : undefined,\n width: getColumnWidth(column.width),\n position: 'relative',\n }\n : {\n width: `${width}px`,\n minWidth: `${width}px`,\n position: 'relative',\n },\n [column.maxWidth, column.minWidth, column.width, isResize, width],\n );\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'headButton',\n onClick: (ev) => {\n if (\n isChild(ev.target as HTMLElement, (current) =>\n current.classList.contains('headButton__resizer'),\n )\n )\n return;\n\n console.warn('Buttons slice is not defined');\n /* if (\n responsiveTableStore\n .getState()\n .buttonsSlice.performingActions.includes('disableTable')\n )\n return; */\n if (\n onSortChange &&\n column.allowSorting !== false &&\n isSortingAllowed !== false\n )\n onSortChange({\n column,\n columnIndex: apiaColumnIndex,\n name: column.name,\n sortValue: ['Asc', 'Desc'][\n column.currentSorting !== 'A' ? 0 : 1\n ] as TResponsiveTableSortValue,\n });\n },\n }),\n [apiaColumnIndex, column, isSortingAllowed, onSortChange],\n ),\n );\n return (\n <Box\n as=\"th\"\n style={sx}\n data-columnname={column.name}\n title={column.title ?? column.label ?? column.name}\n {...buttonProps}\n {...domProps}\n role=\"rowheader\"\n className={`${\n isFilterRequired && window.SHOW_REQUIRED_POSITION\n ? 'requiredFilterColumn'\n : ''\n }`}\n >\n <Box as=\"span\" className=\"headButton__container\">\n <Box\n as=\"span\"\n className={`${\n isFilterRequired ? 'requiredFilter__Column' : ''\n } headButton__label`}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const th = el.closest('th') as HTMLElement;\n return {\n width: `${Math.max(\n 100,\n Number.parseInt(window.getComputedStyle(th).width),\n )}px`,\n };\n }}\n >\n {column.label}\n </AutoEllipsis>\n </Box>\n <Box as=\"span\" className=\"headButton__sortIcon\">\n {column.allowSorting !== false && column.currentSorting === 'A' && (\n <FaSortUp />\n )}\n {column.allowSorting !== false && column.currentSorting === 'D' && (\n <FaSortDown />\n )}\n {column.allowSorting !== false && !column.currentSorting && (\n <FaSort />\n )}\n </Box>\n <Box\n // sx={{ display: 'none' }}\n className=\"headButton__resizer\"\n onMouseDown={(ev) => {\n if (!isResize) {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n\n trElement?.querySelectorAll('th').forEach((current) => {\n thWidthEmitter.emit('resize', {\n name: makeColumnName(\n actualName,\n current.dataset.columnname as string,\n ),\n width: (current as HTMLElement).clientWidth,\n });\n });\n\n setIsResize(true);\n }\n\n const th = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TH',\n );\n if (!th) throw new Error('There is no th');\n\n const initialX = ev.clientX;\n const initialWidth = th.clientWidth;\n\n const resize = (mousemoveEv: MouseEvent) => {\n const dif = mousemoveEv.clientX - initialX;\n\n setWidth(initialWidth + dif);\n };\n const unsuscribe = () => {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n trElement?.querySelectorAll('th').forEach((current) => {\n persistentStorage[widthStorageName] = {\n ...(persistentStorage[widthStorageName] as TMap<unknown>),\n [actualName]: {\n ...((\n persistentStorage[widthStorageName] as TMap<unknown>\n )?.[actualName] as TMap<unknown>),\n [current.dataset.columnname as string]: (\n current as HTMLElement\n ).clientWidth,\n },\n };\n });\n document.removeEventListener('mousemove', resize);\n document.removeEventListener('mouseup', unsuscribe);\n };\n\n document.addEventListener('mousemove', resize);\n document.addEventListener('mouseup', unsuscribe);\n\n return false;\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const HeaderCell = React.memo(NoMemoHeaderCell);\n","import React from 'react';\nimport { getVariant } from '@apia/theme';\nimport { TResponsiveTableRowState } from '../types';\n\nconst NoMemoRowStatesRenderer = ({\n state,\n}: {\n state: TResponsiveTableRowState;\n}) => {\n const { Icon } = state;\n return (\n <Icon\n {...getVariant('inherit')}\n title={state.tooltip}\n className={`${state.className ?? 'state'}_icon state_icon`}\n sx={React.useMemo(\n () => ({\n '&, svg, path': {\n color: state.color ?? '',\n },\n }),\n [state.color],\n )}\n />\n );\n};\n\nexport const RowStatesRenderer = React.memo(NoMemoRowStatesRenderer);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { RowStatesRenderer } from './renderers/RowStatesRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { TResponsiveTableRowState } from './types';\nimport { Box } from '@apia/theme';\n\ninterface IStateCell {\n index: number;\n isHeader?: boolean;\n rowIndex: number;\n state?: TResponsiveTableRowState;\n}\n\nexport const StateCell = ({ index, rowIndex, state, isHeader }: IStateCell) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n isHeader ? 'headerStateCell' : 'stateCell',\n { columnIndex: index, rowIndex },\n domPropsSelector(name),\n );\n return (\n <Box as=\"td\" className=\"stateCell\" {...domProps}>\n {state ? <RowStatesRenderer state={state} /> : ''}\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { TApiaFilter } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nconst NoMemoRangeFilter = ({ filter }: { filter: TApiaFilter }) => {\n const { onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const filterLow: TApiaFilter = {\n id: filter.id,\n currentValue: filter.currentValue,\n type: 'number',\n };\n const filterHigh: TApiaFilter = {\n id: filter.filterToId ?? '',\n currentValue: filter.filterToValue ?? '',\n type: 'number',\n };\n return (\n <Box className=\"ApiaFilter__Range\">\n <Box className=\"ApiaFilter__Range__Low\">\n <ApiaFilter\n filter={filterLow}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterLow, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur) void onFilterBlur({ ...filterLow, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterLow, currentValue });\n }}\n />\n </Box>\n {' - '}\n <Box className=\"ApiaFilter__Range__High\">\n <ApiaFilter\n filter={filterHigh}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterHigh, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur)\n void onFilterBlur({ ...filterHigh, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterHigh, currentValue });\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const RangeFilter = NoMemoRangeFilter;\n","import { Input } from '@apia/theme';\nimport React from 'react';\nimport { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { RangeFilter } from './filters/RangeFilter';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IFilterCell {\n columnIndex: number;\n filter?: TApiaFilter;\n}\n\nexport const FilterCell = ({ columnIndex, filter }: IFilterCell) => {\n const { name, onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const domProps = useDomProps(\n 'filterTd',\n {\n columnIndex,\n },\n domPropsSelector(name),\n );\n\n const handleOnBlur = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterBlur) onFilterBlur({ ...filter, currentValue });\n },\n [filter, onFilterBlur],\n );\n\n const handleOnChange = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterChange)\n return onFilterChange({ ...filter, currentValue });\n return true;\n },\n [filter, onFilterChange],\n );\n\n const handleOnPressEnter = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterPressEnter)\n onFilterPressEnter({ ...filter, currentValue });\n },\n [filter, onFilterPressEnter],\n );\n\n function findFilter() {\n if (filter?.isRange) {\n return <RangeFilter filter={filter} />;\n }\n if (filter && !(filter.asAdditional || !filter.column || filter.isRange)) {\n return (\n <ApiaFilter\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n onPressEnter={handleOnPressEnter}\n filter={filter}\n />\n );\n }\n\n let label: string;\n if (filter && (filter.asAdditional || !filter.column || filter.isRange)) {\n label = window.LBL_ADDITIONAL_FILTER;\n } else {\n label = window.LBL_NO_COLUMN_FILTER;\n }\n\n return <Input aria-label={label} disabled />;\n }\n return <td {...domProps}>{findFilter()}</td>;\n};\n","import { useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React, { useState } from 'react';\nimport {\n customEvents,\n getLabel,\n persistentStorage,\n TApiaFilter,\n} from '@apia/util';\nimport { shallowEqual } from '@apia/store';\nimport { useOtherTagButton } from '@apia/components';\nimport { Icon } from '@apia/icons';\nimport { HeaderCell } from './HeaderCell';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useResponsiveTable } from './store';\nimport { StateCell } from './StateCell';\nimport { FilterCell } from './FilterCell';\n\ndeclare global {\n interface Window {\n focusedRow: number;\n focusedColumn: number;\n hasNonAdditionalFilters: boolean;\n }\n}\n\nconst NoMemoHeader = () => {\n const { name } = useResponsiveTableContext();\n const { columns, hasNonAdditionalFilters, focusedColumn, focusedRow } =\n useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n window.focusedRow = tableState?.focusedRow;\n window.focusedColumn = tableState?.focusedColumn;\n window.hasNonAdditionalFilters =\n tableState?.hasNonAdditionalFilters || false;\n return {\n columns: tableState?.columns ?? [],\n focusedColumn: tableState?.focusedColumn,\n focusedRow: tableState?.focusedRow,\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n\n const filters = useResponsiveTable<\n {\n columnIndex: number;\n definition: TApiaFilter;\n }[]\n >(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n const returnObject = (tableState?.filters ?? [])\n .map((current) => ({\n columnIndex: tableState.columns.findIndex(\n (search) => search.name === current.column,\n ),\n definition: current,\n }))\n .filter((current) => current.columnIndex >= 0);\n\n return returnObject;\n },\n (a, b) => {\n return (\n a.length === b.length &&\n a.reduce<boolean>((result, current, index) => {\n return (\n result && shallowEqual(current.definition, b[index].definition)\n );\n }, true)\n );\n },\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const additionalColumns = React.useMemo(\n () =>\n columns.reduce(\n (count, column) => count + (column.showAsAdditional ? 1 : 0),\n 0,\n ),\n [columns],\n );\n\n const statesIds = React.useMemo(() => {\n return Array(statesCount)\n .fill('')\n .map(() => uniqueId());\n }, [statesCount]);\n\n const [isFiltersRowVisible, setIsFiltersRowVisible] = React.useState<boolean>(\n /* (persistentStorage.showResponsiveTableFilters as boolean) ?? */ false,\n );\n React.useEffect(() => {\n persistentStorage.showResponsiveTableFilters = isFiltersRowVisible;\n }, [isFiltersRowVisible]);\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'additionalColumn',\n onClick: () => setIsFiltersRowVisible((current) => !current),\n }),\n [],\n ),\n );\n\n const [ref, setRef] = useState<HTMLTableRowElement | null>(null);\n\n useUpdateEffect(() => {\n const handleFocus = (ev: Event) => {\n ev.stopPropagation();\n setIsFiltersRowVisible(true);\n };\n ref?.addEventListener(customEvents.focus, handleFocus);\n return () => {\n ref?.removeEventListener(customEvents.focus, handleFocus);\n };\n }, [ref]);\n\n return (\n <thead>\n <tr data-focusindex={1}>\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <th\n aria-colindex={1}\n aria-rowindex={1}\n data-focused={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n }\n {...buttonProps}\n tabIndex={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n ? 0\n : -1\n }\n aria-label={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n role=\"presentation\"\n >\n {hasNonAdditionalFilters ? (\n <Icon\n className=\"filterButton\"\n name=\"Filter\"\n title={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n aria-label={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n />\n ) : (\n <span style={{ display: 'none' }}>\n {isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text}\n </span>\n )}\n </th>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={1} />\n ))}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualTableColumnIndex: actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n if (current.hidden) return null;\n\n return (\n <HeaderCell\n apiaColumnIndex={current.actualTableColumnIndex}\n columnIndex={current.actualTableColumnIndex}\n inTableColumnIndex={columnIndex}\n key={current.name}\n />\n );\n })}\n </tr>\n {filters.length > 0 && (\n <tr\n ref={setRef}\n data-focusindex={2}\n className={`responsiveTable__filters__row ${\n isFiltersRowVisible ? '' : 'hidden'\n }`}\n >\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <td\n className=\"noFilter\"\n aria-colindex={1}\n aria-rowindex={2}\n tabIndex={focusedColumn === 1 && focusedRow === -1 ? 0 : -1}\n data-focused={focusedColumn === 1 && focusedRow === -1}\n >\n &nbsp;\n </td>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={2} />\n ))}\n {columns\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n const filter = filters.find(\n (search) => search.definition.column === current.name,\n );\n\n return current.showAsAdditional ? null : (\n <FilterCell\n key={current.name}\n columnIndex={columnIndex}\n filter={filter?.definition}\n />\n );\n })}\n </tr>\n )}\n </thead>\n );\n};\n\nexport const Header = React.memo(NoMemoHeader);\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\n\nconst NoMemoAdditionalColumnDefaultRenderer = ({\n column,\n cell,\n}: TResponsiveTableCellRendererProps) => {\n return (\n <Box\n className={`${cell.className ?? ''} responsiveTable__additionalInfoItem`}\n id={cell.id}\n title={cell.title}\n >\n <Box as=\"strong\">{column.name}:</Box> {cell.children}\n </Box>\n );\n};\n\nexport const AdditionalColumnDefaultRenderer = React.memo(\n NoMemoAdditionalColumnDefaultRenderer,\n);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\n\nexport const SeparatorCell = ({\n colSpan,\n rowIndex,\n}: {\n colSpan: number;\n rowIndex: number;\n}) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'separator',\n { rowIndex },\n domPropsSelector(name),\n );\n return (\n <td className=\"row__separator__cell\" colSpan={colSpan} {...domProps} />\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TResponsiveTableRowRenderer,\n TResponsiveTableRowRendererProps,\n} from '../types';\n\nconst NoMemoDefaultRowRenderer: TResponsiveTableRowRenderer = React.forwardRef<\n HTMLTableRowElement,\n TResponsiveTableRowRendererProps\n>(({ row, rowIndex, ...props }, currentRef) => (\n <Box\n as={'tr' as any}\n sx={useMemo(\n () => ({\n '&.colored, & > *': {\n color: row.color,\n background: row.background,\n },\n }),\n [row.background, row.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableRowElement>}\n {...props}\n />\n));\n\nNoMemoDefaultRowRenderer.displayName = 'DefaultRowRenderer';\n\nexport const DefaultRowRenderer = NoMemoDefaultRowRenderer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { AutoEllipsis } from '@apia/components';\n\nconst NoMemoDefaultCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps\n>(\n (\n {\n cell: { Renderer, rendererProps, AccordionRenderer, ariaLabel, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <Box\n as={'td' as any}\n sx={useMemo(\n () => ({\n '&.colored': {\n background: cell.background,\n color: cell.color,\n fontWeight: 'bold',\n },\n }),\n [cell.background, cell.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n aria-label={ariaLabel as string}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const td = el.closest('td') as HTMLElement;\n\n return {\n width: window.getComputedStyle(td).width,\n };\n }}\n >\n {props.children ?? cell.children}\n </AutoEllipsis>\n </Box>\n ),\n);\nNoMemoDefaultCellRenderer.displayName = 'DefaultCellRenderer';\nexport const DefaultCellRenderer = NoMemoDefaultCellRenderer;\n","import React, { FC } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { DefaultCellRenderer } from './renderers/DefaultCellRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { useResponsiveTable } from './store';\n\ninterface ICell {\n columnIndex: number;\n inTableColumnIndex: number;\n rowIndex: number;\n}\n\nconst NoMemoCell: FC<ICell> = ({\n columnIndex,\n inTableColumnIndex,\n rowIndex,\n}) => {\n const { name } = useResponsiveTableContext();\n\n const domProps = useDomProps(\n 'td',\n { columnIndex: inTableColumnIndex, rowIndex },\n domPropsSelector(name),\n );\n\n const cell = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n\n return tableState?.rows[rowIndex]?.cells[columnIndex];\n }, shallowEqual);\n\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n\n const row = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.rows[rowIndex];\n }, shallowEqual);\n\n const Renderer = React.useMemo(\n () => cell?.Renderer ?? column.Renderer ?? DefaultCellRenderer,\n [cell?.Renderer, column.Renderer],\n );\n\n if (!Renderer || !cell)\n return row.separator ? <div className=\"separator\"></div> : null;\n\n return (\n <Renderer\n {...(domProps as Omit<React.HTMLProps<HTMLTableCellElement>, 'ref'>)}\n cell={cell}\n column={column}\n row={row}\n />\n );\n};\n\nexport const Cell = React.memo(NoMemoCell);\n","import { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { MdKeyboardArrowRight, MdKeyboardArrowDown } from '@meronex/icons/md/';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { getVariant } from '@apia/theme';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { TResponsiveTableCell, TResponsiveTableColumn } from './types';\nimport { AdditionalColumnDefaultRenderer } from './renderers/AdditionalColumnDefaultRenderer';\nimport { SeparatorCell } from './SeparatorCell';\nimport { DefaultRowRenderer } from './renderers/DefaultRowRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from './store';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { StateCell } from './StateCell';\nimport { Cell } from './Cell';\nimport { getLabel } from '@apia/util';\n\ninterface IRow {\n rowIndex: number;\n}\n\ntype TAdditionalCell = {\n cell: TResponsiveTableCell;\n column: TResponsiveTableColumn;\n columnIndex: number;\n};\n\nconst NoMemoRow = ({ rowIndex }: IRow) => {\n const { name } = useResponsiveTableContext();\n\n const { columns, hasNonAdditionalFilters } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns ?? [],\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n const row = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].rows[rowIndex],\n shallowEqual,\n );\n const additionalCells: TAdditionalCell[] = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState.columns\n .map((current, index) =>\n current.showAsAdditional\n ? {\n index,\n column: current,\n }\n : null,\n )\n .filter(\n (\n current,\n ): current is {\n index: number;\n column: TResponsiveTableColumn;\n } => !!current,\n )\n .map((current) => {\n return {\n cell: tableState.rows[rowIndex]?.cells[current.index],\n column: current.column,\n columnIndex: current.index,\n };\n });\n },\n (currentValue, newValue) => {\n return currentValue.reduce<boolean>(\n (accumulatedBoolean, currentCell, cellIndex) => {\n return (\n accumulatedBoolean && shallowEqual(currentCell, newValue[cellIndex])\n );\n },\n true,\n );\n },\n );\n const { isDragging, isExpanded, shouldForbidSelection } = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n isExpanded: tableState.expandedRows.includes(rowIndex),\n isDragging: tableState.draggingRow === rowIndex,\n shouldForbidSelection: tableState.rows[rowIndex]?.forbidSelection,\n };\n },\n shallowEqual,\n );\n\n const domProps = useDomProps(\n 'tr',\n {\n isThisRowExpanded: isExpanded,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const expandedRowDomProps = useDomProps(\n 'tr',\n {\n isTheExpandedRow: true,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const handleExpandedState = React.useCallback(\n (ev: boolean | React.MouseEvent) => {\n const willBeExpanded = typeof ev === 'boolean' ? ev : !isExpanded;\n if (!willBeExpanded)\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: responsiveTableStore\n .getState()\n .responsiveTableSlice[name].expandedRows.filter(\n (current) => current !== rowIndex,\n ),\n }),\n );\n else\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: [\n ...responsiveTableStore.getState().responsiveTableSlice[name]\n .expandedRows,\n rowIndex,\n ],\n }),\n );\n },\n [isExpanded, name, rowIndex],\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const states = React.useMemo(\n () => (row.states ?? []).map((current) => ({ ...current, id: uniqueId() })),\n [row.states],\n );\n\n const { ref, ...additionalCellDomProps } = useDomProps(\n 'additionalTd',\n { rowIndex },\n domPropsSelector(name),\n );\n\n const Renderer = React.useMemo(\n () => row.renderer ?? DefaultRowRenderer,\n [row.renderer],\n );\n\n return (\n <>\n <Renderer\n {...domProps}\n row={row}\n rowIndex={rowIndex}\n className={`responsiveTable__row ${row.isHidden ? 'hidden' : ''} ${\n domProps['aria-selected'] ? 'selected' : ''\n } ${shouldForbidSelection ? 'non-selectable' : ''} ${states\n .map((current) => current.className)\n .join(' ')} ${row.className ?? ''} ${\n row.separator ? 'row__separator' : ''\n } ${isDragging ? 'draggingRow' : ''}`}\n onKeyDown={React.useCallback(\n (ev: React.KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'arrowleft' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(false);\n }\n if (ev.key.toLowerCase() === 'arrowright' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(true);\n }\n },\n [handleExpandedState],\n )}\n >\n {row.separator ? (\n <SeparatorCell\n colSpan={\n (additionalCells.length > 0 || hasNonAdditionalFilters ? 1 : 0) +\n statesCount +\n columns.filter((current) => !current.showAsAdditional).length\n }\n rowIndex={rowIndex}\n />\n ) : (\n <>\n {(additionalCells.length > 0 || hasNonAdditionalFilters) && (\n <td className=\"additionalInfo__cell\" {...additionalCellDomProps}>\n {additionalCells.length > 0 && (\n <IconButton\n size={'Lg'}\n {...getVariant('icon-outline')}\n icon={\n isExpanded ? MdKeyboardArrowDown : MdKeyboardArrowRight\n }\n aria-label={\n isExpanded\n ? getLabel('lblCollapseRow').text\n : getLabel('lblExpandRow').text\n }\n className=\"moreInformationButton\"\n onClick={handleExpandedState}\n />\n )}\n </td>\n )}\n {Array(statesCount)\n .fill('')\n .map((_, i) => {\n return (\n <StateCell\n key={states[i]?.id ?? i}\n index={i}\n state={states[i]}\n rowIndex={rowIndex}\n />\n );\n })}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, inTableColumnIndex) => {\n if (current.hidden) return null;\n return (\n <Cell\n key={current.name}\n columnIndex={current.actualColumnIndex}\n rowIndex={rowIndex}\n inTableColumnIndex={inTableColumnIndex}\n />\n );\n })}\n </>\n )}\n </Renderer>\n {isExpanded && (\n <tr className=\"expandedRow\" {...expandedRowDomProps}>\n <td\n colSpan={\n columns.length - additionalCells.length + states.length + 1\n }\n >\n <Box className=\"responsiveTable__additionalInfoContainer\">\n {additionalCells.map((current) => {\n const { Renderer: ColumnRenderer } = current.column;\n if (ColumnRenderer)\n return (\n <ColumnRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n return (\n <AdditionalColumnDefaultRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n })}\n </Box>\n </td>\n </tr>\n )}\n </>\n );\n};\n\nexport const Row = React.memo(NoMemoRow);\n","import { Box } from '@apia/theme';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nexport const NoRegistersRenderer = () => {\n const { labels } = useResponsiveTableContext();\n return <Box className=\"no__registers\">{labels.noRegisters}</Box>;\n};\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { Header } from '../Header';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { Row } from '../Row';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport { useDomProps } from '../store/selection/useDomProps';\nimport { useResponsiveTable } from '../store';\n\nconst NoMemoTableRenderer = () => {\n const { name, label } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'table',\n {},\n (global) => global.responsiveTableSlice[name],\n );\n\n const rows = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return (tableState?.rows ?? []).map((current) => current.id);\n }, shallowEqual);\n\n const { columnsCount, rowsCount } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n rowsCount: tableState?.rows.length ?? 0,\n columnsCount:\n (tableState?.nonAdditionalColumnsCount ?? 0) +\n (tableState?.hasNonAdditionalFilters ? 1 : 0) +\n (tableState?.statesColumns ?? 0) +\n (tableState?.columns.find((current) => current.showAsAdditional)\n ? 1\n : 0),\n };\n }, shallowEqual);\n\n return (\n <Box\n {...domProps}\n as=\"table\"\n className=\"responsiveTable__table\"\n {...getVariant('layout.common.tables.primary')}\n aria-label={label}\n >\n <Header />\n <tbody>\n {rowsCount > 0 ? (\n rows.map((row, index) => {\n return (\n <Row key={row ?? `${row as string}-${index}`} rowIndex={index} />\n );\n })\n ) : (\n <tr>\n <td colSpan={columnsCount}>\n <NoRegistersRenderer />\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n );\n};\n\nexport const TableRenderer = React.memo(NoMemoTableRenderer);\n","import { Box } from '@apia/theme';\nimport { FunctionComponent } from 'react';\nimport {\n TResponsiveTableCell,\n TResponsiveTableColumn,\n TResponsiveTableRow,\n} from '../types';\n\nexport type TAccordionCellRendererProps<CellProps = Record<string, unknown>> = {\n cell: TResponsiveTableCell<CellProps>;\n column: TResponsiveTableColumn;\n columnIndex: number;\n row: TResponsiveTableRow;\n rowIndex: number;\n};\n\nexport type TAccordionCellRenderer<CellProps = Record<string, unknown>> =\n FunctionComponent<TAccordionCellRendererProps<CellProps>>;\n\nconst NoMemoAccordionCell: TAccordionCellRenderer = ({ cell, column }) => {\n return (\n <Box\n key={column.name}\n className={`responsiveTable__accordionElement__column ${\n cell.className ?? ''\n }`}\n >\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" sx={{ color: cell.color, background: cell.background }}>\n {cell?.children}\n </Box>\n </Box>\n );\n};\n\nexport const AccordionCell = NoMemoAccordionCell;\n","import React, { memo, useMemo } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableRow } from '../types';\nimport { AccordionCell } from './AccordionCell';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from '../store';\nimport { AccordionItem, IAccordionItemButton } from '@apia/components';\n\nexport interface IAccordionElement {\n row: TResponsiveTableRow;\n rowIndex: number;\n}\n\nconst NoMemoAccordionElement = ({ row, rowIndex }: IAccordionElement) => {\n const { name } = useResponsiveTableContext();\n\n const indexColumns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.accordionIndexColumns;\n }, shallowEqual);\n const columns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns;\n }, shallowEqual);\n\n const title = React.useMemo(() => {\n if (row.title) return row.title;\n if (Array.isArray(indexColumns))\n return indexColumns\n .map(\n (current) =>\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n row.cells[current.index].title ||\n (row.cells[current.index].children as string),\n )\n .join(' | ');\n return row.cells[0].title ?? (row.cells[0].children as string);\n }, [indexColumns, row.cells, row.title]);\n const isSelected = useResponsiveTable((global) =>\n global.responsiveTableSlice[name].allowSelection !== false\n ? global.responsiveTableSlice[name].selectedRows.includes(rowIndex)\n : undefined,\n );\n const isFocused = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].focusedRow === rowIndex,\n );\n const buttonProps = useMemo<IAccordionItemButton>(\n () => ({\n title,\n ariaLabel: title,\n label: title,\n checked: isSelected,\n onChange: (isChecked: boolean) => {\n const isMultiple =\n responsiveTableStore.getState().responsiveTableSlice[name].isMultiple;\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n selectedRows: isMultiple\n ? isChecked\n ? [\n ...responsiveTableStore.getState().responsiveTableSlice[\n name\n ].selectedRows,\n rowIndex,\n ]\n : responsiveTableStore\n .getState()\n .responsiveTableSlice[name].selectedRows.filter(\n (current) => current !== rowIndex,\n )\n : [rowIndex],\n }),\n );\n },\n tabIndex: isFocused ? 0 : -1,\n rightButtons: row.accordionButtonProps?.rightButtons,\n onUserPressEnter: row.accordionButtonProps?.onUserPressEnter,\n domButtonProps: {\n buttonSx: {\n '&.accordion__item__button .accordion__item__button__label': {\n color: row.color,\n },\n },\n },\n }),\n [\n isFocused,\n isSelected,\n name,\n row.accordionButtonProps?.onUserPressEnter,\n row.accordionButtonProps?.rightButtons,\n row.color,\n rowIndex,\n title,\n ],\n );\n\n if (!Array.isArray(indexColumns) || !columns) return null;\n\n return (\n <AccordionItem id={row.id} buttonProps={buttonProps}>\n {columns.map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ||\n currentColumn.showAsAdditional ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n\n {columns\n .filter((current) => !!current.showAsAdditional)\n .map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n </AccordionItem>\n );\n};\n\nexport const AccordionElement = memo(NoMemoAccordionElement);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableColumn } from '../types';\nimport { AccordionElement } from './AccordionElement';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport {\n responsiveTableActions,\n useResponsiveTable,\n responsiveTableStore,\n} from '../store';\nimport { TResponsiveTableIndexColumns } from '../store/types';\nimport { Accordion } from '@apia/components';\n\nconst NoMemoAccordionRenderer = () => {\n const { name } = useResponsiveTableContext();\n\n const { columns, rows } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns,\n rows: tableState?.rows,\n };\n }, shallowEqual);\n\n React.useEffect(() => {\n /**\n * Método para seleccionar qué columnas se utilizarán\n * como cabezal en cada fila.\n *\n * - Si existe al menos una columna marcada con showInAccordionTitle,\n * todas las columnas que estén marcadas con esta propiedad serán\n * mostradas como parte del título.\n *\n * - Si no existe ninguna, se busca cuál es la primera columna\n * que no tiene ninguna entrada vacía y se utiliza como título\n * del acordión.\n *\n * - Si ninguna columna no tiene ninguna fila vacía, entonces se\n * utiliza la primera columna.\n */\n\n if (columns && rows) {\n /**\n * Buscar columnas marcadas\n */\n const markedAsTitleColumns: TResponsiveTableIndexColumns = [];\n columns.forEach((column, index) => {\n if (column.showInAccordionTitle)\n markedAsTitleColumns.push({ column, index });\n });\n if (markedAsTitleColumns.length > 0) {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: markedAsTitleColumns,\n }),\n );\n } else {\n /**\n * No se encontró ninguna columna marcada, se busca la primera sin\n * entradas vacías.\n */\n const columnsLength = columns.length;\n let indexColumn: TResponsiveTableColumn | null = null;\n let currentIndex = 0;\n\n while (!indexColumn && currentIndex < columns.length) {\n let isAnyEmptyRow = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const row of rows) {\n if (!row.cells[currentIndex].children) {\n isAnyEmptyRow = true;\n break;\n }\n }\n if (!isAnyEmptyRow && columns[currentIndex]) {\n indexColumn = columns[currentIndex];\n } else {\n currentIndex += 1;\n if (currentIndex === columnsLength) break;\n }\n }\n if (!indexColumn) {\n /**\n * No hay ninguna sin ninguna entrada vacía,\n * se usa la primera columna.\n */\n [indexColumn] = columns;\n currentIndex = 0;\n }\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: [\n { column: indexColumn, index: currentIndex },\n ],\n }),\n );\n }\n }\n }, [columns, name, rows]);\n\n return (\n <Accordion>\n {!rows || (rows.length === 0 && <NoRegistersRenderer />)}\n {rows?.map((current, rowIndex) => (\n <AccordionElement row={current} rowIndex={rowIndex} key={current.id} />\n ))}\n </Accordion>\n );\n};\n\nexport const AccordionRenderer = React.memo(NoMemoAccordionRenderer);\n","import React from 'react';\nimport { Box, BoxProps, useBreakpointIndex } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { KeyHandler } from './KeyHandler';\nimport { TableRenderer } from './renderers/TableRenderer';\nimport { AccordionRenderer } from './renderers/AccordionRenderer';\nimport { TUseDomProps } from './store/selection/types';\nimport { responsiveTableStore } from './store';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\n\ntype TResponsiveTable = BoxProps;\n\n/**\n * Este objeto determina qué partes de la tabla deben\n * ser 'debugueadas'. Sobre todo para conocer el\n * impacto en el performance de la misma.\n */\nexport const rtDebug = {\n cell: false,\n context: false,\n filterCell: false,\n filters: {\n additional: false,\n grouped: false,\n inner: false,\n responsive: false,\n sort: false,\n },\n header: false,\n headerCell: false,\n index: false,\n keyHandler: false,\n row: false,\n tableRenderer: false,\n};\n\nexport const domPropsSelector: (name: string) => TUseDomProps =\n (name: string) =>\n (global: ReturnType<typeof responsiveTableStore.getState>) =>\n global.responsiveTableSlice[name];\n\n/**\n * El ResponsiveTable renderiza una tabla en base a la\n * información provista por ResponsiveTableContext, quien\n * debe ser ancestro de este elemento. La finalidad última\n * de este componente es lograr responsividad y performance.\n *\n * Las props pasadas sarán colocadas directamente en el\n * wrapper de la tabla. Con esta estructura se busca que\n * a la hora de dar estilos a este componente, se pueda pasar\n * un variant al Wrapper, sin afectar los estilos por defecto\n * de la tabla ni del acordión en modo responsivo. Esto no limita\n * en ningún concepto la posibilidad de cambiar el variant a\n * la tabla o al acordión, ya que eso puede hacerse desde un\n * variante personalizado con la estructura mostrada en el\n * ejemplo.\n *\n * Además, de esta manera es posible aplicar estilo a algunos\n * componentes nada más, sin la necesidad de cambiar el layout\n * que usa la tabla por defecto. Por ejemplo, con esta estructura\n * se puede utilizar un variant personalizado para definir\n * el ancho de las columnas de la tabla.\n *\n * @example\n * 'customVariant': {\n * '.responsiveTable__accordion': {\n * variant: 'layout.tables.otherAccordion'\n * }\n * '.responsiveTable__table': {\n * variant: 'layout.tables.otherTable'\n * }\n * }\n */\nconst NoMemoResponsiveTable = React.forwardRef<\n HTMLDivElement,\n TResponsiveTable\n>(({ className, ...props }, ref) => {\n const breakpoint = useBreakpointIndex({ defaultIndex: 3 });\n const { currentBreakPoint } = useResponsiveTableContext();\n\n const actualBreakpoint = currentBreakPoint ?? breakpoint;\n\n return (\n <Box\n {...props}\n {...getVariant('layout.common.tables.responsive')}\n className={`responsiveTable__wrapper ${className ?? ''}`}\n ref={ref}\n >\n {actualBreakpoint >= 3 ? (\n <KeyHandler>\n <TableRenderer />\n </KeyHandler>\n ) : (\n <AccordionRenderer />\n )}\n </Box>\n );\n});\n\nNoMemoResponsiveTable.displayName = 'ResponsiveTable';\n\nexport const ResponsiveTable = React.memo(NoMemoResponsiveTable);\n","import React from 'react';\nimport { Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TResponsiveTableCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoDocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLTableCellElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n >\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </td>\n ),\n );\n\nNoMemoDocNameCellRenderer.displayName = 'DocNameCellRenderer';\n\nexport const DocNameCellRenderer = NoMemoDocNameCellRenderer;\n","import React from 'react';\nimport { Box, Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TAccordionCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoAccordionDocNameCellRenderer: TAccordionCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n },\n currentRef,\n ) => (\n <Box ref={currentRef as React.RefObject<HTMLElement>} {...cell}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </Box>\n ),\n );\n\nNoMemoAccordionDocNameCellRenderer.displayName = 'AccordionDocNameCellRenderer';\n\nexport const AccordionDocNameCellRenderer = NoMemoAccordionDocNameCellRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { TAccordionCellRenderer } from './AccordionCell';\n\nconst NoMemoAccordionHTMLCellRenderer: TAccordionCellRenderer<{\n html: string;\n}> = React.forwardRef<\n HTMLSpanElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n /**\n * Aca falta el title de la columna\n */\n <Box\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n className=\"accordion__cell__renderer\"\n dangerouslySetInnerHTML={{\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n }}\n as=\"span\"\n />\n ),\n);\n\nNoMemoAccordionHTMLCellRenderer.displayName = 'AccordionHTMLCellRenderer';\n\nexport const AccordionHTMLCellRenderer = NoMemoAccordionHTMLCellRenderer;\n","import React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nconst NoMemoHTMLCellRenderer: TResponsiveTableCellRenderer<{ html: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n dangerouslySetInnerHTML={{\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n }}\n />\n ),\n );\n\nNoMemoHTMLCellRenderer.displayName = 'HTMLCellRenderer';\n\nexport const HTMLCellRenderer = NoMemoHTMLCellRenderer;\n","import { Box, Spinner } from '@apia/theme';\n\nexport const IsLoadingRenderer = () => {\n return (\n <Box className=\"responsiveTable__isLoading\">\n <Spinner />\n </Box>\n );\n};\n","import { forwardRef, useCallback, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { arrayOrArray } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAccordionAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n }[]\n | null\n >(null);\n const loadMore = useCallback(async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n }, [row]);\n\n return (\n <>\n {moreInfo ? (\n <>\n <IconButton icon=\"Minus\" onClick={() => setMoreInfo(null)} />\n {arrayOrArray(moreInfo).map(\n (dataCell: { label?: string; name: string }) => {\n return (\n <Box key={dataCell.name} ref={ref} as=\"div\">\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </Box>\n );\n },\n )}\n </>\n ) : (\n <IconButton icon=\"Plus\" onClick={() => void loadMore()} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAccordionAsyncRenderer';\n\n return InnerRender;\n}\n","import { uniqueId } from 'lodash-es';\nimport { forwardRef, useState } from 'react';\nimport { Box, Spinner } from '@apia/theme';\nimport { arrayOrArray, useMount } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n | null\n >(null);\n useMount(() => {\n void (async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n })();\n });\n\n return (\n <>\n {moreInfo ? (\n arrayOrArray(moreInfo).map((dataCell) => {\n return (\n <Box\n key={`${dataCell.name}-${uniqueId()}`}\n ref={ref}\n className={`responsiveTable__additionalInfoItem ${\n dataCell.newline ? 'separator' : ''\n }`}\n >\n {dataCell.newline ? (\n <>\n <Box sx={{ height: '20px' }} as=\"strong\">\n {dataCell.name}:\n </Box>{' '}\n {dataCell.label}\n </>\n ) : (\n <>\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </>\n )}\n </Box>\n );\n })\n ) : (\n <Spinner size={15} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAsyncRenderer';\n\n return InnerRender;\n}\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getPriorityHandler(priority: string | undefined) {\n let prio;\n if (priority?.includes('priority0')) prio = 'priorityNone';\n if (priority?.includes('priority1')) prio = 'priorityLow';\n if (priority?.includes('priority2')) prio = 'priorityNormal';\n if (priority?.includes('priority3')) prio = 'priorityHigh';\n if (priority?.includes('priority4')) prio = 'priorityUrgent';\n return prio;\n}\nconst NoMemoPriorityRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskPriorityColor = getPriorityHandler(rendererProps?.src);\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </td>\n );\n },\n );\nNoMemoPriorityRenderer.displayName = 'PriorityRenderer';\nexport const PriorityRenderer = NoMemoPriorityRenderer;\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getPriorityHandler } from './PriorityRenderer';\n\nconst NoMemoPriorityAccordionRenderer: TAccordionCellRenderer =\n React.forwardRef<HTMLTableCellElement, TAccordionCellRendererProps>(\n ({ cell, column }, currentRef) => {\n const taskPriorityColor = getPriorityHandler(\n cell.rendererProps?.src as string,\n );\n const title = column.label ?? column.name;\n return (\n <Box ref={currentRef} className=\"priority_container\">\n {title && <Box as=\"strong\">{column.label ?? column.name}: </Box>}\n <Box\n as=\"span\"\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </Box>\n </Box>\n );\n },\n );\n\nNoMemoPriorityAccordionRenderer.displayName = 'PriorityAccordionRenderer';\n\nexport const PriorityAccordionRenderer = NoMemoPriorityAccordionRenderer;\n","import dayjs from 'dayjs';\nimport React from 'react';\nimport { TDateFormat, getDateFormat } from '@apia/util';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getStatusRendererClassName(\n cellValue: string,\n columnName: string,\n) {\n if (cellValue === undefined) return '';\n\n const cellValueDate = cellValue.split(' ')[0];\n const cellValueHour = cellValue.split(' ')[1] ?? '00:00:00';\n\n const dateFormat: TDateFormat = getDateFormat();\n const currentDate = dayjs();\n const currentHour = Number(dayjs().format('HHmm'));\n const queriedDate = dayjs(cellValueDate, dateFormat);\n const queriedHour = Number(dayjs(cellValueHour, dateFormat));\n let statusClassName = '';\n\n if (currentDate >= queriedDate) {\n statusClassName = columnName;\n }\n if (!queriedHour) return statusClassName;\n\n if (currentDate <= queriedDate && currentHour < queriedHour) {\n statusClassName = columnName;\n }\n return statusClassName;\n}\n\nconst NoMemoStatusRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskStatusClassName = getStatusRendererClassName(\n children as string,\n column.name,\n );\n\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className={taskStatusClassName}\n >\n {children}\n </td>\n );\n },\n );\n\nNoMemoStatusRenderer.displayName = 'StatusRenderer';\n\nexport const StatusRenderer = NoMemoStatusRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getStatusRendererClassName } from './StatusRenderer';\n\nconst NoMemoStatusAccordionRenderer: TAccordionCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TAccordionCellRendererProps\n>(({ cell, column }, currentRef) => {\n const taskStatusClassName = getStatusRendererClassName(\n cell.children as string,\n column.name,\n );\n\n return (\n <Box ref={currentRef}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" className={taskStatusClassName}>\n {cell.children}\n </Box>\n </Box>\n );\n});\n\nNoMemoStatusAccordionRenderer.displayName = 'StatusAccordionRenderer';\n\nexport const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;\n"],"names":["getInitialState","__objRest","__spreadValues","_a","_b","__spreadProps","selectionGetInitialState","_c","useUpdateEffect","shallowEqual","__async","useMount"],"mappings":"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"}