@join-x5/react-data-grid 1.3.1-alpha-0 → 1.4.1

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.
Files changed (49) hide show
  1. package/dist/DataGrid.es.js +81 -59
  2. package/dist/DataGrid.es.js.map +1 -1
  3. package/dist/Table/index.es.js +34 -34
  4. package/dist/Table/index.es.js.map +1 -1
  5. package/dist/TableBody/DataGridTableBody.d.ts +12 -0
  6. package/dist/TableBody/DataGridTableBody.es.js +41 -0
  7. package/dist/TableBody/DataGridTableBody.es.js.map +1 -0
  8. package/dist/TableBody/DataGridTableBodyVirtual.d.ts +2 -0
  9. package/dist/TableBody/DataGridTableBodyVirtual.es.js +18 -0
  10. package/dist/TableBody/DataGridTableBodyVirtual.es.js.map +1 -0
  11. package/dist/TableBody/hook.d.ts +839 -0
  12. package/dist/TableBody/hook.es.js +49 -0
  13. package/dist/TableBody/hook.es.js.map +1 -0
  14. package/dist/TableBody/index.d.ts +3 -11
  15. package/dist/TableBody/types.d.ts +2 -0
  16. package/dist/TableCell/hook.es.js +8 -9
  17. package/dist/TableCell/hook.es.js.map +1 -1
  18. package/dist/TableCell/index.es.js +120 -133
  19. package/dist/TableCell/index.es.js.map +1 -1
  20. package/dist/TableHead/index.d.ts +4 -2
  21. package/dist/TableHead/index.es.js +16 -13
  22. package/dist/TableHead/index.es.js.map +1 -1
  23. package/dist/TableHeadCell/index.es.js +71 -74
  24. package/dist/TableHeadCell/index.es.js.map +1 -1
  25. package/dist/TableInputCell/date.es.js +29 -32
  26. package/dist/TableInputCell/date.es.js.map +1 -1
  27. package/dist/TableInputCell/dropdown.es.js +29 -32
  28. package/dist/TableInputCell/dropdown.es.js.map +1 -1
  29. package/dist/TableInputCell/hook.d.ts +30 -30
  30. package/dist/TableInputCell/hook.es.js +30 -33
  31. package/dist/TableInputCell/hook.es.js.map +1 -1
  32. package/dist/TableInputCell/text.es.js +39 -41
  33. package/dist/TableInputCell/text.es.js.map +1 -1
  34. package/dist/TableInputCell/textarea.es.js +38 -40
  35. package/dist/TableInputCell/textarea.es.js.map +1 -1
  36. package/dist/TableRow/index.d.ts +2 -3
  37. package/dist/TableRow/index.es.js +16 -17
  38. package/dist/TableRow/index.es.js.map +1 -1
  39. package/dist/hook.es.js +14 -17
  40. package/dist/hook.es.js.map +1 -1
  41. package/dist/index.cjs +1 -1
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.es.js +61 -60
  44. package/dist/index.es.js.map +1 -1
  45. package/dist/types.d.ts +36 -2
  46. package/package.json +13 -12
  47. package/dist/TableBody/index.es.js +0 -26
  48. package/dist/TableBody/index.es.js.map +0 -1
  49. package/dist/TableRow/types.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/DataGridContext.tsx","../src/Table/index.tsx","../src/TableCell/hook.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/index.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 | '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 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 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, context.cellProps instanceof Function ? context.cellProps(cell) : context.cellProps);\n }\n\n return resultProps;\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 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 {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-${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`;\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\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-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> = ({header}) => {\n const context = useContext(DataGridContext);\n\n const resizer = (() => {\n if (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 />\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 size: context.size,\n verticalAlign: context.verticalAlign,\n\n colSpan: header.colSpan,\n rowSpan: header.rowSpan,\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 context.headCellProps instanceof Function ? context.headCellProps(header) : context.headCellProps\n );\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 {Table} from '@tanstack/react-table';\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};\n\nconst DataGridTableHead: React.FC<DataGridTableHeadProps> = props => {\n const context = useContext(DataGridContext);\n\n const content = props.table\n .getHeaderGroups()\n .map(headerGroup => (\n <TableHeadRow key={headerGroup.id}>\n {headerGroup.headers.map(header => getDataGridTableHeadCell(header))}\n </TableHeadRow>\n ));\n\n return <TableHead data-qa={`${context.qa}-head`}>{content}</TableHead>;\n};\n\nexport const getDataGridTableHead = (table: Table<unknown>) => {\n return <DataGridTableHead table={table} />;\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 &[data-focused],\n :focus {\n outline: none;\n\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 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 if (e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight') {\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-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';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {getDataGridTableCell} from 'TableCell';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {Row} from '@tanstack/react-table';\nimport type {GetDataGridTableRow} from '../types';\nimport type {TableRowProps} from './types';\n\nconst Container = 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) {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n }\n`;\n\nexport const TableRow: FRC<HTMLTableRowElement, TableRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n\ntype DataGridTableRowProps = {row: Row<unknown>} & TableRowProps;\n\nconst DataGridTableRow: React.FC<DataGridTableRowProps> = props => {\n const {row, ...rest} = props;\n\n const content = row.getVisibleCells().map(getDataGridTableCell);\n\n return <TableRow {...rest}>{content}</TableRow>;\n};\n\nexport const getDataGridTableRow: GetDataGridTableRow = row => {\n return <DataGridTableRow key={row.id} row={row} />;\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';\n\nexport const TableBody = styled.tbody``;\n\ntype DataGridTableBodyProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components'>;\n\nconst DataGridTableBody: React.FC<DataGridTableBodyProps> = ({table, components}) => {\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const iterator = components?.row ?? getDataGridTableRow;\n\n return <TableBody data-qa={`${context.qa}-body`}>{rows.map(iterator)}</TableBody>;\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBody = (\n table: DataGridTableBodyProps['table'],\n components: DataGridProps['components']\n) => {\n const isResizing = table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component table={table} components={components} />;\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 {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} 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 isShadowed,\n\n size,\n width,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n\n columns,\n data,\n tableProps,\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 isShadowed,\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);\n const body = getDataGridTableBody(table, components);\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","size","verticalAlign","writingMode","userSelect","wordBreak","whiteSpace","isRowSelected","row","getIsSelected","getIsResizing","maxWidth","cellProps","Object","assign","Function","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","getCanResize","resetSize","getResizeHandler","content","isPlaceholder","flexRender","columnDef","getContext","colSpan","rowSpan","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","nextFocus","focus","prevSibling","prevRow","lastCell","lastElementChild","length","nextSibling","nextRow","firstCell","firstElementChild","caption","EditOnIcon","DataGridTableCell","getDataGridTableCell","meta","isCustom","React","TableRow","DataGridTableRow","getVisibleCells","getDataGridTableRow","TableBody","DataGridTableBody","components","rows","getRowModel","iterator","MemoizedDataGridTableBody","memo","prev","next","options","data","getDataGridTableBody","Component","convertVisibility","settings","reduce","acc","item","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","columns","columnSettings","useReactTable","manualSorting","manualFiltering","manualPagination","columnResizeMode","getCoreRowModel","getExpandedRowModel","tableComponentProps","head","body","TableDropdownHeader","h6","TableDropdownItem","useTableCellTextInput","setIsActive","inputRef","useRef","onEdit","input","setTimeout","selectionStart","value","onDoubleClick","useDataGridInputCell","newIsActive","ButtonCell","DataGridButtonCell","CheckboxCell","inputProps","DataGridCheckboxCell","DateCell","setIsOpen","newIsOpen","Datepicker","DataGridDateCell","getValue","onChange","newValue","getDataGridDateCell","args","DropdownCell","Select","DataGridDropdownCell","getDataGridDropdownCell","depth","isParent","paddingOffset","ExpandingCell","resultPadding","DataGridExpandingCell","getCanExpand","button","Icon","getIsExpanded","ChevronDownIcon","ChevronRightIcon","IconButton","ButtonVariant","InnerInput","getToggleExpandedHandler","contentStyle","display","gap","height","alignItems","IconCell","DataGridIconCell","LabelCell","DataGridLabelCell","SwitchCell","Switch","DataGridSwitchCell","ChildContent","Input","TextInputCell","setValue","onBlur","isChildHidden","useEffect","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/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 | '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 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 return resultProps;\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 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 {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-${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`;\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\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> = () => {\n if (Dropdown && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\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 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-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 onClick={onClick}>\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> = ({header}) => {\n const context = useContext(DataGridContext);\n\n const resizer = (() => {\n if (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 />\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 size: context.size,\n verticalAlign: context.verticalAlign,\n\n colSpan: header.colSpan || undefined,\n rowSpan: header.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 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 &[data-focused],\n :focus {\n outline: none;\n\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 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 if (e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight') {\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-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) {\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 isShadowed,\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 isShadowed,\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","size","verticalAlign","writingMode","userSelect","wordBreak","whiteSpace","isRowSelected","row","getIsSelected","getIsResizing","maxWidth","cellProps","Object","assign","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","getCanResize","resetSize","getResizeHandler","content","isPlaceholder","flexRender","columnDef","getContext","colSpan","rowSpan","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","length","nextRow","firstElementChild","caption","EditOnIcon","DataGridTableCell","getDataGridTableCell","meta","isCustom","React","TableRow","DataGridTableRow","getVisibleCells","getDataGridTableRow","TableBody","DataGridTableBody","components","rowProps","rows","getRowModel","iterator","item","itemProps","index","MemoizedDataGridTableBody","memo","prev","next","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","depth","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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"}