mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
* CB-5728 updates dependencies without react-data-grid * CB-5728 updates react-data-grid library * CB-5728 updates dependencies after react-data-grid updation * CB-5728 fixes align in cells for react-data-grid --------- Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
1 line
276 KiB
Plaintext
1 line
276 KiB
Plaintext
{"version":3,"file":"bundle.cjs","sources":["../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/eventUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/renderMeasuringCells.tsx","../src/utils/selectedCellUtils.ts","../src/style/cell.ts","../src/utils/styleUtils.ts","../src/utils/index.ts","../src/cellRenderers/renderCheckbox.tsx","../src/cellRenderers/renderToggleGroup.tsx","../src/cellRenderers/renderValue.tsx","../src/DataGridDefaultRenderersProvider.ts","../src/cellRenderers/SelectCellFormatter.tsx","../src/hooks/useRowSelection.ts","../src/Columns.tsx","../src/hooks/useCalculatedColumns.ts","../src/hooks/useLayoutEffect.ts","../src/hooks/useColumnWidths.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingTabIndex.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/Cell.tsx","../src/DragHandle.tsx","../src/EditCell.tsx","../src/GroupedColumnHeaderCell.tsx","../src/renderHeaderCell.tsx","../src/HeaderCell.tsx","../src/style/row.ts","../src/HeaderRow.tsx","../src/GroupedColumnHeaderRow.tsx","../src/Row.tsx","../src/ScrollToCell.tsx","../src/sortStatus.tsx","../src/style/core.ts","../src/SummaryCell.tsx","../src/SummaryRow.tsx","../src/DataGrid.tsx","../src/GroupCell.tsx","../src/GroupRow.tsx","../src/TreeDataGrid.tsx","../src/editors/textEditor.tsx"],"sourcesContent":["import type { CalculatedColumn, ColSpanArgs } from '../types';\n\nexport function getColSpan<R, SR>(\n column: CalculatedColumn<R, SR>,\n lastFrozenColumnIndex: number,\n args: ColSpanArgs<R, SR>\n): number | undefined {\n const colSpan = typeof column.colSpan === 'function' ? column.colSpan(args) : 1;\n if (\n Number.isInteger(colSpan) &&\n colSpan! > 1 &&\n // ignore colSpan if it spans over both frozen and regular columns\n (!column.frozen || column.idx + colSpan! - 1 <= lastFrozenColumnIndex)\n ) {\n return colSpan!;\n }\n return undefined;\n}\n","import type { Maybe } from '../types';\n\nexport function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\n}\n\nexport function scrollIntoView(element: Maybe<Element>) {\n element?.scrollIntoView({ inline: 'nearest', block: 'nearest' });\n}\n","import type { CellEvent } from '../types';\n\nexport function createCellEvent<E extends React.SyntheticEvent<HTMLDivElement>>(\n event: E\n): CellEvent<E> {\n let defaultPrevented = false;\n const cellEvent = {\n ...event,\n preventGridDefault() {\n defaultPrevented = true;\n },\n isGridDefaultPrevented() {\n return defaultPrevented;\n }\n };\n\n Object.setPrototypeOf(cellEvent, Object.getPrototypeOf(event));\n\n return cellEvent;\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\nconst nonInputKeys = new Set([\n // Special keys\n 'Unidentified',\n // Modifier keys\n 'Alt',\n 'AltGraph',\n 'CapsLock',\n 'Control',\n 'Fn',\n 'FnLock',\n 'Meta',\n 'NumLock',\n 'ScrollLock',\n 'Shift',\n // Whitespace keys\n 'Tab',\n // Navigation keys\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'End',\n 'Home',\n 'PageDown',\n 'PageUp',\n // Editing\n 'Insert',\n // UI keys\n 'ContextMenu',\n 'Escape',\n 'Pause',\n 'Play',\n // Device keys\n 'PrintScreen',\n // Function keys\n 'F1',\n // 'F2', /!\\ specifically allowed, do not edit\n 'F3',\n 'F4',\n 'F5',\n 'F6',\n 'F7',\n 'F8',\n 'F9',\n 'F10',\n 'F11',\n 'F12'\n]);\n\nexport function isCtrlKeyHeldDown(e: React.KeyboardEvent): boolean {\n return (e.ctrlKey || e.metaKey) && e.key !== 'Control';\n}\n\nexport function isDefaultCellInput(event: React.KeyboardEvent<HTMLDivElement>): boolean {\n const vKey = 86;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (isCtrlKeyHeldDown(event) && event.keyCode !== vKey) return false;\n return !nonInputKeys.has(event.key);\n}\n\n/**\n * By default, the following navigation keys are enabled while an editor is open, under specific conditions:\n * - Tab:\n * - The editor must be an <input>, a <textarea>, or a <select> element.\n * - The editor element must be the only immediate child of the editor container/a label.\n */\nexport function onEditorNavigation({ key, target }: React.KeyboardEvent<HTMLDivElement>): boolean {\n if (\n key === 'Tab' &&\n (target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement)\n ) {\n return (\n target.closest('.rdg-editor-container')?.querySelectorAll('input, textarea, select')\n .length === 1\n );\n }\n return false;\n}\n","import { css } from '@linaria/core';\n\nimport type { CalculatedColumn } from '../types';\n\nconst measuringCellClassname = css`\n @layer rdg.MeasuringCell {\n contain: strict;\n grid-row: 1;\n visibility: hidden;\n }\n`;\n\nexport function renderMeasuringCells<R, SR>(viewportColumns: readonly CalculatedColumn<R, SR>[]) {\n return viewportColumns.map(({ key, idx, minWidth, maxWidth }) => (\n <div\n key={key}\n className={measuringCellClassname}\n style={{ gridColumnStart: idx + 1, minWidth, maxWidth }}\n data-measuring-cell-key={key}\n />\n ));\n}\n","import type {\n CalculatedColumn,\n CalculatedColumnParent,\n CellNavigationMode,\n Maybe,\n Position\n} from '../types';\nimport { getColSpan } from './colSpanUtils';\n\ninterface IsSelectedCellEditableOpts<R, SR> {\n selectedPosition: Position;\n columns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n}\n\nexport function isSelectedCellEditable<R, SR>({\n selectedPosition,\n columns,\n rows\n}: IsSelectedCellEditableOpts<R, SR>): boolean {\n const column = columns[selectedPosition.idx];\n const row = rows[selectedPosition.rowIdx];\n return isCellEditableUtil(column, row);\n}\n\n// https://github.com/vercel/next.js/issues/56480\nexport function isCellEditableUtil<R, SR>(column: CalculatedColumn<R, SR>, row: R): boolean {\n return (\n column.renderEditCell != null &&\n (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false\n );\n}\n\ninterface GetNextSelectedCellPositionOpts<R, SR> {\n moveUp: boolean;\n moveNext: boolean;\n cellNavigationMode: CellNavigationMode;\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n topSummaryRows: Maybe<readonly SR[]>;\n bottomSummaryRows: Maybe<readonly SR[]>;\n minRowIdx: number;\n mainHeaderRowIdx: number;\n maxRowIdx: number;\n currentPosition: Position;\n nextPosition: Position;\n lastFrozenColumnIndex: number;\n isCellWithinBounds: (position: Position) => boolean;\n}\n\nfunction getSelectedCellColSpan<R, SR>({\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowIdx,\n mainHeaderRowIdx,\n lastFrozenColumnIndex,\n column\n}: Pick<\n GetNextSelectedCellPositionOpts<R, SR>,\n 'rows' | 'topSummaryRows' | 'bottomSummaryRows' | 'lastFrozenColumnIndex' | 'mainHeaderRowIdx'\n> & {\n rowIdx: number;\n column: CalculatedColumn<R, SR>;\n}) {\n const topSummaryRowsCount = topSummaryRows?.length ?? 0;\n if (rowIdx === mainHeaderRowIdx) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n }\n\n if (\n topSummaryRows &&\n rowIdx > mainHeaderRowIdx &&\n rowIdx <= topSummaryRowsCount + mainHeaderRowIdx\n ) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: topSummaryRows[rowIdx + topSummaryRowsCount]\n });\n }\n\n if (rowIdx >= 0 && rowIdx < rows.length) {\n const row = rows[rowIdx];\n return getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n }\n\n if (bottomSummaryRows) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: bottomSummaryRows[rowIdx - rows.length]\n });\n }\n\n return undefined;\n}\n\nexport function getNextSelectedCellPosition<R, SR>({\n moveUp,\n moveNext,\n cellNavigationMode,\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n minRowIdx,\n mainHeaderRowIdx,\n maxRowIdx,\n currentPosition: { idx: currentIdx, rowIdx: currentRowIdx },\n nextPosition,\n lastFrozenColumnIndex,\n isCellWithinBounds\n}: GetNextSelectedCellPositionOpts<R, SR>): Position {\n let { idx: nextIdx, rowIdx: nextRowIdx } = nextPosition;\n const columnsCount = columns.length;\n\n const setColSpan = (moveNext: boolean) => {\n // If a cell within the colspan range is selected then move to the\n // previous or the next cell depending on the navigation direction\n for (const column of colSpanColumns) {\n const colIdx = column.idx;\n if (colIdx > nextIdx) break;\n const colSpan = getSelectedCellColSpan({\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowIdx: nextRowIdx,\n mainHeaderRowIdx,\n lastFrozenColumnIndex,\n column\n });\n\n if (colSpan && nextIdx > colIdx && nextIdx < colSpan + colIdx) {\n nextIdx = colIdx + (moveNext ? colSpan : 0);\n break;\n }\n }\n };\n\n const getParentRowIdx = (parent: CalculatedColumnParent<R, SR>) => {\n return parent.level + mainHeaderRowIdx;\n };\n\n const setHeaderGroupColAndRowSpan = () => {\n if (moveNext) {\n // find the parent at the same row level\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (nextRowIdx === parentRowIdx) {\n nextIdx = parent.idx + parent.colSpan;\n break;\n }\n parent = parent.parent;\n }\n } else if (moveUp) {\n // find the first reachable parent\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n let found = false;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (nextRowIdx >= parentRowIdx) {\n nextIdx = parent.idx;\n nextRowIdx = parentRowIdx;\n found = true;\n break;\n }\n parent = parent.parent;\n }\n\n // keep the current position if there is no parent matching the new row position\n if (!found) {\n nextIdx = currentIdx;\n nextRowIdx = currentRowIdx;\n }\n }\n };\n\n if (isCellWithinBounds(nextPosition)) {\n setColSpan(moveNext);\n\n if (nextRowIdx < mainHeaderRowIdx) {\n setHeaderGroupColAndRowSpan();\n }\n }\n\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isAfterLastColumn = nextIdx === columnsCount;\n const isBeforeFirstColumn = nextIdx === -1;\n\n if (isAfterLastColumn) {\n const isLastRow = nextRowIdx === maxRowIdx;\n if (!isLastRow) {\n nextIdx = 0;\n nextRowIdx += 1;\n }\n } else if (isBeforeFirstColumn) {\n const isFirstRow = nextRowIdx === minRowIdx;\n if (!isFirstRow) {\n nextRowIdx -= 1;\n nextIdx = columnsCount - 1;\n }\n setColSpan(false);\n }\n }\n\n if (nextRowIdx < mainHeaderRowIdx) {\n // Find the last reachable parent for the new rowIdx\n // This check is needed when navigating to a column\n // that does not have a parent matching the new rowIdx\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n const nextParentRowIdx = nextRowIdx;\n nextRowIdx = mainHeaderRowIdx;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (parentRowIdx >= nextParentRowIdx) {\n nextRowIdx = parentRowIdx;\n nextIdx = parent.idx;\n }\n parent = parent.parent;\n }\n }\n\n return { idx: nextIdx, rowIdx: nextRowIdx };\n}\n\ninterface CanExitGridOpts {\n maxColIdx: number;\n minRowIdx: number;\n maxRowIdx: number;\n selectedPosition: Position;\n shiftKey: boolean;\n}\n\nexport function canExitGrid({\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition: { rowIdx, idx },\n shiftKey\n}: CanExitGridOpts): boolean {\n // Exit the grid if we're at the first or last cell of the grid\n const atLastCellInRow = idx === maxColIdx;\n const atFirstCellInRow = idx === 0;\n const atLastRow = rowIdx === maxRowIdx;\n const atFirstRow = rowIdx === minRowIdx;\n\n return shiftKey ? atFirstCellInRow && atFirstRow : atLastCellInRow && atLastRow;\n}\n","import { css } from '@linaria/core';\n\nexport const cell = css`\n @layer rdg.Cell {\n /* max-content does not work with size containment\n * dynamically switching between different containment styles incurs a heavy relayout penalty\n * Chromium bug: at odd zoom levels or subpixel positioning,\n * layout/paint/style containment can make cell borders disappear\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1326946\n */\n position: relative; /* needed for absolute positioning to work */\n padding-block: 0;\n padding-inline: 8px;\n border-inline-end: 1px solid var(--rdg-border-color);\n border-block-end: 1px solid var(--rdg-border-color);\n grid-row-start: var(--rdg-grid-row-start);\n align-content: center;\n background-color: inherit;\n\n white-space: nowrap;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n }\n`;\n\nexport const cellClassname = `rdg-cell ${cell}`;\n\nexport const cellFrozen = css`\n @layer rdg.Cell {\n position: sticky;\n /* Should have a higher value than 0 to show up above unfrozen cells */\n z-index: 1;\n\n /* Add box-shadow on the last frozen cell */\n &:nth-last-child(1 of &) {\n box-shadow: var(--rdg-cell-frozen-box-shadow);\n }\n }\n`;\n\nexport const cellFrozenClassname = `rdg-cell-frozen ${cellFrozen}`;\n","import type { CSSProperties } from 'react';\nimport clsx from 'clsx';\n\nimport type { CalculatedColumn, CalculatedColumnOrColumnGroup } from '../types';\nimport { cellClassname, cellFrozenClassname } from '../style/cell';\n\nexport function getRowStyle(rowIdx: number): CSSProperties {\n return { '--rdg-grid-row-start': rowIdx } as unknown as CSSProperties;\n}\n\nexport function getHeaderCellStyle<R, SR>(\n column: CalculatedColumnOrColumnGroup<R, SR>,\n rowIdx: number,\n rowSpan: number\n): React.CSSProperties {\n const gridRowEnd = rowIdx + 1;\n const paddingBlockStart = `calc(${rowSpan - 1} * var(--rdg-header-row-height))`;\n\n if (column.parent === undefined) {\n return {\n insetBlockStart: 0,\n gridRowStart: 1,\n gridRowEnd,\n paddingBlockStart\n };\n }\n\n return {\n insetBlockStart: `calc(${rowIdx - rowSpan} * var(--rdg-header-row-height))`,\n gridRowStart: gridRowEnd - rowSpan,\n gridRowEnd,\n paddingBlockStart\n };\n}\n\nexport function getCellStyle<R, SR>(\n column: CalculatedColumn<R, SR>,\n colSpan = 1\n): React.CSSProperties {\n const index = column.idx + 1;\n return {\n gridColumnStart: index,\n gridColumnEnd: index + colSpan,\n insetInlineStart: column.frozen ? `var(--rdg-frozen-left-${column.idx})` : undefined\n };\n}\n\nexport function getCellClassname<R, SR>(\n column: CalculatedColumn<R, SR>,\n ...extraClasses: Parameters<typeof clsx>\n): string {\n return clsx(\n cellClassname,\n {\n [cellFrozenClassname]: column.frozen\n },\n ...extraClasses\n );\n}\n","import type { CalculatedColumn, CalculatedColumnOrColumnGroup } from '../types';\n\nexport * from './colSpanUtils';\nexport * from './domUtils';\nexport * from './eventUtils';\nexport * from './keyboardUtils';\nexport * from './renderMeasuringCells';\nexport * from './selectedCellUtils';\nexport * from './styleUtils';\n\nexport const { min, max, floor, sign, abs } = Math;\n\nexport function assertIsValidKeyGetter<R, K extends React.Key>(\n keyGetter: unknown\n): asserts keyGetter is (row: R) => K {\n if (typeof keyGetter !== 'function') {\n throw new Error('Please specify the rowKeyGetter prop to use selection');\n }\n}\n\nexport function clampColumnWidth<R, SR>(\n width: number,\n { minWidth, maxWidth }: CalculatedColumn<R, SR>\n): number {\n width = max(width, minWidth);\n\n // ignore maxWidth if it less than minWidth\n if (typeof maxWidth === 'number' && maxWidth >= minWidth) {\n return min(width, maxWidth);\n }\n\n return width;\n}\n\nexport function getHeaderCellRowSpan<R, SR>(\n column: CalculatedColumnOrColumnGroup<R, SR>,\n rowIdx: number\n) {\n return column.parent === undefined ? rowIdx : column.level - column.parent.level;\n}\n","import { css } from '@linaria/core';\n\nimport type { RenderCheckboxProps } from '../types';\n\nconst checkbox = css`\n @layer rdg.CheckboxInput {\n display: block;\n margin: auto;\n inline-size: 20px;\n block-size: 20px;\n\n &:focus-visible {\n outline: 2px solid var(--rdg-checkbox-focus-color);\n outline-offset: -3px;\n }\n\n &:enabled {\n cursor: pointer;\n }\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox-input ${checkbox}`;\n\nexport function renderCheckbox({ onChange, indeterminate, ...props }: RenderCheckboxProps) {\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <input\n ref={(el) => {\n if (el) {\n el.indeterminate = indeterminate === true;\n }\n }}\n type=\"checkbox\"\n className={checkboxClassname}\n onChange={handleChange}\n {...props}\n />\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { RenderGroupCellProps } from '../types';\n\nconst groupCellContent = css`\n @layer rdg.GroupCellContent {\n outline: none;\n }\n`;\n\nconst groupCellContentClassname = `rdg-group-cell-content ${groupCellContent}`;\n\nconst caret = css`\n @layer rdg.GroupCellCaret {\n margin-inline-start: 4px;\n stroke: currentColor;\n stroke-width: 1.5px;\n fill: transparent;\n vertical-align: middle;\n\n > path {\n transition: d 0.1s;\n }\n }\n`;\n\nconst caretClassname = `rdg-caret ${caret}`;\n\nexport function renderToggleGroup<R, SR>(props: RenderGroupCellProps<R, SR>) {\n return <ToggleGroup {...props} />;\n}\n\nexport function ToggleGroup<R, SR>({\n groupKey,\n isExpanded,\n tabIndex,\n toggleGroup\n}: RenderGroupCellProps<R, SR>) {\n function handleKeyDown({ key }: React.KeyboardEvent<HTMLSpanElement>) {\n if (key === 'Enter') {\n toggleGroup();\n }\n }\n\n const d = isExpanded ? 'M1 1 L 7 7 L 13 1' : 'M1 7 L 7 1 L 13 7';\n\n return (\n <span className={groupCellContentClassname} tabIndex={tabIndex} onKeyDown={handleKeyDown}>\n {groupKey as string}\n <svg viewBox=\"0 0 14 8\" width=\"14\" height=\"8\" className={caretClassname} aria-hidden>\n <path d={d} />\n </svg>\n </span>\n );\n}\n","import type { RenderCellProps } from '../types';\n\nexport function renderValue<R, SR>(props: RenderCellProps<R, SR>) {\n try {\n return props.row[props.column.key as keyof R] as React.ReactNode;\n } catch {\n return null;\n }\n}\n","import { createContext, useContext } from 'react';\n\nimport type { Maybe, Renderers } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DataGridDefaultRenderersContext = createContext<Maybe<Renderers<any, any>>>(undefined);\n\nexport const DataGridDefaultRenderersProvider = DataGridDefaultRenderersContext.Provider;\n\nexport function useDefaultRenderers<R, SR>(): Maybe<Renderers<R, SR>> {\n return useContext(DataGridDefaultRenderersContext);\n}\n","import type { RenderCheckboxProps } from '../types';\nimport { useDefaultRenderers } from '../DataGridDefaultRenderersProvider';\n\ntype SharedInputProps = Pick<\n RenderCheckboxProps,\n 'disabled' | 'tabIndex' | 'aria-label' | 'aria-labelledby' | 'indeterminate' | 'onChange'\n>;\n\ninterface SelectCellFormatterProps extends SharedInputProps {\n value: boolean;\n}\n\nexport function SelectCellFormatter({\n value,\n tabIndex,\n indeterminate,\n disabled,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n}: SelectCellFormatterProps) {\n const renderCheckbox = useDefaultRenderers()!.renderCheckbox!;\n\n return renderCheckbox({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n tabIndex,\n indeterminate,\n disabled,\n checked: value,\n onChange\n });\n}\n","import { createContext, useContext } from 'react';\n\nimport type { SelectHeaderRowEvent, SelectRowEvent } from '../types';\n\nexport interface RowSelectionContextValue {\n readonly isRowSelected: boolean;\n readonly isRowSelectionDisabled: boolean;\n}\n\nconst RowSelectionContext = createContext<RowSelectionContextValue | undefined>(undefined);\n\nexport const RowSelectionProvider = RowSelectionContext.Provider;\n\nconst RowSelectionChangeContext = createContext<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((selectRowEvent: SelectRowEvent<any>) => void) | undefined\n>(undefined);\n\nexport const RowSelectionChangeProvider = RowSelectionChangeContext.Provider;\n\nexport function useRowSelection() {\n const rowSelectionContext = useContext(RowSelectionContext);\n const rowSelectionChangeContext = useContext(RowSelectionChangeContext);\n\n if (rowSelectionContext === undefined || rowSelectionChangeContext === undefined) {\n throw new Error('useRowSelection must be used within DataGrid cells');\n }\n\n return {\n isRowSelectionDisabled: rowSelectionContext.isRowSelectionDisabled,\n isRowSelected: rowSelectionContext.isRowSelected,\n onRowSelectionChange: rowSelectionChangeContext\n };\n}\n\nexport interface HeaderRowSelectionContextValue {\n readonly isRowSelected: boolean;\n readonly isIndeterminate: boolean;\n}\n\nconst HeaderRowSelectionContext = createContext<HeaderRowSelectionContextValue | undefined>(\n undefined\n);\n\nexport const HeaderRowSelectionProvider = HeaderRowSelectionContext.Provider;\n\nconst HeaderRowSelectionChangeContext = createContext<\n ((selectRowEvent: SelectHeaderRowEvent) => void) | undefined\n>(undefined);\n\nexport const HeaderRowSelectionChangeProvider = HeaderRowSelectionChangeContext.Provider;\n\nexport function useHeaderRowSelection() {\n const headerRowSelectionContext = useContext(HeaderRowSelectionContext);\n const headerRowSelectionChangeContext = useContext(HeaderRowSelectionChangeContext);\n\n if (headerRowSelectionContext === undefined || headerRowSelectionChangeContext === undefined) {\n throw new Error('useHeaderRowSelection must be used within DataGrid cells');\n }\n\n return {\n isIndeterminate: headerRowSelectionContext.isIndeterminate,\n isRowSelected: headerRowSelectionContext.isRowSelected,\n onRowSelectionChange: headerRowSelectionChangeContext\n };\n}\n","import { useHeaderRowSelection, useRowSelection } from './hooks/useRowSelection';\nimport type { Column, RenderCellProps, RenderGroupCellProps, RenderHeaderCellProps } from './types';\nimport { SelectCellFormatter } from './cellRenderers';\n\nexport const SELECT_COLUMN_KEY = 'rdg-select-column';\n\nfunction HeaderRenderer(props: RenderHeaderCellProps<unknown>) {\n const { isIndeterminate, isRowSelected, onRowSelectionChange } = useHeaderRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n tabIndex={props.tabIndex}\n indeterminate={isIndeterminate}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ checked: isIndeterminate ? false : checked });\n }}\n />\n );\n}\n\nfunction SelectFormatter(props: RenderCellProps<unknown>) {\n const { isRowSelectionDisabled, isRowSelected, onRowSelectionChange } = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select\"\n tabIndex={props.tabIndex}\n disabled={isRowSelectionDisabled}\n value={isRowSelected}\n onChange={(checked, isShiftClick) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick });\n }}\n />\n );\n}\n\nfunction SelectGroupFormatter(props: RenderGroupCellProps<unknown>) {\n const { isRowSelected, onRowSelectionChange } = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select Group\"\n tabIndex={props.tabIndex}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick: false });\n }}\n />\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const SelectColumn: Column<any, any> = {\n key: SELECT_COLUMN_KEY,\n name: '',\n width: 35,\n minWidth: 35,\n maxWidth: 35,\n resizable: false,\n sortable: false,\n frozen: true,\n renderHeaderCell(props) {\n return <HeaderRenderer {...props} />;\n },\n renderCell(props) {\n return <SelectFormatter {...props} />;\n },\n renderGroupCell(props) {\n return <SelectGroupFormatter {...props} />;\n }\n};\n","import { useMemo } from 'react';\n\nimport { clampColumnWidth, max, min } from '../utils';\nimport type { CalculatedColumn, CalculatedColumnParent, ColumnOrColumnGroup, Omit } from '../types';\nimport { renderValue } from '../cellRenderers';\nimport { SELECT_COLUMN_KEY } from '../Columns';\nimport type { DataGridProps } from '../DataGrid';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P] extends ReadonlyArray<infer V> ? Mutable<V>[] : T[P];\n};\n\ninterface WithParent<R, SR> {\n readonly parent: MutableCalculatedColumnParent<R, SR> | undefined;\n}\n\ntype MutableCalculatedColumnParent<R, SR> = Omit<Mutable<CalculatedColumnParent<R, SR>>, 'parent'> &\n WithParent<R, SR>;\ntype MutableCalculatedColumn<R, SR> = Omit<Mutable<CalculatedColumn<R, SR>>, 'parent'> &\n WithParent<R, SR>;\n\ninterface ColumnMetric {\n width: number;\n left: number;\n}\n\nconst DEFAULT_COLUMN_WIDTH = 'auto';\nconst DEFAULT_COLUMN_MIN_WIDTH = 50;\n\ninterface CalculatedColumnsArgs<R, SR> {\n rawColumns: readonly ColumnOrColumnGroup<R, SR>[];\n defaultColumnOptions: DataGridProps<R, SR>['defaultColumnOptions'];\n viewportWidth: number;\n scrollLeft: number;\n getColumnWidth: (column: CalculatedColumn<R, SR>) => string | number;\n enableVirtualization: boolean;\n}\n\nexport function useCalculatedColumns<R, SR>({\n rawColumns,\n defaultColumnOptions,\n getColumnWidth,\n viewportWidth,\n scrollLeft,\n enableVirtualization\n}: CalculatedColumnsArgs<R, SR>) {\n const defaultWidth = defaultColumnOptions?.width ?? DEFAULT_COLUMN_WIDTH;\n const defaultMinWidth = defaultColumnOptions?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n const defaultMaxWidth = defaultColumnOptions?.maxWidth ?? undefined;\n const defaultCellRenderer = defaultColumnOptions?.renderCell ?? renderValue;\n const defaultSortable = defaultColumnOptions?.sortable ?? false;\n const defaultResizable = defaultColumnOptions?.resizable ?? false;\n const defaultDraggable = defaultColumnOptions?.draggable ?? false;\n\n const { columns, colSpanColumns, lastFrozenColumnIndex, headerRowsCount } = useMemo((): {\n readonly columns: readonly CalculatedColumn<R, SR>[];\n readonly colSpanColumns: readonly CalculatedColumn<R, SR>[];\n readonly lastFrozenColumnIndex: number;\n readonly headerRowsCount: number;\n } => {\n let lastFrozenColumnIndex = -1;\n let headerRowsCount = 1;\n const columns: MutableCalculatedColumn<R, SR>[] = [];\n\n collectColumns(rawColumns, 1);\n\n function collectColumns(\n rawColumns: readonly ColumnOrColumnGroup<R, SR>[],\n level: number,\n parent?: MutableCalculatedColumnParent<R, SR>\n ) {\n for (const rawColumn of rawColumns) {\n if ('children' in rawColumn) {\n const calculatedColumnParent: MutableCalculatedColumnParent<R, SR> = {\n name: rawColumn.name,\n parent,\n idx: -1,\n colSpan: 0,\n level: 0,\n headerCellClass: rawColumn.headerCellClass\n };\n\n collectColumns(rawColumn.children, level + 1, calculatedColumnParent);\n continue;\n }\n\n const frozen = rawColumn.frozen ?? false;\n\n const column: MutableCalculatedColumn<R, SR> = {\n ...rawColumn,\n parent,\n idx: 0,\n level: 0,\n frozen,\n width: rawColumn.width ?? defaultWidth,\n minWidth: rawColumn.minWidth ?? defaultMinWidth,\n maxWidth: rawColumn.maxWidth ?? defaultMaxWidth,\n sortable: rawColumn.sortable ?? defaultSortable,\n resizable: rawColumn.resizable ?? defaultResizable,\n draggable: rawColumn.draggable ?? defaultDraggable,\n renderCell: rawColumn.renderCell ?? defaultCellRenderer\n };\n\n columns.push(column);\n\n if (frozen) {\n lastFrozenColumnIndex++;\n }\n\n if (level > headerRowsCount) {\n headerRowsCount = level;\n }\n }\n }\n\n columns.sort(({ key: aKey, frozen: frozenA }, { key: bKey, frozen: frozenB }) => {\n // Sort select column first:\n if (aKey === SELECT_COLUMN_KEY) return -1;\n if (bKey === SELECT_COLUMN_KEY) return 1;\n\n // Sort frozen columns second:\n if (frozenA) {\n if (frozenB) return 0;\n return -1;\n }\n if (frozenB) return 1;\n\n // TODO: sort columns to keep them grouped if they have a parent\n\n // Sort other columns last:\n return 0;\n });\n\n const colSpanColumns: CalculatedColumn<R, SR>[] = [];\n columns.forEach((column, idx) => {\n column.idx = idx;\n updateColumnParent(column, idx, 0);\n\n if (column.colSpan != null) {\n colSpanColumns.push(column);\n }\n });\n\n return {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n headerRowsCount\n };\n }, [\n rawColumns,\n defaultWidth,\n defaultMinWidth,\n defaultMaxWidth,\n defaultCellRenderer,\n defaultResizable,\n defaultSortable,\n defaultDraggable\n ]);\n\n const { templateColumns, layoutCssVars, totalFrozenColumnWidth, columnMetrics } = useMemo((): {\n templateColumns: readonly string[];\n layoutCssVars: Readonly<Record<string, string>>;\n totalFrozenColumnWidth: number;\n columnMetrics: ReadonlyMap<CalculatedColumn<R, SR>, ColumnMetric>;\n } => {\n const columnMetrics = new Map<CalculatedColumn<R, SR>, ColumnMetric>();\n let left = 0;\n let totalFrozenColumnWidth = 0;\n const templateColumns: string[] = [];\n\n for (const column of columns) {\n let width = getColumnWidth(column);\n\n if (typeof width === 'number') {\n width = clampColumnWidth(width, column);\n } else {\n // This is a placeholder width so we can continue to use virtualization.\n // The actual value is set after the column is rendered\n width = column.minWidth;\n }\n templateColumns.push(`${width}px`);\n columnMetrics.set(column, { width, left });\n left += width;\n }\n\n if (lastFrozenColumnIndex !== -1) {\n const columnMetric = columnMetrics.get(columns[lastFrozenColumnIndex])!;\n totalFrozenColumnWidth = columnMetric.left + columnMetric.width;\n }\n\n const layoutCssVars: Record<string, string> = {};\n\n for (let i = 0; i <= lastFrozenColumnIndex; i++) {\n const column = columns[i];\n layoutCssVars[`--rdg-frozen-left-${column.idx}`] = `${columnMetrics.get(column)!.left}px`;\n }\n\n return { templateColumns, layoutCssVars, totalFrozenColumnWidth, columnMetrics };\n }, [getColumnWidth, columns, lastFrozenColumnIndex]);\n\n const [colOverscanStartIdx, colOverscanEndIdx] = useMemo((): [number, number] => {\n if (!enableVirtualization) {\n return [0, columns.length - 1];\n }\n // get the viewport's left side and right side positions for non-frozen columns\n const viewportLeft = scrollLeft + totalFrozenColumnWidth;\n const viewportRight = scrollLeft + viewportWidth;\n // get first and last non-frozen column indexes\n const lastColIdx = columns.length - 1;\n const firstUnfrozenColumnIdx = min(lastFrozenColumnIndex + 1, lastColIdx);\n\n // skip rendering non-frozen columns if the frozen columns cover the entire viewport\n if (viewportLeft >= viewportRight) {\n return [firstUnfrozenColumnIdx, firstUnfrozenColumnIdx];\n }\n\n // get the first visible non-frozen column index\n let colVisibleStartIdx = firstUnfrozenColumnIdx;\n while (colVisibleStartIdx < lastColIdx) {\n const { left, width } = columnMetrics.get(columns[colVisibleStartIdx])!;\n // if the right side of the columnn is beyond the left side of the available viewport,\n // then it is the first column that's at least partially visible\n if (left + width > viewportLeft) {\n break;\n }\n colVisibleStartIdx++;\n }\n\n // get the last visible non-frozen column index\n let colVisibleEndIdx = colVisibleStartIdx;\n while (colVisibleEndIdx < lastColIdx) {\n const { left, width } = columnMetrics.get(columns[colVisibleEndIdx])!;\n // if the right side of the column is beyond or equal to the right side of the available viewport,\n // then it the last column that's at least partially visible, as the previous column's right side is not beyond the viewport.\n if (left + width >= viewportRight) {\n break;\n }\n colVisibleEndIdx++;\n }\n\n const colOverscanStartIdx = max(firstUnfrozenColumnIdx, colVisibleStartIdx - 1);\n const colOverscanEndIdx = min(lastColIdx, colVisibleEndIdx + 1);\n\n return [colOverscanStartIdx, colOverscanEndIdx];\n }, [\n columnMetrics,\n columns,\n lastFrozenColumnIndex,\n scrollLeft,\n totalFrozenColumnWidth,\n viewportWidth,\n enableVirtualization\n ]);\n\n return {\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n templateColumns,\n layoutCssVars,\n headerRowsCount,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth\n };\n}\n\nfunction updateColumnParent<R, SR>(\n column: MutableCalculatedColumn<R, SR> | MutableCalculatedColumnParent<R, SR>,\n index: number,\n level: number\n) {\n if (level < column.level) {\n column.level = level;\n }\n\n if (column.parent !== undefined) {\n const { parent } = column;\n if (parent.idx === -1) {\n parent.idx = index;\n }\n parent.colSpan += 1;\n updateColumnParent(parent, index, level - 1);\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from 'react';\n\n// Silence silly warning\n// https://reactjs.org/link/uselayouteffect-ssr\nexport const useLayoutEffect = typeof window === 'undefined' ? useEffect : useOriginalLayoutEffect;\n","import { useRef } from 'react';\nimport { flushSync } from 'react-dom';\n\nimport type { CalculatedColumn, StateSetter } from '../types';\nimport { useLayoutEffect } from './useLayoutEffect';\nimport type { DataGridProps } from '../DataGrid';\n\nexport function useColumnWidths<R, SR>(\n columns: readonly CalculatedColumn<R, SR>[],\n viewportColumns: readonly CalculatedColumn<R, SR>[],\n templateColumns: readonly string[],\n gridRef: React.RefObject<HTMLDivElement | null>,\n gridWidth: number,\n resizedColumnWidths: ReadonlyMap<string, number>,\n measuredColumnWidths: ReadonlyMap<string, number>,\n setResizedColumnWidths: StateSetter<ReadonlyMap<string, number>>,\n setMeasuredColumnWidths: StateSetter<ReadonlyMap<string, number>>,\n onColumnResize: DataGridProps<R, SR>['onColumnResize']\n) {\n const prevGridWidthRef = useRef(gridWidth);\n const columnsCanFlex: boolean = columns.length === viewportColumns.length;\n // Allow columns to flex again when...\n const ignorePreviouslyMeasuredColumns: boolean =\n // there is enough space for columns to flex and the grid was resized\n columnsCanFlex && gridWidth !== prevGridWidthRef.current;\n const newTemplateColumns = [...templateColumns];\n const columnsToMeasure: string[] = [];\n\n for (const { key, idx, width } of viewportColumns) {\n if (\n typeof width === 'string' &&\n (ignorePreviouslyMeasuredColumns || !measuredColumnWidths.has(key)) &&\n !resizedColumnWidths.has(key)\n ) {\n newTemplateColumns[idx] = width;\n columnsToMeasure.push(key);\n }\n }\n\n const gridTemplateColumns = newTemplateColumns.join(' ');\n\n useLayoutEffect(() => {\n prevGridWidthRef.current = gridWidth;\n updateMeasuredWidths(columnsToMeasure);\n });\n\n function updateMeasuredWidths(columnsToMeasure: readonly string[]) {\n if (columnsToMeasure.length === 0) return;\n\n setMeasuredColumnWidths((measuredColumnWidths) => {\n const newMeasuredColumnWidths = new Map(measuredColumnWidths);\n let hasChanges = false;\n\n for (const key of columnsToMeasure) {\n const measuredWidth = measureColumnWidth(gridRef, key);\n hasChanges ||= measuredWidth !== measuredColumnWidths.get(key);\n if (measuredWidth === undefined) {\n newMeasuredColumnWidths.delete(key);\n } else {\n newMeasuredColumnWidths.set(key, measuredWidth);\n }\n }\n\n return hasChanges ? newMeasuredColumnWidths : measuredColumnWidths;\n });\n }\n\n function handleColumnResize(column: CalculatedColumn<R, SR>, nextWidth: number | 'max-content') {\n const { key: resizingKey } = column;\n const newTemplateColumns = [...templateColumns];\n const columnsToMeasure: string[] = [];\n\n for (const { key, idx, width } of viewportColumns) {\n if (resizingKey === key) {\n const width = typeof nextWidth === 'number' ? `${nextWidth}px` : nextWidth;\n newTemplateColumns[idx] = width;\n } else if (columnsCanFlex && typeof width === 'string' && !resizedColumnWidths.has(key)) {\n newTemplateColumns[idx] = width;\n columnsToMeasure.push(key);\n }\n }\n\n gridRef.current!.style.gridTemplateColumns = newTemplateColumns.join(' ');\n const measuredWidth =\n typeof nextWidth === 'number' ? nextWidth : measureColumnWidth(gridRef, resizingKey)!;\n\n // TODO: remove\n // need flushSync to keep frozen column offsets in sync\n // we may be able to use `startTransition` or even `requestIdleCallback` instead\n flushSync(() => {\n setResizedColumnWidths((resizedColumnWidths) => {\n const newResizedColumnWidths = new Map(resizedColumnWidths);\n newResizedColumnWidths.set(resizingKey, measuredWidth);\n return newResizedColumnWidths;\n });\n updateMeasuredWidths(columnsToMeasure);\n });\n\n onColumnResize?.(column.idx, measuredWidth);\n }\n\n return {\n gridTemplateColumns,\n handleColumnResize\n } as const;\n}\n\nfunction measureColumnWidth(gridRef: React.RefObject<HTMLDivElement | null>, key: string) {\n const selector = `[data-measuring-cell-key=\"${CSS.escape(key)}\"]`;\n const measuringCell = gridRef.current?.querySelector(selector);\n return measuringCell?.getBoundingClientRect().width;\n}\n","import { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\n\nimport { useLayoutEffect } from './useLayoutEffect';\n\nexport function useGridDimensions() {\n const gridRef = useRef<HTMLDivElement>(null);\n const [inlineSize, setInlineSize] = useState(1);\n const [blockSize, setBlockSize] = useState(1);\n const [horizontalScrollbarHeight, setHorizontalScrollbarHeight] = useState(0);\n\n useLayoutEffect(() => {\n const { ResizeObserver } = window;\n\n // don't break in Node.js (SSR), jsdom, and browsers that don't support ResizeObserver\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (ResizeObserver == null) return;\n\n const { clientWidth, clientHeight, offsetWidth, offsetHeight } = gridRef.current!;\n const { width, height } = gridRef.current!.getBoundingClientRect();\n const initialHorizontalScrollbarHeight = offsetHeight - clientHeight;\n const initialWidth = width - offsetWidth + clientWidth;\n const initialHeight = height - initialHorizontalScrollbarHeight;\n\n setInlineSize(initialWidth);\n setBlockSize(initialHeight);\n setHorizontalScrollbarHeight(initialHorizontalScrollbarHeight);\n\n const resizeObserver = new ResizeObserver((entries) => {\n const size = entries[0].contentBoxSize[0];\n const { clientHeight, offsetHeight } = gridRef.current!;\n\n // we use flushSync here to avoid flashing scrollbars\n flushSync(() => {\n setInlineSize(size.inlineSize);\n setBlockSize(size.blockSize);\n setHorizontalScrollbarHeight(offsetHeight - clientHeight);\n });\n });\n resizeObserver.observe(gridRef.current!);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return [gridRef, inlineSize, blockSize, horizontalScrollbarHeight] as const;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nimport type { Maybe } from '../types';\n\n// https://reactjs.org/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useLatestFunc<T extends Maybe<(...args: any[]) => any>>(fn: T): T {\n const ref = useRef(fn);\n\n useEffect(() => {\n ref.current = fn;\n });\n\n const callbackFn = useCallback((...args: Parameters<NonNullable<T>>) => {\n ref.current!(...args);\n }, []);\n\n // @ts-expect-error\n return fn ? callbackFn : fn;\n}\n","import { useState } from 'react';\n\n// https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex\nexport function useRovingTabIndex(isSelected: boolean) {\n // https://www.w3.org/TR/wai-aria-practices-1.1/#gridNav_focus\n const [isChildFocused, setIsChildFocused] = useState(false);\n\n if (isChildFocused && !isSelected) {\n setIsChildFocused(false);\n }\n\n function onFocus(event: React.FocusEvent<HTMLDivElement>) {\n if (event.target !== event.currentTarget) {\n setIsChildFocused(true);\n }\n }\n\n const isFocusable = isSelected && !isChildFocused;\n\n return {\n tabIndex: isFocusable ? 0 : -1,\n childTabIndex: isSelected ? 0 : -1,\n onFocus: isSelected ? onFocus : undefined\n };\n}\n","import { useMemo } from 'react';\n\nimport { getColSpan } from '../utils';\nimport type { CalculatedColumn, Maybe } from '../types';\n\ninterface ViewportColumnsArgs<R, SR> {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n topSummaryRows: Maybe<readonly SR[]>;\n bottomSummaryRows: Maybe<readonly SR[]>;\n colOverscanStartIdx: number;\n colOverscanEndIdx: number;\n lastFrozenColumnIndex: number;\n rowOverscanStartIdx: number;\n rowOverscanEndIdx: number;\n}\n\nexport function useViewportColumns<R, SR>({\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx\n}: ViewportColumnsArgs<R, SR>) {\n // find the column that spans over a column within the visible columns range and adjust colOverscanStartIdx\n const startIdx = useMemo(() => {\n if (colOverscanStartIdx === 0) return 0;\n\n let startIdx = colOverscanStartIdx;\n\n const updateStartIdx = (colIdx: number, colSpan: number | undefined) => {\n if (colSpan !== undefined && colIdx + colSpan > colOverscanStartIdx) {\n startIdx = colIdx;\n return true;\n }\n return false;\n };\n\n for (const column of colSpanColumns) {\n // check header row\n const colIdx = column.idx;\n if (colIdx >= startIdx) break;\n if (updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' }))) {\n break;\n }\n\n // check viewport rows\n for (let rowIdx = rowOverscanStartIdx; rowIdx <= rowOverscanEndIdx; rowIdx++) {\n const row = rows[rowIdx];\n if (\n updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row }))\n ) {\n break;\n }\n }\n\n // check summary rows\n if (topSummaryRows != null) {\n for (const row of topSummaryRows) {\n if (\n updateStartIdx(\n colIdx,\n getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row })\n )\n ) {\n break;\n }\n }\n }\n\n if (bottomSummaryRows != null) {\n for (const row of bottomSummaryRows) {\n if (\n updateStartIdx(\n colIdx,\n getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row })\n )\n ) {\n break;\n }\n }\n }\n }\n\n return startIdx;\n }, [\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n colOverscanStartIdx,\n lastFrozenColumnIndex,\n colSpanColumns\n ]);\n\n return useMemo((): readonly CalculatedColumn<R, SR>[] => {\n const viewportColumns: CalculatedColumn<R, SR>[] = [];\n for (let colIdx = 0; colIdx <= colOverscanEndIdx; colIdx++) {\n const column = columns[colIdx];\n\n if (colIdx < startIdx && !column.frozen) continue;\n viewportColumns.push(column);\n }\n\n return viewportColumns;\n }, [startIdx, colOverscanEndIdx, columns]);\n}\n","import { useMemo } from 'react';\n\nimport { floor, max, min } from '../utils';\n\ninterface ViewportRowsArgs<R> {\n rows: readonly R[];\n rowHeight: number | ((row: R) => number);\n clientHeight: number;\n scrollTop: number;\n enableVirtualization: boolean;\n}\n\nexport function useViewportRows<R>({\n rows,\n rowHeight,\n clientHeight,\n scrollTop,\n enableVirtualization\n}: ViewportRowsArgs<R>) {\n const { totalRowHeight, gridTemplateRows, getRowTop, getRowHeight, findRowIdx } = useMemo(() => {\n if (typeof rowHeight === 'number') {\n return {\n totalRowHeight: rowHeight * rows.length,\n gridTemplateRows: ` repeat(${rows.length}, ${rowHeight}px)`,\n getRowTop: (rowIdx: number) => rowIdx * rowHeight,\n getRowHeight: () => rowHeight,\n findRowIdx: (offset: number) => floor(offset / rowHeight)\n };\n }\n\n let totalRowHeight = 0;\n let gridTemplateRows = ' ';\n // Calcule the height of all the rows upfront. This can cause performance issues\n // and we can consider using a similar approach as react-window\n // https://github.com/bvaughn/react-window/blob/b0a470cc264e9100afcaa1b78ed59d88f7914ad4/src/VariableSizeList.js#L68\n const rowPositions = rows.map((row) => {\n const currentRowHeight = rowHeight(row);\n const position = { top: totalRowHeight, height: currentRowHeight };\n gridTemplateRows += `${currentRowHeight}px `;\n totalRowHeight += currentRowHeight;\n return position;\n });\n\n const validateRowIdx = (rowIdx: number) => {\n return max(0, min(rows.length - 1, rowIdx));\n };\n\n return {\n totalRowHeight,\n gridTemplateRows,\n getRowTop: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].top,\n getRowHeight: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].height,\n findRowIdx(offset: number) {\n let start = 0;\n let end = rowPositions.length - 1;\n while (start <= end) {\n const middle = start + floor((end - start) / 2);\n const currentOffset = rowPositions[middle].top;\n\n if (currentOffset === offset) return middle;\n\n if (currentOffset < offset) {\n start = middle + 1;\n } else if (currentOffset > offset) {\n end = middle - 1;\n }\n\n if (start > end) return end;\n }\n return 0;\n }\n };\n }, [rowHeight, rows]);\n\n let rowOverscanStartIdx = 0;\n let rowOverscanEndIdx = rows.length - 1;\n\n if (enableVirtualization) {\n const overscanThreshold = 4;\n const rowVisibleStartIdx = findRowIdx(scrollTop);\n const rowVisibleEndIdx = findRowIdx(scrollTop + clientHeight);\n rowOverscanStartIdx = max(0, rowVisibleStartIdx - overscanThreshold);\n rowOverscanEndIdx = min(rows.length - 1, rowVisibleEndIdx + overscanThreshold);\n }\n\n return {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n totalRowHeight,\n gridTemplateRows,\n getRowTop,\n getRowHeight,\n findRowIdx\n };\n}\n","import { forwardRef, memo, type RefAttributes } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport { createCellEvent, getCellClassname, getCellStyle, isCellEditableUtil } from './utils';\nimport type { CellRendererProps } from './types';\n\nconst cellCopied = css`\n @layer rdg.Cell {\n background-color: #ccccff;\n }\n`;\n\nconst cellCopiedClassname = `rdg-cell-copied ${cellCopied}`;\n\nconst cellDraggedOver = css`\n @layer rdg.Cell {\n background-color: #ccccff;\n\n &.${cellCopied} {\n background-color: #9999ff;\n }\n }\n`;\n\nconst cellDraggedOverClassname = `rdg-cell-dragged-over ${cellDraggedOver}`;\n\nfunction Cell<R, SR>(\n {\n column,\n colSpan,\n isCellSelected,\n isCopied,\n isDraggedOver,\n row,\n rowIdx,\n className,\n onClick,\n onDoubleClick,\n onContextMenu,\n onRowChange,\n selectCell,\n ...props\n }: CellRendererProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n\n const { cellClass } = column;\n className = getCellClassname(\n column,\n {\n [cellCopiedClassname]: isCopied,\n [cellDraggedOverClassname]: isDraggedOver\n },\n typeof cellClass === 'function' ? cellClass(row) : cellClass,\n className\n );\n const isEditable = isCellEditableUtil(column, row);\n\n function selectCellWrapper(openEditor?: boolean) {\n selectCell({ rowIdx, idx: column.idx }, openEditor);\n }\n\n function handleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (onClick) {\n const cellEvent = createCellEvent(event);\n onClick({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper();\n }\n\n function handleContextMenu(event: React.MouseEvent<HTMLDivElement>) {\n if (onContextMenu) {\n const cellEvent = createCellEvent(event);\n onContextMenu({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper();\n }\n\n function handleDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (onDoubleClick) {\n const cellEvent = createCellEvent(event);\n onDoubleClick({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper(true);\n }\n\n function handleRowChange(newRow: R) {\n onRowChange(column, newRow);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n aria-readonly={!isEditable || undefined}\n ref={ref}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleContextMenu}\n onFocus={onFocus}\n {...props}\n >\n {column.renderCell({\n column,\n row,\n rowIdx,\n isCellEditable: isEditable,\n tabIndex: childTabIndex,\n onRowChange: handleRowChange\n })}\n </div>\n );\n}\n\nconst CellComponent = memo(forwardRef(Cell)) as <R, SR>(\n props: CellRendererProps<R, SR> & RefAttributes<HTMLDivElement>\n) => JSX.Element;\n\nexport default CellComponent;\n\nexport function defaultRenderCell<R, SR>(key: React.Key, props: CellRendererProps<R, SR>) {\n return <CellComponent key={key} {...props} />;\n}\n","import { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getCellStyle } from './utils';\nimport type { CalculatedColumn, FillEvent, Position } from './types';\nimport type { DataGridProps, SelectCellState } from './DataGrid';\n\nconst cellDragHandle = css`\n @layer rdg.DragHandle {\n --rdg-drag-handle-size: 8px;\n z-index: 0;\n cursor: move;\n inline-size: var(--rdg-drag-handle-size);\n block-size: var(--rdg-drag-handle-size);\n background-color: var(--rdg-selection-color);\n place-self: end;\n\n &:hover {\n --rdg-drag-handle-size: 16px;\n border: 2px solid var(--rdg-selection-color);\n background-color: var(--rdg-background-color);\n }\n }\n`;\n\nconst cellDragHandleFrozenClassname = css`\n @layer rdg.DragHandle {\n z-index: 1;\n position: sticky;\n }\n`;\n\nconst cellDragHandleClassname = `rdg-cell-drag-handle ${cellDragHandle}`;\n\n// TODO: replace with RefObject once we drop support for React 18\ninterface LatestDraggedOverRowIdxRef {\n readonly current: number | undefined;\n}\n\ninterface Props<R, SR> extends Pick<DataGridProps<R, SR>, 'rows' | 'onRowsChange'> {\n gridRowStart: number;\n column: CalculatedColumn<R, SR>;\n columnWidth: number | string;\n maxColIdx: number;\n isLastRow: boolean;\n selectedPosition: SelectCellState;\n latestDraggedOverRowIdx: LatestDraggedOverRowIdxRef;\n isCellEditable: (position: Position) => boolean;\n onClick: () => void;\n onFill: (event: FillEvent<R>) => R;\n setDragging: (isDragging: boolean) => void;\n setDraggedOverRowIdx: (overRowIdx: number | undefined) => void;\n}\n\nexport default function DragHandle<R, SR>({\n gridRowStart,\n rows,\n column,\n columnWidth,\n maxColIdx,\n isLastRow,\n selectedPosition,\n latestDraggedOverRowIdx,\n isCellEditable,\n onRowsChange,\n onFill,\n onClick,\n setDragging,\n setDraggedOverRowIdx\n}: Props<R, SR>) {\n const { idx, rowIdx } = selectedPosition;\n\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n // keep the focus on the cell\n event.preventDefault();\n if (event.buttons !== 1) return;\n setDragging(true);\n window.addEventListener('mouseover', onMouseOver);\n window.addEventListener('mouseup', onMouseUp);\n\n function onMouseOver(event: MouseEvent) {\n // Trigger onMouseup in edge cases where we release the mouse button but `mouseup` isn't triggered,\n // for example when releasing the mouse button outside the iframe the grid is rendered in.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n if (event.buttons !== 1) onMouseUp();\n }\n\n function onMouseUp() {\n window.removeEventListener('mouseover', onMouseOver);\n window.removeEventListener('mouseup', onMouseUp);\n setDragging(false);\n handleDragEnd();\n }\n }\n\n function handleDragEnd() {\n const overRowIdx = latestDraggedOverRowIdx.current;\n if (overRowIdx === undefined) return;\n\n const startRowIndex = rowIdx < overRowIdx ? rowIdx + 1 : overRowIdx;\n const endRowIndex = rowIdx < overRowIdx ? overRowIdx + 1 : rowIdx;\n updateRows(startRowIndex, endRowIndex);\n setDraggedOverRowIdx(undefined);\n }\n\n function handleDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n event.stopPropagation();\n updateRows(rowIdx + 1, rows.length);\n }\n\n function updateRows(startRowIdx: number, endRowIdx: number) {\n const sourceRow = rows[rowIdx];\n const updatedRows = [...rows];\n const indexes: number[] = [];\n for (let i = startRowIdx; i < endRowIdx; i++) {\n if (isCellEditable({ rowIdx: i, idx })) {\n const updatedRow = onFill({ columnKey: column.key, sourceRow, targetRow: rows[i] });\n if (updatedRow !== rows[i]) {\n updatedRows[i] = updatedRow;\n indexes.push(i);\n }\n }\n }\n\n if (indexes.length > 0) {\n onRowsChange?.(updatedRows, { indexes, column });\n }\n }\n\n function getStyle(): React.CSSProperties {\n const colSpan = column.colSpan?.({ type: 'ROW', row: rows[rowIdx] }) ?? 1;\n const { insetInlineStart, ...style } = getCellStyle(column, colSpan);\n const marginEnd = 'calc(var(--rdg-drag-handle-size) * -0.5 + 1px)';\n const isLastColumn = column.idx + colSpan - 1 === maxColIdx;\n\n return {\n ...style,\n gridRowStart,\n marginInlineEnd: isLastColumn ? undefined : marginEnd,\n marginBlockEnd: isLastRow ? undefined : marginEnd,\n insetInlineStart: insetInlineStart\n ? `calc(${insetInlineStart} + ${columnWidth}px + var(--rdg-drag-handle-size) * -0.5 - 1px)`\n : undefined\n };\n }\n\n return (\n <div\n style={getStyle()}\n className={clsx(cellDragHandleClassname, column.frozen && cellDragHandleFrozenClassname)}\n onClick={onClick}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n />\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useLatestFunc } from './hooks';\nimport { createCellEvent, getCellClassname, getCellStyle, onEditorNavigation } from './utils';\nimport type {\n CellKeyboardEvent,\n CellRendererProps,\n EditCellKeyDownArgs,\n Maybe,\n Omit,\n RenderEditCellProps\n} from './types';\n\n/*\n * To check for outside `mousedown` events, we listen to all `mousedown` events at their birth,\n * i.e. on the window during the capture phase, and at their death, i.e. on the window during the bubble phase.\n *\n * We schedule a check at the birth of the event, cancel the check when the event reaches the \"inside\" container,\n * and trigger the \"outside\" callback when the event bubbles back up to the window.\n *\n * The event can be `stopPropagation()`ed halfway through, so they may not always bubble back up to the window,\n * so an alternative check must be used. The check must happen after the event can reach the \"inside\" container,\n * and not before it run to completion. `requestAnimationFrame` is the best way we know how to achieve this.\n * Usually we want click event handlers from parent components to access the latest commited values,\n * so `mousedown` is used instead of `click`.\n *\n * We must also rely on React's event capturing/bubbling to handle elements rendered in a portal.\n */\n\nconst cellEditing = css`\n @layer rdg.EditCell {\n padding: 0;\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<CellRendererProps<R, SR>, 'colSpan'>;\n\ninterface EditCellProps<R, SR>\n extends Omit<RenderEditCellProps<R, SR>, 'onRowChange' | 'onClose'>,\n SharedCellRendererProps<R, SR> {\n rowIdx: number;\n onRowChange: (row: R, commitChanges: boolean, shouldFocusCell: boolean) => void;\n closeEditor: (shouldFocusCell: boolean) => void;\n navigate: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n onKeyDown: Maybe<(args: EditCellKeyDownArgs<R, SR>, event: CellKeyboardEvent) => void>;\n}\n\nexport default function EditCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n onRowChange,\n closeEditor,\n onKeyDown,\n navigate\n}: EditCellProps<R, SR>) {\n const frameRequestRef = useRef<number | undefined>(undefined);\n const commitOnOutsideClick = column.editorOptions?.commitOnOutsideClick !== false;\n\n // We need to prevent the `useEffect` from cleaning up between re-renders,\n // as `onWindowCaptureMouseDown` might otherwise miss valid mousedown events.\n // To that end we instead access the latest props via useLatestFunc.\n const commitOnOutsideMouseDown = useLatestFunc(() => {\n onClose(true, false);\n });\n\n useEffect(() => {\n if (!commitOnOutsideClick) return;\n\n function onWindowCaptureMouseDown() {\n frameRequestRef.current = requestAnimationFrame(commitOnOutsideMouseDown);\n }\n\n addEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n\n return () => {\n removeEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n cancelFrameRequest();\n };\n }, [commitOnOutsideClick, commitOnOutsideMouseDown]);\n\n function cancelFrameRequest() {\n cancelAnimationFrame(frameRequestRef.current!);\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (onKeyDown) {\n const cellEvent = createCellEvent(event);\n onKeyDown(\n {\n mode: 'EDIT',\n row,\n column,\n rowIdx,\n navigate() {\n navigate(event);\n },\n onClose\n },\n cellEvent\n );\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n\n if (event.key === 'Escape') {\n // Discard changes\n onClose();\n } else if (event.key === 'Enter') {\n onClose(true);\n } else if (onEditorNavigation(event)) {\n navigate(event);\n }\n }\n\n function onClose(commitChanges = false, shouldFocusCell = true) {\n if (commitChanges) {\n onRowChange(row, true, shouldFocusCell);\n } else {\n closeEditor(shouldFocusCell);\n }\n }\n\n function onEditorRowChange(row: R, commitChangesAndFocus = false) {\n onRowChange(row, commitChangesAndFocus, commitChangesAndFocus);\n }\n\n const { cellClass } = column;\n const className = getCellClassname(\n column,\n 'rdg-editor-container',\n !column.editorOptions?.displayCellContent && cellEditing,\n typeof cellClass === 'function' ? cellClass(row) : cellClass\n );\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-colspan={colSpan}\n aria-selected\n className={className}\n style={getCellStyle(column, colSpan)}\n onKeyDown={handleKeyDown}\n onMouseDownCapture={cancelFrameRequest}\n >\n {column.renderEditCell != null && (\n <>\n {column.renderEditCell({\n column,\n row,\n rowIdx,\n onRowChange: onEditorRowChange,\n onClose\n })}\n {column.editorOptions?.displayCellContent &&\n column.renderCell({\n column,\n row,\n rowIdx,\n isCellEditable: true,\n tabIndex: -1,\n onRowChange: onEditorRowChange\n })}\n </>\n )}\n </div>\n );\n}\n","import clsx from 'clsx';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getHeaderCellRowSpan, getHeaderCellStyle } from './utils';\nimport type { CalculatedColumnParent } from './types';\nimport type { GroupedColumnHeaderRowProps } from './GroupedColumnHeaderRow';\nimport { cellClassname } from './style/cell';\n\ntype SharedGroupedColumnHeaderRowProps<R, SR> = Pick<\n GroupedColumnHeaderRowProps<R, SR>,\n 'rowIdx' | 'selectCell'\n>;\n\ninterface GroupedColumnHeaderCellProps<R, SR> extends SharedGroupedColumnHeaderRowProps<R, SR> {\n column: CalculatedColumnParent<R, SR>;\n isCellSelected: boolean;\n}\n\nexport default function GroupedColumnHeaderCell<R, SR>({\n column,\n rowIdx,\n isCellSelected,\n selectCell\n}: GroupedColumnHeaderCellProps<R, SR>) {\n const { tabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const { colSpan } = column;\n const rowSpan = getHeaderCellRowSpan(column, rowIdx);\n const index = column.idx + 1;\n\n function onClick() {\n selectCell({ idx: column.idx, rowIdx });\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={index}\n aria-colspan={colSpan}\n aria-rowspan={rowSpan}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n className={clsx(cellClassname, column.headerCellClass)}\n style={{\n ...getHeaderCellStyle(column, rowIdx, rowSpan),\n gridColumnStart: index,\n gridColumnEnd: index + colSpan\n }}\n onFocus={onFocus}\n onClick={onClick}\n >\n {column.name}\n </div>\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { RenderHeaderCellProps } from './types';\nimport { useDefaultRenderers } from './DataGridDefaultRenderersProvider';\n\nconst headerSortCellClassname = css`\n @layer rdg.SortableHeaderCell {\n display: flex;\n }\n`;\n\nconst headerSortName = css`\n @layer rdg.SortableHeaderCellName {\n flex-grow: 1;\n overflow: clip;\n text-overflow: ellipsis;\n }\n`;\n\nconst headerSortNameClassname = `rdg-header-sort-name ${headerSortName}`;\n\nexport default function renderHeaderCell<R, SR>({\n column,\n sortDirection,\n priority\n}: RenderHeaderCellProps<R, SR>) {\n if (!column.sortable) return column.name;\n\n return (\n <SortableHeaderCell sortDirection={sortDirection} priority={priority}>\n {column.name}\n </SortableHeaderCell>\n );\n}\n\ntype SharedHeaderCellProps<R, SR> = Pick<\n RenderHeaderCellProps<R, SR>,\n 'sortDirection' | 'priority'\n>;\n\ninterface SortableHeaderCellProps<R, SR> extends SharedHeaderCellProps<R, SR> {\n children: React.ReactNode;\n}\n\nfunction SortableHeaderCell<R, SR>({\n sortDirection,\n priority,\n children\n}: SortableHeaderCellProps<R, SR>) {\n const renderSortStatus = useDefaultRenderers<R, SR>()!.renderSortStatus!;\n\n return (\n <span className={headerSortCellClassname}>\n <span className={headerSortNameClassname}>{children}</span>\n <span>{renderSortStatus({ sortDirection, priority })}</span>\n </span>\n );\n}\n","import { useState } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport {\n clampColumnWidth,\n getCellClassname,\n getCellStyle,\n getHeaderCellRowSpan,\n getHeaderCellStyle,\n stopPropagation\n} from './utils';\nimport type { CalculatedColumn, SortColumn } from './types';\nimport type { HeaderRowProps } from './HeaderRow';\nimport defaultRenderHeaderCell from './renderHeaderCell';\n\nconst cellSortableClassname = css`\n @layer rdg.HeaderCell {\n cursor: pointer;\n }\n`;\n\nconst cellResizable = css`\n @layer rdg.HeaderCell {\n touch-action: none;\n }\n`;\n\nconst cellResizableClassname = `rdg-cell-resizable ${cellResizable}`;\n\nexport const resizeHandleClassname = css`\n @layer rdg.HeaderCell {\n cursor: col-resize;\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n inset-block-end: 0;\n inline-size: 10px;\n }\n`;\n\nconst cellDraggableClassname = 'rdg-cell-draggable';\n\nconst cellDragging = css`\n opacity: 0.5;\n`;\n\nconst cellDraggingClassname = `rdg-cell-dragging ${cellDragging}`;\n\nconst cellOver = css`\n background-color: var(--rdg-header-draggable-background-color);\n`;\n\nconst cellOverClassname = `rdg-cell-drag-over ${cellOver}`;\n\ntype SharedHeaderRowProps<R, SR> = Pick<\n HeaderRowProps<R, SR, React.Key>,\n | 'sortColumns'\n | 'onSortColumnsChange'\n | 'selectCell'\n | 'onColumnResize'\n | 'shouldFocusGrid'\n | 'direction'\n | 'onColumnsReorder'\n>;\n\nexport interface HeaderCellProps<R, SR> extends SharedHeaderRowProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n colSpan: number | undefined;\n rowIdx: number;\n isCellSelected: boolean;\n dragDropKey: string;\n}\n\nexport default function HeaderCell<R, SR>({\n column,\n colSpan,\n rowIdx,\n isCellSelected,\n onColumnResize,\n onColumnsReorder,\n sortColumns,\n onSortColumnsChange,\n selectCell,\n shouldFocusGrid,\n direction,\n dragDropKey\n}: HeaderCellProps<R, SR>) {\n const [isDragging, setIsDragging] = useState(false);\n const [isOver, setIsOver] = useState(false);\n const isRtl = direction === 'rtl';\n const rowSpan = getHeaderCellRowSpan(column, rowIdx);\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const sortIndex = sortColumns?.findIndex((sort) => sort.columnKey === column.key);\n const sortColumn =\n sortIndex !== undefined && sortIndex > -1 ? sortColumns![sortIndex] : undefined;\n const sortDirection = sortColumn?.direction;\n const priority = sortColumn !== undefined && sortColumns!.length > 1 ? sortIndex! + 1 : undefined;\n const ariaSort =\n sortDirection && !priority ? (sortDirection === 'ASC' ? 'ascending' : 'descending') : undefined;\n const { sortable, resizable, draggable } = column;\n\n const className = getCellClassname(column, column.headerCellClass, {\n [cellSortableClassname]: sortable,\n [cellResizableClassname]: resizable,\n [cellDraggableClassname]: draggable,\n [cellDraggingClassname]: isDragging,\n [cellOverClassname]: isOver\n });\n\n const renderHeaderCell = column.renderHeaderCell ?? defaultRenderHeaderCell;\n\n function onPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'mouse' && event.buttons !== 1) {\n return;\n }\n\n // Fix column resizing on a draggable column in FF\n event.preventDefault();\n\n const { currentTarget, pointerId } = event;\n const headerCell = currentTarget.parentElement!;\n const { right, left } = headerCell.getBoundingClientRect();\n const offset = isRtl ? event.clientX - left : right - event.clientX;\n let hasDoubleClicked = false;\n\n function onPointerMove(event: PointerEvent) {\n const { width, right, left } = headerCell.getBoundingClientRect();\n let newWidth = isRtl ? right + offset - event.clientX : event.clientX + offset - left;\n newWidth = clampColumnWidth(newWidth, column);\n if (width > 0 && newWidth !== width) {\n onColumnResize(column, newWidth);\n }\n }\n\n function onDoubleClick() {\n hasDoubleClicked = true;\n onColumnResize(column, 'max-content');\n }\n\n function onLostPointerCapture(event: PointerEvent) {\n // Handle final pointer position that may have been skipped by coalesced pointer move events.\n // Skip move pointer handling if the user double-clicked.\n if (!hasDoubleClicked) {\n onPointerMove(event);\n }\n\n currentTarget.removeEventListener('pointermove', onPointerMove);\n currentTarget.removeEventListener('dblclick', onDoubleClick);\n currentTarget.removeEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n currentTarget.setPointerCapture(pointerId);\n currentTarget.addEventListener('pointermove', onPointerMove);\n currentTarget.addEventListener('dblclick', onDoubleClick);\n currentTarget.addEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n function onSort(ctrlClick: boolean) {\n if (onSortColumnsChange == null) return;\n const { sortDescendingFirst } = column;\n if (sortColumn === undefined) {\n // not currently sorted\n const nextSort: SortColumn = {\n columnKey: column.key,\n direction: sortDescendingFirst ? 'DESC' : 'ASC'\n };\n onSortColumnsChange(sortColumns && ctrlClick ? [...sortColumns, nextSort] : [nextSort]);\n } else {\n let nextSortColumn: SortColumn | undefined;\n if (\n (sortDescendingFirst === true && sortDirection === 'DESC') ||\n (sortDescendingFirst !== true && sortDirection === 'ASC')\n ) {\n nextSortColumn = {\n columnKey: column.key,\n direction: sortDirection === 'ASC' ? 'DESC' : 'ASC'\n };\n }\n if (ctrlClick) {\n const nextSortColumns = [...sortColumns!];\n if (nextSortColumn) {\n // swap direction\n nextSortColumns[sortIndex!] = nextSortColumn;\n } else {\n // remove sort\n nextSortColumns.splice(sortIndex!, 1);\n }\n onSortColumnsChange(nextSortColumns);\n } else {\n onSortColumnsChange(nextSortColumn ? [nextSortColumn] : []);\n }\n }\n }\n\n function onClick(event: React.MouseEvent<HTMLSpanElement>) {\n selectCell({ idx: column.idx, rowIdx });\n\n if (sortable) {\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function handleFocus(event: React.FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n if (shouldFocusGrid) {\n // Select the first header cell if there is no selected cell\n selectCell({ idx: 0, rowIdx });\n }\n }\n\n function onKeyDown(event: React.KeyboardEvent<HTMLSpanElement>) {\n if (event.key === ' ' || event.key === 'Enter') {\n // prevent scrolling\n event.preventDefault();\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function onDragStart(event: React.DragEvent<HTMLDivElement>) {\n event.dataTransfer.setData(dragDropKey, column.key);\n event.dataTransfer.dropEffect = 'move';\n setIsDragging(true);\n }\n\n function onDragEnd() {\n setIsDragging(false);\n }\n\n function onDragOver(event: React.DragEvent<HTMLDivElement>) {\n // prevent default to allow drop\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n }\n\n function onDrop(event: React.DragEvent<HTMLDivElement>) {\n setIsOver(false);\n // The dragDropKey is derived from the useId() hook, which can sometimes generate keys with uppercase letters.\n // When setting data using event.dataTransfer.setData(), the key is automatically converted to lowercase in some browsers.\n // To ensure consistent comparison, we normalize the dragDropKey to lowercase before checking its presence in the event's dataTransfer types.\n // https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface\n if (event.dataTransfer.types.includes(dragDropKey.toLowerCase())) {\n const sourceKey = event.dataTransfer.getData(dragDropKey.toLowerCase());\n if (sourceKey !== column.key) {\n event.preventDefault();\n onColumnsReorder?.(sourceKey, column.key);\n }\n }\n }\n\n function onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n if (isEventPertinent(event)) {\n setIsOver(true);\n }\n }\n\n function onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n if (isEventPertinent(event)) {\n setIsOver(false);\n }\n }\n\n let draggableProps: React.HTMLAttributes<HTMLDivElement> | undefined;\n if (draggable) {\n draggableProps = {\n draggable: true,\n /* events fired on the draggable target */\n onDragStart,\n onDragEnd,\n /* events fired on the drop targets */\n onDragOver,\n onDragEnter,\n onDragLeave,\n onDrop\n };\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-rowspan={rowSpan}\n aria-selected={isCellSelected}\n aria-sort={ariaSort}\n // set the tabIndex to 0 when there is no selected cell so grid can receive focus\n tabIndex={shouldFocusGrid ? 0 : tabIndex}\n className={className}\n style={{\n ...getHeaderCellStyle(column, rowIdx, rowSpan),\n ...getCellStyle(column, colSpan)\n }}\n onFocus={handleFocus}\n onClick={onClick}\n onKeyDown={sortable ? onKeyDown : undefined}\n {...draggableProps}\n >\n {renderHeaderCell({\n column,\n sortDirection,\n priority,\n tabIndex: childTabIndex\n })}\n\n {resizable && (\n <div\n className={resizeHandleClassname}\n onClick={stopPropagation}\n onPointerDown={onPointerDown}\n />\n )}\n </div>\n );\n}\n\n// only accept pertinent drag events:\n// - ignore drag events going from the container to an element inside the container\n// - ignore drag events going from an element inside the container to the container\nfunction isEventPertinent(event: React.DragEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n return !event.currentTarget.contains(relatedTarget);\n}\n","import { css } from '@linaria/core';\n\nexport const row = css`\n @layer rdg.Row {\n display: contents;\n background-color: var(--rdg-background-color);\n\n &:hover {\n background-color: var(--rdg-row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--rdg-row-selected-background-color);\n\n &:hover {\n background-color: var(--rdg-row-selected-hover-background-color);\n }\n }\n }\n`;\n\nexport const rowClassname = `rdg-row ${row}`;\n\nexport const rowSelected = css`\n @layer rdg.FocusSink {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n`;\n\nexport const rowSelectedClassname = 'rdg-row-selected';\n\nexport const rowSelectedWithFrozenCell = css`\n @layer rdg.FocusSink {\n &::before {\n content: '';\n display: inline-block;\n block-size: 100%;\n position: sticky;\n inset-inline-start: 0;\n border-inline-start: 2px solid var(--rdg-selection-color);\n }\n }\n`;\n\nexport const topSummaryRowClassname = 'rdg-top-summary-row';\n\nexport const bottomSummaryRowClassname = 'rdg-bottom-summary-row';\n","import { memo, useId } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getColSpan } from './utils';\nimport type { CalculatedColumn, Direction, Position } from './types';\nimport type { DataGridProps } from './DataGrid';\nimport HeaderCell from './HeaderCell';\nimport { cell, cellFrozen } from './style/cell';\nimport { rowSelectedClassname } from './style/row';\n\ntype SharedDataGridProps<R, SR, K extends React.Key> = Pick<\n DataGridProps<R, SR, K>,\n 'sortColumns' | 'onSortColumnsChange' | 'onColumnsReorder'\n>;\n\nexport interface HeaderRowProps<R, SR, K extends React.Key> extends SharedDataGridProps<R, SR, K> {\n rowIdx: number;\n columns: readonly CalculatedColumn<R, SR>[];\n onColumnResize: (column: CalculatedColumn<R, SR>, width: number | 'max-content') => void;\n selectCell: (position: Position) => void;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n shouldFocusGrid: boolean;\n direction: Direction;\n}\n\nconst headerRow = css`\n @layer rdg.HeaderRow {\n display: contents;\n background-color: var(--rdg-header-background-color);\n font-weight: bold;\n\n & > .${cell} {\n /* Should have a higher value than 1 to show up above regular cells and the focus sink */\n z-index: 2;\n position: sticky;\n }\n\n & > .${cellFrozen} {\n z-index: 3;\n }\n }\n`;\n\nexport const headerRowClassname = `rdg-header-row ${headerRow}`;\n\nfunction HeaderRow<R, SR, K extends React.Key>({\n rowIdx,\n columns,\n onColumnResize,\n onColumnsReorder,\n sortColumns,\n onSortColumnsChange,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n shouldFocusGrid,\n direction\n}: HeaderRowProps<R, SR, K>) {\n const dragDropKey = useId();\n\n const cells = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n cells.push(\n <HeaderCell<R, SR>\n key={column.key}\n column={column}\n colSpan={colSpan}\n rowIdx={rowIdx}\n isCellSelected={selectedCellIdx === column.idx}\n onColumnResize={onColumnResize}\n onColumnsReorder={onColumnsReorder}\n onSortColumnsChange={onSortColumnsChange}\n sortColumns={sortColumns}\n selectCell={selectCell}\n shouldFocusGrid={shouldFocusGrid && index === 0}\n direction={direction}\n dragDropKey={dragDropKey}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={rowIdx} // aria-rowindex is 1 based\n className={clsx(headerRowClassname, {\n [rowSelectedClassname]: selectedCellIdx === -1\n })}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(HeaderRow) as <R, SR, K extends React.Key>(\n props: HeaderRowProps<R, SR, K>\n) => React.JSX.Element;\n","import { memo } from 'react';\n\nimport type { CalculatedColumn, CalculatedColumnParent, Position } from './types';\nimport GroupedColumnHeaderCell from './GroupedColumnHeaderCell';\nimport { headerRowClassname } from './HeaderRow';\n\nexport interface GroupedColumnHeaderRowProps<R, SR> {\n rowIdx: number;\n level: number;\n columns: readonly CalculatedColumn<R, SR>[];\n selectCell: (position: Position) => void;\n selectedCellIdx: number | undefined;\n}\n\nfunction GroupedColumnHeaderRow<R, SR>({\n rowIdx,\n level,\n columns,\n selectedCellIdx,\n selectCell\n}: GroupedColumnHeaderRowProps<R, SR>) {\n const cells = [];\n const renderedParents = new Set<CalculatedColumnParent<R, SR>>();\n\n for (const column of columns) {\n let { parent } = column;\n\n if (parent === undefined) continue;\n\n while (parent.level > level) {\n if (parent.parent === undefined) break;\n parent = parent.parent;\n }\n\n if (parent.level === level && !renderedParents.has(parent)) {\n renderedParents.add(parent);\n const { idx } = parent;\n cells.push(\n <GroupedColumnHeaderCell<R, SR>\n key={idx}\n column={parent}\n rowIdx={rowIdx}\n isCellSelected={selectedCellIdx === idx}\n selectCell={selectCell}\n />\n );\n }\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={rowIdx} // aria-rowindex is 1 based\n className={headerRowClassname}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(GroupedColumnHeaderRow) as <R, SR>(\n props: GroupedColumnHeaderRowProps<R, SR>\n) => React.JSX.Element;\n","import { forwardRef, memo, useMemo, type RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider, useLatestFunc, type RowSelectionContextValue } from './hooks';\nimport { getColSpan, getRowStyle } from './utils';\nimport type { CalculatedColumn, RenderRowProps } from './types';\nimport { useDefaultRenderers } from './DataGridDefaultRenderersProvider';\nimport { rowClassname, rowSelectedClassname } from './style/row';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n gridRowStart,\n selectedCellIdx,\n isRowSelectionDisabled,\n isRowSelected,\n copiedCellIdx,\n draggedOverCellIdx,\n lastFrozenColumnIndex,\n row,\n viewportColumns,\n selectedCellEditor,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n rowClass,\n setDraggedOverRowIdx,\n onMouseEnter,\n onRowChange,\n selectCell,\n ...props\n }: RenderRowProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const renderCell = useDefaultRenderers<R, SR>()!.renderCell!;\n\n const handleRowChange = useLatestFunc((column: CalculatedColumn<R, SR>, newRow: R) => {\n onRowChange(column, rowIdx, newRow);\n });\n\n function handleDragEnter(event: React.MouseEvent<HTMLDivElement>) {\n setDraggedOverRowIdx?.(rowIdx);\n onMouseEnter?.(event);\n }\n\n className = clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n {\n [rowSelectedClassname]: selectedCellIdx === -1\n },\n rowClass?.(row, rowIdx),\n className\n );\n\n const cells = [];\n\n for (let index = 0; index < viewportColumns.length; index++) {\n const column = viewportColumns[index];\n const { idx } = column;\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n const isCellSelected = selectedCellIdx === idx;\n\n if (isCellSelected && selectedCellEditor) {\n cells.push(selectedCellEditor);\n } else {\n cells.push(\n renderCell(column.key, {\n column,\n colSpan,\n row,\n rowIdx,\n isCopied: copiedCellIdx === idx,\n isDraggedOver: draggedOverCellIdx === idx,\n isCellSelected,\n onClick: onCellClick,\n onDoubleClick: onCellDoubleClick,\n onContextMenu: onCellContextMenu,\n onRowChange: handleRowChange,\n selectCell\n })\n );\n }\n }\n\n const selectionValue = useMemo(\n (): RowSelectionContextValue => ({ isRowSelected, isRowSelectionDisabled }),\n [isRowSelectionDisabled, isRowSelected]\n );\n\n return (\n <RowSelectionProvider value={selectionValue}>\n <div\n role=\"row\"\n ref={ref}\n className={className}\n onMouseEnter={handleDragEnter}\n style={getRowStyle(gridRowStart)}\n {...props}\n >\n {cells}\n </div>\n </RowSelectionProvider>\n );\n}\n\nconst RowComponent = memo(forwardRef(Row)) as <R, SR>(\n props: RenderRowProps<R, SR> & RefAttributes<HTMLDivElement>\n) => React.JSX.Element;\n\nexport default RowComponent;\n\nexport function defaultRenderRow<R, SR>(key: React.Key, props: RenderRowProps<R, SR>) {\n return <RowComponent key={key} {...props} />;\n}\n","import { useRef } from 'react';\n\nimport { useLayoutEffect } from './hooks';\nimport { scrollIntoView } from './utils';\n\nexport interface PartialPosition {\n readonly idx?: number | undefined;\n readonly rowIdx?: number | undefined;\n}\n\nexport default function ScrollToCell({\n scrollToPosition: { idx, rowIdx },\n gridElement,\n setScrollToCellPosition\n}: {\n scrollToPosition: PartialPosition;\n gridElement: HTMLDivElement;\n setScrollToCellPosition: (cell: null) => void;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n // scroll until the cell is completely visible\n // this is needed if the grid has auto-sized columns\n scrollIntoView(ref.current);\n });\n\n useLayoutEffect(() => {\n function removeScrollToCell() {\n setScrollToCellPosition(null);\n }\n\n const observer = new IntersectionObserver(removeScrollToCell, {\n root: gridElement,\n threshold: 1.0\n });\n\n observer.observe(ref.current!);\n\n return () => {\n observer.disconnect();\n };\n }, [gridElement, setScrollToCellPosition]);\n\n return (\n <div\n ref={ref}\n style={{\n gridColumn: idx === undefined ? '1/-1' : idx + 1,\n gridRow: rowIdx === undefined ? '1/-1' : rowIdx + 2\n }}\n />\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { RenderSortIconProps, RenderSortPriorityProps, RenderSortStatusProps } from './types';\n\nconst arrow = css`\n @layer rdg.SortIcon {\n fill: currentColor;\n\n > path {\n transition: d 0.1s;\n }\n }\n`;\n\nconst arrowClassname = `rdg-sort-arrow ${arrow}`;\n\nexport default function renderSortStatus({ sortDirection, priority }: RenderSortStatusProps) {\n return (\n <>\n {renderSortIcon({ sortDirection })}\n {renderSortPriority({ priority })}\n </>\n );\n}\n\nexport function renderSortIcon({ sortDirection }: RenderSortIconProps) {\n if (sortDirection === undefined) return null;\n\n return (\n <svg viewBox=\"0 0 12 8\" width=\"12\" height=\"8\" className={arrowClassname} aria-hidden>\n <path d={sortDirection === 'ASC' ? 'M0 8 6 0 12 8' : 'M0 0 6 8 12 0'} />\n </svg>\n );\n}\n\nexport function renderSortPriority({ priority }: RenderSortPriorityProps) {\n return priority;\n}\n","import { css } from '@linaria/core';\n\nimport { cell } from './cell';\nimport { bottomSummaryRowClassname, row, topSummaryRowClassname } from './row';\n\nconst lightTheme = `\n --rdg-color: #000;\n --rdg-border-color: #ddd;\n --rdg-summary-border-color: #aaa;\n --rdg-background-color: hsl(0deg 0% 100%);\n --rdg-header-background-color: hsl(0deg 0% 97.5%);\n --rdg-header-draggable-background-color: hsl(0deg 0% 90.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 96%);\n --rdg-row-selected-background-color: hsl(207deg 76% 92%);\n --rdg-row-selected-hover-background-color: hsl(207deg 76% 88%);\n\n --rdg-checkbox-focus-color: hsl(207deg 100% 69%);\n`;\n\nconst darkTheme = `\n --rdg-color: #ddd;\n --rdg-border-color: #444;\n --rdg-summary-border-color: #555;\n --rdg-background-color: hsl(0deg 0% 13%);\n --rdg-header-background-color: hsl(0deg 0% 10.5%);\n --rdg-header-draggable-background-color: hsl(0deg 0% 17.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 9%);\n --rdg-row-selected-background-color: hsl(207deg 76% 42%);\n --rdg-row-selected-hover-background-color: hsl(207deg 76% 38%);\n\n --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n`;\n\nconst root = css`\n @layer rdg.Defaults {\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n }\n\n @layer rdg.Root {\n ${lightTheme}\n --rdg-selection-color: #66afe9;\n --rdg-font-size: 14px;\n --rdg-cell-frozen-box-shadow: 2px 0 5px -2px rgba(136, 136, 136, 0.3);\n\n &:dir(rtl) {\n --rdg-cell-frozen-box-shadow: -2px 0 5px -2px rgba(136, 136, 136, 0.3);\n }\n\n display: grid;\n\n color-scheme: var(--rdg-color-scheme, light dark);\n accent-color: light-dark(hsl(207deg 100% 29%), hsl(207deg 100% 79%));\n\n /* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context */\n /* We set a stacking context so internal elements don't render on top of external elements. */\n /* size containment is not used as it could break \"width: min-content\" for example, and the grid would infinitely resize on Chromium browsers */\n contain: content;\n content-visibility: auto;\n block-size: 350px;\n border: 1px solid var(--rdg-border-color);\n box-sizing: border-box;\n overflow: auto;\n background-color: var(--rdg-background-color);\n color: var(--rdg-color);\n font-size: var(--rdg-font-size);\n\n /* needed on Firefox to fix scrollbars */\n &::before {\n content: '';\n grid-column: 1/-1;\n grid-row: 1/-1;\n }\n\n &.rdg-dark {\n --rdg-color-scheme: dark;\n ${darkTheme}\n }\n\n &.rdg-light {\n --rdg-color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n ${darkTheme}\n }\n }\n\n > :nth-last-child(1 of .${topSummaryRowClassname}) {\n > .${cell} {\n border-block-end: 2px solid var(--rdg-summary-border-color);\n }\n }\n\n > :nth-child(1 of .${bottomSummaryRowClassname}) {\n > .${cell} {\n border-block-start: 2px solid var(--rdg-summary-border-color);\n }\n }\n }\n`;\n\nexport const rootClassname = `rdg ${root}`;\n\nconst viewportDragging = css`\n @layer rdg.Root {\n user-select: none;\n\n & .${row} {\n cursor: move;\n }\n }\n`;\n\nexport const viewportDraggingClassname = `rdg-viewport-dragging ${viewportDragging}`;\n\nexport const focusSinkClassname = css`\n @layer rdg.FocusSink {\n grid-column: 1/-1;\n pointer-events: none;\n /* Should have a higher value than 1 to show up above regular frozen cells */\n z-index: 1;\n }\n`;\n\nexport const focusSinkHeaderAndSummaryClassname = css`\n @layer rdg.FocusSink {\n /* Should have a higher value than 3 to show up above header and summary rows */\n z-index: 3;\n }\n`;\n","import { memo } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getCellClassname, getCellStyle } from './utils';\nimport type { CellRendererProps } from './types';\n\nexport const summaryCellClassname = css`\n @layer rdg.SummaryCell {\n inset-block-start: var(--rdg-summary-row-top);\n inset-block-end: var(--rdg-summary-row-bottom);\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<\n CellRendererProps<R, SR>,\n 'rowIdx' | 'column' | 'colSpan' | 'isCellSelected' | 'selectCell'\n>;\n\ninterface SummaryCellProps<R, SR> extends SharedCellRendererProps<R, SR> {\n row: SR;\n}\n\nfunction SummaryCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n isCellSelected,\n selectCell\n}: SummaryCellProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const { summaryCellClass } = column;\n const className = getCellClassname(\n column,\n summaryCellClassname,\n typeof summaryCellClass === 'function' ? summaryCellClass(row) : summaryCellClass\n );\n\n function onClick() {\n selectCell({ rowIdx, idx: column.idx });\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={onClick}\n onFocus={onFocus}\n >\n {column.renderSummaryCell?.({ column, row, tabIndex: childTabIndex })}\n </div>\n );\n}\n\nexport default memo(SummaryCell) as <R, SR>(props: SummaryCellProps<R, SR>) => React.JSX.Element;\n","import { memo } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getColSpan, getRowStyle } from './utils';\nimport type { RenderRowProps } from './types';\nimport { cell, cellFrozen } from './style/cell';\nimport {\n bottomSummaryRowClassname,\n rowClassname,\n rowSelectedClassname,\n topSummaryRowClassname\n} from './style/row';\nimport SummaryCell from './SummaryCell';\n\ntype SharedRenderRowProps<R, SR> = Pick<\n RenderRowProps<R, SR>,\n 'viewportColumns' | 'rowIdx' | 'gridRowStart' | 'selectCell'\n>;\n\ninterface SummaryRowProps<R, SR> extends SharedRenderRowProps<R, SR> {\n 'aria-rowindex': number;\n row: SR;\n top: number | undefined;\n bottom: number | undefined;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n isTop: boolean;\n}\n\nconst summaryRow = css`\n @layer rdg.SummaryRow {\n > .${cell} {\n position: sticky;\n }\n }\n`;\n\nconst topSummaryRow = css`\n @layer rdg.SummaryRow {\n > .${cell} {\n z-index: 2;\n }\n\n > .${cellFrozen} {\n z-index: 3;\n }\n }\n`;\n\nconst summaryRowClassname = `rdg-summary-row ${summaryRow}`;\n\nfunction SummaryRow<R, SR>({\n rowIdx,\n gridRowStart,\n row,\n viewportColumns,\n top,\n bottom,\n lastFrozenColumnIndex,\n selectedCellIdx,\n isTop,\n selectCell,\n 'aria-rowindex': ariaRowIndex\n}: SummaryRowProps<R, SR>) {\n const cells = [];\n for (let index = 0; index < viewportColumns.length; index++) {\n const column = viewportColumns[index];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n const isCellSelected = selectedCellIdx === column.idx;\n\n cells.push(\n <SummaryCell<R, SR>\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n isCellSelected={isCellSelected}\n selectCell={selectCell}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={ariaRowIndex}\n className={clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n summaryRowClassname,\n {\n [rowSelectedClassname]: selectedCellIdx === -1,\n [`${topSummaryRowClassname} ${topSummaryRow}`]: isTop,\n [bottomSummaryRowClassname]: !isTop\n }\n )}\n style={\n {\n ...getRowStyle(gridRowStart),\n '--rdg-summary-row-top': top !== undefined ? `${top}px` : undefined,\n '--rdg-summary-row-bottom': bottom !== undefined ? `${bottom}px` : undefined\n } as unknown as React.CSSProperties\n }\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(SummaryRow) as <R, SR>(props: SummaryRowProps<R, SR>) => React.JSX.Element;\n","import { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport type { Key, KeyboardEvent, RefAttributes } from 'react';\nimport { flushSync } from 'react-dom';\nimport clsx from 'clsx';\n\nimport {\n HeaderRowSelectionChangeProvider,\n HeaderRowSelectionProvider,\n RowSelectionChangeProvider,\n useCalculatedColumns,\n useColumnWidths,\n useGridDimensions,\n useLatestFunc,\n useLayoutEffect,\n useViewportColumns,\n useViewportRows,\n type HeaderRowSelectionContextValue\n} from './hooks';\nimport {\n abs,\n assertIsValidKeyGetter,\n canExitGrid,\n createCellEvent,\n getColSpan,\n getNextSelectedCellPosition,\n isCtrlKeyHeldDown,\n isDefaultCellInput,\n isSelectedCellEditable,\n renderMeasuringCells,\n scrollIntoView,\n sign\n} from './utils';\nimport type {\n CalculatedColumn,\n CellClickArgs,\n CellKeyboardEvent,\n CellKeyDownArgs,\n CellMouseEvent,\n CellNavigationMode,\n CellSelectArgs,\n Column,\n ColumnOrColumnGroup,\n CopyEvent,\n Direction,\n FillEvent,\n Maybe,\n PasteEvent,\n Position,\n Renderers,\n RowsChangeData,\n SelectHeaderRowEvent,\n SelectRowEvent,\n SortColumn\n} from './types';\nimport { defaultRenderCell } from './Cell';\nimport { renderCheckbox as defaultRenderCheckbox } from './cellRenderers';\nimport {\n DataGridDefaultRenderersProvider,\n useDefaultRenderers\n} from './DataGridDefaultRenderersProvider';\nimport DragHandle from './DragHandle';\nimport EditCell from './EditCell';\nimport GroupedColumnHeaderRow from './GroupedColumnHeaderRow';\nimport HeaderRow from './HeaderRow';\nimport { defaultRenderRow } from './Row';\nimport type { PartialPosition } from './ScrollToCell';\nimport ScrollToCell from './ScrollToCell';\nimport { default as defaultRenderSortStatus } from './sortStatus';\nimport {\n focusSinkClassname,\n focusSinkHeaderAndSummaryClassname,\n rootClassname,\n viewportDraggingClassname\n} from './style/core';\nimport { rowSelected, rowSelectedWithFrozenCell } from './style/row';\nimport SummaryRow from './SummaryRow';\n\nexport interface SelectCellState extends Position {\n readonly mode: 'SELECT';\n}\n\ninterface EditCellState<R> extends Position {\n readonly mode: 'EDIT';\n readonly row: R;\n readonly originalRow: R;\n}\n\ntype DefaultColumnOptions<R, SR> = Pick<\n Column<R, SR>,\n 'renderCell' | 'width' | 'minWidth' | 'maxWidth' | 'resizable' | 'sortable' | 'draggable'\n>;\n\nexport interface DataGridHandle {\n element: HTMLDivElement | null;\n selectedCell: Position;\n scrollToCell: (position: PartialPosition) => void;\n selectCell: (position: Position, enableEditor?: Maybe<boolean>) => void;\n}\n\ntype SharedDivProps = Pick<\n React.HTMLAttributes<HTMLDivElement>,\n | 'role'\n | 'aria-label'\n | 'aria-labelledby'\n | 'aria-describedby'\n | 'aria-rowcount'\n | 'className'\n | 'style'\n>;\n\nexport interface DataGridProps<R, SR = unknown, K extends Key = Key> extends SharedDivProps {\n /**\n * Grid and data Props\n */\n /** An array of objects representing each column on the grid */\n columns: readonly ColumnOrColumnGroup<NoInfer<R>, NoInfer<SR>>[];\n /** A function called for each rendered row that should return a plain key/value pair object */\n rows: readonly R[];\n /**\n * Rows to be pinned at the top of the rows view for summary, the vertical scroll bar will not scroll these rows.\n */\n topSummaryRows?: Maybe<readonly SR[]>;\n /**\n * Rows to be pinned at the bottom of the rows view for summary, the vertical scroll bar will not scroll these rows.\n */\n bottomSummaryRows?: Maybe<readonly SR[]>;\n /** The getter should return a unique key for each row */\n rowKeyGetter?: Maybe<(row: NoInfer<R>) => K>;\n onRowsChange?: Maybe<(rows: NoInfer<R>[], data: RowsChangeData<NoInfer<R>, NoInfer<SR>>) => void>;\n\n /**\n * Dimensions props\n */\n /**\n * The height of each row in pixels\n * @default 35\n */\n rowHeight?: Maybe<number | ((row: NoInfer<R>) => number)>;\n /**\n * The height of the header row in pixels\n * @default 35\n */\n headerRowHeight?: Maybe<number>;\n /**\n * The height of each summary row in pixels\n * @default 35\n */\n summaryRowHeight?: Maybe<number>;\n\n /**\n * Feature props\n */\n /** Set of selected row keys */\n selectedRows?: Maybe<ReadonlySet<K>>;\n /** Determines if row selection is disabled, per row */\n isRowSelectionDisabled?: Maybe<(row: NoInfer<R>) => boolean>;\n /** Function called whenever row selection is changed */\n onSelectedRowsChange?: Maybe<(selectedRows: Set<NoInfer<K>>) => void>;\n /** Used for multi column sorting */\n sortColumns?: Maybe<readonly SortColumn[]>;\n onSortColumnsChange?: Maybe<(sortColumns: SortColumn[]) => void>;\n defaultColumnOptions?: Maybe<DefaultColumnOptions<NoInfer<R>, NoInfer<SR>>>;\n onFill?: Maybe<(event: FillEvent<NoInfer<R>>) => NoInfer<R>>;\n onCopy?: Maybe<(event: CopyEvent<NoInfer<R>>) => void>;\n onPaste?: Maybe<(event: PasteEvent<NoInfer<R>>) => NoInfer<R>>;\n\n /**\n * Event props\n */\n /** Function called whenever a cell is clicked */\n onCellClick?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n /** Function called whenever a cell is double clicked */\n onCellDoubleClick?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n /** Function called whenever a cell is right clicked */\n onCellContextMenu?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n onCellKeyDown?: Maybe<\n (args: CellKeyDownArgs<NoInfer<R>, NoInfer<SR>>, event: CellKeyboardEvent) => void\n >;\n /** Function called whenever cell selection is changed */\n onSelectedCellChange?: Maybe<(args: CellSelectArgs<NoInfer<R>, NoInfer<SR>>) => void>;\n /** Called when the grid is scrolled */\n onScroll?: Maybe<(event: React.UIEvent<HTMLDivElement>) => void>;\n /** Called when a column is resized */\n onColumnResize?: Maybe<(idx: number, width: number) => void>;\n /** Called when a column is reordered */\n onColumnsReorder?: Maybe<(sourceColumnKey: string, targetColumnKey: string) => void>;\n\n /**\n * Toggles and modes\n */\n /** @default true */\n enableVirtualization?: Maybe<boolean>;\n\n /**\n * Miscellaneous\n */\n renderers?: Maybe<Renderers<NoInfer<R>, NoInfer<SR>>>;\n rowClass?: Maybe<(row: NoInfer<R>, rowIdx: number) => Maybe<string>>;\n /** @default 'ltr' */\n direction?: Maybe<Direction>;\n 'data-testid'?: Maybe<string>;\n}\n\n/**\n * Main API Component to render a data grid of rows and columns\n *\n * @example\n *\n * <DataGrid columns={columns} rows={rows} />\n */\nfunction DataGrid<R, SR, K extends Key>(\n props: DataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n const {\n // Grid and data Props\n columns: rawColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowKeyGetter,\n onRowsChange,\n // Dimensions props\n rowHeight: rawRowHeight,\n headerRowHeight: rawHeaderRowHeight,\n summaryRowHeight: rawSummaryRowHeight,\n // Feature props\n selectedRows,\n isRowSelectionDisabled,\n onSelectedRowsChange,\n sortColumns,\n onSortColumnsChange,\n defaultColumnOptions,\n // Event props\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onCellKeyDown,\n onSelectedCellChange,\n onScroll,\n onColumnResize,\n onColumnsReorder,\n onFill,\n onCopy,\n onPaste,\n // Toggles and modes\n enableVirtualization: rawEnableVirtualization,\n // Miscellaneous\n renderers,\n className,\n style,\n rowClass,\n direction: rawDirection,\n // ARIA\n role: rawRole,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-rowcount': rawAriaRowCount,\n 'data-testid': testId\n } = props;\n\n /**\n * defaults\n */\n const defaultRenderers = useDefaultRenderers<R, SR>();\n const role = rawRole ?? 'grid';\n const rowHeight = rawRowHeight ?? 35;\n const headerRowHeight = rawHeaderRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const summaryRowHeight = rawSummaryRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const renderRow = renderers?.renderRow ?? defaultRenderers?.renderRow ?? defaultRenderRow;\n const renderCell = renderers?.renderCell ?? defaultRenderers?.renderCell ?? defaultRenderCell;\n const renderSortStatus =\n renderers?.renderSortStatus ?? defaultRenderers?.renderSortStatus ?? defaultRenderSortStatus;\n const renderCheckbox =\n renderers?.renderCheckbox ?? defaultRenderers?.renderCheckbox ?? defaultRenderCheckbox;\n const noRowsFallback = renderers?.noRowsFallback ?? defaultRenderers?.noRowsFallback;\n const enableVirtualization = rawEnableVirtualization ?? true;\n const direction = rawDirection ?? 'ltr';\n\n /**\n * states\n */\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n const [resizedColumnWidths, setResizedColumnWidths] = useState(\n (): ReadonlyMap<string, number> => new Map()\n );\n const [measuredColumnWidths, setMeasuredColumnWidths] = useState(\n (): ReadonlyMap<string, number> => new Map()\n );\n const [copiedCell, setCopiedCell] = useState<{ row: R; columnKey: string } | null>(null);\n const [isDragging, setDragging] = useState(false);\n const [draggedOverRowIdx, setOverRowIdx] = useState<number | undefined>(undefined);\n const [scrollToPosition, setScrollToPosition] = useState<PartialPosition | null>(null);\n\n const getColumnWidth = useCallback(\n (column: CalculatedColumn<R, SR>) => {\n return (\n resizedColumnWidths.get(column.key) ?? measuredColumnWidths.get(column.key) ?? column.width\n );\n },\n [measuredColumnWidths, resizedColumnWidths]\n );\n\n const [gridRef, gridWidth, gridHeight, horizontalScrollbarHeight] = useGridDimensions();\n const {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n headerRowsCount,\n colOverscanStartIdx,\n colOverscanEndIdx,\n templateColumns,\n layoutCssVars,\n totalFrozenColumnWidth\n } = useCalculatedColumns({\n rawColumns,\n defaultColumnOptions,\n getColumnWidth,\n scrollLeft,\n viewportWidth: gridWidth,\n enableVirtualization\n });\n\n const topSummaryRowsCount = topSummaryRows?.length ?? 0;\n const bottomSummaryRowsCount = bottomSummaryRows?.length ?? 0;\n const summaryRowsCount = topSummaryRowsCount + bottomSummaryRowsCount;\n const headerAndTopSummaryRowsCount = headerRowsCount + topSummaryRowsCount;\n const groupedColumnHeaderRowsCount = headerRowsCount - 1;\n const minRowIdx = -headerAndTopSummaryRowsCount;\n const mainHeaderRowIdx = minRowIdx + groupedColumnHeaderRowsCount;\n const maxRowIdx = rows.length + bottomSummaryRowsCount - 1;\n\n const [selectedPosition, setSelectedPosition] = useState(\n (): SelectCellState | EditCellState<R> => ({ idx: -1, rowIdx: minRowIdx - 1, mode: 'SELECT' })\n );\n\n /**\n * refs\n */\n const prevSelectedPosition = useRef(selectedPosition);\n const latestDraggedOverRowIdx = useRef(draggedOverRowIdx);\n const lastSelectedRowIdx = useRef(-1);\n const focusSinkRef = useRef<HTMLDivElement>(null);\n const shouldFocusCellRef = useRef(false);\n\n /**\n * computed values\n */\n const isTreeGrid = role === 'treegrid';\n const headerRowsHeight = headerRowsCount * headerRowHeight;\n const summaryRowsHeight = summaryRowsCount * summaryRowHeight;\n const clientHeight = gridHeight - headerRowsHeight - summaryRowsHeight;\n const isSelectable = selectedRows != null && onSelectedRowsChange != null;\n const isRtl = direction === 'rtl';\n const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const ariaRowCount = rawAriaRowCount ?? headerRowsCount + rows.length + summaryRowsCount;\n\n const defaultGridComponents = useMemo(\n () => ({\n renderCheckbox,\n renderSortStatus,\n renderCell\n }),\n [renderCheckbox, renderSortStatus, renderCell]\n );\n\n const headerSelectionValue = useMemo((): HeaderRowSelectionContextValue => {\n // no rows to select = explicitely unchecked\n let hasSelectedRow = false;\n let hasUnselectedRow = false;\n\n if (rowKeyGetter != null && selectedRows != null && selectedRows.size > 0) {\n for (const row of rows) {\n if (selectedRows.has(rowKeyGetter(row))) {\n hasSelectedRow = true;\n } else {\n hasUnselectedRow = true;\n }\n\n if (hasSelectedRow && hasUnselectedRow) break;\n }\n }\n\n return {\n isRowSelected: hasSelectedRow && !hasUnselectedRow,\n isIndeterminate: hasSelectedRow && hasUnselectedRow\n };\n }, [rows, selectedRows, rowKeyGetter]);\n\n const {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n totalRowHeight,\n gridTemplateRows,\n getRowTop,\n getRowHeight,\n findRowIdx\n } = useViewportRows({\n rows,\n rowHeight,\n clientHeight,\n scrollTop,\n enableVirtualization\n });\n\n const viewportColumns = useViewportColumns({\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n topSummaryRows,\n bottomSummaryRows\n });\n\n const { gridTemplateColumns, handleColumnResize } = useColumnWidths(\n columns,\n viewportColumns,\n templateColumns,\n gridRef,\n gridWidth,\n resizedColumnWidths,\n measuredColumnWidths,\n setResizedColumnWidths,\n setMeasuredColumnWidths,\n onColumnResize\n );\n\n const minColIdx = isTreeGrid ? -1 : 0;\n const maxColIdx = columns.length - 1;\n const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition);\n const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition);\n const scrollHeight =\n headerRowHeight + totalRowHeight + summaryRowsHeight + horizontalScrollbarHeight;\n\n /**\n * The identity of the wrapper function is stable so it won't break memoization\n */\n const handleColumnResizeLatest = useLatestFunc(handleColumnResize);\n const onColumnsReorderLastest = useLatestFunc(onColumnsReorder);\n const onSortColumnsChangeLatest = useLatestFunc(onSortColumnsChange);\n const onCellClickLatest = useLatestFunc(onCellClick);\n const onCellDoubleClickLatest = useLatestFunc(onCellDoubleClick);\n const onCellContextMenuLatest = useLatestFunc(onCellContextMenu);\n const selectHeaderRowLatest = useLatestFunc(selectHeaderRow);\n const selectRowLatest = useLatestFunc(selectRow);\n const handleFormatterRowChangeLatest = useLatestFunc(updateRow);\n const selectCellLatest = useLatestFunc(selectCell);\n const selectHeaderCellLatest = useLatestFunc(({ idx, rowIdx }: Position) => {\n selectCell({ rowIdx: minRowIdx + rowIdx - 1, idx });\n });\n\n /**\n * effects\n */\n useLayoutEffect(() => {\n if (\n !selectedCellIsWithinSelectionBounds ||\n isSamePosition(selectedPosition, prevSelectedPosition.current)\n ) {\n prevSelectedPosition.current = selectedPosition;\n return;\n }\n\n prevSelectedPosition.current = selectedPosition;\n\n if (selectedPosition.idx === -1) {\n focusSinkRef.current!.focus({ preventScroll: true });\n scrollIntoView(focusSinkRef.current);\n }\n });\n\n useLayoutEffect(() => {\n if (!shouldFocusCellRef.current) return;\n shouldFocusCellRef.current = false;\n focusCellOrCellContent();\n });\n\n useImperativeHandle(ref, () => ({\n element: gridRef.current,\n selectedCell: selectedPosition,\n scrollToCell({ idx, rowIdx }) {\n const scrollToIdx =\n idx !== undefined && idx > lastFrozenColumnIndex && idx < columns.length ? idx : undefined;\n const scrollToRowIdx =\n rowIdx !== undefined && isRowIdxWithinViewportBounds(rowIdx) ? rowIdx : undefined;\n\n if (scrollToIdx !== undefined || scrollToRowIdx !== undefined) {\n setScrollToPosition({ idx: scrollToIdx, rowIdx: scrollToRowIdx });\n }\n },\n selectCell\n }));\n\n /**\n * callbacks\n */\n const setDraggedOverRowIdx = useCallback((rowIdx?: number) => {\n setOverRowIdx(rowIdx);\n latestDraggedOverRowIdx.current = rowIdx;\n }, []);\n\n /**\n * event handlers\n */\n function selectHeaderRow(args: SelectHeaderRowEvent) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n\n const newSelectedRows = new Set(selectedRows);\n for (const row of rows) {\n if (isRowSelectionDisabled?.(row) === true) continue;\n const rowKey = rowKeyGetter(row);\n if (args.checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n onSelectedRowsChange(newSelectedRows);\n }\n\n function selectRow(args: SelectRowEvent<R>) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const { row, checked, isShiftClick } = args;\n if (isRowSelectionDisabled?.(row) === true) return;\n const newSelectedRows = new Set(selectedRows);\n const rowKey = rowKeyGetter(row);\n const previousRowIdx = lastSelectedRowIdx.current;\n const rowIdx = rows.indexOf(row);\n lastSelectedRowIdx.current = rowIdx;\n\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n\n if (\n isShiftClick &&\n previousRowIdx !== -1 &&\n previousRowIdx !== rowIdx &&\n previousRowIdx < rows.length\n ) {\n const step = sign(rowIdx - previousRowIdx);\n for (let i = previousRowIdx + step; i !== rowIdx; i += step) {\n const row = rows[i];\n if (isRowSelectionDisabled?.(row) === true) continue;\n if (checked) {\n newSelectedRows.add(rowKeyGetter(row));\n } else {\n newSelectedRows.delete(rowKeyGetter(row));\n }\n }\n }\n\n onSelectedRowsChange(newSelectedRows);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const { idx, rowIdx, mode } = selectedPosition;\n if (mode === 'EDIT') return;\n\n if (onCellKeyDown && isRowIdxWithinViewportBounds(rowIdx)) {\n const row = rows[rowIdx];\n const cellEvent = createCellEvent(event);\n onCellKeyDown(\n {\n mode: 'SELECT',\n row,\n column: columns[idx],\n rowIdx,\n selectCell\n },\n cellEvent\n );\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n if (!(event.target instanceof Element)) return;\n const isCellEvent = event.target.closest('.rdg-cell') !== null;\n const isRowEvent = isTreeGrid && event.target === focusSinkRef.current;\n if (!isCellEvent && !isRowEvent) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { keyCode } = event;\n\n if (\n selectedCellIsWithinViewportBounds &&\n (onPaste != null || onCopy != null) &&\n isCtrlKeyHeldDown(event)\n ) {\n // event.key may differ by keyboard input language, so we use event.keyCode instead\n // event.nativeEvent.code cannot be used either as it would break copy/paste for the DVORAK layout\n const cKey = 67;\n const vKey = 86;\n if (keyCode === cKey) {\n // copy highlighted text only\n if (window.getSelection()?.isCollapsed === false) return;\n handleCopy();\n return;\n }\n if (keyCode === vKey) {\n handlePaste();\n return;\n }\n }\n\n switch (event.key) {\n case 'Escape':\n setCopiedCell(null);\n return;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'Tab':\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n navigate(event);\n break;\n default:\n handleCellInput(event);\n break;\n }\n }\n\n function handleScroll(event: React.UIEvent<HTMLDivElement>) {\n const { scrollTop, scrollLeft } = event.currentTarget;\n flushSync(() => {\n setScrollTop(scrollTop);\n // scrollLeft is nagative when direction is rtl\n setScrollLeft(abs(scrollLeft));\n });\n onScroll?.(event);\n }\n\n function updateRow(column: CalculatedColumn<R, SR>, rowIdx: number, row: R) {\n if (typeof onRowsChange !== 'function') return;\n if (row === rows[rowIdx]) return;\n const updatedRows = [...rows];\n updatedRows[rowIdx] = row;\n onRowsChange(updatedRows, {\n indexes: [rowIdx],\n column\n });\n }\n\n function commitEditorChanges() {\n if (selectedPosition.mode !== 'EDIT') return;\n updateRow(columns[selectedPosition.idx], selectedPosition.rowIdx, selectedPosition.row);\n }\n\n function handleCopy() {\n const { idx, rowIdx } = selectedPosition;\n const sourceRow = rows[rowIdx];\n const sourceColumnKey = columns[idx].key;\n setCopiedCell({ row: sourceRow, columnKey: sourceColumnKey });\n onCopy?.({ sourceRow, sourceColumnKey });\n }\n\n function handlePaste() {\n if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const targetColumn = columns[idx];\n const targetRow = rows[rowIdx];\n\n const updatedTargetRow = onPaste({\n sourceRow: copiedCell.row,\n sourceColumnKey: copiedCell.columnKey,\n targetRow,\n targetColumnKey: targetColumn.key\n });\n\n updateRow(targetColumn, rowIdx, updatedTargetRow);\n }\n\n function handleCellInput(event: KeyboardEvent<HTMLDivElement>) {\n if (!selectedCellIsWithinViewportBounds) return;\n const row = rows[selectedPosition.rowIdx];\n const { key, shiftKey } = event;\n\n // Select the row on Shift + Space\n if (isSelectable && shiftKey && key === ' ') {\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const rowKey = rowKeyGetter(row);\n selectRow({ row, checked: !selectedRows.has(rowKey), isShiftClick: false });\n // do not scroll\n event.preventDefault();\n return;\n }\n\n if (isCellEditable(selectedPosition) && isDefaultCellInput(event)) {\n setSelectedPosition(({ idx, rowIdx }) => ({\n idx,\n rowIdx,\n mode: 'EDIT',\n row,\n originalRow: row\n }));\n }\n }\n\n /**\n * utils\n */\n function isColIdxWithinSelectionBounds(idx: number) {\n return idx >= minColIdx && idx <= maxColIdx;\n }\n\n function isRowIdxWithinViewportBounds(rowIdx: number) {\n return rowIdx >= 0 && rowIdx < rows.length;\n }\n\n function isCellWithinSelectionBounds({ idx, rowIdx }: Position): boolean {\n return rowIdx >= minRowIdx && rowIdx <= maxRowIdx && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellWithinEditBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && idx >= 0 && idx <= maxColIdx;\n }\n\n function isCellWithinViewportBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellEditable(position: Position): boolean {\n return (\n isCellWithinEditBounds(position) &&\n isSelectedCellEditable({ columns, rows, selectedPosition: position })\n );\n }\n\n function selectCell(position: Position, enableEditor?: Maybe<boolean>): void {\n if (!isCellWithinSelectionBounds(position)) return;\n commitEditorChanges();\n\n const row = rows[position.rowIdx];\n const samePosition = isSamePosition(selectedPosition, position);\n\n if (enableEditor && isCellEditable(position)) {\n setSelectedPosition({ ...position, mode: 'EDIT', row, originalRow: row });\n } else if (samePosition) {\n // Avoid re-renders if the selected cell state is the same\n scrollIntoView(getCellToScroll(gridRef.current!));\n } else {\n shouldFocusCellRef.current = true;\n setSelectedPosition({ ...position, mode: 'SELECT' });\n }\n\n if (onSelectedCellChange && !samePosition) {\n onSelectedCellChange({\n rowIdx: position.rowIdx,\n row,\n column: columns[position.idx]\n });\n }\n }\n\n function getNextPosition(key: string, ctrlKey: boolean, shiftKey: boolean): Position {\n const { idx, rowIdx } = selectedPosition;\n const isRowSelected = selectedCellIsWithinSelectionBounds && idx === -1;\n\n switch (key) {\n case 'ArrowUp':\n return { idx, rowIdx: rowIdx - 1 };\n case 'ArrowDown':\n return { idx, rowIdx: rowIdx + 1 };\n case leftKey:\n return { idx: idx - 1, rowIdx };\n case rightKey:\n return { idx: idx + 1, rowIdx };\n case 'Tab':\n return { idx: idx + (shiftKey ? -1 : 1), rowIdx };\n case 'Home':\n // If row is selected then move focus to the first row\n if (isRowSelected) return { idx, rowIdx: minRowIdx };\n return { idx: 0, rowIdx: ctrlKey ? minRowIdx : rowIdx };\n case 'End':\n // If row is selected then move focus to the last row.\n if (isRowSelected) return { idx, rowIdx: maxRowIdx };\n return { idx: maxColIdx, rowIdx: ctrlKey ? maxRowIdx : rowIdx };\n case 'PageUp': {\n if (selectedPosition.rowIdx === minRowIdx) return selectedPosition;\n const nextRowY = getRowTop(rowIdx) + getRowHeight(rowIdx) - clientHeight;\n return { idx, rowIdx: nextRowY > 0 ? findRowIdx(nextRowY) : 0 };\n }\n case 'PageDown': {\n if (selectedPosition.rowIdx >= rows.length) return selectedPosition;\n const nextRowY = getRowTop(rowIdx) + clientHeight;\n return { idx, rowIdx: nextRowY < totalRowHeight ? findRowIdx(nextRowY) : rows.length - 1 };\n }\n default:\n return selectedPosition;\n }\n }\n\n function navigate(event: KeyboardEvent<HTMLDivElement>) {\n const { key, shiftKey } = event;\n let cellNavigationMode: CellNavigationMode = 'NONE';\n if (key === 'Tab') {\n if (\n canExitGrid({\n shiftKey,\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition\n })\n ) {\n commitEditorChanges();\n // Allow focus to leave the grid so the next control in the tab order can be focused\n return;\n }\n\n cellNavigationMode = 'CHANGE_ROW';\n }\n\n // Do not allow focus to leave and prevent scrolling\n event.preventDefault();\n\n const ctrlKey = isCtrlKeyHeldDown(event);\n const nextPosition = getNextPosition(key, ctrlKey, shiftKey);\n if (isSamePosition(selectedPosition, nextPosition)) return;\n\n const nextSelectedCellPosition = getNextSelectedCellPosition({\n moveUp: key === 'ArrowUp',\n moveNext: key === rightKey || (key === 'Tab' && !shiftKey),\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n minRowIdx,\n mainHeaderRowIdx,\n maxRowIdx,\n lastFrozenColumnIndex,\n cellNavigationMode,\n currentPosition: selectedPosition,\n nextPosition,\n isCellWithinBounds: isCellWithinSelectionBounds\n });\n\n selectCell(nextSelectedCellPosition);\n }\n\n function getDraggedOverCellIdx(currentRowIdx: number): number | undefined {\n if (draggedOverRowIdx === undefined) return;\n const { rowIdx } = selectedPosition;\n\n const isDraggedOver =\n rowIdx < draggedOverRowIdx\n ? rowIdx < currentRowIdx && currentRowIdx <= draggedOverRowIdx\n : rowIdx > currentRowIdx && currentRowIdx >= draggedOverRowIdx;\n\n return isDraggedOver ? selectedPosition.idx : undefined;\n }\n\n function focusCellOrCellContent() {\n const cell = getCellToScroll(gridRef.current!);\n if (cell === null) return;\n\n scrollIntoView(cell);\n // Focus cell content when available instead of the cell itself\n const elementToFocus = cell.querySelector<Element & HTMLOrSVGElement>('[tabindex=\"0\"]') ?? cell;\n elementToFocus.focus({ preventScroll: true });\n }\n\n function renderDragHandle() {\n if (\n onFill == null ||\n selectedPosition.mode === 'EDIT' ||\n !isCellWithinViewportBounds(selectedPosition)\n ) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const column = columns[idx];\n if (column.renderEditCell == null || column.editable === false) {\n return;\n }\n\n const columnWidth = getColumnWidth(column);\n\n return (\n <DragHandle\n gridRowStart={headerAndTopSummaryRowsCount + rowIdx + 1}\n rows={rows}\n column={column}\n columnWidth={columnWidth}\n maxColIdx={maxColIdx}\n isLastRow={rowIdx === maxRowIdx}\n selectedPosition={selectedPosition}\n isCellEditable={isCellEditable}\n latestDraggedOverRowIdx={latestDraggedOverRowIdx}\n onRowsChange={onRowsChange}\n onClick={focusCellOrCellContent}\n onFill={onFill}\n setDragging={setDragging}\n setDraggedOverRowIdx={setDraggedOverRowIdx}\n />\n );\n }\n\n function getCellEditor(rowIdx: number) {\n if (selectedPosition.rowIdx !== rowIdx || selectedPosition.mode === 'SELECT') return;\n\n const { idx, row } = selectedPosition;\n const column = columns[idx];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n\n const closeEditor = (shouldFocusCell: boolean) => {\n shouldFocusCellRef.current = shouldFocusCell;\n setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, mode: 'SELECT' }));\n };\n\n const onRowChange = (row: R, commitChanges: boolean, shouldFocusCell: boolean) => {\n if (commitChanges) {\n // Prevents two issues when editor is closed by clicking on a different cell\n //\n // Otherwise commitEditorChanges may be called before the cell state is changed to\n // SELECT and this results in onRowChange getting called twice.\n flushSync(() => {\n updateRow(column, selectedPosition.rowIdx, row);\n closeEditor(shouldFocusCell);\n });\n } else {\n setSelectedPosition((position) => ({ ...position, row }));\n }\n };\n\n if (rows[selectedPosition.rowIdx] !== selectedPosition.originalRow) {\n // Discard changes if rows are updated from outside\n closeEditor(false);\n }\n\n return (\n <EditCell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n onRowChange={onRowChange}\n closeEditor={closeEditor}\n onKeyDown={onCellKeyDown}\n navigate={navigate}\n />\n );\n }\n\n function getRowViewportColumns(rowIdx: number) {\n // idx can be -1 if grouping is enabled\n const selectedColumn = selectedPosition.idx === -1 ? undefined : columns[selectedPosition.idx];\n if (\n selectedColumn !== undefined &&\n selectedPosition.rowIdx === rowIdx &&\n !viewportColumns.includes(selectedColumn)\n ) {\n // Add the selected column to viewport columns if the cell is not within the viewport\n return selectedPosition.idx > colOverscanEndIdx\n ? [...viewportColumns, selectedColumn]\n : [\n ...viewportColumns.slice(0, lastFrozenColumnIndex + 1),\n selectedColumn,\n ...viewportColumns.slice(lastFrozenColumnIndex + 1)\n ];\n }\n return viewportColumns;\n }\n\n function getViewportRows() {\n const rowElements: React.ReactNode[] = [];\n\n const { idx: selectedIdx, rowIdx: selectedRowIdx } = selectedPosition;\n\n const startRowIdx =\n selectedCellIsWithinViewportBounds && selectedRowIdx < rowOverscanStartIdx\n ? rowOverscanStartIdx - 1\n : rowOverscanStartIdx;\n const endRowIdx =\n selectedCellIsWithinViewportBounds && selectedRowIdx > rowOverscanEndIdx\n ? rowOverscanEndIdx + 1\n : rowOverscanEndIdx;\n\n for (let viewportRowIdx = startRowIdx; viewportRowIdx <= endRowIdx; viewportRowIdx++) {\n const isRowOutsideViewport =\n viewportRowIdx === rowOverscanStartIdx - 1 || viewportRowIdx === rowOverscanEndIdx + 1;\n const rowIdx = isRowOutsideViewport ? selectedRowIdx : viewportRowIdx;\n\n let rowColumns = viewportColumns;\n const selectedColumn = selectedIdx === -1 ? undefined : columns[selectedIdx];\n if (selectedColumn !== undefined) {\n if (isRowOutsideViewport) {\n // if the row is outside the viewport then only render the selected cell\n rowColumns = [selectedColumn];\n } else {\n // if the row is within the viewport and cell is not, add the selected column to viewport columns\n rowColumns = getRowViewportColumns(rowIdx);\n }\n }\n\n const row = rows[rowIdx];\n const gridRowStart = headerAndTopSummaryRowsCount + rowIdx + 1;\n let key: K | number = rowIdx;\n let isRowSelected = false;\n if (typeof rowKeyGetter === 'function') {\n key = rowKeyGetter(row);\n isRowSelected = selectedRows?.has(key) ?? false;\n }\n\n rowElements.push(\n renderRow(key, {\n // aria-rowindex is 1 based\n 'aria-rowindex': headerAndTopSummaryRowsCount + rowIdx + 1,\n 'aria-selected': isSelectable ? isRowSelected : undefined,\n rowIdx,\n row,\n viewportColumns: rowColumns,\n isRowSelectionDisabled: isRowSelectionDisabled?.(row) ?? false,\n isRowSelected,\n onCellClick: onCellClickLatest,\n onCellDoubleClick: onCellDoubleClickLatest,\n onCellContextMenu: onCellContextMenuLatest,\n rowClass,\n gridRowStart,\n copiedCellIdx:\n copiedCell !== null && copiedCell.row === row\n ? columns.findIndex((c) => c.key === copiedCell.columnKey)\n : undefined,\n\n selectedCellIdx: selectedRowIdx === rowIdx ? selectedIdx : undefined,\n draggedOverCellIdx: getDraggedOverCellIdx(rowIdx),\n setDraggedOverRowIdx: isDragging ? setDraggedOverRowIdx : undefined,\n lastFrozenColumnIndex,\n onRowChange: handleFormatterRowChangeLatest,\n selectCell: selectCellLatest,\n selectedCellEditor: getCellEditor(rowIdx)\n })\n );\n }\n\n return rowElements;\n }\n\n // Reset the positions if the current values are no longer valid. This can happen if a column or row is removed\n if (selectedPosition.idx > maxColIdx || selectedPosition.rowIdx > maxRowIdx) {\n setSelectedPosition({ idx: -1, rowIdx: minRowIdx - 1, mode: 'SELECT' });\n setDraggedOverRowIdx(undefined);\n }\n\n let templateRows = `repeat(${headerRowsCount}, ${headerRowHeight}px)`;\n if (topSummaryRowsCount > 0) {\n templateRows += ` repeat(${topSummaryRowsCount}, ${summaryRowHeight}px)`;\n }\n if (rows.length > 0) {\n templateRows += gridTemplateRows;\n }\n if (bottomSummaryRowsCount > 0) {\n templateRows += ` repeat(${bottomSummaryRowsCount}, ${summaryRowHeight}px)`;\n }\n\n const isGroupRowFocused =\n selectedPosition.idx === -1 && selectedPosition.rowIdx !== minRowIdx - 1;\n\n return (\n <div\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-multiselectable={isSelectable ? true : undefined}\n aria-colcount={columns.length}\n aria-rowcount={ariaRowCount}\n className={clsx(\n rootClassname,\n {\n [viewportDraggingClassname]: isDragging\n },\n className\n )}\n style={\n {\n ...style,\n // set scrollPadding to correctly position non-sticky cells after scrolling\n scrollPaddingInlineStart:\n selectedPosition.idx > lastFrozenColumnIndex || scrollToPosition?.idx !== undefined\n ? `${totalFrozenColumnWidth}px`\n : undefined,\n scrollPaddingBlock:\n isRowIdxWithinViewportBounds(selectedPosition.rowIdx) ||\n scrollToPosition?.rowIdx !== undefined\n ? `${headerRowsHeight + topSummaryRowsCount * summaryRowHeight}px ${\n bottomSummaryRowsCount * summaryRowHeight\n }px`\n : undefined,\n gridTemplateColumns,\n gridTemplateRows: templateRows,\n '--rdg-header-row-height': `${headerRowHeight}px`,\n '--rdg-scroll-height': `${scrollHeight}px`,\n ...layoutCssVars\n } as unknown as React.CSSProperties\n }\n dir={direction}\n ref={gridRef}\n onScroll={handleScroll}\n onKeyDown={handleKeyDown}\n data-testid={testId}\n >\n <DataGridDefaultRenderersProvider value={defaultGridComponents}>\n <HeaderRowSelectionChangeProvider value={selectHeaderRowLatest}>\n <HeaderRowSelectionProvider value={headerSelectionValue}>\n {Array.from({ length: groupedColumnHeaderRowsCount }, (_, index) => (\n <GroupedColumnHeaderRow\n key={index}\n rowIdx={index + 1}\n level={-groupedColumnHeaderRowsCount + index}\n columns={getRowViewportColumns(minRowIdx + index)}\n selectedCellIdx={\n selectedPosition.rowIdx === minRowIdx + index ? selectedPosition.idx : undefined\n }\n selectCell={selectHeaderCellLatest}\n />\n ))}\n <HeaderRow\n rowIdx={headerRowsCount}\n columns={getRowViewportColumns(mainHeaderRowIdx)}\n onColumnResize={handleColumnResizeLatest}\n onColumnsReorder={onColumnsReorderLastest}\n sortColumns={sortColumns}\n onSortColumnsChange={onSortColumnsChangeLatest}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={\n selectedPosition.rowIdx === mainHeaderRowIdx ? selectedPosition.idx : undefined\n }\n selectCell={selectHeaderCellLatest}\n shouldFocusGrid={!selectedCellIsWithinSelectionBounds}\n direction={direction}\n />\n </HeaderRowSelectionProvider>\n </HeaderRowSelectionChangeProvider>\n {rows.length === 0 && noRowsFallback ? (\n noRowsFallback\n ) : (\n <>\n {topSummaryRows?.map((row, rowIdx) => {\n const gridRowStart = headerRowsCount + 1 + rowIdx;\n const summaryRowIdx = mainHeaderRowIdx + 1 + rowIdx;\n const isSummaryRowSelected = selectedPosition.rowIdx === summaryRowIdx;\n const top = headerRowsHeight + summaryRowHeight * rowIdx;\n\n return (\n <SummaryRow\n key={rowIdx}\n aria-rowindex={gridRowStart}\n rowIdx={summaryRowIdx}\n gridRowStart={gridRowStart}\n row={row}\n top={top}\n bottom={undefined}\n viewportColumns={getRowViewportColumns(summaryRowIdx)}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n isTop\n selectCell={selectCellLatest}\n />\n );\n })}\n <RowSelectionChangeProvider value={selectRowLatest}>\n {getViewportRows()}\n </RowSelectionChangeProvider>\n {bottomSummaryRows?.map((row, rowIdx) => {\n const gridRowStart = headerAndTopSummaryRowsCount + rows.length + rowIdx + 1;\n const summaryRowIdx = rows.length + rowIdx;\n const isSummaryRowSelected = selectedPosition.rowIdx === summaryRowIdx;\n const top =\n clientHeight > totalRowHeight\n ? gridHeight - summaryRowHeight * (bottomSummaryRows.length - rowIdx)\n : undefined;\n const bottom =\n top === undefined\n ? summaryRowHeight * (bottomSummaryRows.length - 1 - rowIdx)\n : undefined;\n\n return (\n <SummaryRow\n aria-rowindex={ariaRowCount - bottomSummaryRowsCount + rowIdx + 1}\n key={rowIdx}\n rowIdx={summaryRowIdx}\n gridRowStart={gridRowStart}\n row={row}\n top={top}\n bottom={bottom}\n viewportColumns={getRowViewportColumns(summaryRowIdx)}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n isTop={false}\n selectCell={selectCellLatest}\n />\n );\n })}\n </>\n )}\n </DataGridDefaultRenderersProvider>\n\n {renderDragHandle()}\n\n {/* render empty cells that span only 1 column so we can safely measure column widths, regardless of colSpan */}\n {renderMeasuringCells(viewportColumns)}\n\n {/* extra div is needed for row navigation in a treegrid */}\n {isTreeGrid && (\n <div\n ref={focusSinkRef}\n tabIndex={isGroupRowFocused ? 0 : -1}\n className={clsx(focusSinkClassname, {\n [focusSinkHeaderAndSummaryClassname]: !isRowIdxWithinViewportBounds(\n selectedPosition.rowIdx\n ),\n [rowSelected]: isGroupRowFocused,\n [rowSelectedWithFrozenCell]: isGroupRowFocused && lastFrozenColumnIndex !== -1\n })}\n style={{\n gridRowStart: selectedPosition.rowIdx + headerAndTopSummaryRowsCount + 1\n }}\n />\n )}\n\n {scrollToPosition !== null && (\n <ScrollToCell\n scrollToPosition={scrollToPosition}\n setScrollToCellPosition={setScrollToPosition}\n gridElement={gridRef.current!}\n />\n )}\n </div>\n );\n}\n\nfunction getCellToScroll(gridEl: HTMLDivElement) {\n return gridEl.querySelector<HTMLDivElement>(':scope > [role=\"row\"] > [tabindex=\"0\"]');\n}\n\nfunction isSamePosition(p1: Position, p2: Position) {\n return p1.idx === p2.idx && p1.rowIdx === p2.rowIdx;\n}\n\nexport default forwardRef(DataGrid) as <R, SR = unknown, K extends Key = Key>(\n props: DataGridProps<R, SR, K> & RefAttributes<DataGridHandle>\n) => React.JSX.Element;\n","import { memo } from 'react';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getCellClassname, getCellStyle } from './utils';\nimport type { CalculatedColumn, GroupRow } from './types';\n\ninterface GroupCellProps<R, SR> {\n id: string;\n groupKey: unknown;\n childRows: readonly R[];\n toggleGroup: (expandedGroupId: unknown) => void;\n isExpanded: boolean;\n column: CalculatedColumn<R, SR>;\n row: GroupRow<R>;\n isCellSelected: boolean;\n groupColumnIndex: number;\n isGroupByColumn: boolean;\n}\n\nfunction GroupCell<R, SR>({\n id,\n groupKey,\n childRows,\n isExpanded,\n isCellSelected,\n column,\n row,\n groupColumnIndex,\n isGroupByColumn,\n toggleGroup: toggleGroupWrapper\n}: GroupCellProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n\n function toggleGroup() {\n toggleGroupWrapper(id);\n }\n\n // Only make the cell clickable if the group level matches\n const isLevelMatching = isGroupByColumn && groupColumnIndex === column.idx;\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n key={column.key}\n className={getCellClassname(column)}\n style={{\n ...getCellStyle(column),\n cursor: isLevelMatching ? 'pointer' : 'default'\n }}\n onClick={isLevelMatching ? toggleGroup : undefined}\n onFocus={onFocus}\n >\n {(!isGroupByColumn || isLevelMatching) &&\n column.renderGroupCell?.({\n groupKey,\n childRows,\n column,\n row,\n isExpanded,\n tabIndex: childTabIndex,\n toggleGroup\n })}\n </div>\n );\n}\n\nexport default memo(GroupCell) as <R, SR>(props: GroupCellProps<R, SR>) => React.JSX.Element;\n","import { memo, useMemo } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider, type RowSelectionContextValue } from './hooks';\nimport { getRowStyle } from './utils';\nimport type { BaseRenderRowProps, GroupRow } from './types';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport GroupCell from './GroupCell';\nimport { cell, cellFrozen } from './style/cell';\nimport { rowClassname, rowSelectedClassname } from './style/row';\n\nconst groupRow = css`\n @layer rdg.GroupedRow {\n &:not([aria-selected='true']) {\n background-color: var(--rdg-header-background-color);\n }\n\n > .${cell}:not(:last-child, .${cellFrozen}),\n > :nth-last-child(n + 2 of .${cellFrozen}) {\n border-inline-end: none;\n }\n }\n`;\n\nconst groupRowClassname = `rdg-group-row ${groupRow}`;\n\ninterface GroupRowRendererProps<R, SR> extends BaseRenderRowProps<R, SR> {\n row: GroupRow<R>;\n groupBy: readonly string[];\n toggleGroup: (expandedGroupId: unknown) => void;\n}\n\nfunction GroupedRow<R, SR>({\n className,\n row,\n rowIdx,\n viewportColumns,\n selectedCellIdx,\n isRowSelected,\n selectCell,\n gridRowStart,\n groupBy,\n toggleGroup,\n isRowSelectionDisabled,\n ...props\n}: GroupRowRendererProps<R, SR>) {\n // Select is always the first column\n const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? row.level + 1 : row.level;\n\n function handleSelectGroup() {\n selectCell({ rowIdx, idx: -1 });\n }\n\n const selectionValue = useMemo(\n (): RowSelectionContextValue => ({ isRowSelectionDisabled: false, isRowSelected }),\n [isRowSelected]\n );\n\n return (\n <RowSelectionProvider value={selectionValue}>\n <div\n role=\"row\"\n aria-level={row.level + 1} // aria-level is 1-based\n aria-setsize={row.setSize}\n aria-posinset={row.posInSet + 1} // aria-posinset is 1-based\n aria-expanded={row.isExpanded}\n className={clsx(\n rowClassname,\n groupRowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n selectedCellIdx === -1 && rowSelectedClassname,\n className\n )}\n onClick={handleSelectGroup}\n style={getRowStyle(gridRowStart)}\n {...props}\n >\n {viewportColumns.map((column) => (\n <GroupCell\n key={column.key}\n id={row.id}\n groupKey={row.groupKey}\n childRows={row.childRows}\n isExpanded={row.isExpanded}\n isCellSelected={selectedCellIdx === column.idx}\n column={column}\n row={row}\n groupColumnIndex={idx}\n toggleGroup={toggleGroup}\n isGroupByColumn={groupBy.includes(column.key)}\n />\n ))}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(GroupedRow) as <R, SR>(\n props: GroupRowRendererProps<R, SR>\n) => React.JSX.Element;\n","import { forwardRef, useCallback, useMemo } from 'react';\nimport type { Key, RefAttributes } from 'react';\n\nimport { useLatestFunc } from './hooks';\nimport { assertIsValidKeyGetter, isCtrlKeyHeldDown } from './utils';\nimport type {\n CellKeyboardEvent,\n CellKeyDownArgs,\n Column,\n GroupRow,\n Maybe,\n Omit,\n RenderRowProps,\n RowHeightArgs,\n RowsChangeData\n} from './types';\nimport { renderToggleGroup } from './cellRenderers';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport DataGrid from './DataGrid';\nimport type { DataGridHandle, DataGridProps } from './DataGrid';\nimport { useDefaultRenderers } from './DataGridDefaultRenderersProvider';\nimport GroupedRow from './GroupRow';\nimport { defaultRenderRow } from './Row';\n\nexport interface TreeDataGridProps<R, SR = unknown, K extends Key = Key>\n extends Omit<\n DataGridProps<R, SR, K>,\n 'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled'\n > {\n columns: readonly Column<NoInfer<R>, NoInfer<SR>>[];\n rowHeight?: Maybe<number | ((args: RowHeightArgs<NoInfer<R>>) => number)>;\n groupBy: readonly string[];\n rowGrouper: (\n rows: readonly NoInfer<R>[],\n columnKey: string\n ) => Record<string, readonly NoInfer<R>[]>;\n expandedGroupIds: ReadonlySet<unknown>;\n onExpandedGroupIdsChange: (expandedGroupIds: Set<unknown>) => void;\n}\n\ntype GroupByDictionary<TRow> = Record<\n string,\n {\n readonly childRows: readonly TRow[];\n readonly childGroups: readonly TRow[] | Readonly<GroupByDictionary<TRow>>;\n readonly startRowIndex: number;\n }\n>;\n\nfunction TreeDataGrid<R, SR, K extends Key>(\n {\n columns: rawColumns,\n rows: rawRows,\n rowHeight: rawRowHeight,\n rowKeyGetter: rawRowKeyGetter,\n onCellKeyDown: rawOnCellKeyDown,\n onRowsChange,\n selectedRows: rawSelectedRows,\n onSelectedRowsChange: rawOnSelectedRowsChange,\n renderers,\n groupBy: rawGroupBy,\n rowGrouper,\n expandedGroupIds,\n onExpandedGroupIdsChange,\n ...props\n }: TreeDataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n const defaultRenderers = useDefaultRenderers<R, SR>();\n const rawRenderRow = renderers?.renderRow ?? defaultRenderers?.renderRow ?? defaultRenderRow;\n const headerAndTopSummaryRowsCount = 1 + (props.topSummaryRows?.length ?? 0);\n const isRtl = props.direction === 'rtl';\n const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const toggleGroupLatest = useLatestFunc(toggleGroup);\n\n const { columns, groupBy } = useMemo(() => {\n const columns = [...rawColumns].sort(({ key: aKey }, { key: bKey }) => {\n // Sort select column first:\n if (aKey === SELECT_COLUMN_KEY) return -1;\n if (bKey === SELECT_COLUMN_KEY) return 1;\n\n // Sort grouped columns second, following the groupBy order:\n if (rawGroupBy.includes(aKey)) {\n if (rawGroupBy.includes(bKey)) {\n return rawGroupBy.indexOf(aKey) - rawGroupBy.indexOf(bKey);\n }\n return -1;\n }\n if (rawGroupBy.includes(bKey)) return 1;\n\n // Sort other columns last:\n return 0;\n });\n\n const groupBy: string[] = [];\n for (const [index, column] of columns.entries()) {\n if (rawGroupBy.includes(column.key)) {\n groupBy.push(column.key);\n columns[index] = {\n ...column,\n frozen: true,\n renderCell: () => null,\n renderGroupCell: column.renderGroupCell ?? renderToggleGroup,\n editable: false\n };\n }\n }\n\n return { columns, groupBy };\n }, [rawColumns, rawGroupBy]);\n\n const [groupedRows, rowsCount] = useMemo(() => {\n if (groupBy.length === 0) return [undefined, rawRows.length];\n\n const groupRows = (\n rows: readonly R[],\n [groupByKey, ...remainingGroupByKeys]: readonly string[],\n startRowIndex: number\n ): [Readonly<GroupByDictionary<R>>, number] => {\n let groupRowsCount = 0;\n const groups: GroupByDictionary<R> = {};\n for (const [key, childRows] of Object.entries(rowGrouper(rows, groupByKey))) {\n // Recursively group each parent group\n const [childGroups, childRowsCount] =\n remainingGroupByKeys.length === 0\n ? [childRows, childRows.length]\n : groupRows(childRows, remainingGroupByKeys, startRowIndex + groupRowsCount + 1); // 1 for parent row\n groups[key] = { childRows, childGroups, startRowIndex: startRowIndex + groupRowsCount };\n groupRowsCount += childRowsCount + 1; // 1 for parent row\n }\n\n return [groups, groupRowsCount];\n };\n\n return groupRows(rawRows, groupBy, 0);\n }, [groupBy, rowGrouper, rawRows]);\n\n const [rows, isGroupRow] = useMemo((): [\n ReadonlyArray<R | GroupRow<R>>,\n (row: R | GroupRow<R>) => row is GroupRow<R>\n ] => {\n const allGroupRows = new Set<unknown>();\n if (!groupedRows) return [rawRows, isGroupRow];\n\n const flattenedRows: Array<R | GroupRow<R>> = [];\n const expandGroup = (\n rows: GroupByDictionary<R> | readonly R[],\n parentId: string | undefined,\n level: number\n ): void => {\n if (isReadonlyArray(rows)) {\n flattenedRows.push(...rows);\n return;\n }\n Object.keys(rows).forEach((groupKey, posInSet, keys) => {\n // TODO: should users have control over the generated key?\n const id = parentId !== undefined ? `${parentId}__${groupKey}` : groupKey;\n const isExpanded = expandedGroupIds.has(id);\n const { childRows, childGroups, startRowIndex } = rows[groupKey];\n\n const groupRow: GroupRow<R> = {\n id,\n parentId,\n groupKey,\n isExpanded,\n childRows,\n level,\n posInSet,\n startRowIndex,\n setSize: keys.length\n };\n flattenedRows.push(groupRow);\n allGroupRows.add(groupRow);\n\n if (isExpanded) {\n expandGroup(childGroups, id, level + 1);\n }\n });\n };\n\n expandGroup(groupedRows, undefined, 0);\n return [flattenedRows, isGroupRow];\n\n function isGroupRow(row: R | GroupRow<R>): row is GroupRow<R> {\n return allGroupRows.has(row);\n }\n }, [expandedGroupIds, groupedRows, rawRows]);\n\n const rowHeight = useMemo(() => {\n if (typeof rawRowHeight === 'function') {\n return (row: R | GroupRow<R>): number => {\n if (isGroupRow(row)) {\n return rawRowHeight({ type: 'GROUP', row });\n }\n return rawRowHeight({ type: 'ROW', row });\n };\n }\n\n return rawRowHeight;\n }, [isGroupRow, rawRowHeight]);\n\n const getParentRowAndIndex = useCallback(\n (row: R | GroupRow<R>) => {\n const rowIdx = rows.indexOf(row);\n for (let i = rowIdx - 1; i >= 0; i--) {\n const parentRow = rows[i];\n if (isGroupRow(parentRow) && (!isGroupRow(row) || row.parentId === parentRow.id)) {\n return [parentRow, i] as const;\n }\n }\n\n return undefined;\n },\n [isGroupRow, rows]\n );\n\n const rowKeyGetter = useCallback(\n (row: R | GroupRow<R>) => {\n if (isGroupRow(row)) {\n return row.id;\n }\n\n if (typeof rawRowKeyGetter === 'function') {\n return rawRowKeyGetter(row);\n }\n\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n const { startRowIndex, childRows } = parentRowAndIndex[0];\n const groupIndex = childRows.indexOf(row);\n return startRowIndex + groupIndex + 1;\n }\n\n return rows.indexOf(row);\n },\n [getParentRowAndIndex, isGroupRow, rawRowKeyGetter, rows]\n );\n\n const selectedRows = useMemo((): Maybe<ReadonlySet<Key>> => {\n if (rawSelectedRows == null) return null;\n\n assertIsValidKeyGetter<R, K>(rawRowKeyGetter);\n\n const selectedRows = new Set<Key>(rawSelectedRows);\n for (const row of rows) {\n if (isGroupRow(row)) {\n // select parent row if all the children are selected\n const isGroupRowSelected = row.childRows.every((cr) =>\n rawSelectedRows.has(rawRowKeyGetter(cr))\n );\n if (isGroupRowSelected) {\n selectedRows.add(row.id);\n }\n }\n }\n\n return selectedRows;\n }, [isGroupRow, rawRowKeyGetter, rawSelectedRows, rows]);\n\n function onSelectedRowsChange(newSelectedRows: Set<Key>) {\n if (!rawOnSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rawRowKeyGetter);\n\n const newRawSelectedRows = new Set(rawSelectedRows);\n for (const row of rows) {\n const key = rowKeyGetter(row);\n if (selectedRows?.has(key) && !newSelectedRows.has(key)) {\n if (isGroupRow(row)) {\n // select all children if the parent row is selected\n for (const cr of row.childRows) {\n newRawSelectedRows.delete(rawRowKeyGetter(cr));\n }\n } else {\n newRawSelectedRows.delete(key as K);\n }\n } else if (!selectedRows?.has(key) && newSelectedRows.has(key)) {\n if (isGroupRow(row)) {\n // unselect all children if the parent row is unselected\n for (const cr of row.childRows) {\n newRawSelectedRows.add(rawRowKeyGetter(cr));\n }\n } else {\n newRawSelectedRows.add(key as K);\n }\n }\n }\n\n rawOnSelectedRowsChange(newRawSelectedRows);\n }\n\n function handleKeyDown(args: CellKeyDownArgs<R, SR>, event: CellKeyboardEvent) {\n rawOnCellKeyDown?.(args, event);\n if (event.isGridDefaultPrevented()) return;\n\n if (args.mode === 'EDIT') return;\n const { column, rowIdx, selectCell } = args;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const idx = column?.idx ?? -1;\n const row = rows[rowIdx];\n\n if (!isGroupRow(row)) return;\n if (\n idx === -1 &&\n // Collapse the current group row if it is focused and is in expanded state\n ((event.key === leftKey && row.isExpanded) ||\n // Expand the current group row if it is focused and is in collapsed state\n (event.key === rightKey && !row.isExpanded))\n ) {\n event.preventDefault(); // Prevents scrolling\n event.preventGridDefault();\n toggleGroup(row.id);\n }\n\n // If a group row is focused, and it is collapsed, move to the parent group row (if there is one).\n if (idx === -1 && event.key === leftKey && !row.isExpanded && row.level !== 0) {\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n event.preventGridDefault();\n selectCell({ idx, rowIdx: parentRowAndIndex[1] });\n }\n }\n\n // Prevent copy/paste on group rows\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (isCtrlKeyHeldDown(event) && (event.keyCode === 67 || event.keyCode === 86)) {\n event.preventGridDefault();\n }\n }\n\n function handleRowsChange(updatedRows: R[], { indexes, column }: RowsChangeData<R, SR>) {\n if (!onRowsChange) return;\n const updatedRawRows = [...rawRows];\n const rawIndexes: number[] = [];\n for (const index of indexes) {\n const rawIndex = rawRows.indexOf(rows[index] as R);\n updatedRawRows[rawIndex] = updatedRows[index];\n rawIndexes.push(rawIndex);\n }\n onRowsChange(updatedRawRows, {\n indexes: rawIndexes,\n column\n });\n }\n\n function toggleGroup(groupId: unknown) {\n const newExpandedGroupIds = new Set(expandedGroupIds);\n if (newExpandedGroupIds.has(groupId)) {\n newExpandedGroupIds.delete(groupId);\n } else {\n newExpandedGroupIds.add(groupId);\n }\n onExpandedGroupIdsChange(newExpandedGroupIds);\n }\n\n function renderRow(\n key: Key,\n {\n row,\n rowClass,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onRowChange,\n lastFrozenColumnIndex,\n copiedCellIdx,\n draggedOverCellIdx,\n setDraggedOverRowIdx,\n selectedCellEditor,\n ...rowProps\n }: RenderRowProps<R, SR>\n ) {\n if (isGroupRow(row)) {\n const { startRowIndex } = row;\n return (\n <GroupedRow\n key={key}\n {...rowProps}\n aria-rowindex={headerAndTopSummaryRowsCount + startRowIndex + 1}\n row={row}\n groupBy={groupBy}\n toggleGroup={toggleGroupLatest}\n />\n );\n }\n\n let ariaRowIndex = rowProps['aria-rowindex'];\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n const { startRowIndex, childRows } = parentRowAndIndex[0];\n const groupIndex = childRows.indexOf(row);\n ariaRowIndex = startRowIndex + headerAndTopSummaryRowsCount + groupIndex + 2;\n }\n\n return rawRenderRow(key, {\n ...rowProps,\n 'aria-rowindex': ariaRowIndex,\n row,\n rowClass,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onRowChange,\n lastFrozenColumnIndex,\n copiedCellIdx,\n draggedOverCellIdx,\n setDraggedOverRowIdx,\n selectedCellEditor\n });\n }\n\n return (\n <DataGrid<R, SR, Key>\n {...props}\n role=\"treegrid\"\n aria-rowcount={\n rowsCount + 1 + (props.topSummaryRows?.length ?? 0) + (props.bottomSummaryRows?.length ?? 0)\n }\n ref={ref}\n columns={columns}\n rows={rows as R[]} // TODO: check types\n rowHeight={rowHeight}\n rowKeyGetter={rowKeyGetter}\n onRowsChange={handleRowsChange}\n selectedRows={selectedRows}\n onSelectedRowsChange={onSelectedRowsChange}\n onCellKeyDown={handleKeyDown}\n renderers={{\n ...renderers,\n renderRow\n }}\n />\n );\n}\n\nfunction isReadonlyArray(arr: unknown): arr is readonly unknown[] {\n return Array.isArray(arr);\n}\n\nexport default forwardRef(TreeDataGrid) as <R, SR = unknown, K extends Key = Key>(\n props: TreeDataGridProps<R, SR, K> & RefAttributes<DataGridHandle>\n) => React.JSX.Element;\n","import { css } from '@linaria/core';\n\nimport type { RenderEditCellProps } from '../types';\n\nconst textEditorInternalClassname = css`\n @layer rdg.TextEditor {\n appearance: none;\n\n box-sizing: border-box;\n inline-size: 100%;\n block-size: 100%;\n padding-block: 0;\n padding-inline: 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--rdg-color);\n background-color: var(--rdg-background-color);\n\n font-family: inherit;\n font-size: var(--rdg-font-size);\n\n &:focus {\n border-color: var(--rdg-selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n }\n`;\n\nexport const textEditorClassname = `rdg-text-editor ${textEditorInternalClassname}`;\n\nfunction autoFocusAndSelect(input: HTMLInputElement | null) {\n input?.focus();\n input?.select();\n}\n\nexport default function textEditor<TRow, TSummaryRow>({\n row,\n column,\n onRowChange,\n onClose\n}: RenderEditCellProps<TRow, TSummaryRow>) {\n return (\n <input\n className={textEditorClassname}\n ref={autoFocusAndSelect}\n value={row[column.key as keyof TRow] as unknown as string}\n onChange={(event) => onRowChange({ ...row, [column.key]: event.target.value })}\n onBlur={() => onClose(true, false)}\n />\n );\n}\n"],"names":["getColSpan","column","lastFrozenColumnIndex","args","colSpan","Number","isInteger","frozen","idx","undefined","stopPropagation","event","scrollIntoView","element","inline","block","createCellEvent","defaultPrevented","cellEvent","preventGridDefault","isGridDefaultPrevented","Object","setPrototypeOf","getPrototypeOf","nonInputKeys","Set","isCtrlKeyHeldDown","e","ctrlKey","metaKey","key","isDefaultCellInput","vKey","keyCode","has","onEditorNavigation","target","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","closest","querySelectorAll","length","measuringCellClassname","renderMeasuringCells","viewportColumns","map","minWidth","maxWidth","_jsx","className","style","gridColumnStart","isSelectedCellEditable","selectedPosition","columns","rows","row","rowIdx","isCellEditableUtil","renderEditCell","editable","getSelectedCellColSpan","topSummaryRows","bottomSummaryRows","mainHeaderRowIdx","topSummaryRowsCount","type","getNextSelectedCellPosition","moveUp","moveNext","cellNavigationMode","colSpanColumns","minRowIdx","maxRowIdx","currentPosition","currentIdx","currentRowIdx","nextPosition","isCellWithinBounds","nextIdx","nextRowIdx","columnsCount","setColSpan","colIdx","getParentRowIdx","parent","level","setHeaderGroupColAndRowSpan","nextColumn","parentRowIdx","found","isAfterLastColumn","isBeforeFirstColumn","isLastRow","isFirstRow","nextParentRowIdx","canExitGrid","maxColIdx","shiftKey","atLastCellInRow","atFirstCellInRow","atLastRow","atFirstRow","cell","cellClassname","cellFrozen","cellFrozenClassname","getRowStyle","getHeaderCellStyle","rowSpan","gridRowEnd","paddingBlockStart","insetBlockStart","gridRowStart","getCellStyle","index","gridColumnEnd","insetInlineStart","getCellClassname","extraClasses","clsx","min","max","floor","sign","abs","Math","assertIsValidKeyGetter","keyGetter","Error","clampColumnWidth","width","getHeaderCellRowSpan","checkbox","checkboxClassname","renderCheckbox","onChange","indeterminate","props","handleChange","checked","nativeEvent","ref","el","groupCellContent","groupCellContentClassname","caret","caretClassname","renderToggleGroup","ToggleGroup","groupKey","isExpanded","tabIndex","toggleGroup","handleKeyDown","d","_jsxs","onKeyDown","children","viewBox","height","renderValue","DataGridDefaultRenderersContext","createContext","DataGridDefaultRenderersProvider","Provider","useDefaultRenderers","useContext","SelectCellFormatter","value","disabled","ariaLabel","ariaLabelledBy","RowSelectionContext","RowSelectionProvider","RowSelectionChangeContext","RowSelectionChangeProvider","useRowSelection","rowSelectionContext","rowSelectionChangeContext","isRowSelectionDisabled","isRowSelected","onRowSelectionChange","HeaderRowSelectionContext","HeaderRowSelectionProvider","HeaderRowSelectionChangeContext","HeaderRowSelectionChangeProvider","useHeaderRowSelection","headerRowSelectionContext","headerRowSelectionChangeContext","isIndeterminate","SELECT_COLUMN_KEY","HeaderRenderer","SelectFormatter","isShiftClick","SelectGroupFormatter","SelectColumn","name","resizable","sortable","renderHeaderCell","renderCell","renderGroupCell","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MIN_WIDTH","useCalculatedColumns","rawColumns","defaultColumnOptions","getColumnWidth","viewportWidth","scrollLeft","enableVirtualization","defaultWidth","defaultMinWidth","defaultMaxWidth","defaultCellRenderer","defaultSortable","defaultResizable","defaultDraggable","draggable","headerRowsCount","useMemo","collectColumns","rawColumn","calculatedColumnParent","headerCellClass","push","sort","aKey","frozenA","bKey","frozenB","forEach","updateColumnParent","templateColumns","layoutCssVars","totalFrozenColumnWidth","columnMetrics","Map","left","set","columnMetric","get","i","colOverscanStartIdx","colOverscanEndIdx","viewportLeft","viewportRight","lastColIdx","firstUnfrozenColumnIdx","colVisibleStartIdx","colVisibleEndIdx","useLayoutEffect","window","useEffect","useOriginalLayoutEffect","useColumnWidths","gridRef","gridWidth","resizedColumnWidths","measuredColumnWidths","setResizedColumnWidths","setMeasuredColumnWidths","onColumnResize","prevGridWidthRef","useRef","columnsCanFlex","ignorePreviouslyMeasuredColumns","current","newTemplateColumns","columnsToMeasure","gridTemplateColumns","join","updateMeasuredWidths","newMeasuredColumnWidths","hasChanges","measuredWidth","measureColumnWidth","delete","handleColumnResize","nextWidth","resizingKey","flushSync","newResizedColumnWidths","selector","CSS","escape","measuringCell","querySelector","getBoundingClientRect","useGridDimensions","inlineSize","setInlineSize","useState","blockSize","setBlockSize","horizontalScrollbarHeight","setHorizontalScrollbarHeight","ResizeObserver","clientWidth","clientHeight","offsetWidth","offsetHeight","initialHorizontalScrollbarHeight","initialWidth","initialHeight","resizeObserver","entries","size","contentBoxSize","observe","disconnect","useLatestFunc","fn","callbackFn","useCallback","useRovingTabIndex","isSelected","isChildFocused","setIsChildFocused","onFocus","currentTarget","isFocusable","childTabIndex","useViewportColumns","rowOverscanStartIdx","rowOverscanEndIdx","startIdx","updateStartIdx","useViewportRows","rowHeight","scrollTop","totalRowHeight","gridTemplateRows","getRowTop","getRowHeight","findRowIdx","offset","rowPositions","currentRowHeight","position","top","validateRowIdx","start","end","middle","currentOffset","overscanThreshold","rowVisibleStartIdx","rowVisibleEndIdx","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","isCellSelected","isCopied","isDraggedOver","onClick","onDoubleClick","onContextMenu","onRowChange","selectCell","cellClass","isEditable","selectCellWrapper","openEditor","handleClick","handleContextMenu","handleDoubleClick","handleRowChange","newRow","role","isCellEditable","CellComponent","memo","forwardRef","defaultRenderCell","cellDragHandle","cellDragHandleFrozenClassname","cellDragHandleClassname","DragHandle","columnWidth","latestDraggedOverRowIdx","onRowsChange","onFill","setDragging","setDraggedOverRowIdx","handleMouseDown","preventDefault","buttons","addEventListener","onMouseOver","onMouseUp","removeEventListener","handleDragEnd","overRowIdx","startRowIndex","endRowIndex","updateRows","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","updatedRow","columnKey","targetRow","getStyle","marginEnd","isLastColumn","marginInlineEnd","marginBlockEnd","onMouseDown","cellEditing","EditCell","closeEditor","navigate","frameRequestRef","commitOnOutsideClick","editorOptions","commitOnOutsideMouseDown","onClose","onWindowCaptureMouseDown","requestAnimationFrame","capture","cancelFrameRequest","cancelAnimationFrame","mode","commitChanges","shouldFocusCell","onEditorRowChange","commitChangesAndFocus","displayCellContent","onMouseDownCapture","_Fragment","GroupedColumnHeaderCell","headerSortCellClassname","headerSortName","headerSortNameClassname","sortDirection","priority","SortableHeaderCell","renderSortStatus","cellSortableClassname","cellResizable","cellResizableClassname","resizeHandleClassname","cellDraggableClassname","cellDragging","cellDraggingClassname","cellOver","cellOverClassname","HeaderCell","onColumnsReorder","sortColumns","onSortColumnsChange","shouldFocusGrid","direction","dragDropKey","isDragging","setIsDragging","isOver","setIsOver","isRtl","sortIndex","findIndex","sortColumn","ariaSort","defaultRenderHeaderCell","onPointerDown","pointerType","pointerId","headerCell","parentElement","right","clientX","hasDoubleClicked","onPointerMove","newWidth","onLostPointerCapture","setPointerCapture","onSort","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","handleFocus","onDragStart","dataTransfer","setData","dropEffect","onDragEnd","onDragOver","onDrop","types","includes","toLowerCase","sourceKey","getData","onDragEnter","isEventPertinent","onDragLeave","draggableProps","relatedTarget","contains","rowClassname","rowSelected","rowSelectedClassname","rowSelectedWithFrozenCell","topSummaryRowClassname","bottomSummaryRowClassname","headerRow","headerRowClassname","HeaderRow","selectedCellIdx","useId","cells","GroupedColumnHeaderRow","renderedParents","add","Row","copiedCellIdx","draggedOverCellIdx","selectedCellEditor","onCellClick","onCellDoubleClick","onCellContextMenu","rowClass","onMouseEnter","handleDragEnter","selectionValue","RowComponent","defaultRenderRow","ScrollToCell","scrollToPosition","gridElement","setScrollToCellPosition","removeScrollToCell","observer","IntersectionObserver","root","threshold","gridColumn","gridRow","arrow","arrowClassname","renderSortIcon","renderSortPriority","rootClassname","viewportDragging","viewportDraggingClassname","focusSinkClassname","focusSinkHeaderAndSummaryClassname","summaryCellClassname","SummaryCell","summaryCellClass","renderSummaryCell","summaryRow","topSummaryRow","summaryRowClassname","SummaryRow","bottom","isTop","ariaRowIndex","DataGrid","rowKeyGetter","rawRowHeight","headerRowHeight","rawHeaderRowHeight","summaryRowHeight","rawSummaryRowHeight","selectedRows","onSelectedRowsChange","onCellKeyDown","onSelectedCellChange","onScroll","onCopy","onPaste","rawEnableVirtualization","renderers","rawDirection","rawRole","ariaDescribedBy","rawAriaRowCount","testId","defaultRenderers","renderRow","defaultRenderSortStatus","defaultRenderCheckbox","noRowsFallback","setScrollTop","setScrollLeft","copiedCell","setCopiedCell","draggedOverRowIdx","setOverRowIdx","setScrollToPosition","gridHeight","bottomSummaryRowsCount","summaryRowsCount","headerAndTopSummaryRowsCount","groupedColumnHeaderRowsCount","setSelectedPosition","prevSelectedPosition","lastSelectedRowIdx","focusSinkRef","shouldFocusCellRef","isTreeGrid","headerRowsHeight","summaryRowsHeight","isSelectable","leftKey","rightKey","ariaRowCount","defaultGridComponents","headerSelectionValue","hasSelectedRow","hasUnselectedRow","minColIdx","selectedCellIsWithinSelectionBounds","isCellWithinSelectionBounds","selectedCellIsWithinViewportBounds","isCellWithinViewportBounds","scrollHeight","handleColumnResizeLatest","onColumnsReorderLastest","onSortColumnsChangeLatest","onCellClickLatest","onCellDoubleClickLatest","onCellContextMenuLatest","selectHeaderRowLatest","selectHeaderRow","selectRowLatest","selectRow","handleFormatterRowChangeLatest","updateRow","selectCellLatest","selectHeaderCellLatest","isSamePosition","focus","preventScroll","focusCellOrCellContent","useImperativeHandle","selectedCell","scrollToCell","scrollToIdx","scrollToRowIdx","isRowIdxWithinViewportBounds","newSelectedRows","rowKey","previousRowIdx","indexOf","step","Element","isCellEvent","isRowEvent","cKey","getSelection","isCollapsed","handleCopy","handlePaste","handleCellInput","handleScroll","commitEditorChanges","sourceColumnKey","targetColumn","updatedTargetRow","targetColumnKey","originalRow","isColIdxWithinSelectionBounds","isCellWithinEditBounds","enableEditor","samePosition","getCellToScroll","getNextPosition","nextRowY","nextSelectedCellPosition","getDraggedOverCellIdx","elementToFocus","renderDragHandle","getCellEditor","getRowViewportColumns","selectedColumn","slice","getViewportRows","rowElements","selectedIdx","selectedRowIdx","viewportRowIdx","isRowOutsideViewport","rowColumns","c","templateRows","isGroupRowFocused","scrollPaddingInlineStart","scrollPaddingBlock","dir","Array","from","_","summaryRowIdx","isSummaryRowSelected","gridEl","p1","p2","GroupCell","id","childRows","groupColumnIndex","isGroupByColumn","toggleGroupWrapper","isLevelMatching","cursor","groupRow","groupRowClassname","GroupedRow","groupBy","handleSelectGroup","setSize","posInSet","TreeDataGrid","rawRows","rawRowKeyGetter","rawOnCellKeyDown","rawSelectedRows","rawOnSelectedRowsChange","rawGroupBy","rowGrouper","expandedGroupIds","onExpandedGroupIdsChange","rawRenderRow","toggleGroupLatest","groupedRows","rowsCount","groupRows","groupByKey","remainingGroupByKeys","groupRowsCount","groups","childGroups","childRowsCount","isGroupRow","allGroupRows","flattenedRows","expandGroup","parentId","isReadonlyArray","keys","getParentRowAndIndex","parentRow","parentRowAndIndex","groupIndex","isGroupRowSelected","every","cr","newRawSelectedRows","handleRowsChange","updatedRawRows","rawIndexes","rawIndex","groupId","newExpandedGroupIds","rowProps","arr","isArray","textEditorInternalClassname","textEditorClassname","autoFocusAndSelect","input","select","textEditor","onBlur"],"mappings":"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"} |