@join-x5/react-data-grid 1.6.0 → 1.6.1-rc2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/DataGridContext.tsx","../src/Table/index.tsx","../src/TableCell/hook.ts","../src/TableHeadCell/utils.ts","../src/TableHeadCell/types.ts","../src/TableHeadCell/index.tsx","../src/TableHeadRow/index.tsx","../src/TableHead/index.tsx","../src/TableCell/index.tsx","../src/TableRow/index.tsx","../src/TableBody/DataGridTableBody.tsx","../src/TableBody/hook.ts","../src/TableBody/DataGridTableBodyVirtual.tsx","../src/hook.ts","../src/DataGrid.tsx","../src/TableDropdown/index.tsx","../src/TableInputCell/hook.ts","../src/TableInputCell/button.tsx","../src/TableInputCell/checkbox.tsx","../src/TableInputCell/date.tsx","../src/TableInputCell/dropdown.tsx","../src/TableInputCell/expanding.tsx","../src/TableInputCell/icon.tsx","../src/TableInputCell/label.tsx","../src/TableInputCell/switch.tsx","../src/TableInputCell/text.tsx","../src/TableInputCell/textarea.tsx"],"sourcesContent":["'use client';\n\nimport {createContext, useState} from 'react';\n\nimport type {PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridProps} from 'types';\n\ntype CommonProps = Pick<\n DataGridProps,\n | 'isMultiline'\n | 'isShadowed'\n | 'isNoFocus'\n | 'isCombined'\n | 'qa'\n | 'isBordered'\n | 'size'\n | 'verticalAlign'\n | 'textAlign'\n | 'writingMode'\n | 'userSelect'\n | 'wordBreak'\n | 'whiteSpace'\n | 'cellProps'\n | 'headCellProps'\n>;\n\ntype DataGridContextProps = {\n activeCell: string | null;\n setActiveCell: (newActiveCell: string | null) => void;\n} & CommonProps;\n\nexport const DataGridContext = createContext<DataGridContextProps>({\n activeCell: null,\n setActiveCell: () => {},\n});\n\nexport const DataGridContextProvider: React.FC<PropsWithChildren & CommonProps> = ({children, ...rest}) => {\n const [activeCell, setActiveCell] = useState<string | null>(null);\n\n return <DataGridContext.Provider value={{activeCell, setActiveCell, ...rest}}>{children}</DataGridContext.Provider>;\n};\n","'use client';\n\nimport {useContext, useMemo} from 'react';\nimport styled from '@emotion/styled';\n\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Table as ReactTableTable} from '@tanstack/react-table';\nimport type {CSSProperties, FRC} from '@join-x5/react-theme';\nimport type {TableProps} from './types';\n\nexport const TableWrapper = styled.div`\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border-collapse: collapse;\n border-radius: 8px 8px 0 0;\n overflow: auto;\n\n ${baseTheme.scroll}\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const TableFooter = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n border-radius: 0 0 8px 8px;\n gap: 12px;\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const ControlPanel = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n border-radius: 8px;\n background-color: ${props => props.theme.colors.white};\n`;\n\nexport const ControlPanelContent = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n`;\n\nconst Container = styled.table`\n border-collapse: separate;\n table-layout: fixed;\n border-spacing: 0;\n\n &[data-is-resizing] {\n cursor: col-resize;\n }\n`;\n\nexport const Table: FRC<HTMLTableElement, TableProps> = forwardRef(({isResizing, ...rest}, ref) => {\n const resultProps = {\n ...rest,\n\n 'data-is-resizing': isResizing ? true : undefined,\n };\n\n return <Container ref={ref} cellSpacing={0} cellPadding={0} {...resultProps}></Container>;\n});\n\ntype DataGridTableProps = {table: ReactTableTable<unknown>} & Omit<TableProps, 'isResizing'>;\n\nexport const DataGridTable: FRC<HTMLTableElement, DataGridTableProps> = forwardRef(({table, ...props}, ref) => {\n const context = useContext(DataGridContext);\n\n const columnSizeVars = useMemo(() => {\n const headers = table.getFlatHeaders();\n const colSizes: CSSProperties = {};\n\n for (const header of headers) {\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n\n return colSizes;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table.getState().columnSizingInfo, table.getState().columnSizing]);\n\n const isResizing = !!table.getState().columnSizingInfo.isResizingColumn;\n\n const resultProps = {\n ...props,\n\n isResizing,\n\n style: {\n width: table.getTotalSize(),\n\n ...props.style,\n ...columnSizeVars,\n },\n\n 'data-qa': context.qa,\n };\n\n return <Table ref={ref} {...resultProps} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Column, Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from './types';\n\nexport const areaProps = (column: Column<unknown>, props: TableCellProps): void => {\n const isPinned = column.getIsPinned();\n\n props.columnArea = (() => {\n switch (column.getIsPinned()) {\n case 'left':\n return ColumnArea.FixedLeft;\n case 'right':\n return ColumnArea.FixedRight;\n }\n\n return ColumnArea.Default;\n })();\n\n if (!isPinned) {\n return;\n }\n\n props.style ??= {};\n\n if (isPinned === 'left') {\n props.style.left = `${column.getStart('left')}px`;\n props.isLastFixed = column.getIsLastColumn('left');\n } else {\n props.style.right = `${column.getAfter('right')}px`;\n props.isLastFixed = column.getIsFirstColumn('right');\n }\n};\n\nexport const useDataGridTableCell = (cell: ReactTableCell<unknown, unknown>) => {\n const context = useContext(DataGridContext);\n\n const isMultiline = typeof context.isMultiline === 'boolean' ? context.isMultiline : context.isMultiline?.(cell);\n const width = `calc(var(--header-${cell.column?.id}-size) * 1px)`;\n\n const resultProps: TableCellProps = {\n isMultiline,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n isNoFocus: context.isNoFocus,\n size: context.size,\n verticalAlign: context.verticalAlign,\n writingMode: context.writingMode,\n userSelect: context.userSelect,\n wordBreak: context.wordBreak,\n whiteSpace: context.whiteSpace,\n\n isRowSelected: cell.row.getIsSelected(),\n isResizing: cell.column.getIsResizing(),\n\n style: {\n width,\n maxWidth: width,\n },\n };\n\n areaProps(cell.column, resultProps);\n\n if (context.cellProps) {\n Object.assign(resultProps, typeof context.cellProps === 'function' ? context.cellProps(cell) : context.cellProps);\n }\n\n if (cell.column.columnDef.meta?.cellProps) {\n Object.assign(resultProps, cell.column.columnDef.meta?.cellProps);\n }\n\n return resultProps;\n};\n","import type {Header} from '@tanstack/react-table';\n\nconst deepestHeader = <T, V>(header: Header<T, V>): Header<T, V> | null => {\n let last = header;\n while (true) {\n const next = last.isPlaceholder && last.colSpan === 1 && last.subHeaders.length === 1 ? last.subHeaders[0] : null;\n\n if (next) {\n last = next;\n } else {\n return last === header ? null : last;\n }\n }\n};\n\nexport const tableHeaderSpan = <T, V>(header: Header<T, V>): [Header<T, V> | null, number | null] => {\n const deepest = deepestHeader(header);\n\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n\n if (above > 1) {\n return [header, null];\n }\n\n if (rowSpan <= 1) {\n return [header, rowSpan];\n }\n\n return [deepest ?? header, rowSpan];\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from '@join-x5/react-theme';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ReactNode, ThHTMLAttributes} from 'react';\nimport type {CSSProperties, QA} from '@join-x5/react-theme';\nimport type {DropdownProps} from '@join-x5/react';\n\nexport enum TableHeadCellVariant {\n Default = 'default',\n Checkbox = 'checkbox',\n}\n\nexport type TableHeadCellProps = {\n /** Размер */\n size?: SizeTokenValue;\n\n /** Вариант */\n variant?: TableHeadCellVariant;\n\n /** Установка состояния \"Отключен\" */\n isDisabled?: boolean;\n /** Установка состояния \"Активен\" */\n isActive?: boolean;\n /** С границей */\n isBordered?: boolean;\n /** Показывать тень вместо границы, в закрепленных столбцах и шапке */\n isShadowed?: boolean;\n /** Пустая клетка\n *\n * Клетка может быть пустой в ситуации многоуровневых заголовков\n */\n isPlaceholder?: boolean;\n\n /** Расположение колонки */\n columnArea?: ColumnArea;\n /** Последняя закрепленная колонка\n *\n * Добавляет тень в зависимости от `columnArea`\n */\n isLastFixed?: boolean;\n\n /** Иконка | Контент слева */\n startAdornment?: ReactNode;\n /** Иконка | Контент справа */\n endAdornment?: ReactNode;\n\n /** Контрол смены размера */\n resizer?: ReactNode;\n\n /** Контент дропдауна */\n dropdown?: React.FC<DropdownProps>;\n} & QA &\n Pick<CSSProperties, 'verticalAlign' | 'textAlign' | 'writingMode' | 'userSelect'> &\n ThHTMLAttributes<HTMLTableCellElement>;\n","'use client';\n\nimport {useContext, useState} from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport {areaProps} from 'TableCell/hook';\n\nimport {tableHeaderSpan} from './utils';\nimport {TableHeadCellVariant} from './types';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Header} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadCellProps} from './types';\n\nexport const TableHeadCellResizer = styled.div`\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n top: 0;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n z-index: 1;\n\n ::before {\n content: '';\n display: block;\n width: 3px;\n height: 24px;\n border-radius: 8px;\n user-select: none;\n pointer-events: none;\n opacity: 0;\n\n background-color: ${props => props.theme.colors.accent[80]};\n }\n\n &[data-resizing]::before {\n opacity: 1;\n }\n`;\n\nconst Cell = styled.th`\n position: relative;\n box-sizing: border-box;\n\n ${props => ({\n color: props.theme.colors.grey[100],\n backgroundColor: props.theme.colors.white,\n\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 44px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 14px 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h4}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 40px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n padding: 8px;\n min-height: 32px;\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-shadowed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n\n &::before {\n border-bottom-width: 0;\n }\n }\n\n &[data-placeholder] {\n pointer-events: none;\n\n &:has(+ [data-placeholder])::after {\n display: none;\n }\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n &[data-has-active] {\n cursor: pointer;\n\n &[data-active],\n :active {\n ${props => ({\n backgroundColor: props.theme.colors.grey[30],\n\n '--border-color': 'transparent',\n })}\n }\n }\n\n :focus {\n outline: none;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 2px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n ::after {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: calc(50% - 8px);\n right: 0;\n width: 2px;\n height: 16px;\n user-select: none;\n pointer-events: none;\n background-color: var(--border-color, transparent);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 2px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 2px 0;\n }\n\n ::after {\n display: none;\n }\n }\n\n :last-of-type::after {\n display: none;\n }\n\n [data-resizer] {\n right: -5px;\n }\n\n :last-of-type [data-resizer] {\n right: 0;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n align-self: center;\n`;\n\nexport const TableHeadCell: FRC<HTMLTableCellElement, TableHeadCellProps> = forwardRef((props, baseRef) => {\n const {\n children,\n\n isDisabled,\n isActive,\n isBordered,\n isLastFixed,\n isShadowed,\n isPlaceholder,\n\n writingMode,\n verticalAlign = 'top',\n textAlign = 'left',\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n resizer,\n dropdown: Dropdown,\n\n variant = TableHeadCellVariant.Default,\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const ref = useRefMerge(baseRef);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n if (e.code === 'Escape') {\n e.currentTarget.blur();\n }\n\n if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n e.currentTarget.click();\n }\n\n props.onKeyDown?.(e);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (Dropdown && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n\n props.onClick?.(e);\n };\n\n const dropdown = Dropdown ? <Dropdown targetRef={ref} isOpen={isDropdownOpen} setIsOpen={setIsDropdownOpen} /> : null;\n const hasActive = !!props.onClick || !!Dropdown || !!isActive;\n\n const cellProps = {\n ...rest,\n\n onClick,\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-active': isActive || isDropdownOpen ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-placeholder': isPlaceholder ? true : undefined,\n 'data-has-active': hasActive ? true : undefined,\n 'data-has-end-adornment': endAdornment ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${variant.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n <Content>{children}</Content>\n {endAdornment}\n </Container>\n {resizer}\n {dropdown}\n </Cell>\n );\n});\n\ntype DataGridTableHeadCellProps = {\n header: Header<unknown, unknown>;\n};\n\nexport const DataGridTableHeadCell: React.FC<DataGridTableHeadCellProps> = cell => {\n const context = useContext(DataGridContext);\n\n let header: DataGridTableHeadCellProps['header'] | null = cell.header;\n let rowSpan: number | null = header.rowSpan;\n\n if (context.isCombined) {\n [header, rowSpan] = tableHeaderSpan(cell.header);\n if (!header || !rowSpan) {\n return null;\n }\n }\n\n const resizer = (() => {\n if (header.isPlaceholder || header.column.getCanResize() === false) {\n return null;\n }\n\n return (\n <TableHeadCellResizer\n data-resizer\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n data-resizing={header.column.getIsResizing() ? true : undefined}\n onClick={e => e.stopPropagation()}\n />\n );\n })();\n\n const content = header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext());\n\n const resultProps: TableHeadCellProps = {\n resizer,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n isPlaceholder: header.isPlaceholder,\n size: context.size,\n verticalAlign: context.verticalAlign,\n\n colSpan: header.colSpan || undefined,\n rowSpan: rowSpan || undefined,\n\n style: {\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n },\n };\n\n areaProps(header.column, resultProps);\n\n if (context.headCellProps) {\n Object.assign(\n resultProps,\n typeof context.headCellProps === 'function' ? context.headCellProps(header) : context.headCellProps\n );\n }\n\n if (header.column.columnDef.meta?.headCellProps) {\n Object.assign(resultProps, header.column.columnDef.meta?.headCellProps);\n }\n\n return (\n <TableHeadCell key={header.id} {...resultProps}>\n {content}\n </TableHeadCell>\n );\n};\n\nexport const getDataGridTableHeadCell = (header: DataGridTableHeadCellProps['header']) => {\n return <DataGridTableHeadCell key={header.id} header={header} />;\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadRowProps} from './types';\n\nconst Container = styled.tr``;\n\nexport const TableHeadRow: FRC<HTMLTableRowElement, TableHeadRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableHeadCell} from 'TableHeadCell';\nimport {TableHeadRow} from 'TableHeadRow';\n\nimport type {HTMLAttributes} from 'react';\nimport type {Table} from '@tanstack/react-table';\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableHead = styled.thead`\n position: sticky;\n top: 0;\n z-index: 2;\n`;\n\ntype DataGridTableHeadProps = {\n table: Table<unknown>;\n} & TableHeadProps;\n\nconst DataGridTableHead: React.FC<DataGridTableHeadProps> = ({table, ...props}) => {\n const context = useContext(DataGridContext);\n\n const content = table\n .getHeaderGroups()\n .map(headerGroup => (\n <TableHeadRow key={headerGroup.id}>\n {headerGroup.headers.map(header => getDataGridTableHeadCell(header))}\n </TableHeadRow>\n ));\n\n return (\n <TableHead data-qa={`${context.qa}-head`} {...props}>\n {content}\n </TableHead>\n );\n};\n\nexport const getDataGridTableHead = (table: Table<unknown>, props?: TableHeadProps) => {\n return <DataGridTableHead table={table} {...props} />;\n};\n","'use client';\n\nimport React from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {EditOnIcon} from '@join-x5/react-icons';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {useDataGridTableCell} from './hook';\n\nimport type {HTMLAttributes, KeyboardEventHandler} from 'react';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from './types';\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 12,\n [SizeTokenValue.XLarge]: 12,\n};\n\nconst Cell = styled.td`\n position: relative;\n box-sizing: border-box;\n height: 1px;\n border-radius: 0;\n border-spacing: 0;\n background-color: var(--background-color, transparent);\n\n ${props => ({\n color: props.theme.colors.grey[100],\n\n '--background-color': props.theme.colors.white,\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n min-height: 44px;\n\n ${props => props.theme.typography.p1compact}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n min-height: 40px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n min-height: 32px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-row-hover] {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[40],\n })}\n }\n\n :not([data-disabled]):hover::before {\n border-width: 1px;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n &[data-row-selected] {\n ${props => ({\n '--background-color': props.theme.colors.accent[10],\n '--border-color': props.theme.colors.accent[20],\n })}\n }\n\n :focus {\n outline: none;\n }\n\n &[data-focused],\n :focus:not([data-no-focus]) {\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: visible;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-active] {\n outline: none;\n\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: hidden;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-error] {\n ::after {\n display: block;\n }\n\n ${props => ({\n caretColor: props.theme.colors.additional.red[80],\n\n '--background-color': props.theme.colors.white,\n '--border-color': 'transparent',\n '--outline-color': props.theme.colors.additional.red[80],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 1px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 1px 0;\n }\n }\n\n &[data-resizing] {\n border-right: 1px solid ${props => props.theme.colors.accent[20]};\n }\n\n ::after {\n content: '';\n display: none;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 2px;\n border-style: solid;\n border-radius: 4px;\n border-color: var(--outline-color, transparent);\n }\n\n [data-edit-icon] {\n display: none;\n position: absolute;\n visibility: hidden;\n right: 0;\n top: 0;\n background-color: var(--background-color, transparent);\n }\n\n &[data-editable] [data-edit-icon] {\n display: block;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n position: relative;\n flex-grow: 1;\n word-break: break-word;\n\n :not([data-is-multiline]) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst Caption = styled.div`\n padding: 4px 0 0;\n width: 100%;\n word-break: break-all;\n\n ${props => ({\n ...props.theme.typography.p3,\n\n color: props.theme.colors.additional.red[80],\n })}\n`;\n\ntype TableCellContentProps = Partial<Pick<TableCellProps, 'children' | 'isMultiline' | 'whiteSpace' | 'wordBreak'>> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const TableCellContent: FRC<HTMLDivElement, TableCellContentProps> = forwardRef((props, ref) => {\n const {children, style, isMultiline, whiteSpace, wordBreak = 'break-word', ...rest} = props;\n\n const contentProps = {\n ...rest,\n\n style: {\n whiteSpace,\n wordBreak,\n\n ...style,\n },\n\n 'data-content': true,\n 'data-is-multiline': isMultiline ? true : undefined,\n };\n\n return (\n <Content ref={ref} {...contentProps}>\n {children}\n </Content>\n );\n});\n\nexport const TableCell: FRC<HTMLTableCellElement, TableCellProps> = forwardRef((props, baseRef) => {\n const ref = useRefMerge(baseRef);\n\n const {\n children,\n\n isDisabled,\n isRowHover,\n isRowSelected,\n isBordered,\n isShadowed,\n isNoFocus,\n isFocused,\n isActive,\n isResizing,\n isLastFixed,\n error,\n\n textAlign,\n writingMode,\n verticalAlign,\n padding,\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (isEnterCode) {\n const child = ref.current?.querySelector('[data-action]') as HTMLElement;\n\n if (isEnterCode && child) {\n child.click();\n }\n\n return;\n }\n\n if (e.code === 'Escape') {\n ref.current?.blur();\n return;\n }\n\n const isNavigation =\n e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight';\n\n if (isNavigation && !isNoFocus) {\n const parent = ref.current?.parentElement as HTMLElement;\n const curIndex = Array.from(parent?.childNodes).indexOf(ref.current as HTMLElement);\n\n switch (e.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const sibling = (\n e.code === 'ArrowUp' ? parent?.previousElementSibling : parent?.nextElementSibling\n ) as HTMLElement;\n\n if (parent?.nodeName === sibling?.nodeName) {\n const nextFocus = sibling?.children[curIndex] as HTMLElement;\n\n nextFocus?.focus();\n }\n }\n break;\n\n case 'ArrowLeft':\n if (curIndex > 0) {\n const prevSibling = parent?.children[curIndex - 1] as HTMLElement;\n prevSibling?.focus();\n } else {\n const prevRow = parent?.previousElementSibling as HTMLElement;\n if (parent?.nodeName === prevRow?.nodeName) {\n const lastCell = prevRow.lastElementChild as HTMLElement;\n lastCell?.focus();\n }\n }\n break;\n case 'ArrowRight':\n if (curIndex < parent?.children.length - 1) {\n const nextSibling = parent?.children[curIndex + 1] as HTMLElement;\n nextSibling?.focus();\n } else {\n const nextRow = parent?.nextElementSibling as HTMLElement;\n if (parent?.nodeName === nextRow?.nodeName) {\n const firstCell = nextRow.firstElementChild as HTMLElement;\n firstCell?.focus();\n }\n }\n break;\n }\n }\n };\n\n const cellProps = {\n ...rest,\n\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n padding: padding ?? sizePadding[size],\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-focused': isFocused ? true : undefined,\n 'data-error': error ? true : undefined,\n 'data-row-hover': isRowHover ? true : undefined,\n 'data-row-selected': isRowSelected ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-no-focus': isNoFocus ? true : undefined,\n 'data-resizing': isResizing ? true : undefined,\n 'data-active': isActive ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n const caption = typeof error === 'string' ? <Caption>{error}</Caption> : null;\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n {children}\n {endAdornment}\n <EditOnIcon data-edit-icon size={SizeTokenValue.Small} />\n </Container>\n {caption}\n </Cell>\n );\n});\n\nexport const DataGridTableCell: FRC<HTMLTableCellElement, DataGridTableCellProps & PropsWithChildren> = forwardRef(\n (props, ref) => {\n const resultProps = useDataGridTableCell(props.cell);\n\n const contentProps = {\n isMultiline: resultProps.isMultiline,\n whiteSpace: resultProps.whiteSpace,\n wordBreak: resultProps.wordBreak,\n };\n\n return (\n <TableCell ref={ref} {...resultProps}>\n <TableCellContent {...contentProps}>{props.children}</TableCellContent>\n </TableCell>\n );\n }\n);\n\nexport const getDataGridTableCell = (cell: DataGridTableCellProps['cell']) => {\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n\n if (cell.column.columnDef.meta?.isCustom) {\n return <React.Fragment key={cell.id}>{content}</React.Fragment>;\n }\n\n return (\n <DataGridTableCell key={cell.id} cell={cell}>\n {content}\n </DataGridTableCell>\n );\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {getDataGridTableCell} from 'TableCell';\n\nimport type {HTMLAttributes} from 'react';\nimport type {Row} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {GetDataGridTableRow} from '../types';\n\nexport type TableRowProps = HTMLAttributes<HTMLTableRowElement>;\n\nconst TableRow = styled.tr`\n :hover [data-cell] {\n :not([data-focused], [data-active], [data-disabled]) [data-edit-icon] {\n visibility: visible;\n }\n\n :not([data-focused], [data-active]):not(:focus:not([data-no-focus])) {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n }\n`;\n\ntype DataGridTableRowProps = {row: Row<unknown>} & TableRowProps;\n\nconst DataGridTableRow: FRC<HTMLTableRowElement, DataGridTableRowProps> = forwardRef((props, ref) => {\n const {row, ...rest} = props;\n\n const content = row.getVisibleCells().map(getDataGridTableCell);\n\n return (\n <TableRow ref={ref} {...rest}>\n {content}\n </TableRow>\n );\n});\n\nexport const getDataGridTableRow: GetDataGridTableRow = (row, props) => (\n <DataGridTableRow key={row.id} row={row} {...props} />\n);\n","'use client';\n\nimport {memo, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableRow} from 'TableRow';\n\nimport type {Table} from '@tanstack/react-table';\nimport type {DataGridProps} from 'types';\nimport type {TableBodyProps} from './types';\n\nexport const TableBody = styled.tbody`\n position: relative;\n`;\n\ntype DataGridTableBodyProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components' | 'rowProps'> &\n TableBodyProps;\n\nconst DataGridTableBody: React.FC<DataGridTableBodyProps> = props => {\n const {table, components, rowProps, ...rest} = props;\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const iterator = components?.row ?? getDataGridTableRow;\n\n const child = rows.map(item => {\n const itemProps = typeof rowProps === 'function' ? rowProps(rows[item.index]) : rowProps;\n\n return iterator(item, itemProps);\n });\n\n return (\n <TableBody data-qa={`${context.qa}-body`} {...rest}>\n {child}\n </TableBody>\n );\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBody = (props: DataGridTableBodyProps) => {\n const isResizing = props.table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component {...props} />;\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableRow} from 'TableRow';\n\nimport type {Table} from '@tanstack/react-table';\nimport type {VirtualItem} from '@tanstack/react-virtual';\nimport type {TableRowProps} from 'TableRow';\nimport type {DataGridProps} from 'types';\nimport type {TableBodyProps} from './types';\n\nexport type DataGridTableBodyVirtualProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components' | 'rowProps'> &\n Required<Pick<DataGridProps, 'virtualize' | 'wrapperRef'>> &\n TableBodyProps;\n\nexport const useVirtualTableBody = (props: DataGridTableBodyVirtualProps) => {\n const {table, components, rowProps, wrapperRef, virtualize, ...rest} = props;\n\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40,\n getScrollElement: () => wrapperRef.current,\n measureElement: el => el.getBoundingClientRect().height,\n overscan: 5,\n\n ...(typeof virtualize === 'object' ? virtualize : undefined),\n });\n\n const iterator = components?.row ?? getDataGridTableRow;\n const rowRef = (node: HTMLTableRowElement) => rowVirtualizer.measureElement(node);\n\n const child = rowVirtualizer.getVirtualItems().map((item: VirtualItem) => {\n const row = rows[item.index];\n\n const itemProps = {\n ref: rowRef,\n\n 'data-index': item.index,\n\n style: {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n transform: `translateY(${item.start}px)`,\n },\n } as TableRowProps;\n\n if (rowProps) {\n Object.assign(itemProps, typeof rowProps === 'function' ? rowProps(row) : rowProps);\n }\n\n return iterator(row, itemProps);\n });\n\n const containerProps = {\n 'data-qa': `${context.qa}-body`,\n\n style: {\n height: rowVirtualizer.getTotalSize(),\n\n ...rest.style,\n },\n };\n\n if (!wrapperRef.current) {\n setTimeout(rowVirtualizer.measure);\n }\n\n return {containerProps, child};\n};\n","import {memo} from 'react';\n\nimport {TableBody} from './DataGridTableBody';\nimport {useVirtualTableBody} from './hook';\n\nimport type {DataGridTableBodyVirtualProps} from './hook';\n\nconst DataGridTableBody: React.FC<DataGridTableBodyVirtualProps> = props => {\n const {containerProps, child} = useVirtualTableBody(props);\n return <TableBody {...containerProps}>{child}</TableBody>;\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBodyVirtual = (props: DataGridTableBodyVirtualProps) => {\n const isResizing = props.table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component {...props} />;\n};\n","'use client';\n\nimport {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ColumnOrderState, ColumnPinningState, TableState, VisibilityState} from '@tanstack/react-table';\nimport type {ColumnItem} from '@join-x5/react-data-grid-settings';\nimport type {DataGridProps} from 'types';\n\nconst convertVisibility = (settings?: ColumnItem[]): VisibilityState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n acc[item.id] = item.isVisible;\n return acc;\n }, {} as VisibilityState);\n};\n\nconst convertOrder = (settings?: ColumnItem[]): ColumnOrderState => {\n if (!settings || !settings.length) {\n return [];\n }\n\n return settings.sort((a, b) => a.sort - b.sort).map(item => String(item.id));\n};\n\nconst convertPinning = (settings?: ColumnItem[]): ColumnPinningState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n if (item.area === ColumnArea.FixedLeft) {\n acc.left ??= [];\n acc.left?.push(String(item.id));\n } else if (item.area === ColumnArea.FixedRight) {\n acc.right ??= [];\n acc.right?.push(String(item.id));\n }\n\n return acc;\n }, {} as ColumnPinningState);\n};\n\nexport const useDataGridColumnSettings = (\n settings?: DataGridProps['columnSettings'],\n tableProps?: DataGridProps['tableProps']\n) => {\n const [columnVisibility, onColumnVisibilityChange] = useState<VisibilityState>(convertVisibility(settings));\n const [columnOrder, onColumnOrderChange] = useState<ColumnOrderState>(convertOrder(settings));\n const [columnPinning, onColumnPinningChange] = useState<ColumnPinningState>(convertPinning(settings));\n\n const externalState = tableProps?.state;\n\n const state = useMemo((): Partial<TableState> => {\n return {columnVisibility, columnOrder, columnPinning, ...externalState};\n }, [externalState, columnVisibility, columnOrder, columnPinning]);\n\n useUpdateEffect(() => {\n const newVisibility = convertVisibility(settings);\n const newOrder = convertOrder(settings);\n const newPinning = convertPinning(settings);\n\n onColumnVisibilityChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newVisibility) ? oldState : newVisibility\n );\n\n onColumnOrderChange(oldState => (JSON.stringify(oldState) === JSON.stringify(newOrder) ? oldState : newOrder));\n\n onColumnPinningChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newPinning) ? oldState : newPinning\n );\n }, [settings]);\n\n return state;\n};\n","'use client';\n\nimport {useEffect} from 'react';\nimport {getCoreRowModel, getExpandedRowModel, useReactTable} from '@tanstack/react-table';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridTable} from 'Table';\n\nimport {DataGridContextProvider} from 'DataGridContext';\nimport {getDataGridTableHead} from 'TableHead';\nimport {getDataGridTableBody, getDataGridTableBodyVirtual} from 'TableBody';\n\nimport {useDataGridColumnSettings} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridProps} from './types';\n\nexport const DataGrid: FRC<HTMLTableElement, DataGridProps> = forwardRef((props, ref) => {\n const {\n qa = 'datagrid',\n\n isBordered,\n isMultiline,\n isCombined,\n isShadowed,\n isNoFocus,\n\n size,\n width,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n rowProps,\n bodyProps,\n headProps,\n virtualize,\n wrapperRef,\n\n columns,\n data,\n tableProps,\n setTable,\n columnSettings,\n components,\n children,\n\n verticalAlign = props.isMultiline ? 'top' : 'center',\n\n ...rest\n } = props;\n\n const state = useDataGridColumnSettings(columnSettings, tableProps);\n\n const table = useReactTable({\n columns,\n data,\n\n manualSorting: true,\n manualFiltering: true,\n manualPagination: true,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n ...tableProps,\n\n state,\n });\n\n const context = {\n size,\n verticalAlign,\n isBordered,\n isMultiline,\n isCombined,\n isShadowed,\n isNoFocus,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n qa,\n };\n\n const tableComponentProps = {\n ...rest,\n\n table,\n style: width ? {width, ...rest.style} : rest.style,\n 'data-qa': qa,\n };\n\n const head = getDataGridTableHead(table, headProps);\n const body =\n virtualize && wrapperRef\n ? getDataGridTableBodyVirtual({table, components, rowProps, virtualize, wrapperRef, ...bodyProps})\n : getDataGridTableBody({table, components, rowProps, ...bodyProps});\n\n useEffect(() => {\n setTable?.(table);\n }, [table, setTable]);\n\n return (\n <DataGridContextProvider {...context}>\n <DataGridTable ref={ref} {...tableComponentProps}>\n {head}\n {children}\n {body}\n </DataGridTable>\n </DataGridContextProvider>\n );\n});\n","import styled from '@emotion/styled';\n\nexport const TableDropdownHeader = styled.div`\n padding: 8px 12px 4px;\n user-select: none;\n\n ${props => ({\n ...props.theme.typography.h6,\n\n color: props.theme.colors.grey[70],\n })}\n`;\n\nexport const TableDropdownItem = styled.div`\n padding: 6px 12px;\n user-select: none;\n cursor: pointer;\n\n ${props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.grey[100],\n })}\n\n :hover {\n background-color: ${props => props.theme.colors.grey[10]};\n }\n\n &[data-checked] {\n ${props => ({\n color: props.theme.colors.white,\n backgroundColor: props.theme.colors.accent[90],\n })}\n }\n`;\n","'use client';\n\nimport {useContext, useRef} from 'react';\nimport {useRefMerge} from '@join-x5/react-theme';\n\nimport {DataGridContext} from '../DataGridContext';\nimport {useDataGridTableCell} from '../TableCell/hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler, Ref} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from 'TableCell';\n\nexport const useTableCellTextInput = <T extends HTMLInputElement | HTMLTextAreaElement>(\n props: TableCellProps,\n baseRef: Ref<HTMLTableCellElement>\n) => {\n const {isDisabled, isActive, setIsActive} = props;\n\n const ref = useRefMerge(baseRef);\n const inputRef = useRef<T>(null);\n\n const onEdit = () => {\n const input = inputRef.current;\n if (isDisabled || !input) {\n return;\n }\n\n setIsActive?.(true);\n\n setTimeout(() => {\n input.selectionStart = input.value.length;\n input.focus();\n });\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (!isActive) {\n e.currentTarget.focus();\n }\n\n props.onClick?.(e);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableCellElement> = e => {\n onEdit();\n\n props.onDoubleClick?.(e);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!isActive && isEnterCode) {\n onEdit();\n }\n };\n\n const cellProps = {\n ...props,\n\n ref,\n onClick,\n onDoubleClick,\n onKeyDown,\n\n 'data-editable': !isDisabled ? true : undefined,\n };\n\n return {cellProps, ref, inputRef};\n};\n\nexport const useDataGridInputCell = (cell: ReactTableCell<unknown, unknown>) => {\n const props = useDataGridTableCell(cell);\n const context = useContext(DataGridContext);\n\n const isActive = cell.id === context.activeCell;\n const setIsActive = newIsActive => context.setActiveCell(newIsActive ? cell.id : null);\n\n return {...props, isActive, setIsActive};\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TButtonCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: 4,\n [SizeTokenValue.XSmall]: 4,\n [SizeTokenValue.Small]: 4,\n [SizeTokenValue.Medium]: 8,\n [SizeTokenValue.Large]: 6,\n [SizeTokenValue.XLarge]: 6,\n};\n\nexport const ButtonCell: TButtonCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridButtonCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridButtonCell: FRC<HTMLTableCellElement, DataGridButtonCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <ButtonCell ref={ref} {...cellProps}>\n {children}\n </ButtonCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Checkbox} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {CheckboxProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TCheckboxCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: CheckboxProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const CheckboxCell: TCheckboxCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Checkbox data-action tabIndex={-1} disabled={props.isDisabled} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridCheckboxCellProps<T = DefaultAny, V = DefaultAny> = CheckboxProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridCheckboxCell: FRC<HTMLTableCellElement, DataGridCheckboxCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as CheckboxProps;\n\n return <CheckboxCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Datepicker} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\nimport type {CalendarValue, DatepickerProps} from '@join-x5/react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDateCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: DatepickerProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DateCell: TDateCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Datepicker\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDateCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => CalendarValue;\n onChange: (cell: ReactTableCell<T, V>, newValue: CalendarValue) => void;\n} & Omit<DatepickerProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDateCell: FRC<HTMLTableCellElement, DataGridDateCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as DatepickerProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = newValue => onChange(cell, newValue);\n\n return <DateCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDateCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDateCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDateCell = <T, V>(args: GetDataGridDateCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDateCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Select} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {ChangeEvent, KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DatepickerProps, SelectOption, SelectProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDropdownCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SelectProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DropdownCell: TDropdownCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Select\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDropdownCellProps<T = DefaultAny, V = DefaultAny, O = unknown> = {\n getValue: (cell: ReactTableCell<T, V>) => SelectProps['value'];\n onChange: (\n cell: ReactTableCell<T, V>,\n newValue: SelectProps['value'],\n option?: SelectOption<O>,\n event?: ChangeEvent<HTMLInputElement>\n ) => void;\n} & Omit<SelectProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDropdownCell: FRC<HTMLTableCellElement, DataGridDropdownCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SelectProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (...args) => onChange(cell, ...args);\n\n return <DropdownCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDropdownCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDropdownCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDropdownCell = <T, V>(args: GetDataGridDropdownCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDropdownCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {ChevronDownIcon, ChevronRightIcon} from '@join-x5/react-icons';\nimport {IconButton, ButtonVariant} from '@join-x5/react';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TExpandingCell = FRC<\n HTMLTableCellElement,\n {\n depth: number;\n isParent?: boolean;\n } & TableCellProps\n>;\n\nconst sizePadding = (depth: number, size?: SizeTokenValue, isParent?: boolean): CSSProperties['padding'] => {\n const paddingOffset = depth * 20 + (isParent ? 0 : 8);\n\n switch (size) {\n case SizeTokenValue.XXSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.XSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Small:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Large:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n case SizeTokenValue.XLarge:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n default:\n return `8px 12px 8px ${paddingOffset + 8}px`;\n }\n};\n\nexport const ExpandingCell: TExpandingCell = forwardRef((props, ref) => {\n const {depth, isParent, padding, ...rest} = props;\n\n const resultPadding = padding ?? sizePadding(depth, props.size, isParent);\n\n return <TableCell ref={ref} padding={resultPadding} {...rest} />;\n});\n\nexport type DataGridExpandingCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridExpandingCell: FRC<HTMLTableCellElement, DataGridExpandingCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n if (!cell.row.getCanExpand()) {\n return (\n <ExpandingCell ref={ref} depth={cell.row.depth} {...cellProps}>\n <TableCellContent>{children}</TableCellContent>\n </ExpandingCell>\n );\n }\n\n const button = (() => {\n const Icon = cell.row.getIsExpanded() ? ChevronDownIcon : ChevronRightIcon;\n\n return (\n <IconButton\n data-action\n tabIndex={-1}\n variant={ButtonVariant.InnerInput}\n size={SizeTokenValue.XSmall}\n onClick={cell.row.getToggleExpandedHandler()}\n >\n <Icon size={SizeTokenValue.Small} />\n </IconButton>\n );\n })();\n\n const contentStyle = {\n display: 'flex',\n gap: '4px',\n width: '100%',\n height: '100%',\n alignItems: 'center',\n };\n\n return (\n <ExpandingCell isParent ref={ref} depth={cell.row.depth} {...cellProps}>\n <div style={contentStyle}>\n {button}\n <TableCellContent>{children}</TableCellContent>\n </div>\n </ExpandingCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TIconCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const IconCell: TIconCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridIconCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridIconCell: FRC<HTMLTableCellElement, DataGridIconCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <IconCell ref={ref} {...cellProps}>\n {children}\n </IconCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TLabelCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, string> = {\n [SizeTokenValue.XXSmall]: '6px 8px',\n [SizeTokenValue.XSmall]: '6px 8px',\n [SizeTokenValue.Small]: '6px 8px',\n [SizeTokenValue.Medium]: '10px 12px',\n [SizeTokenValue.Large]: '12px',\n [SizeTokenValue.XLarge]: '12px',\n};\n\nexport const LabelCell: TLabelCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridLabelCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridLabelCell: FRC<HTMLTableCellElement, DataGridLabelCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <LabelCell ref={ref} {...cellProps}>\n {children}\n </LabelCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Switch} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {SwitchProps} from '@join-x5/react';\nimport type {FRC, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TSwitchCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SwitchProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: '8px',\n [SizeTokenValue.XSmall]: '8px',\n [SizeTokenValue.Small]: '8px',\n [SizeTokenValue.Medium]: '12px',\n [SizeTokenValue.Large]: '14px 12px 14px 14px',\n [SizeTokenValue.XLarge]: '14px 12px 14px 14px',\n};\n\nexport const SwitchCell: TSwitchCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Switch data-action tabIndex={-1} disabled={props.isDisabled} size={SizeTokenValue.Small} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridSwitchCellProps<T = DefaultAny, V = DefaultAny> = SwitchProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridSwitchCell: FRC<HTMLTableCellElement, DataGridSwitchCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SwitchProps;\n\n return <SwitchCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst Input = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;\n\ntype TTextInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextInputCell: TTextInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLInputElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || isEnterCode) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{props.children}</ChildContent>\n <Input ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<TextInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridTextInputCell: FRC<HTMLTableCellElement, DataGridTextInputCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, children, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as TextInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {children}\n </TextInputCell>\n );\n});\n\nexport type GetDataGridTextInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextInputCell = <T, V>(args: GetDataGridTextInputCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextInputCell>\n );\n };\n};\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n min-height: 100%;\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst TextArea = styled.textarea`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n resize: none;\n\n ${baseTheme.scroll}\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>;\n\ntype TTextAreaInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextAreaInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextAreaInputCell: TTextAreaInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLTextAreaElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || (isEnterCode && e.ctrlKey)) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const content = props.isActive ? value : props.children;\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{content}</ChildContent>\n <TextArea ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextAreaInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<TextAreaInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\ntype TDataGridTextAreaInputCell = FRC<HTMLTableCellElement, DataGridTextAreaInputCellProps>;\n\nexport const DataGridTextAreaInputCell: TDataGridTextAreaInputCell = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const content = (cell.getValue() ?? null) as ReactNode;\n\n const inputProps = rest as TextAreaInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextAreaInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {content}\n </TextAreaInputCell>\n );\n});\n\nexport type GetDataGridTextAreaInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextAreaInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextAreaInputCell = <T, V>(\n args: GetDataGridTextAreaInputCellArgs<T, V>\n): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextAreaInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextAreaInputCell>\n );\n };\n};\n"],"names":["DataGridContext","createContext","activeCell","setActiveCell","DataGridContextProvider","children","rest","useState","jsx","_EMOTION_STRINGIFIED_CSS_ERROR__","TableWrapper","_styled","process","env","NODE_ENV","target","label","baseTheme","scroll","props","border","theme","colors","grey","backgroundColor","white","TableFooter","ControlPanel","ControlPanelContent","name","styles","toString","Container","Table","forwardRef","isResizing","ref","resultProps","undefined","DataGridTable","table","context","useContext","columnSizeVars","useMemo","headers","getFlatHeaders","colSizes","header","id","getSize","column","getState","columnSizingInfo","columnSizing","isResizingColumn","style","width","getTotalSize","qa","areaProps","isPinned","getIsPinned","columnArea","ColumnArea","FixedLeft","FixedRight","Default","left","getStart","isLastFixed","getIsLastColumn","right","getAfter","getIsFirstColumn","useDataGridTableCell","cell","isMultiline","isBordered","isShadowed","isNoFocus","size","verticalAlign","writingMode","userSelect","wordBreak","whiteSpace","isRowSelected","row","getIsSelected","getIsResizing","maxWidth","cellProps","Object","assign","columnDef","meta","deepestHeader","last","next","isPlaceholder","colSpan","subHeaders","length","tableHeaderSpan","deepest","rowSpan","depth","TableHeadCellVariant","Checkbox","TableHeadCellResizer","accent","Cell","color","SizeTokenValue","Large","toLocaleLowerCase","typography","h4","Medium","h5","Small","Content","TableHeadCell","baseRef","isDisabled","isActive","textAlign","startAdornment","endAdornment","resizer","dropdown","Dropdown","variant","useRefMerge","isDropdownOpen","setIsDropdownOpen","onKeyDown","e","code","currentTarget","blur","click","onClick","hasActive","toLowerCase","jsxs","DataGridTableHeadCell","isCombined","getCanResize","resetSize","getResizeHandler","stopPropagation","content","flexRender","getContext","headCellProps","getDataGridTableHeadCell","TableHeadRow","TableHead","DataGridTableHead","getHeaderGroups","map","headerGroup","getDataGridTableHead","sizePadding","XXSmall","XSmall","XLarge","p1compact","p2","caretColor","additional","red","Caption","p3","TableCellContent","contentProps","TableCell","isRowHover","isFocused","error","padding","isEnterCode","child","current","querySelector","parent","parentElement","curIndex","Array","from","childNodes","indexOf","sibling","previousElementSibling","nextElementSibling","nodeName","focus","prevRow","lastElementChild","nextRow","firstElementChild","caption","EditOnIcon","DataGridTableCell","getDataGridTableCell","isCustom","React","TableRow","DataGridTableRow","getVisibleCells","getDataGridTableRow","TableBody","DataGridTableBody","components","rowProps","rows","getRowModel","iterator","item","itemProps","index","MemoizedDataGridTableBody","memo","prev","options","data","getDataGridTableBody","Component","useVirtualTableBody","wrapperRef","virtualize","rowVirtualizer","useVirtualizer","count","estimateSize","getScrollElement","measureElement","el","getBoundingClientRect","height","overscan","rowRef","node","getVirtualItems","position","top","transform","start","containerProps","setTimeout","measure","getDataGridTableBodyVirtual","convertVisibility","settings","reduce","acc","isVisible","convertOrder","sort","a","b","String","convertPinning","area","push","useDataGridColumnSettings","tableProps","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","columnPinning","onColumnPinningChange","externalState","state","useUpdateEffect","newVisibility","newOrder","newPinning","oldState","JSON","stringify","DataGrid","bodyProps","headProps","columns","setTable","columnSettings","useReactTable","manualSorting","manualFiltering","manualPagination","columnResizeMode","getCoreRowModel","getExpandedRowModel","tableComponentProps","head","body","useEffect","TableDropdownHeader","h6","TableDropdownItem","useTableCellTextInput","setIsActive","inputRef","useRef","onEdit","input","selectionStart","value","onDoubleClick","useDataGridInputCell","newIsActive","ButtonCell","DataGridButtonCell","CheckboxCell","inputProps","DataGridCheckboxCell","DateCell","setIsOpen","newIsOpen","Datepicker","DataGridDateCell","getValue","onChange","newValue","getDataGridDateCell","args","DropdownCell","Select","DataGridDropdownCell","getDataGridDropdownCell","isParent","paddingOffset","ExpandingCell","resultPadding","DataGridExpandingCell","getCanExpand","button","Icon","getIsExpanded","ChevronDownIcon","ChevronRightIcon","IconButton","ButtonVariant","InnerInput","getToggleExpandedHandler","contentStyle","display","gap","alignItems","IconCell","DataGridIconCell","LabelCell","DataGridLabelCell","SwitchCell","Switch","DataGridSwitchCell","ChildContent","Input","TextInputCell","setValue","onBlur","isChildHidden","DataGridTextInputCell","getDataGridTextInputCell","TextArea","TextAreaInputCell","ctrlKey","DataGridTextAreaInputCell","getDataGridTextAreaInputCell"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/DataGridContext.tsx","../src/Table/index.tsx","../src/TableCell/hook.ts","../src/TableHeadCell/utils.ts","../src/TableHeadCell/types.ts","../src/TableHeadCell/index.tsx","../src/TableHeadRow/index.tsx","../src/TableHead/index.tsx","../src/TableCell/index.tsx","../src/TableRow/index.tsx","../src/TableBody/DataGridTableBody.tsx","../src/TableBody/hook.ts","../src/TableBody/DataGridTableBodyVirtual.tsx","../src/hook.ts","../src/DataGrid.tsx","../src/TableDropdown/index.tsx","../src/TableInputCell/hook.ts","../src/TableInputCell/button.tsx","../src/TableInputCell/checkbox.tsx","../src/TableInputCell/date.tsx","../src/TableInputCell/dropdown.tsx","../src/TableInputCell/expanding.tsx","../src/TableInputCell/icon.tsx","../src/TableInputCell/label.tsx","../src/TableInputCell/switch.tsx","../src/TableInputCell/text.tsx","../src/TableInputCell/textarea.tsx"],"sourcesContent":["'use client';\n\nimport {createContext, useState} from 'react';\n\nimport type {PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridProps} from 'types';\n\ntype CommonProps = Pick<\n DataGridProps,\n | 'isMultiline'\n | 'isShadowed'\n | 'isNoFocus'\n | 'isCombined'\n | 'qa'\n | 'isBordered'\n | 'size'\n | 'verticalAlign'\n | 'textAlign'\n | 'writingMode'\n | 'userSelect'\n | 'wordBreak'\n | 'whiteSpace'\n | 'cellProps'\n | 'headCellProps'\n>;\n\ntype DataGridContextProps = {\n activeCell: string | null;\n setActiveCell: (newActiveCell: string | null) => void;\n} & CommonProps;\n\nexport const DataGridContext = createContext<DataGridContextProps>({\n activeCell: null,\n setActiveCell: () => {},\n});\n\nexport const DataGridContextProvider: React.FC<PropsWithChildren & CommonProps> = ({children, ...rest}) => {\n const [activeCell, setActiveCell] = useState<string | null>(null);\n\n return <DataGridContext.Provider value={{activeCell, setActiveCell, ...rest}}>{children}</DataGridContext.Provider>;\n};\n","'use client';\n\nimport {useContext, useMemo} from 'react';\nimport styled from '@emotion/styled';\n\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Table as ReactTableTable} from '@tanstack/react-table';\nimport type {CSSProperties, FRC} from '@join-x5/react-theme';\nimport type {TableProps} from './types';\n\nexport const TableWrapper = styled.div`\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border-collapse: collapse;\n border-radius: 8px 8px 0 0;\n overflow: auto;\n\n ${baseTheme.scroll}\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const TableFooter = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n border-radius: 0 0 8px 8px;\n gap: 12px;\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const ControlPanel = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n border-radius: 8px;\n background-color: ${props => props.theme.colors.white};\n`;\n\nexport const ControlPanelContent = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n`;\n\nconst Container = styled.table`\n border-collapse: separate;\n table-layout: fixed;\n border-spacing: 0;\n\n &[data-is-resizing] {\n cursor: col-resize;\n }\n`;\n\nexport const Table: FRC<HTMLTableElement, TableProps> = forwardRef(({isResizing, ...rest}, ref) => {\n const resultProps = {\n ...rest,\n\n 'data-is-resizing': isResizing ? true : undefined,\n };\n\n return <Container ref={ref} cellSpacing={0} cellPadding={0} {...resultProps}></Container>;\n});\n\ntype DataGridTableProps = {table: ReactTableTable<unknown>} & Omit<TableProps, 'isResizing'>;\n\nexport const DataGridTable: FRC<HTMLTableElement, DataGridTableProps> = forwardRef(({table, ...props}, ref) => {\n const context = useContext(DataGridContext);\n\n const columnSizeVars = useMemo(() => {\n const headers = table.getFlatHeaders();\n const colSizes: CSSProperties = {};\n\n for (const header of headers) {\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n\n return colSizes;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table.getState().columnSizingInfo, table.getState().columnSizing]);\n\n const isResizing = !!table.getState().columnSizingInfo.isResizingColumn;\n\n const resultProps = {\n ...props,\n\n isResizing,\n\n style: {\n width: table.getTotalSize(),\n\n ...props.style,\n ...columnSizeVars,\n },\n\n 'data-qa': context.qa,\n };\n\n return <Table ref={ref} {...resultProps} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Column, Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from './types';\n\nexport const areaProps = (column: Column<unknown>, props: TableCellProps): void => {\n const isPinned = column.getIsPinned();\n\n props.columnArea = (() => {\n switch (column.getIsPinned()) {\n case 'left':\n return ColumnArea.FixedLeft;\n case 'right':\n return ColumnArea.FixedRight;\n }\n\n return ColumnArea.Default;\n })();\n\n if (!isPinned) {\n return;\n }\n\n props.style ??= {};\n\n if (isPinned === 'left') {\n props.style.left = `${column.getStart('left')}px`;\n props.isLastFixed = column.getIsLastColumn('left');\n } else {\n props.style.right = `${column.getAfter('right')}px`;\n props.isLastFixed = column.getIsFirstColumn('right');\n }\n};\n\nexport const useDataGridTableCell = (cell: ReactTableCell<unknown, unknown>) => {\n const context = useContext(DataGridContext);\n\n const isMultiline = typeof context.isMultiline === 'boolean' ? context.isMultiline : context.isMultiline?.(cell);\n const width = `calc(var(--header-${cell.column?.id}-size) * 1px)`;\n\n const resultProps: TableCellProps = {\n isMultiline,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n isNoFocus: context.isNoFocus,\n size: context.size,\n verticalAlign: context.verticalAlign,\n writingMode: context.writingMode,\n userSelect: context.userSelect,\n wordBreak: context.wordBreak,\n whiteSpace: context.whiteSpace,\n\n isRowSelected: cell.row.getIsSelected(),\n isResizing: cell.column.getIsResizing(),\n\n style: {\n width,\n maxWidth: width,\n },\n };\n\n areaProps(cell.column, resultProps);\n\n if (context.cellProps) {\n Object.assign(resultProps, typeof context.cellProps === 'function' ? context.cellProps(cell) : context.cellProps);\n }\n\n if (cell.column.columnDef.meta?.cellProps) {\n Object.assign(resultProps, cell.column.columnDef.meta?.cellProps);\n }\n\n return resultProps;\n};\n","import type {Header} from '@tanstack/react-table';\n\nconst deepestHeader = <T, V>(header: Header<T, V>): Header<T, V> | null => {\n let last = header;\n while (true) {\n const next = last.isPlaceholder && last.colSpan === 1 && last.subHeaders.length === 1 ? last.subHeaders[0] : null;\n\n if (next) {\n last = next;\n } else {\n return last === header ? null : last;\n }\n }\n};\n\nexport const tableHeaderSpan = <T, V>(header: Header<T, V>): [Header<T, V> | null, number | null] => {\n const deepest = deepestHeader(header);\n\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n\n if (above > 1) {\n return [header, null];\n }\n\n if (rowSpan <= 1) {\n return [header, rowSpan];\n }\n\n return [deepest ?? header, rowSpan];\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from '@join-x5/react-theme';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ReactNode, ThHTMLAttributes} from 'react';\nimport type {CSSProperties, QA} from '@join-x5/react-theme';\nimport type {DropdownProps} from '@join-x5/react';\n\nexport enum TableHeadCellVariant {\n Default = 'default',\n Checkbox = 'checkbox',\n}\n\nexport type TableHeadCellProps = {\n /** Размер */\n size?: SizeTokenValue;\n\n /** Вариант */\n variant?: TableHeadCellVariant;\n\n /** Установка состояния \"Отключен\" */\n isDisabled?: boolean;\n /** Установка состояния \"Активен\" */\n isActive?: boolean;\n /** С границей */\n isBordered?: boolean;\n /** Показывать тень вместо границы, в закрепленных столбцах и шапке */\n isShadowed?: boolean;\n /** Пустая клетка\n *\n * Клетка может быть пустой в ситуации многоуровневых заголовков\n */\n isPlaceholder?: boolean;\n\n /** Расположение колонки */\n columnArea?: ColumnArea;\n /** Последняя закрепленная колонка\n *\n * Добавляет тень в зависимости от `columnArea`\n */\n isLastFixed?: boolean;\n\n /** Иконка | Контент слева */\n startAdornment?: ReactNode;\n /** Иконка | Контент справа */\n endAdornment?: ReactNode;\n\n /** Контрол смены размера */\n resizer?: ReactNode;\n\n /** Контент дропдауна */\n dropdown?: React.FC<DropdownProps>;\n} & QA &\n Pick<CSSProperties, 'verticalAlign' | 'textAlign' | 'writingMode' | 'userSelect'> &\n ThHTMLAttributes<HTMLTableCellElement>;\n","'use client';\n\nimport {useContext, useState} from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport {areaProps} from 'TableCell/hook';\n\nimport {tableHeaderSpan} from './utils';\nimport {TableHeadCellVariant} from './types';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Header} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadCellProps} from './types';\n\nexport const TableHeadCellResizer = styled.div`\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n top: 0;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n z-index: 1;\n\n ::before {\n content: '';\n display: block;\n width: 3px;\n height: 24px;\n border-radius: 8px;\n user-select: none;\n pointer-events: none;\n opacity: 0;\n\n background-color: ${props => props.theme.colors.accent[80]};\n }\n\n &[data-resizing]::before {\n opacity: 1;\n }\n`;\n\nconst Cell = styled.th`\n position: relative;\n box-sizing: border-box;\n\n ${props => ({\n color: props.theme.colors.grey[100],\n backgroundColor: props.theme.colors.white,\n\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 44px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 14px 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h4}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 40px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n padding: 8px;\n min-height: 32px;\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-shadowed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n\n &::before {\n border-bottom-width: 0;\n }\n }\n\n &[data-placeholder] {\n pointer-events: none;\n\n &:has(+ [data-placeholder])::after {\n display: none;\n }\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n &[data-has-active] {\n cursor: pointer;\n\n &[data-active],\n :active {\n ${props => ({\n backgroundColor: props.theme.colors.grey[30],\n\n '--border-color': 'transparent',\n })}\n }\n }\n\n :focus {\n outline: none;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 2px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n ::after {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: calc(50% - 8px);\n right: 0;\n width: 2px;\n height: 16px;\n user-select: none;\n pointer-events: none;\n background-color: var(--border-color, transparent);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 2px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 2px 0;\n }\n\n ::after {\n display: none;\n }\n }\n\n :last-of-type::after {\n display: none;\n }\n\n [data-resizer] {\n right: -5px;\n }\n\n :last-of-type [data-resizer] {\n right: 0;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n align-self: center;\n`;\n\nexport const TableHeadCell: FRC<HTMLTableCellElement, TableHeadCellProps> = forwardRef((props, baseRef) => {\n const {\n children,\n\n isDisabled,\n isActive,\n isBordered,\n isLastFixed,\n isShadowed,\n isPlaceholder,\n\n writingMode,\n verticalAlign = 'top',\n textAlign = 'left',\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n resizer,\n dropdown: Dropdown,\n\n variant = TableHeadCellVariant.Default,\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const ref = useRefMerge(baseRef);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n if (e.code === 'Escape') {\n e.currentTarget.blur();\n }\n\n if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n e.currentTarget.click();\n }\n\n props.onKeyDown?.(e);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (Dropdown && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n\n props.onClick?.(e);\n };\n\n const dropdown = Dropdown ? <Dropdown targetRef={ref} isOpen={isDropdownOpen} setIsOpen={setIsDropdownOpen} /> : null;\n const hasActive = !!props.onClick || !!Dropdown || !!isActive;\n\n const cellProps = {\n ...rest,\n\n onClick,\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-active': isActive || isDropdownOpen ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-placeholder': isPlaceholder ? true : undefined,\n 'data-has-active': hasActive ? true : undefined,\n 'data-has-end-adornment': endAdornment ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${variant.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n <Content>{children}</Content>\n {endAdornment}\n </Container>\n {resizer}\n {dropdown}\n </Cell>\n );\n});\n\ntype DataGridTableHeadCellProps = {\n header: Header<unknown, unknown>;\n};\n\nexport const DataGridTableHeadCell: React.FC<DataGridTableHeadCellProps> = cell => {\n const context = useContext(DataGridContext);\n\n let header: DataGridTableHeadCellProps['header'] | null = cell.header;\n let rowSpan: number | null = header.rowSpan;\n\n if (context.isCombined) {\n [header, rowSpan] = tableHeaderSpan(cell.header);\n if (!header || !rowSpan) {\n return null;\n }\n }\n\n const resizer = (() => {\n if (header.isPlaceholder || header.column.getCanResize() === false) {\n return null;\n }\n\n return (\n <TableHeadCellResizer\n data-resizer\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n data-resizing={header.column.getIsResizing() ? true : undefined}\n onClick={e => e.stopPropagation()}\n />\n );\n })();\n\n const content = header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext());\n\n const resultProps: TableHeadCellProps = {\n resizer,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n isPlaceholder: header.isPlaceholder,\n size: context.size,\n verticalAlign: context.verticalAlign,\n\n colSpan: header.colSpan || undefined,\n rowSpan: rowSpan || undefined,\n\n style: {\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n },\n };\n\n areaProps(header.column, resultProps);\n\n if (context.headCellProps) {\n Object.assign(\n resultProps,\n typeof context.headCellProps === 'function' ? context.headCellProps(header) : context.headCellProps\n );\n }\n\n if (header.column.columnDef.meta?.headCellProps) {\n Object.assign(resultProps, header.column.columnDef.meta?.headCellProps);\n }\n\n return (\n <TableHeadCell key={header.id} {...resultProps}>\n {content}\n </TableHeadCell>\n );\n};\n\nexport const getDataGridTableHeadCell = (header: DataGridTableHeadCellProps['header']) => {\n return <DataGridTableHeadCell key={header.id} header={header} />;\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadRowProps} from './types';\n\nconst Container = styled.tr``;\n\nexport const TableHeadRow: FRC<HTMLTableRowElement, TableHeadRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableHeadCell} from 'TableHeadCell';\nimport {TableHeadRow} from 'TableHeadRow';\n\nimport type {HTMLAttributes} from 'react';\nimport type {Table} from '@tanstack/react-table';\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableHead = styled.thead`\n position: sticky;\n top: 0;\n z-index: 2;\n`;\n\ntype DataGridTableHeadProps = {\n table: Table<unknown>;\n} & TableHeadProps;\n\nconst DataGridTableHead: React.FC<DataGridTableHeadProps> = ({table, ...props}) => {\n const context = useContext(DataGridContext);\n\n const content = table\n .getHeaderGroups()\n .map(headerGroup => (\n <TableHeadRow key={headerGroup.id}>\n {headerGroup.headers.map(header => getDataGridTableHeadCell(header))}\n </TableHeadRow>\n ));\n\n return (\n <TableHead data-qa={`${context.qa}-head`} {...props}>\n {content}\n </TableHead>\n );\n};\n\nexport const getDataGridTableHead = (table: Table<unknown>, props?: TableHeadProps) => {\n return <DataGridTableHead table={table} {...props} />;\n};\n","'use client';\n\nimport React from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {EditOnIcon} from '@join-x5/react-icons';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {useDataGridTableCell} from './hook';\n\nimport type {HTMLAttributes, KeyboardEventHandler} from 'react';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from './types';\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 12,\n [SizeTokenValue.XLarge]: 12,\n};\n\nconst Cell = styled.td`\n position: relative;\n box-sizing: border-box;\n height: 1px;\n border-radius: 0;\n border-spacing: 0;\n background-color: var(--background-color, transparent);\n\n ${props => ({\n color: props.theme.colors.grey[100],\n\n '--background-color': props.theme.colors.white,\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n min-height: 44px;\n\n ${props => props.theme.typography.p1compact}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n min-height: 40px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n min-height: 32px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-row-hover] {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[40],\n })}\n }\n\n :not([data-disabled]):hover::before {\n border-width: 1px;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n &[data-row-selected] {\n ${props => ({\n '--background-color': props.theme.colors.accent[10],\n '--border-color': props.theme.colors.accent[20],\n })}\n }\n\n :focus {\n outline: none;\n }\n\n &[data-focused],\n :focus:not([data-no-focus]) {\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: visible;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-active] {\n outline: none;\n\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: hidden;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-error] {\n ::after {\n display: block;\n }\n\n ${props => ({\n caretColor: props.theme.colors.additional.red[80],\n\n '--background-color': props.theme.colors.white,\n '--border-color': 'transparent',\n '--outline-color': props.theme.colors.additional.red[80],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 1px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 1px 0;\n }\n }\n\n &[data-resizing] {\n border-right: 1px solid ${props => props.theme.colors.accent[20]};\n }\n\n ::after {\n content: '';\n display: none;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 2px;\n border-style: solid;\n border-radius: 4px;\n border-color: var(--outline-color, transparent);\n }\n\n [data-edit-icon] {\n display: none;\n position: absolute;\n visibility: hidden;\n right: 0;\n top: 0;\n background-color: var(--background-color, transparent);\n }\n\n &[data-editable] [data-edit-icon] {\n display: block;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n position: relative;\n flex-grow: 1;\n word-break: break-word;\n\n :not([data-is-multiline]) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst Caption = styled.div`\n padding: 4px 0 0;\n width: 100%;\n word-break: break-all;\n\n ${props => ({\n ...props.theme.typography.p3,\n\n color: props.theme.colors.additional.red[80],\n })}\n`;\n\ntype TableCellContentProps = Partial<Pick<TableCellProps, 'children' | 'isMultiline' | 'whiteSpace' | 'wordBreak'>> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const TableCellContent: FRC<HTMLDivElement, TableCellContentProps> = forwardRef((props, ref) => {\n const {children, style, isMultiline, whiteSpace, wordBreak = 'break-word', ...rest} = props;\n\n const contentProps = {\n ...rest,\n\n style: {\n whiteSpace,\n wordBreak,\n\n ...style,\n },\n\n 'data-content': true,\n 'data-is-multiline': isMultiline ? true : undefined,\n };\n\n return (\n <Content ref={ref} {...contentProps}>\n {children}\n </Content>\n );\n});\n\nexport const TableCell: FRC<HTMLTableCellElement, TableCellProps> = forwardRef((props, baseRef) => {\n const ref = useRefMerge(baseRef);\n\n const {\n children,\n\n isDisabled,\n isRowHover,\n isRowSelected,\n isBordered,\n isShadowed,\n isNoFocus,\n isFocused,\n isActive,\n isResizing,\n isLastFixed,\n error,\n\n textAlign,\n writingMode,\n verticalAlign,\n padding,\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (isEnterCode) {\n const child = ref.current?.querySelector('[data-action]') as HTMLElement;\n\n if (isEnterCode && child) {\n child.click();\n }\n\n return;\n }\n\n if (e.code === 'Escape') {\n ref.current?.blur();\n return;\n }\n\n const isNavigation =\n e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight';\n\n if (isNavigation && !isNoFocus) {\n const parent = ref.current?.parentElement as HTMLElement;\n const curIndex = Array.from(parent?.childNodes).indexOf(ref.current as HTMLElement);\n\n switch (e.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const sibling = (\n e.code === 'ArrowUp' ? parent?.previousElementSibling : parent?.nextElementSibling\n ) as HTMLElement;\n\n if (parent?.nodeName === sibling?.nodeName) {\n const nextFocus = sibling?.children[curIndex] as HTMLElement;\n\n nextFocus?.focus();\n }\n }\n break;\n\n case 'ArrowLeft':\n if (curIndex > 0) {\n const prevSibling = parent?.children[curIndex - 1] as HTMLElement;\n prevSibling?.focus();\n } else {\n const prevRow = parent?.previousElementSibling as HTMLElement;\n if (parent?.nodeName === prevRow?.nodeName) {\n const lastCell = prevRow.lastElementChild as HTMLElement;\n lastCell?.focus();\n }\n }\n break;\n case 'ArrowRight':\n if (curIndex < parent?.children.length - 1) {\n const nextSibling = parent?.children[curIndex + 1] as HTMLElement;\n nextSibling?.focus();\n } else {\n const nextRow = parent?.nextElementSibling as HTMLElement;\n if (parent?.nodeName === nextRow?.nodeName) {\n const firstCell = nextRow.firstElementChild as HTMLElement;\n firstCell?.focus();\n }\n }\n break;\n }\n }\n };\n\n const cellProps = {\n ...rest,\n\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n padding: padding ?? sizePadding[size],\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-focused': isFocused ? true : undefined,\n 'data-error': error ? true : undefined,\n 'data-row-hover': isRowHover ? true : undefined,\n 'data-row-selected': isRowSelected ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-no-focus': isNoFocus ? true : undefined,\n 'data-resizing': isResizing ? true : undefined,\n 'data-active': isActive ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n const caption = typeof error === 'string' ? <Caption>{error}</Caption> : null;\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n {children}\n {endAdornment}\n <EditOnIcon data-edit-icon size={SizeTokenValue.Small} />\n </Container>\n {caption}\n </Cell>\n );\n});\n\nexport const DataGridTableCell: FRC<HTMLTableCellElement, DataGridTableCellProps & PropsWithChildren> = forwardRef(\n (props, ref) => {\n const resultProps = useDataGridTableCell(props.cell);\n\n const contentProps = {\n isMultiline: resultProps.isMultiline,\n whiteSpace: resultProps.whiteSpace,\n wordBreak: resultProps.wordBreak,\n };\n\n return (\n <TableCell ref={ref} {...resultProps}>\n <TableCellContent {...contentProps}>{props.children}</TableCellContent>\n </TableCell>\n );\n }\n);\n\nexport const getDataGridTableCell = (cell: DataGridTableCellProps['cell']) => {\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n\n if (cell.column.columnDef.meta?.isCustom) {\n return <React.Fragment key={cell.id}>{content}</React.Fragment>;\n }\n\n return (\n <DataGridTableCell key={cell.id} cell={cell}>\n {content}\n </DataGridTableCell>\n );\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {getDataGridTableCell} from 'TableCell';\n\nimport type {HTMLAttributes} from 'react';\nimport type {Row} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {GetDataGridTableRow} from '../types';\n\nexport type TableRowProps = HTMLAttributes<HTMLTableRowElement>;\n\nexport const TableRow = styled.tr`\n :hover [data-cell] {\n :not([data-focused], [data-active], [data-disabled]) [data-edit-icon] {\n visibility: visible;\n }\n\n :not([data-focused], [data-active]):not(:focus:not([data-no-focus])) {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n }\n`;\n\ntype DataGridTableRowProps = {row: Row<unknown>} & TableRowProps;\n\nconst DataGridTableRow: FRC<HTMLTableRowElement, DataGridTableRowProps> = forwardRef((props, ref) => {\n const {row, ...rest} = props;\n\n const content = row.getVisibleCells().map(getDataGridTableCell);\n\n return (\n <TableRow ref={ref} {...rest}>\n {content}\n </TableRow>\n );\n});\n\nexport const getDataGridTableRow: GetDataGridTableRow = (row, props) => (\n <DataGridTableRow key={row.id} row={row} {...props} />\n);\n","'use client';\n\nimport {memo, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableRow} from 'TableRow';\n\nimport type {Table} from '@tanstack/react-table';\nimport type {DataGridProps} from 'types';\nimport type {TableBodyProps} from './types';\n\nexport const TableBody = styled.tbody`\n position: relative;\n`;\n\ntype DataGridTableBodyProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components' | 'rowProps'> &\n TableBodyProps;\n\nconst DataGridTableBody: React.FC<DataGridTableBodyProps> = props => {\n const {table, components, rowProps, ...rest} = props;\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const iterator = components?.row ?? getDataGridTableRow;\n\n const child = rows.map(item => {\n const itemProps = typeof rowProps === 'function' ? rowProps(rows[item.index]) : rowProps;\n\n return iterator(item, itemProps);\n });\n\n return (\n <TableBody data-qa={`${context.qa}-body`} {...rest}>\n {child}\n </TableBody>\n );\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBody = (props: DataGridTableBodyProps) => {\n const isResizing = props.table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component {...props} />;\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableRow} from 'TableRow';\n\nimport type {Table} from '@tanstack/react-table';\nimport type {VirtualItem} from '@tanstack/react-virtual';\nimport type {TableRowProps} from 'TableRow';\nimport type {DataGridProps} from 'types';\nimport type {TableBodyProps} from './types';\n\nexport type DataGridTableBodyVirtualProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components' | 'rowProps'> &\n Required<Pick<DataGridProps, 'virtualize' | 'wrapperRef'>> &\n TableBodyProps;\n\nexport const useVirtualTableBody = (props: DataGridTableBodyVirtualProps) => {\n const {table, components, rowProps, wrapperRef, virtualize, ...rest} = props;\n\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40,\n getScrollElement: () => wrapperRef.current,\n measureElement: el => el.getBoundingClientRect().height,\n overscan: 5,\n\n ...(typeof virtualize === 'object' ? virtualize : undefined),\n });\n\n const iterator = components?.row ?? getDataGridTableRow;\n const rowRef = (node: HTMLTableRowElement) => rowVirtualizer.measureElement(node);\n\n const child = rowVirtualizer.getVirtualItems().map((item: VirtualItem) => {\n const row = rows[item.index];\n\n const itemProps = {\n ref: rowRef,\n\n 'data-index': item.index,\n\n style: {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n transform: `translateY(${item.start}px)`,\n },\n } as TableRowProps;\n\n if (rowProps) {\n Object.assign(itemProps, typeof rowProps === 'function' ? rowProps(row) : rowProps);\n }\n\n return iterator(row, itemProps);\n });\n\n const containerProps = {\n 'data-qa': `${context.qa}-body`,\n\n style: {\n height: rowVirtualizer.getTotalSize(),\n\n ...rest.style,\n },\n };\n\n if (!wrapperRef.current) {\n setTimeout(rowVirtualizer.measure);\n }\n\n return {containerProps, child};\n};\n","import {memo} from 'react';\n\nimport {TableBody} from './DataGridTableBody';\nimport {useVirtualTableBody} from './hook';\n\nimport type {DataGridTableBodyVirtualProps} from './hook';\n\nconst DataGridTableBody: React.FC<DataGridTableBodyVirtualProps> = props => {\n const {containerProps, child} = useVirtualTableBody(props);\n return <TableBody {...containerProps}>{child}</TableBody>;\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBodyVirtual = (props: DataGridTableBodyVirtualProps) => {\n const isResizing = props.table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component {...props} />;\n};\n","'use client';\n\nimport {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ColumnOrderState, ColumnPinningState, TableState, VisibilityState} from '@tanstack/react-table';\nimport type {ColumnItem} from '@join-x5/react-data-grid-settings';\nimport type {DataGridProps} from 'types';\n\nconst convertVisibility = (settings?: ColumnItem[]): VisibilityState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n acc[item.id] = item.isVisible;\n return acc;\n }, {} as VisibilityState);\n};\n\nconst convertOrder = (settings?: ColumnItem[]): ColumnOrderState => {\n if (!settings || !settings.length) {\n return [];\n }\n\n return settings.sort((a, b) => a.sort - b.sort).map(item => String(item.id));\n};\n\nconst convertPinning = (settings?: ColumnItem[]): ColumnPinningState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n if (item.area === ColumnArea.FixedLeft) {\n acc.left ??= [];\n acc.left?.push(String(item.id));\n } else if (item.area === ColumnArea.FixedRight) {\n acc.right ??= [];\n acc.right?.push(String(item.id));\n }\n\n return acc;\n }, {} as ColumnPinningState);\n};\n\nexport const useDataGridColumnSettings = (\n settings?: DataGridProps['columnSettings'],\n tableProps?: DataGridProps['tableProps']\n) => {\n const [columnVisibility, onColumnVisibilityChange] = useState<VisibilityState>(convertVisibility(settings));\n const [columnOrder, onColumnOrderChange] = useState<ColumnOrderState>(convertOrder(settings));\n const [columnPinning, onColumnPinningChange] = useState<ColumnPinningState>(convertPinning(settings));\n\n const externalState = tableProps?.state;\n\n const state = useMemo((): Partial<TableState> => {\n return {columnVisibility, columnOrder, columnPinning, ...externalState};\n }, [externalState, columnVisibility, columnOrder, columnPinning]);\n\n useUpdateEffect(() => {\n const newVisibility = convertVisibility(settings);\n const newOrder = convertOrder(settings);\n const newPinning = convertPinning(settings);\n\n onColumnVisibilityChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newVisibility) ? oldState : newVisibility\n );\n\n onColumnOrderChange(oldState => (JSON.stringify(oldState) === JSON.stringify(newOrder) ? oldState : newOrder));\n\n onColumnPinningChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newPinning) ? oldState : newPinning\n );\n }, [settings]);\n\n return state;\n};\n","'use client';\n\nimport {useEffect} from 'react';\nimport {getCoreRowModel, getExpandedRowModel, useReactTable} from '@tanstack/react-table';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridTable} from 'Table';\n\nimport {DataGridContextProvider} from 'DataGridContext';\nimport {getDataGridTableHead} from 'TableHead';\nimport {getDataGridTableBody, getDataGridTableBodyVirtual} from 'TableBody';\n\nimport {useDataGridColumnSettings} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridProps} from './types';\n\nexport const DataGrid: FRC<HTMLTableElement, DataGridProps> = forwardRef((props, ref) => {\n const {\n qa = 'datagrid',\n\n isBordered,\n isMultiline,\n isCombined,\n isShadowed,\n isNoFocus,\n\n size,\n width,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n rowProps,\n bodyProps,\n headProps,\n virtualize,\n wrapperRef,\n\n columns,\n data,\n tableProps,\n setTable,\n columnSettings,\n components,\n children,\n\n verticalAlign = props.isMultiline ? 'top' : 'center',\n\n ...rest\n } = props;\n\n const state = useDataGridColumnSettings(columnSettings, tableProps);\n\n const table = useReactTable({\n columns,\n data,\n\n manualSorting: true,\n manualFiltering: true,\n manualPagination: true,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n ...tableProps,\n\n state,\n });\n\n const context = {\n size,\n verticalAlign,\n isBordered,\n isMultiline,\n isCombined,\n isShadowed,\n isNoFocus,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n qa,\n };\n\n const tableComponentProps = {\n ...rest,\n\n table,\n style: width ? {width, ...rest.style} : rest.style,\n 'data-qa': qa,\n };\n\n const head = getDataGridTableHead(table, headProps);\n const body =\n virtualize && wrapperRef\n ? getDataGridTableBodyVirtual({table, components, rowProps, virtualize, wrapperRef, ...bodyProps})\n : getDataGridTableBody({table, components, rowProps, ...bodyProps});\n\n useEffect(() => {\n setTable?.(table);\n }, [table, setTable]);\n\n return (\n <DataGridContextProvider {...context}>\n <DataGridTable ref={ref} {...tableComponentProps}>\n {head}\n {children}\n {body}\n </DataGridTable>\n </DataGridContextProvider>\n );\n});\n","import styled from '@emotion/styled';\n\nexport const TableDropdownHeader = styled.div`\n padding: 8px 12px 4px;\n user-select: none;\n\n ${props => ({\n ...props.theme.typography.h6,\n\n color: props.theme.colors.grey[70],\n })}\n`;\n\nexport const TableDropdownItem = styled.div`\n padding: 6px 12px;\n user-select: none;\n cursor: pointer;\n\n ${props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.grey[100],\n })}\n\n :hover {\n background-color: ${props => props.theme.colors.grey[10]};\n }\n\n &[data-checked] {\n ${props => ({\n color: props.theme.colors.white,\n backgroundColor: props.theme.colors.accent[90],\n })}\n }\n`;\n","'use client';\n\nimport {useContext, useRef} from 'react';\nimport {useRefMerge} from '@join-x5/react-theme';\n\nimport {DataGridContext} from '../DataGridContext';\nimport {useDataGridTableCell} from '../TableCell/hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler, Ref} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from 'TableCell';\n\nexport const useTableCellTextInput = <T extends HTMLInputElement | HTMLTextAreaElement>(\n props: TableCellProps,\n baseRef: Ref<HTMLTableCellElement>\n) => {\n const {isDisabled, isActive, setIsActive} = props;\n\n const ref = useRefMerge(baseRef);\n const inputRef = useRef<T>(null);\n\n const onEdit = () => {\n const input = inputRef.current;\n if (isDisabled || !input) {\n return;\n }\n\n setIsActive?.(true);\n\n setTimeout(() => {\n input.selectionStart = input.value.length;\n input.focus();\n });\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (!isActive) {\n e.currentTarget.focus();\n }\n\n props.onClick?.(e);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableCellElement> = e => {\n onEdit();\n\n props.onDoubleClick?.(e);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!isActive && isEnterCode) {\n onEdit();\n }\n };\n\n const cellProps = {\n ...props,\n\n ref,\n onClick,\n onDoubleClick,\n onKeyDown,\n\n 'data-editable': !isDisabled ? true : undefined,\n };\n\n return {cellProps, ref, inputRef};\n};\n\nexport const useDataGridInputCell = (cell: ReactTableCell<unknown, unknown>) => {\n const props = useDataGridTableCell(cell);\n const context = useContext(DataGridContext);\n\n const isActive = cell.id === context.activeCell;\n const setIsActive = newIsActive => context.setActiveCell(newIsActive ? cell.id : null);\n\n return {...props, isActive, setIsActive};\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TButtonCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: 4,\n [SizeTokenValue.XSmall]: 4,\n [SizeTokenValue.Small]: 4,\n [SizeTokenValue.Medium]: 8,\n [SizeTokenValue.Large]: 6,\n [SizeTokenValue.XLarge]: 6,\n};\n\nexport const ButtonCell: TButtonCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridButtonCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridButtonCell: FRC<HTMLTableCellElement, DataGridButtonCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <ButtonCell ref={ref} {...cellProps}>\n {children}\n </ButtonCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Checkbox} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {CheckboxProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TCheckboxCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: CheckboxProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const CheckboxCell: TCheckboxCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Checkbox data-action tabIndex={-1} disabled={props.isDisabled} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridCheckboxCellProps<T = DefaultAny, V = DefaultAny> = CheckboxProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridCheckboxCell: FRC<HTMLTableCellElement, DataGridCheckboxCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as CheckboxProps;\n\n return <CheckboxCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Datepicker} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\nimport type {CalendarValue, DatepickerProps} from '@join-x5/react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDateCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: DatepickerProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DateCell: TDateCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Datepicker\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDateCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => CalendarValue;\n onChange: (cell: ReactTableCell<T, V>, newValue: CalendarValue) => void;\n} & Omit<DatepickerProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDateCell: FRC<HTMLTableCellElement, DataGridDateCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as DatepickerProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = newValue => onChange(cell, newValue);\n\n return <DateCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDateCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDateCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDateCell = <T, V>(args: GetDataGridDateCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDateCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Select} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {ChangeEvent, KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DatepickerProps, SelectOption, SelectProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDropdownCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SelectProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DropdownCell: TDropdownCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Select\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDropdownCellProps<T = DefaultAny, V = DefaultAny, O = unknown> = {\n getValue: (cell: ReactTableCell<T, V>) => SelectProps['value'];\n onChange: (\n cell: ReactTableCell<T, V>,\n newValue: SelectProps['value'],\n option?: SelectOption<O>,\n event?: ChangeEvent<HTMLInputElement>\n ) => void;\n} & Omit<SelectProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDropdownCell: FRC<HTMLTableCellElement, DataGridDropdownCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SelectProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (...args) => onChange(cell, ...args);\n\n return <DropdownCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDropdownCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDropdownCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDropdownCell = <T, V>(args: GetDataGridDropdownCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDropdownCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {ChevronDownIcon, ChevronRightIcon} from '@join-x5/react-icons';\nimport {IconButton, ButtonVariant} from '@join-x5/react';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TExpandingCell = FRC<\n HTMLTableCellElement,\n {\n depth: number;\n isParent?: boolean;\n } & TableCellProps\n>;\n\nconst sizePadding = (depth: number, size?: SizeTokenValue, isParent?: boolean): CSSProperties['padding'] => {\n const paddingOffset = depth * 20 + (isParent ? 0 : 8);\n\n switch (size) {\n case SizeTokenValue.XXSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.XSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Small:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Large:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n case SizeTokenValue.XLarge:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n default:\n return `8px 12px 8px ${paddingOffset + 8}px`;\n }\n};\n\nexport const ExpandingCell: TExpandingCell = forwardRef((props, ref) => {\n const {depth, isParent, padding, ...rest} = props;\n\n const resultPadding = padding ?? sizePadding(depth, props.size, isParent);\n\n return <TableCell ref={ref} padding={resultPadding} {...rest} />;\n});\n\nexport type DataGridExpandingCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridExpandingCell: FRC<HTMLTableCellElement, DataGridExpandingCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n if (!cell.row.getCanExpand()) {\n return (\n <ExpandingCell ref={ref} depth={cell.row.depth} {...cellProps}>\n <TableCellContent>{children}</TableCellContent>\n </ExpandingCell>\n );\n }\n\n const button = (() => {\n const Icon = cell.row.getIsExpanded() ? ChevronDownIcon : ChevronRightIcon;\n\n return (\n <IconButton\n data-action\n tabIndex={-1}\n variant={ButtonVariant.InnerInput}\n size={SizeTokenValue.XSmall}\n onClick={cell.row.getToggleExpandedHandler()}\n >\n <Icon size={SizeTokenValue.Small} />\n </IconButton>\n );\n })();\n\n const contentStyle = {\n display: 'flex',\n gap: '4px',\n width: '100%',\n height: '100%',\n alignItems: 'center',\n };\n\n return (\n <ExpandingCell isParent ref={ref} depth={cell.row.depth} {...cellProps}>\n <div style={contentStyle}>\n {button}\n <TableCellContent>{children}</TableCellContent>\n </div>\n </ExpandingCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TIconCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const IconCell: TIconCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridIconCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridIconCell: FRC<HTMLTableCellElement, DataGridIconCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <IconCell ref={ref} {...cellProps}>\n {children}\n </IconCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TLabelCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, string> = {\n [SizeTokenValue.XXSmall]: '6px 8px',\n [SizeTokenValue.XSmall]: '6px 8px',\n [SizeTokenValue.Small]: '6px 8px',\n [SizeTokenValue.Medium]: '10px 12px',\n [SizeTokenValue.Large]: '12px',\n [SizeTokenValue.XLarge]: '12px',\n};\n\nexport const LabelCell: TLabelCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridLabelCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridLabelCell: FRC<HTMLTableCellElement, DataGridLabelCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <LabelCell ref={ref} {...cellProps}>\n {children}\n </LabelCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Switch} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {SwitchProps} from '@join-x5/react';\nimport type {FRC, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TSwitchCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SwitchProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: '8px',\n [SizeTokenValue.XSmall]: '8px',\n [SizeTokenValue.Small]: '8px',\n [SizeTokenValue.Medium]: '12px',\n [SizeTokenValue.Large]: '14px 12px 14px 14px',\n [SizeTokenValue.XLarge]: '14px 12px 14px 14px',\n};\n\nexport const SwitchCell: TSwitchCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Switch data-action tabIndex={-1} disabled={props.isDisabled} size={SizeTokenValue.Small} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridSwitchCellProps<T = DefaultAny, V = DefaultAny> = SwitchProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridSwitchCell: FRC<HTMLTableCellElement, DataGridSwitchCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SwitchProps;\n\n return <SwitchCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n Dispatch,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst Input = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n\n /** Позволяет контролировать ввод,\n *\n * пример ограничение по символам */\n onInputChange?: (e: ChangeEvent<HTMLInputElement>, setValue: Dispatch<string>) => void;\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;\n\ntype TTextInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextInputCell: TTextInputCell = forwardRef((props, baseRef) => {\n const {\n inputProps: {onInputChange, value: parentValue, ...restInputProps},\n\n ...restProps\n } = props;\n\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLInputElement>(restProps, baseRef);\n\n const [value, setValue] = useState(parentValue ?? '');\n\n const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n if (onInputChange) {\n onInputChange(e, setValue);\n } else {\n setValue(e.target.value);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n const isNavigation =\n e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight';\n\n if (e.code === 'Escape' || isEnterCode) {\n restProps.setIsActive?.(false);\n e.currentTarget.blur();\n }\n\n restInputProps.onKeyDown?.(e);\n\n if (isNavigation) {\n e.stopPropagation();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n restProps.setIsActive?.(false);\n\n restInputProps.onChange(value, e);\n restInputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...restInputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': restProps.isActive ? undefined : true,\n };\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(parentValue);\n }, [parentValue]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{restProps.children}</ChildContent>\n <Input ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<TextInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridTextInputCell: FRC<HTMLTableCellElement, DataGridTextInputCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, children, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as TextInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {children}\n </TextInputCell>\n );\n});\n\nexport type GetDataGridTextInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextInputCell = <T, V>(args: GetDataGridTextInputCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextInputCell>\n );\n };\n};\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n min-height: 100%;\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst TextArea = styled.textarea`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n resize: none;\n\n ${baseTheme.scroll}\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>;\n\ntype TTextAreaInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextAreaInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextAreaInputCell: TTextAreaInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLTextAreaElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || (isEnterCode && e.ctrlKey)) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const content = props.isActive ? value : props.children;\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{content}</ChildContent>\n <TextArea ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextAreaInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<TextAreaInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\ntype TDataGridTextAreaInputCell = FRC<HTMLTableCellElement, DataGridTextAreaInputCellProps>;\n\nexport const DataGridTextAreaInputCell: TDataGridTextAreaInputCell = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const content = (cell.getValue() ?? null) as ReactNode;\n\n const inputProps = rest as TextAreaInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextAreaInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {content}\n </TextAreaInputCell>\n );\n});\n\nexport type GetDataGridTextAreaInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextAreaInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextAreaInputCell = <T, V>(\n args: GetDataGridTextAreaInputCellArgs<T, V>\n): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextAreaInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextAreaInputCell>\n );\n };\n};\n"],"names":["DataGridContext","createContext","activeCell","setActiveCell","DataGridContextProvider","children","rest","useState","jsx","_EMOTION_STRINGIFIED_CSS_ERROR__","TableWrapper","_styled","process","env","NODE_ENV","target","label","baseTheme","scroll","props","border","theme","colors","grey","backgroundColor","white","TableFooter","ControlPanel","ControlPanelContent","name","styles","toString","Container","Table","forwardRef","isResizing","ref","resultProps","undefined","DataGridTable","table","context","useContext","columnSizeVars","useMemo","headers","getFlatHeaders","colSizes","header","id","getSize","column","getState","columnSizingInfo","columnSizing","isResizingColumn","style","width","getTotalSize","qa","areaProps","isPinned","getIsPinned","columnArea","ColumnArea","FixedLeft","FixedRight","Default","left","getStart","isLastFixed","getIsLastColumn","right","getAfter","getIsFirstColumn","useDataGridTableCell","cell","isMultiline","isBordered","isShadowed","isNoFocus","size","verticalAlign","writingMode","userSelect","wordBreak","whiteSpace","isRowSelected","row","getIsSelected","getIsResizing","maxWidth","cellProps","Object","assign","columnDef","meta","deepestHeader","last","next","isPlaceholder","colSpan","subHeaders","length","tableHeaderSpan","deepest","rowSpan","depth","TableHeadCellVariant","Checkbox","TableHeadCellResizer","accent","Cell","color","SizeTokenValue","Large","toLocaleLowerCase","typography","h4","Medium","h5","Small","Content","TableHeadCell","baseRef","isDisabled","isActive","textAlign","startAdornment","endAdornment","resizer","dropdown","Dropdown","variant","useRefMerge","isDropdownOpen","setIsDropdownOpen","onKeyDown","e","code","currentTarget","blur","click","onClick","hasActive","toLowerCase","jsxs","DataGridTableHeadCell","isCombined","getCanResize","resetSize","getResizeHandler","stopPropagation","content","flexRender","getContext","headCellProps","getDataGridTableHeadCell","TableHeadRow","TableHead","DataGridTableHead","getHeaderGroups","map","headerGroup","getDataGridTableHead","sizePadding","XXSmall","XSmall","XLarge","p1compact","p2","caretColor","additional","red","Caption","p3","TableCellContent","contentProps","TableCell","isRowHover","isFocused","error","padding","isEnterCode","child","current","querySelector","parent","parentElement","curIndex","Array","from","childNodes","indexOf","sibling","previousElementSibling","nextElementSibling","nodeName","focus","prevRow","lastElementChild","nextRow","firstElementChild","caption","EditOnIcon","DataGridTableCell","getDataGridTableCell","isCustom","React","TableRow","DataGridTableRow","getVisibleCells","getDataGridTableRow","TableBody","DataGridTableBody","components","rowProps","rows","getRowModel","iterator","item","itemProps","index","MemoizedDataGridTableBody","memo","prev","options","data","getDataGridTableBody","Component","useVirtualTableBody","wrapperRef","virtualize","rowVirtualizer","useVirtualizer","count","estimateSize","getScrollElement","measureElement","el","getBoundingClientRect","height","overscan","rowRef","node","getVirtualItems","position","top","transform","start","containerProps","setTimeout","measure","getDataGridTableBodyVirtual","convertVisibility","settings","reduce","acc","isVisible","convertOrder","sort","a","b","String","convertPinning","area","push","useDataGridColumnSettings","tableProps","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","columnPinning","onColumnPinningChange","externalState","state","useUpdateEffect","newVisibility","newOrder","newPinning","oldState","JSON","stringify","DataGrid","bodyProps","headProps","columns","setTable","columnSettings","useReactTable","manualSorting","manualFiltering","manualPagination","columnResizeMode","getCoreRowModel","getExpandedRowModel","tableComponentProps","head","body","useEffect","TableDropdownHeader","h6","TableDropdownItem","useTableCellTextInput","setIsActive","inputRef","useRef","onEdit","input","selectionStart","value","onDoubleClick","useDataGridInputCell","newIsActive","ButtonCell","DataGridButtonCell","CheckboxCell","inputProps","DataGridCheckboxCell","DateCell","setIsOpen","newIsOpen","Datepicker","DataGridDateCell","getValue","onChange","newValue","getDataGridDateCell","args","DropdownCell","Select","DataGridDropdownCell","getDataGridDropdownCell","isParent","paddingOffset","ExpandingCell","resultPadding","DataGridExpandingCell","getCanExpand","button","Icon","getIsExpanded","ChevronDownIcon","ChevronRightIcon","IconButton","ButtonVariant","InnerInput","getToggleExpandedHandler","contentStyle","display","gap","alignItems","IconCell","DataGridIconCell","LabelCell","DataGridLabelCell","SwitchCell","Switch","DataGridSwitchCell","ChildContent","Input","TextInputCell","onInputChange","parentValue","restInputProps","restProps","setValue","isNavigation","onBlur","isChildHidden","DataGridTextInputCell","getDataGridTextInputCell","TextArea","TextAreaInputCell","ctrlKey","DataGridTextAreaInputCell","getDataGridTextAreaInputCell"],"mappings":"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"}