UNPKG

277 kBSource Map (JSON)View Raw
1{"version":3,"file":"bundle.js","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/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/Cell.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 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 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, height?: number): CSSProperties {\n if (height !== undefined) {\n return {\n '--rdg-grid-row-start': rowIdx,\n '--rdg-row-height': `${height}px`\n } as unknown as CSSProperties;\n }\n\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';\nimport clsx from 'clsx';\n\nimport type { RenderCheckboxProps } from '../types';\n\nconst checkboxLabel = css`\n @layer rdg.CheckboxLabel {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n inset: 0;\n margin-inline-end: 1px; /* align checkbox in row group cell */\n }\n`;\n\nconst checkboxLabelClassname = `rdg-checkbox-label ${checkboxLabel}`;\n\nconst checkboxInput = css`\n @layer rdg.CheckboxInput {\n all: unset;\n }\n`;\n\nconst checkboxInputClassname = `rdg-checkbox-input ${checkboxInput}`;\n\nconst checkbox = css`\n @layer rdg.CheckboxIcon {\n content: '';\n inline-size: 20px;\n block-size: 20px;\n border: 2px solid var(--rdg-border-color);\n background-color: var(--rdg-background-color);\n\n .${checkboxInput}:checked + & {\n background-color: var(--rdg-checkbox-color);\n outline: 4px solid var(--rdg-background-color);\n outline-offset: -6px;\n }\n\n .${checkboxInput}:focus + & {\n border-color: var(--rdg-checkbox-focus-color);\n }\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox ${checkbox}`;\n\nconst checkboxLabelDisabled = css`\n @layer rdg.CheckboxLabel {\n cursor: default;\n\n .${checkbox} {\n border-color: var(--rdg-checkbox-disabled-border-color);\n background-color: var(--rdg-checkbox-disabled-background-color);\n }\n }\n`;\n\nconst checkboxLabelDisabledClassname = `rdg-checkbox-label-disabled ${checkboxLabelDisabled}`;\n\nexport function renderCheckbox({ onChange, ...props }: RenderCheckboxProps) {\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <label\n className={clsx(checkboxLabelClassname, {\n [checkboxLabelDisabledClassname]: props.disabled\n })}\n >\n <input\n type=\"checkbox\"\n {...props}\n className={checkboxInputClassname}\n onChange={handleChange}\n />\n <div className={checkboxClassname} />\n </label>\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'\n>;\n\ninterface SelectCellFormatterProps extends SharedInputProps {\n value: boolean;\n onChange: (value: boolean, isShiftClick: boolean) => void;\n}\n\nexport function SelectCellFormatter({\n value,\n tabIndex,\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 disabled,\n checked: value,\n onChange\n });\n}\n","import { createContext, useContext } from 'react';\n\nimport type { SelectRowEvent } from '../types';\n\nconst RowSelectionContext = createContext<boolean | 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<R>(): [boolean, (selectRowEvent: SelectRowEvent<R>) => void] {\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 [rowSelectionContext, rowSelectionChangeContext];\n}\n","import { useRowSelection } from './hooks/useRowSelection';\nimport type { Column, RenderCellProps, RenderGroupCellProps, RenderHeaderCellProps } from './types';\nimport { SelectCellFormatter } from './cellRenderers';\n\nexport const SELECT_COLUMN_KEY = 'select-row';\n\nfunction HeaderRenderer(props: RenderHeaderCellProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n tabIndex={props.tabIndex}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ type: 'HEADER', checked });\n }}\n />\n );\n}\n\nfunction SelectFormatter(props: RenderCellProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select\"\n tabIndex={props.tabIndex}\n value={isRowSelected}\n onChange={(checked, isShiftClick) => {\n onRowSelectionChange({ type: 'ROW', 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({ type: 'ROW', 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>,\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>, 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 { 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\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: React.MutableRefObject<number | undefined>;\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>();\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 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\n function onPointerMove(event: PointerEvent) {\n const { right, left } = headerCell.getBoundingClientRect();\n const width = isRtl ? right + offset - event.clientX : event.clientX + offset - left;\n if (width > 0) {\n onColumnResize(column, clampColumnWidth(width, column));\n }\n }\n\n function onLostPointerCapture() {\n currentTarget.removeEventListener('pointermove', onPointerMove);\n currentTarget.removeEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n currentTarget.setPointerCapture(pointerId);\n currentTarget.addEventListener('pointermove', onPointerMove);\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 onDoubleClick() {\n onColumnResize(column, 'max-content');\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 if (event.dataTransfer.types.includes(dragDropKey)) {\n const sourceKey = event.dataTransfer.getData(dragDropKey);\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 onDoubleClick={onDoubleClick}\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 line-height: var(--rdg-row-height);\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 height: 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 line-height: var(--rdg-header-row-height);\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) => 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) => JSX.Element;\n","import { memo } 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 column,\n colSpan,\n isCellSelected,\n isCopied,\n isDraggedOver,\n row,\n rowIdx,\n onClick,\n onDoubleClick,\n onContextMenu,\n onRowChange,\n selectCell,\n ...props\n}: CellRendererProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n\n const { cellClass } = column;\n const className = getCellClassname(\n column,\n {\n [cellCopiedClassname]: isCopied,\n [cellDraggedOverClassname]: isDraggedOver\n },\n typeof cellClass === 'function' ? cellClass(row) : cellClass\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 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\nexport default memo(Cell) as <R, SR>(props: CellRendererProps<R, SR>) => JSX.Element;\n","import { forwardRef, memo, type RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider, useLatestFunc } from './hooks';\nimport { getColSpan, getRowStyle } from './utils';\nimport type { CalculatedColumn, RenderRowProps } from './types';\nimport Cell from './Cell';\nimport { rowClassname, rowSelectedClassname } from './style/row';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n gridRowStart,\n height,\n selectedCellIdx,\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 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 <Cell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n isCopied={copiedCellIdx === idx}\n isDraggedOver={draggedOverCellIdx === idx}\n isCellSelected={isCellSelected}\n onClick={onCellClick}\n onDoubleClick={onCellDoubleClick}\n onContextMenu={onCellContextMenu}\n onRowChange={handleRowChange}\n selectCell={selectCell}\n />\n );\n }\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n ref={ref}\n className={className}\n onMouseEnter={handleDragEnter}\n style={getRowStyle(gridRowStart, height)}\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) => 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-color: hsl(207deg 100% 29%);\n --rdg-checkbox-focus-color: hsl(207deg 100% 69%);\n --rdg-checkbox-disabled-border-color: #ccc;\n --rdg-checkbox-disabled-background-color: #ddd;\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-color: hsl(207deg 100% 79%);\n --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n --rdg-checkbox-disabled-border-color: #000;\n --rdg-checkbox-disabled-background-color: #333;\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: calc(2px * var(--rdg-sign)) 0 5px -2px rgba(136, 136, 136, 0.3);\n\n display: grid;\n\n color-scheme: var(--rdg-color-scheme, light dark);\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>) => 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 line-height: var(--rdg-summary-row-height);\n\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>) => 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 RowSelectionChangeProvider,\n RowSelectionProvider,\n useCalculatedColumns,\n useColumnWidths,\n useGridDimensions,\n useLatestFunc,\n useLayoutEffect,\n useViewportColumns,\n useViewportRows\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 SelectRowEvent,\n SortColumn\n} from './types';\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 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<R, 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: R) => K>;\n onRowsChange?: Maybe<(rows: R[], data: RowsChangeData<R, 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: 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 /** Function called whenever row selection is changed */\n onSelectedRowsChange?: Maybe<(selectedRows: Set<K>) => void>;\n /** Used for multi column sorting */\n sortColumns?: Maybe<readonly SortColumn[]>;\n onSortColumnsChange?: Maybe<(sortColumns: SortColumn[]) => void>;\n defaultColumnOptions?: Maybe<DefaultColumnOptions<R, SR>>;\n onFill?: Maybe<(event: FillEvent<R>) => R>;\n onCopy?: Maybe<(event: CopyEvent<R>) => void>;\n onPaste?: Maybe<(event: PasteEvent<R>) => R>;\n\n /**\n * Event props\n */\n /** Function called whenever a cell is clicked */\n onCellClick?: Maybe<(args: CellClickArgs<R, SR>, event: CellMouseEvent) => void>;\n /** Function called whenever a cell is double clicked */\n onCellDoubleClick?: Maybe<(args: CellClickArgs<R, SR>, event: CellMouseEvent) => void>;\n /** Function called whenever a cell is right clicked */\n onCellContextMenu?: Maybe<(args: CellClickArgs<R, SR>, event: CellMouseEvent) => void>;\n onCellKeyDown?: Maybe<(args: CellKeyDownArgs<R, SR>, event: CellKeyboardEvent) => void>;\n /** Function called whenever cell selection is changed */\n onSelectedCellChange?: Maybe<(args: CellSelectArgs<R, 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<R, SR>>;\n rowClass?: Maybe<(row: 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 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 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 }),\n [renderCheckbox, renderSortStatus]\n );\n\n const allRowsSelected = useMemo((): boolean => {\n // no rows to select = explicitely unchecked\n const { length } = rows;\n return (\n length !== 0 &&\n selectedRows != null &&\n rowKeyGetter != null &&\n selectedRows.size >= length &&\n rows.every((row) => selectedRows.has(rowKeyGetter(row)))\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 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 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 selectRow(args: SelectRowEvent<R>) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n\n if (args.type === 'HEADER') {\n const newSelectedRows = new Set(selectedRows);\n for (const row of rows) {\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 return;\n }\n\n const { row, checked, isShiftClick } = args;\n const newSelectedRows = new Set(selectedRows);\n const rowKey = rowKeyGetter(row);\n if (checked) {\n newSelectedRows.add(rowKey);\n const previousRowIdx = lastSelectedRowIdx.current;\n const rowIdx = rows.indexOf(row);\n lastSelectedRowIdx.current = rowIdx;\n if (isShiftClick && previousRowIdx !== -1 && previousRowIdx !== rowIdx) {\n const step = sign(rowIdx - previousRowIdx);\n for (let i = previousRowIdx + step; i !== rowIdx; i += step) {\n const row = rows[i];\n newSelectedRows.add(rowKeyGetter(row));\n }\n }\n } else {\n newSelectedRows.delete(rowKey);\n lastSelectedRowIdx.current = -1;\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 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({ type: 'ROW', 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 isRowSelected,\n onCellClick: onCellClickLatest,\n onCellDoubleClick: onCellDoubleClickLatest,\n onCellContextMenu: onCellContextMenuLatest,\n rowClass,\n gridRowStart,\n height: getRowHeight(rowIdx),\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-summary-row-height': `${summaryRowHeight}px`,\n '--rdg-scroll-height': `${scrollHeight}px`,\n '--rdg-sign': isRtl ? -1 : 1,\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 <RowSelectionChangeProvider value={selectRowLatest}>\n <RowSelectionProvider value={allRowsSelected}>\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 </RowSelectionProvider>\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 {getViewportRows()}\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 </RowSelectionChangeProvider>\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) => 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>) => JSX.Element;\n","import { memo } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider } 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 height,\n groupBy,\n toggleGroup,\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 return (\n <RowSelectionProvider value={isRowSelected}>\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, height)}\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>(props: GroupRowRendererProps<R, SR>) => 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'\n > {\n columns: readonly Column<R, SR>[];\n rowHeight?: Maybe<number | ((args: RowHeightArgs<R>) => number)>;\n groupBy: readonly string[];\n rowGrouper: (rows: readonly R[], columnKey: string) => Record<string, readonly 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 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) => 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","height","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","checkboxLabel","checkboxLabelClassname","checkboxInput","checkboxInputClassname","checkbox","checkboxClassname","checkboxLabelDisabled","checkboxLabelDisabledClassname","renderCheckbox","onChange","props","handleChange","checked","nativeEvent","_jsxs","disabled","children","groupCellContent","groupCellContentClassname","caret","caretClassname","renderToggleGroup","ToggleGroup","groupKey","isExpanded","tabIndex","toggleGroup","handleKeyDown","d","onKeyDown","viewBox","renderValue","DataGridDefaultRenderersContext","createContext","DataGridDefaultRenderersProvider","Provider","useDefaultRenderers","useContext","SelectCellFormatter","value","ariaLabel","ariaLabelledBy","RowSelectionContext","RowSelectionProvider","RowSelectionChangeContext","RowSelectionChangeProvider","useRowSelection","rowSelectionContext","rowSelectionChangeContext","SELECT_COLUMN_KEY","HeaderRenderer","isRowSelected","onRowSelectionChange","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","ref","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","cellDragHandle","cellDragHandleFrozenClassname","cellDragHandleClassname","DragHandle","columnWidth","latestDraggedOverRowIdx","isCellEditable","onRowsChange","onFill","onClick","setDragging","setDraggedOverRowIdx","handleMouseDown","preventDefault","buttons","addEventListener","onMouseOver","onMouseUp","removeEventListener","handleDragEnd","overRowIdx","startRowIndex","endRowIndex","updateRows","handleDoubleClick","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","updatedRow","columnKey","targetRow","getStyle","marginEnd","isLastColumn","marginInlineEnd","marginBlockEnd","onMouseDown","onDoubleClick","cellEditing","EditCell","onRowChange","closeEditor","navigate","frameRequestRef","commitOnOutsideClick","editorOptions","commitOnOutsideMouseDown","onClose","onWindowCaptureMouseDown","requestAnimationFrame","capture","cancelFrameRequest","cancelAnimationFrame","mode","commitChanges","shouldFocusCell","onEditorRowChange","commitChangesAndFocus","cellClass","displayCellContent","role","onMouseDownCapture","_Fragment","GroupedColumnHeaderCell","isCellSelected","selectCell","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","onPointerMove","onLostPointerCapture","setPointerCapture","onSort","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","handleFocus","onDragStart","dataTransfer","setData","dropEffect","onDragEnd","onDragOver","onDrop","types","includes","sourceKey","getData","onDragEnter","isEventPertinent","onDragLeave","draggableProps","relatedTarget","contains","rowClassname","rowSelected","rowSelectedClassname","rowSelectedWithFrozenCell","topSummaryRowClassname","bottomSummaryRowClassname","headerRow","headerRowClassname","HeaderRow","selectedCellIdx","useId","cells","memo","GroupedColumnHeaderRow","renderedParents","add","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","isCopied","isDraggedOver","onContextMenu","isEditable","selectCellWrapper","openEditor","handleClick","handleContextMenu","handleRowChange","newRow","Row","copiedCellIdx","draggedOverCellIdx","selectedCellEditor","onCellClick","onCellDoubleClick","onCellContextMenu","rowClass","onMouseEnter","handleDragEnter","RowComponent","forwardRef","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","allRowsSelected","every","minColIdx","selectedCellIsWithinSelectionBounds","isCellWithinSelectionBounds","selectedCellIsWithinViewportBounds","isCellWithinViewportBounds","scrollHeight","handleColumnResizeLatest","onColumnsReorderLastest","onSortColumnsChangeLatest","onCellClickLatest","onCellDoubleClickLatest","onCellContextMenuLatest","selectRowLatest","selectRow","handleFormatterRowChangeLatest","updateRow","selectCellLatest","selectHeaderCellLatest","isSamePosition","focus","preventScroll","focusCellOrCellContent","useImperativeHandle","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","cr","newRawSelectedRows","handleRowsChange","updatedRawRows","rawIndexes","rawIndex","groupId","newExpandedGroupIds","rowProps","arr","isArray","textEditorInternalClassname","textEditorClassname","autoFocusAndSelect","input","select","textEditor","onBlur"],"mappings":"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"}
\No newline at end of file