m9-react-data-grid 7.0.0-beta.7.11 → 7.0.0-beta.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.cjs","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/style/cell.ts","../src/style/core.ts","../src/style/row.ts","../src/hooks/useLayoutEffect.ts","../src/hooks/useFocusRef.ts","../src/formatters/SelectCellFormatter.tsx","../src/formatters/ValueFormatter.tsx","../src/formatters/ToggleGroupFormatter.tsx","../src/hooks/useRowSelection.ts","../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/selectedCellUtils.ts","../src/utils/index.ts","../src/Columns.tsx","../src/hooks/useCalculatedColumns.ts","../src/hooks/useCombinedRefs.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingCellRef.ts","../src/hooks/useRovingRowRef.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/headerCells/SortableHeaderCell.tsx","../src/HeaderCell.tsx","../src/HeaderRow.tsx","../src/Cell.tsx","../src/Row.tsx","../src/GroupCell.tsx","../src/GroupRow.tsx","../src/SummaryCell.tsx","../src/SummaryRow.tsx","../src/EditCell.tsx","../src/DragHandle.tsx","../src/DataGrid.tsx","../src/editors/TextEditor.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { css } from '@linaria/core';\n\nexport const cell = css`\n contain: strict;\n contain: size layout style paint;\n padding: 0 8px;\n border-right: 1px solid var(--border-color);\n border-bottom: 1px solid var(--border-color);\n background-color: inherit;\n\n white-space: nowrap;\n overflow: hidden;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n box-shadow: inset 0 0 0 2px var(--selection-color);\n }\n`;\n\nexport const cellClassname = `rdg-cell ${cell}`;\n\nconst cellFrozen = css`\n position: sticky;\n /* Should have a higher value than 0 to show up above unfrozen cells */\n z-index: 1;\n`;\n\nexport const cellFrozenClassname = `rdg-cell-frozen ${cellFrozen}`;\n\nexport const cellFrozenLast = css`\n box-shadow: 2px 0 5px -2px rgba(136, 136, 136, 0.3);\n`;\n\nexport const cellFrozenLastClassname = `rdg-cell-frozen-last ${cellFrozenLast}`;\n","import { css } from '@linaria/core';\nimport { row } from './row';\n\nconst lightTheme = `\n --color: #000;\n --border-color: #ddd;\n --summary-border-color: #aaa;\n --background-color: hsl(0deg 0% 100%);\n --header-background-color: hsl(0deg 0% 97.5%);\n --row-hover-background-color: hsl(0deg 0% 96%);\n --row-selected-background-color: hsl(207deg 76% 92%);\n --row-selected-hover-background-color: hsl(207deg 76% 88%);\n\n --checkbox-color: hsl(207deg 100% 29%);\n --checkbox-focus-color: hsl(207deg 100% 69%);\n --checkbox-disabled-border-color: #ccc;\n --checkbox-disabled-background-color: #ddd;\n`;\n\nconst darkTheme = `\n --color: #ddd;\n --border-color: #444;\n --summary-border-color: #555;\n --background-color: hsl(0deg 0% 13%);\n --header-background-color: hsl(0deg 0% 10.5%);\n --row-hover-background-color: hsl(0deg 0% 9%);\n --row-selected-background-color: hsl(207deg 76% 42%);\n --row-selected-hover-background-color: hsl(207deg 76% 38%);\n\n --checkbox-color: hsl(207deg 100% 79%);\n --checkbox-focus-color: hsl(207deg 100% 89%);\n --checkbox-disabled-border-color: #000;\n --checkbox-disabled-background-color: #333;\n`;\n\nconst root = css`\n ${lightTheme}\n --selection-color: #66afe9;\n --font-size: 14px;\n\n color-scheme: var(--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 components. */\n contain: strict;\n contain: size layout style paint;\n content-visibility: auto;\n height: 350px;\n border: 1px solid var(--border-color);\n box-sizing: border-box;\n overflow: auto;\n user-select: none;\n background-color: var(--background-color);\n color: var(--color);\n font-size: var(--font-size);\n direction: ltr;\n\n /* set stacking context in safari */\n @supports not (contain: strict) {\n position: relative;\n z-index: 0;\n }\n\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n\n &.rdg-dark {\n --color-scheme: dark;\n ${darkTheme}\n }\n\n &.rdg-light {\n --color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n ${darkTheme}\n }\n }\n`;\n\nexport const rootClassname = `rdg ${root}`;\n\nconst viewportDragging = css`\n &.${row} {\n cursor: move;\n }\n`;\n\nexport const viewportDraggingClassname = `rdg-viewport-dragging ${viewportDragging}`;\n","import { css } from '@linaria/core';\n\nexport const row = css`\n contain: strict;\n contain: size layout style paint;\n display: grid;\n grid-template-rows: var(--row-height);\n grid-template-columns: var(--template-columns);\n position: absolute;\n left: 0;\n width: var(--row-width);\n height: var(--row-height); /* needed on Firefox */\n line-height: var(--row-height);\n background-color: var(--background-color);\n\n &:hover {\n background-color: var(--row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--row-selected-background-color);\n\n &:hover {\n background-color: var(--row-selected-hover-background-color);\n }\n }\n`;\n\nexport const rowClassname = `rdg-row ${row}`;\n","// eslint-disable-next-line 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 { useLayoutEffect } from './useLayoutEffect';\n\nexport function useFocusRef<T extends HTMLOrSVGElement>(isSelected: boolean) {\n const ref = useRef<T>(null);\n\n useLayoutEffect(() => {\n if (!isSelected) return;\n ref.current?.focus({ preventScroll: true });\n }, [isSelected]);\n\n return {\n ref,\n tabIndex: isSelected ? 0 : -1\n };\n}\n","import clsx from 'clsx';\nimport { css } from '@linaria/core';\nimport { useFocusRef } from '../hooks/useFocusRef';\n\nconst checkboxLabel = css`\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n inset: 0;\n margin-right: 1px; /* align checkbox in row group cell */\n`;\n\nconst checkboxLabelClassname = `rdg-checkbox-label ${checkboxLabel}`;\n\nconst checkboxInput = css`\n all: unset;\n width: 0;\n margin: 0;\n`;\n\nconst checkboxInputClassname = `rdg-checkbox-input ${checkboxInput}`;\n\nconst checkbox = css`\n content: '';\n width: 20px;\n height: 20px;\n border: 2px solid var(--border-color);\n background-color: var(--background-color);\n\n .${checkboxInput}:checked + & {\n background-color: var(--checkbox-color);\n box-shadow: inset 0px 0px 0px 4px var(--background-color);\n }\n\n .${checkboxInput}:focus + & {\n border-color: var(--checkbox-focus-color);\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox ${checkbox}`;\n\nconst checkboxLabelDisabled = css`\n cursor: default;\n\n .${checkbox} {\n border-color: var(--checkbox-disabled-border-color);\n background-color: var(--checkbox-disabled-background-color);\n }\n`;\n\nconst checkboxLabelDisabledClassname = `rdg-checkbox-label-disabled ${checkboxLabelDisabled}`;\n\ntype SharedInputProps = Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'disabled' | 'onClick' | 'aria-label' | 'aria-labelledby'\n>;\n\ninterface SelectCellFormatterProps extends SharedInputProps {\n isCellSelected: boolean;\n value: boolean;\n onChange: (value: boolean, isShiftClick: boolean) => void;\n}\n\nexport function SelectCellFormatter({\n value,\n isCellSelected,\n disabled,\n onClick,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n}: SelectCellFormatterProps) {\n const { ref, tabIndex } = useFocusRef<HTMLInputElement>(isCellSelected);\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <label className={clsx(checkboxLabelClassname, { [checkboxLabelDisabledClassname]: disabled })}>\n <input\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={ref}\n type=\"checkbox\"\n tabIndex={tabIndex}\n className={checkboxInputClassname}\n disabled={disabled}\n checked={value}\n onChange={handleChange}\n onClick={onClick}\n />\n <div className={checkboxClassname} />\n </label>\n );\n}\n","import type { FormatterProps } from '../types';\n\nexport function ValueFormatter<R, SR>(props: FormatterProps<R, SR>) {\n try {\n return <>{props.row[props.column.key as keyof R]}</>;\n } catch {\n return null;\n }\n}\n","import { css } from '@linaria/core';\nimport type { GroupFormatterProps } from '../types';\nimport { useFocusRef } from '../hooks/useFocusRef';\n\nconst groupCellContent = css`\n outline: none;\n`;\n\nconst groupCellContentClassname = `rdg-group-cell-content ${groupCellContent}`;\n\nconst caret = css`\n margin-left: 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\nconst caretClassname = `rdg-caret ${caret}`;\n\nexport function ToggleGroupFormatter<R, SR>({\n groupKey,\n isExpanded,\n isCellSelected,\n toggleGroup\n}: GroupFormatterProps<R, SR>) {\n const { ref, tabIndex } = useFocusRef<HTMLSpanElement>(isCellSelected);\n\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\n ref={ref}\n className={groupCellContentClassname}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {groupKey}\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 { createContext, useContext } from 'react';\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 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","export function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\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 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 target.matches(\n '.rdg-editor-container > :only-child, .rdg-editor-container > label:only-child > :only-child'\n );\n }\n return false;\n}\n","import type { CalculatedColumn, Position, GroupRow, CellNavigationMode, Maybe } from '../types';\nimport { getColSpan } from './colSpanUtils';\n\ninterface IsSelectedCellEditableOpts<R, SR> {\n selectedPosition: Position;\n columns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function isSelectedCellEditable<R, SR>({\n selectedPosition,\n columns,\n rows,\n isGroupRow\n}: IsSelectedCellEditableOpts<R, SR>): boolean {\n const column = columns[selectedPosition.idx];\n const row = rows[selectedPosition.rowIdx];\n return !isGroupRow(row) && isCellEditable(column, row);\n}\n\nexport function isCellEditable<R, SR>(column: CalculatedColumn<R, SR>, row: R): boolean {\n return (\n column.editor != null &&\n !column.rowGroup &&\n (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false\n );\n}\n\ninterface GetNextSelectedCellPositionOpts<R, SR> {\n cellNavigationMode: CellNavigationMode;\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n summaryRows: Maybe<readonly SR[]>;\n minRowIdx: number;\n maxRowIdx: number;\n currentPosition: Position;\n nextPosition: Position;\n lastFrozenColumnIndex: number;\n isCellWithinBounds: (position: Position) => boolean;\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function getSelectedCellColSpan<R, SR>({\n rows,\n summaryRows,\n rowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n}: Pick<\n GetNextSelectedCellPositionOpts<R, SR>,\n 'rows' | 'summaryRows' | 'isGroupRow' | 'lastFrozenColumnIndex'\n> & {\n rowIdx: number;\n column: CalculatedColumn<R, SR>;\n}) {\n if (rowIdx === -1) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n }\n\n if (rowIdx >= 0 && rowIdx < rows.length) {\n const row = rows[rowIdx];\n if (!isGroupRow(row)) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n }\n return undefined;\n }\n\n if (summaryRows) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: summaryRows[rowIdx - rows.length]\n });\n }\n\n return undefined;\n}\n\nexport function getNextSelectedCellPosition<R, SR>({\n cellNavigationMode,\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n minRowIdx,\n maxRowIdx,\n currentPosition: { idx: currentIdx },\n nextPosition,\n lastFrozenColumnIndex,\n isCellWithinBounds,\n isGroupRow\n}: GetNextSelectedCellPositionOpts<R, SR>): Position {\n let { idx: nextIdx, rowIdx: nextRowIdx } = nextPosition;\n\n const setColSpan = (moveRight: boolean) => {\n if (nextRowIdx >= 0 && nextRowIdx < rows.length) {\n const row = rows[nextRowIdx];\n if (isGroupRow(row)) return;\n }\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 summaryRows,\n rowIdx: nextRowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n });\n\n if (colSpan && nextIdx > colIdx && nextIdx < colSpan + colIdx) {\n nextIdx = colIdx + (moveRight ? colSpan : 0);\n break;\n }\n }\n };\n\n if (isCellWithinBounds(nextPosition)) {\n setColSpan(nextIdx - currentIdx > 0);\n }\n\n if (cellNavigationMode !== 'NONE') {\n const columnsCount = columns.length;\n const isAfterLastColumn = nextIdx === columnsCount;\n const isBeforeFirstColumn = nextIdx === -1;\n\n if (isAfterLastColumn) {\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isLastRow = nextRowIdx === maxRowIdx;\n if (!isLastRow) {\n nextIdx = 0;\n nextRowIdx += 1;\n }\n } else {\n nextIdx = 0;\n }\n } else if (isBeforeFirstColumn) {\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isFirstRow = nextRowIdx === minRowIdx;\n if (!isFirstRow) {\n nextRowIdx -= 1;\n nextIdx = columnsCount - 1;\n }\n } else {\n nextIdx = columnsCount - 1;\n }\n setColSpan(false);\n }\n }\n\n return { idx: nextIdx, rowIdx: nextRowIdx };\n}\n\ninterface CanExitGridOpts {\n cellNavigationMode: CellNavigationMode;\n maxColIdx: number;\n minRowIdx: number;\n maxRowIdx: number;\n selectedPosition: Position;\n shiftKey: boolean;\n}\n\nexport function canExitGrid({\n cellNavigationMode,\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition: { rowIdx, idx },\n shiftKey\n}: CanExitGridOpts): boolean {\n // When the cellNavigationMode is 'none' or 'changeRow', you can exit the grid if you're at the first or last cell of the grid\n // When the cellNavigationMode is 'loopOverRow', there is no logical exit point so you can't exit the grid\n if (cellNavigationMode === 'NONE' || cellNavigationMode === 'CHANGE_ROW') {\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\n return false;\n}\n","import clsx from 'clsx';\n\nimport type { CalculatedColumn } from '../types';\nimport { cellClassname, cellFrozenClassname, cellFrozenLastClassname } from '../style';\n\nexport * from './colSpanUtils';\nexport * from './domUtils';\nexport * from './keyboardUtils';\nexport * from './selectedCellUtils';\n\nexport const { min, max, floor, sign } = 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 getCellStyle<R, SR>(\n column: CalculatedColumn<R, SR>,\n colSpan?: number\n): React.CSSProperties {\n return {\n gridColumnStart: column.idx + 1,\n gridColumnEnd: colSpan !== undefined ? `span ${colSpan}` : undefined,\n left: column.frozen ? `var(--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 [cellFrozenLastClassname]: column.isLastFrozenColumn\n },\n ...extraClasses\n );\n}\n","import { SelectCellFormatter } from './formatters';\nimport { useRowSelection } from './hooks/useRowSelection';\nimport type { Column, FormatterProps, GroupFormatterProps } from './types';\nimport { stopPropagation } from './utils';\n\nexport const SELECT_COLUMN_KEY = 'select-row';\n\nfunction SelectFormatter(props: FormatterProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select\"\n isCellSelected={props.isCellSelected}\n value={isRowSelected}\n onClick={stopPropagation}\n onChange={(checked, isShiftClick) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick });\n }}\n />\n );\n}\n\nfunction SelectGroupFormatter(props: GroupFormatterProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select Group\"\n isCellSelected={props.isCellSelected}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick: false });\n }}\n // Stop propagation to prevent row selection\n onClick={stopPropagation}\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 maxWidth: 35,\n resizable: false,\n sortable: false,\n frozen: true,\n headerRenderer(props) {\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n isCellSelected={props.isCellSelected}\n value={props.allRowsSelected}\n onChange={props.onAllRowsSelectionChange}\n // Stop propagation to prevent row selection\n onClick={stopPropagation}\n />\n );\n },\n formatter: SelectFormatter,\n groupFormatter: SelectGroupFormatter\n};\n","import { useMemo } from 'react';\n\nimport type { CalculatedColumn, Column, Maybe } from '../types';\nimport type { DataGridProps } from '../DataGrid';\nimport { ValueFormatter, ToggleGroupFormatter } from '../formatters';\nimport { SELECT_COLUMN_KEY } from '../Columns';\nimport { floor, max, min } from '../utils';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\ninterface ColumnMetric {\n width: number;\n left: number;\n}\n\ninterface CalculatedColumnsArgs<R, SR> extends Pick<DataGridProps<R, SR>, 'defaultColumnOptions'> {\n rawColumns: readonly Column<R, SR>[];\n rawGroupBy: Maybe<readonly string[]>;\n viewportWidth: number;\n scrollLeft: number;\n columnWidths: ReadonlyMap<string, number>;\n enableVirtualization: boolean;\n}\n\nexport function useCalculatedColumns<R, SR>({\n rawColumns,\n columnWidths,\n viewportWidth,\n scrollLeft,\n defaultColumnOptions,\n rawGroupBy,\n enableVirtualization\n}: CalculatedColumnsArgs<R, SR>) {\n const minColumnWidth = defaultColumnOptions?.minWidth ?? 80;\n const defaultFormatter = defaultColumnOptions?.formatter ?? ValueFormatter;\n const defaultSortable = defaultColumnOptions?.sortable ?? false;\n const defaultResizable = defaultColumnOptions?.resizable ?? false;\n\n const { columns, colSpanColumns, lastFrozenColumnIndex, groupBy } = useMemo((): {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n lastFrozenColumnIndex: number;\n groupBy: readonly string[];\n } => {\n // Filter rawGroupBy and ignore keys that do not match the columns prop\n const groupBy: string[] = [];\n let lastFrozenColumnIndex = -1;\n\n const columns = rawColumns.map((rawColumn) => {\n const rowGroup = rawGroupBy?.includes(rawColumn.key) ?? false;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const frozen = rowGroup || rawColumn.frozen || false;\n\n const column: Mutable<CalculatedColumn<R, SR>> = {\n ...rawColumn,\n idx: 0,\n frozen,\n isLastFrozenColumn: false,\n rowGroup,\n sortable: rawColumn.sortable ?? defaultSortable,\n resizable: rawColumn.resizable ?? defaultResizable,\n formatter: rawColumn.formatter ?? defaultFormatter\n };\n\n if (rowGroup) {\n column.groupFormatter ??= ToggleGroupFormatter;\n }\n\n if (frozen) {\n lastFrozenColumnIndex++;\n }\n\n return column;\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 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 frozen columns third:\n if (frozenA) {\n if (frozenB) return 0;\n return -1;\n }\n if (frozenB) return 1;\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\n if (column.rowGroup) {\n groupBy.push(column.key);\n }\n\n if (column.colSpan != null) {\n colSpanColumns.push(column);\n }\n });\n\n if (lastFrozenColumnIndex !== -1) {\n columns[lastFrozenColumnIndex].isLastFrozenColumn = true;\n }\n\n return {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n groupBy\n };\n }, [rawColumns, defaultFormatter, defaultResizable, defaultSortable, rawGroupBy]);\n\n const { layoutCssVars, totalColumnWidth, totalFrozenColumnWidth, columnMetrics } = useMemo((): {\n layoutCssVars: Readonly<Record<string, string>>;\n totalColumnWidth: number;\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 totalColumnWidth = 0;\n let totalFrozenColumnWidth = 0;\n let templateColumns = '';\n let allocatedWidth = 0;\n let unassignedColumnsCount = 0;\n\n for (const column of columns) {\n let width = getSpecifiedWidth(column, columnWidths, viewportWidth);\n\n if (width === undefined) {\n unassignedColumnsCount++;\n } else {\n width = clampColumnWidth(width, column, minColumnWidth);\n allocatedWidth += width;\n columnMetrics.set(column, { width, left: 0 });\n }\n }\n\n const unallocatedWidth = viewportWidth - allocatedWidth;\n const unallocatedColumnWidth = unallocatedWidth / unassignedColumnsCount;\n\n for (const column of columns) {\n let width: number;\n if (columnMetrics.has(column)) {\n const columnMetric = columnMetrics.get(column)!;\n columnMetric.left = left;\n ({ width } = columnMetric);\n } else {\n width = clampColumnWidth(unallocatedColumnWidth, column, minColumnWidth);\n columnMetrics.set(column, { width, left });\n }\n totalColumnWidth += width;\n left += width;\n templateColumns += `${width}px `;\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 '--template-columns': templateColumns\n };\n\n for (let i = 0; i <= lastFrozenColumnIndex; i++) {\n const column = columns[i];\n layoutCssVars[`--frozen-left-${column.idx}`] = `${columnMetrics.get(column)!.left}px`;\n }\n\n return { layoutCssVars, totalColumnWidth, totalFrozenColumnWidth, columnMetrics };\n }, [columnWidths, columns, viewportWidth, minColumnWidth, 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 layoutCssVars,\n columnMetrics,\n totalColumnWidth,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth,\n groupBy\n };\n}\n\nfunction getSpecifiedWidth<R, SR>(\n { key, width }: Column<R, SR>,\n columnWidths: ReadonlyMap<string, number>,\n viewportWidth: number\n): number | undefined {\n if (columnWidths.has(key)) {\n // Use the resized width if available\n return columnWidths.get(key);\n }\n if (typeof width === 'number') {\n return width;\n }\n if (typeof width === 'string' && /^\\d+%$/.test(width)) {\n return floor((viewportWidth * parseInt(width, 10)) / 100);\n }\n return undefined;\n}\n\nfunction clampColumnWidth<R, SR>(\n width: number,\n { minWidth, maxWidth }: Column<R, SR>,\n minColumnWidth: number\n): number {\n width = max(width, minWidth ?? minColumnWidth);\n\n if (typeof maxWidth === 'number') {\n return min(width, maxWidth);\n }\n\n return width;\n}\n","import { useCallback } from 'react';\n\nexport function useCombinedRefs<T>(...refs: readonly React.Ref<T>[]) {\n return useCallback(\n (handle: T | null) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(handle);\n } else if (ref !== null && 'current' in ref) {\n // @ts-expect-error: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n ref.current = handle;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n );\n}\n","import { useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\n\nexport function useGridDimensions(): [\n ref: React.RefObject<HTMLDivElement>,\n width: number,\n height: number\n] {\n const gridRef = useRef<HTMLDivElement>(null);\n const [gridWidth, setGridWidth] = useState(1);\n const [gridHeight, setGridHeight] = useState(1);\n\n useLayoutEffect(() => {\n const { ResizeObserver } = window;\n\n // don't break in Node.js (SSR), jest/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 resizeObserver = new ResizeObserver(() => {\n // Get dimensions without scrollbars.\n // The dimensions given by the callback entries in Firefox do not substract the scrollbar sizes.\n const { clientWidth, clientHeight } = gridRef.current!;\n // TODO: remove once fixed upstream\n // we reduce width by 1px here to avoid layout issues in Chrome\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1206298\n setGridWidth(clientWidth - (devicePixelRatio % 1 === 0 ? 0 : 1));\n setGridHeight(clientHeight);\n });\n\n resizeObserver.observe(gridRef.current!);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return [gridRef, gridWidth, gridHeight];\n}\n","import { useRef, useEffect, useCallback } from 'react';\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 (...args: any[]) => any>(fn: T) {\n const ref = useRef(fn);\n\n useEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: Parameters<T>) => {\n ref.current(...args);\n }, []);\n}\n","import { useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\n\n// https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex\nexport function useRovingCellRef(isSelected: boolean) {\n const ref = useRef<HTMLDivElement>(null);\n // https://www.w3.org/TR/wai-aria-practices-1.1/#gridNav_focus\n const isChildFocused = useRef(false);\n const [, forceRender] = useState<unknown>({});\n\n useLayoutEffect(() => {\n if (!isSelected) {\n isChildFocused.current = false;\n return;\n }\n\n if (isChildFocused.current) {\n // When the child is focused, we need to rerender\n // the cell again so tabIndex is updated to -1\n forceRender({});\n return;\n }\n ref.current?.focus();\n }, [isSelected]);\n\n function onFocus(event: React.FocusEvent<HTMLDivElement>) {\n if (event.target !== ref.current) {\n isChildFocused.current = true;\n }\n }\n\n const isFocused = isSelected && !isChildFocused.current;\n\n return {\n ref,\n tabIndex: isFocused ? 0 : -1,\n onFocus\n };\n}\n","import { css } from '@linaria/core';\n\nimport { cell } from '../style';\nimport { useFocusRef } from './useFocusRef';\n\nconst rowSelected = css`\n outline: none;\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n box-shadow: inset 0 0 0 2px var(--selection-color);\n pointer-events: none;\n z-index: 2;\n }\n\n > .${cell}:first-child {\n /* preserve left border on the first frozen cell after scrolling to the right */\n box-shadow: inset 2px 0 0 0 var(--selection-color);\n }\n`;\n\nexport const rowSelectedClassname = `rdg-row-selected ${rowSelected}`;\n\nexport function useRovingRowRef(selectedCellIdx: number | undefined) {\n const isSelected = selectedCellIdx === -1;\n const { ref, tabIndex } = useFocusRef<HTMLDivElement>(isSelected);\n\n return {\n ref,\n tabIndex,\n className: isSelected ? rowSelectedClassname : undefined\n };\n}\n","import { useMemo } from 'react';\n\nimport { getColSpan } from '../utils';\nimport type { CalculatedColumn, GroupRow, Maybe } from '../types';\n\ninterface ViewportColumnsArgs<R, SR> {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n summaryRows: Maybe<readonly SR[]>;\n colOverscanStartIdx: number;\n colOverscanEndIdx: number;\n lastFrozenColumnIndex: number;\n rowOverscanStartIdx: number;\n rowOverscanEndIdx: number;\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function useViewportColumns<R, SR>({\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n isGroupRow\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 (isGroupRow(row)) continue;\n if (\n updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row }))\n ) {\n break;\n }\n }\n\n // check summary rows\n if (summaryRows != null) {\n for (const row of summaryRows) {\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 summaryRows,\n colOverscanStartIdx,\n lastFrozenColumnIndex,\n colSpanColumns,\n isGroupRow\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';\nimport { floor, max, min } from '../utils';\nimport type { GroupRow, Maybe, RowHeightArgs } from '../types';\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\ninterface ViewportRowsArgs<R> {\n rawRows: readonly R[];\n rowHeight: number | ((args: RowHeightArgs<R>) => number);\n clientHeight: number;\n scrollTop: number;\n groupBy: readonly string[];\n rowGrouper: Maybe<(rows: readonly R[], columnKey: string) => Record<string, readonly R[]>>;\n expandedGroupIds: Maybe<ReadonlySet<unknown>>;\n enableVirtualization: boolean;\n}\n\n// TODO: https://github.com/microsoft/TypeScript/issues/41808\nfunction isReadonlyArray(arr: unknown): arr is readonly unknown[] {\n return Array.isArray(arr);\n}\n\nexport function useViewportRows<R>({\n rawRows,\n rowHeight,\n clientHeight,\n scrollTop,\n groupBy,\n rowGrouper,\n expandedGroupIds,\n enableVirtualization\n}: ViewportRowsArgs<R>) {\n const [groupedRows, rowsCount] = useMemo(() => {\n if (groupBy.length === 0 || rowGrouper == null) 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) ?? false;\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 { totalRowHeight, getRowTop, getRowHeight, findRowIdx } = useMemo(() => {\n if (typeof rowHeight === 'number') {\n return {\n totalRowHeight: rowHeight * rows.length,\n getRowTop: (rowIdx: number) => rowIdx * rowHeight,\n getRowHeight: () => rowHeight,\n findRowIdx: (offset: number) => floor(offset / rowHeight)\n };\n }\n\n let totalRowHeight = 0;\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: R | GroupRow<R>) => {\n const currentRowHeight = isGroupRow(row)\n ? rowHeight({ type: 'GROUP', row })\n : rowHeight({ type: 'ROW', row });\n const position = { top: totalRowHeight, height: currentRowHeight };\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 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 }, [isGroupRow, 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 rows,\n rowsCount,\n totalRowHeight,\n isGroupRow,\n getRowTop,\n getRowHeight,\n findRowIdx\n };\n}\n","import { css } from '@linaria/core';\nimport { useFocusRef } from '../hooks';\nimport type { HeaderRendererProps } from '../types';\n\nconst headerSortCell = css`\n cursor: pointer;\n display: flex;\n\n &:focus {\n outline: none;\n }\n`;\n\nconst headerSortCellClassname = `rdg-header-sort-cell ${headerSortCell}`;\n\nconst headerSortName = css`\n flex-grow: 1;\n overflow: hidden;\n overflow: clip;\n text-overflow: ellipsis;\n`;\n\nconst headerSortNameClassname = `rdg-header-sort-name ${headerSortName}`;\n\nconst arrow = css`\n fill: currentColor;\n\n > path {\n transition: d 0.1s;\n }\n`;\n\nconst arrowClassname = `rdg-sort-arrow ${arrow}`;\n\ntype SharedHeaderCellProps<R, SR> = Pick<\n HeaderRendererProps<R, SR>,\n 'sortDirection' | 'onSort' | 'priority' | 'isCellSelected'\n>;\n\ninterface Props<R, SR> extends SharedHeaderCellProps<R, SR> {\n children: React.ReactNode;\n}\n\nexport default function SortableHeaderCell<R, SR>({\n onSort,\n sortDirection,\n priority,\n children,\n isCellSelected\n}: Props<R, SR>) {\n const { ref, tabIndex } = useFocusRef<HTMLSpanElement>(isCellSelected);\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLSpanElement>) {\n if (event.key === ' ' || event.key === 'Enter') {\n // stop propagation to prevent scrolling\n event.preventDefault();\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function handleClick(event: React.MouseEvent<HTMLSpanElement>) {\n onSort(event.ctrlKey || event.metaKey);\n }\n\n return (\n <span\n ref={ref}\n tabIndex={tabIndex}\n className={headerSortCellClassname}\n onMouseDown={handleClick}\n onKeyDown={handleKeyDown}\n >\n <span className={headerSortNameClassname}>{children}</span>\n <span>\n {sortDirection !== undefined && (\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 {priority}\n </span>\n </span>\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { CalculatedColumn, SortColumn } from './types';\nimport type { HeaderRowProps } from './HeaderRow';\nimport SortableHeaderCell from './headerCells/SortableHeaderCell';\nimport { getCellStyle, getCellClassname } from './utils';\nimport { useRovingCellRef } from './hooks';\n\nconst cellResizable = css`\n touch-action: none;\n\n &::after {\n content: '';\n cursor: col-resize;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 10px;\n }\n`;\n\nconst cellResizableClassname = `rdg-cell-resizable ${cellResizable}`;\n\ntype SharedHeaderRowProps<R, SR> = Pick<\n HeaderRowProps<R, SR, React.Key>,\n | 'sortColumns'\n | 'onSortColumnsChange'\n | 'allRowsSelected'\n | 'onAllRowsSelectionChange'\n | 'selectCell'\n | 'onColumnResize'\n | 'shouldFocusGrid'\n>;\n\nexport interface HeaderCellProps<R, SR> extends SharedHeaderRowProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n colSpan: number | undefined;\n isCellSelected: boolean;\n}\n\nexport default function HeaderCell<R, SR>({\n column,\n colSpan,\n isCellSelected,\n onColumnResize,\n allRowsSelected,\n onAllRowsSelectionChange,\n sortColumns,\n onSortColumnsChange,\n selectCell,\n shouldFocusGrid\n}: HeaderCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(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\n const className = getCellClassname(column, column.headerCellClass, {\n [cellResizableClassname]: column.resizable\n });\n\n function onPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'mouse' && event.buttons !== 1) {\n return;\n }\n\n const { currentTarget, pointerId } = event;\n const { right } = currentTarget.getBoundingClientRect();\n const offset = right - event.clientX;\n\n if (offset > 11) {\n // +1px to account for the border size\n return;\n }\n\n function onPointerMove(event: PointerEvent) {\n const width = event.clientX + offset - currentTarget.getBoundingClientRect().left;\n if (width > 0) {\n onColumnResize(column, width);\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 && sortDirection === 'DESC') ||\n (!sortDescendingFirst && 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() {\n selectCell(column.idx);\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(0);\n }\n }\n\n function getCell() {\n if (column.headerRenderer) {\n return (\n <column.headerRenderer\n column={column}\n sortDirection={sortDirection}\n priority={priority}\n onSort={onSort}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={onAllRowsSelectionChange}\n isCellSelected={isCellSelected}\n />\n );\n }\n\n if (column.sortable) {\n return (\n <SortableHeaderCell\n onSort={onSort}\n sortDirection={sortDirection}\n priority={priority}\n isCellSelected={isCellSelected}\n >\n {column.name}\n </SortableHeaderCell>\n );\n }\n\n return column.name;\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n aria-sort={ariaSort}\n aria-colspan={colSpan}\n ref={ref}\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={getCellStyle(column, colSpan)}\n onFocus={handleFocus}\n onClick={onClick}\n onPointerDown={column.resizable ? onPointerDown : undefined}\n >\n {getCell()}\n </div>\n );\n}\n","import { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport HeaderCell from './HeaderCell';\nimport type { CalculatedColumn } from './types';\nimport { getColSpan } from './utils';\nimport type { DataGridProps } from './DataGrid';\nimport { useRovingRowRef } from './hooks';\n\ntype SharedDataGridProps<R, SR, K extends React.Key> = Pick<\n DataGridProps<R, SR, K>,\n 'sortColumns' | 'onSortColumnsChange'\n>;\n\nexport interface HeaderRowProps<R, SR, K extends React.Key> extends SharedDataGridProps<R, SR, K> {\n columns: readonly CalculatedColumn<R, SR>[];\n allRowsSelected: boolean;\n onAllRowsSelectionChange: (checked: boolean) => void;\n onColumnResize: (column: CalculatedColumn<R, SR>, width: number) => void;\n selectCell: (columnIdx: number) => void;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n shouldFocusGrid: boolean;\n}\n\nconst headerRow = css`\n contain: strict;\n contain: size layout style paint;\n display: grid;\n grid-template-columns: var(--template-columns);\n grid-template-rows: var(--header-row-height);\n height: var(--header-row-height); /* needed on Firefox */\n line-height: var(--header-row-height);\n width: var(--row-width);\n position: sticky;\n top: 0;\n background-color: var(--header-background-color);\n font-weight: bold;\n z-index: 3;\n outline: none;\n\n &[aria-selected='true'] {\n box-shadow: inset 0 0 0 2px var(--selection-color);\n }\n`;\n\nconst headerRowClassname = `rdg-header-row ${headerRow}`;\n\nfunction HeaderRow<R, SR, K extends React.Key>({\n columns,\n allRowsSelected,\n onAllRowsSelectionChange,\n onColumnResize,\n sortColumns,\n onSortColumnsChange,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n shouldFocusGrid\n}: HeaderRowProps<R, SR, K>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\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 isCellSelected={selectedCellIdx === column.idx}\n onColumnResize={onColumnResize}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={onAllRowsSelectionChange}\n onSortColumnsChange={onSortColumnsChange}\n sortColumns={sortColumns}\n selectCell={selectCell}\n shouldFocusGrid={shouldFocusGrid && index === 0}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={1} // aria-rowindex is 1 based\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(headerRowClassname, className)}\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';\nimport { css } from '@linaria/core';\n\nimport { getCellStyle, getCellClassname, isCellEditable } from './utils';\nimport type { CellRendererProps } from './types';\nimport { useRovingCellRef } from './hooks';\n\nconst cellCopied = css`\n background-color: #ccccff;\n`;\n\nconst cellCopiedClassname = `rdg-cell-copied ${cellCopied}`;\n\nconst cellDraggedOver = css`\n background-color: #ccccff;\n\n &.${cellCopied} {\n background-color: #9999ff;\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 dragHandle,\n onRowClick,\n onRowDoubleClick,\n onRowChange,\n selectCell,\n ...props\n}: CellRendererProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(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\n function selectCellWrapper(openEditor?: boolean | null) {\n selectCell(row, column, openEditor);\n }\n\n function handleClick() {\n selectCellWrapper(column.editorOptions?.editOnClick);\n onRowClick?.(row, column);\n }\n\n function handleContextMenu() {\n selectCellWrapper();\n }\n\n function handleDoubleClick() {\n selectCellWrapper(true);\n onRowDoubleClick?.(row, column);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-selected={isCellSelected}\n aria-colspan={colSpan}\n aria-readonly={!isCellEditable(column, row) || undefined}\n ref={ref}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleContextMenu}\n onFocus={onFocus}\n {...props}\n >\n {!column.rowGroup && (\n <>\n <column.formatter\n column={column}\n row={row}\n rowIdx={rowIdx}\n isCellSelected={isCellSelected}\n onRowChange={onRowChange}\n />\n {dragHandle}\n </>\n )}\n </div>\n );\n}\n\nexport default memo(Cell) as <R, SR>(props: CellRendererProps<R, SR>) => JSX.Element;\n","import { memo, forwardRef } from 'react';\nimport type { RefAttributes, CSSProperties } from 'react';\nimport clsx from 'clsx';\n\nimport Cell from './Cell';\nimport { RowSelectionProvider, useLatestFunc, useCombinedRefs, useRovingRowRef } from './hooks';\nimport { getColSpan } from './utils';\nimport { rowClassname } from './style';\nimport type { RowRendererProps } from './types';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n selectedCellIdx,\n isRowSelected,\n copiedCellIdx,\n draggedOverCellIdx,\n lastFrozenColumnIndex,\n row,\n viewportColumns,\n selectedCellEditor,\n selectedCellDragHandle,\n onRowClick,\n onRowDoubleClick,\n rowClass,\n setDraggedOverRowIdx,\n onMouseEnter,\n top,\n height,\n onRowChange,\n selectCell,\n ...props\n }: RowRendererProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const { ref: rowRef, tabIndex, className: rovingClassName } = useRovingRowRef(selectedCellIdx);\n\n const handleRowChange = useLatestFunc((newRow: R) => {\n onRowChange(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 rovingClassName,\n rowClass?.(row),\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 isCopied={copiedCellIdx === idx}\n isDraggedOver={draggedOverCellIdx === idx}\n isCellSelected={isCellSelected}\n dragHandle={isCellSelected ? selectedCellDragHandle : undefined}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n onRowChange={handleRowChange}\n selectCell={selectCell}\n rowIdx={rowIdx}\n />\n );\n }\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n ref={useCombinedRefs(ref, rowRef)}\n tabIndex={tabIndex}\n className={className}\n onMouseEnter={handleDragEnter}\n style={\n {\n top,\n '--row-height': `${height}px`\n } as unknown as CSSProperties\n }\n {...props}\n >\n {cells}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(Row) as <R, SR>(props: RowRendererProps<R, SR>) => JSX.Element;\n\nexport const RowWithRef = memo(forwardRef(Row)) as <R, SR>(\n props: RowRendererProps<R, SR> & RefAttributes<HTMLDivElement>\n) => JSX.Element;\n","import { memo } from 'react';\n\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CalculatedColumn, GroupRow } from './types';\nimport type { GroupRowRendererProps } from './GroupRow';\nimport { useRovingCellRef } from './hooks';\n\ntype SharedGroupRowRendererProps<R, SR> = Pick<\n GroupRowRendererProps<R, SR>,\n 'id' | 'groupKey' | 'childRows' | 'isExpanded' | 'toggleGroup'\n>;\n\ninterface GroupCellProps<R, SR> extends SharedGroupRowRendererProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n row: GroupRow<R>;\n isCellSelected: boolean;\n groupColumnIndex: number;\n}\n\nfunction GroupCell<R, SR>({\n id,\n groupKey,\n childRows,\n isExpanded,\n isCellSelected,\n column,\n row,\n groupColumnIndex,\n toggleGroup: toggleGroupWrapper\n}: GroupCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(isCellSelected);\n\n function toggleGroup() {\n toggleGroupWrapper(id);\n }\n\n // Only make the cell clickable if the group level matches\n const isLevelMatching = column.rowGroup && groupColumnIndex === column.idx;\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n ref={ref}\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 {(!column.rowGroup || groupColumnIndex === column.idx) && column.groupFormatter && (\n <column.groupFormatter\n groupKey={groupKey}\n childRows={childRows}\n column={column}\n row={row}\n isExpanded={isExpanded}\n isCellSelected={isCellSelected}\n toggleGroup={toggleGroup}\n />\n )}\n </div>\n );\n}\n\nexport default memo(GroupCell) as <R, SR>(props: GroupCellProps<R, SR>) => JSX.Element;\n","import type { CSSProperties } from 'react';\nimport { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport { cell, cellFrozenLast, rowClassname } from './style';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport GroupCell from './GroupCell';\nimport type { CalculatedColumn, GroupRow, Omit } from './types';\nimport { RowSelectionProvider, useRovingRowRef } from './hooks';\n\nexport interface GroupRowRendererProps<R, SR>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'children'> {\n id: string;\n groupKey: unknown;\n viewportColumns: readonly CalculatedColumn<R, SR>[];\n childRows: readonly R[];\n rowIdx: number;\n row: GroupRow<R>;\n top: number;\n height: number;\n level: number;\n selectedCellIdx: number | undefined;\n isExpanded: boolean;\n isRowSelected: boolean;\n selectGroup: (rowIdx: number) => void;\n toggleGroup: (expandedGroupId: unknown) => void;\n}\n\nconst groupRow = css`\n &:not([aria-selected='true']) {\n background-color: var(--header-background-color);\n }\n\n > .${cell}:not(:last-child):not(.${cellFrozenLast}) {\n border-right: none;\n }\n`;\n\nconst groupRowClassname = `rdg-group-row ${groupRow}`;\n\nfunction GroupedRow<R, SR>({\n id,\n groupKey,\n viewportColumns,\n childRows,\n rowIdx,\n row,\n top,\n height,\n level,\n isExpanded,\n selectedCellIdx,\n isRowSelected,\n selectGroup,\n toggleGroup,\n ...props\n}: GroupRowRendererProps<R, SR>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\n\n // Select is always the first column\n const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? level + 1 : level;\n\n function handleSelectGroup() {\n selectGroup(rowIdx);\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n aria-level={level}\n aria-expanded={isExpanded}\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(\n rowClassname,\n groupRowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n className\n )}\n onClick={handleSelectGroup}\n style={\n {\n top,\n '--row-height': `${height}px`\n } as unknown as CSSProperties\n }\n {...props}\n >\n {viewportColumns.map((column) => (\n <GroupCell\n key={column.key}\n id={id}\n groupKey={groupKey}\n childRows={childRows}\n isExpanded={isExpanded}\n isCellSelected={selectedCellIdx === column.idx}\n column={column}\n row={row}\n groupColumnIndex={idx}\n toggleGroup={toggleGroup}\n />\n ))}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(GroupedRow) as <R, SR>(props: GroupRowRendererProps<R, SR>) => JSX.Element;\n","import { memo } from 'react';\n\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CalculatedColumn, CellRendererProps } from './types';\nimport { useRovingCellRef } from './hooks';\n\ninterface SharedCellRendererProps<R, SR>\n extends Pick<CellRendererProps<R, SR>, 'column' | 'colSpan' | 'isCellSelected'> {\n selectCell: (row: SR, column: CalculatedColumn<R, SR>) => void;\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 isCellSelected,\n selectCell\n}: SummaryCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(isCellSelected);\n const { summaryFormatter: SummaryFormatter, summaryCellClass } = column;\n const className = getCellClassname(\n column,\n typeof summaryCellClass === 'function' ? summaryCellClass(row) : summaryCellClass\n );\n\n function onClick() {\n selectCell(row, column);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n ref={ref}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={onClick}\n onFocus={onFocus}\n >\n {SummaryFormatter && (\n <SummaryFormatter column={column} row={row} isCellSelected={isCellSelected} />\n )}\n </div>\n );\n}\n\nexport default memo(SummaryCell) as <R, SR>(props: SummaryCellProps<R, SR>) => JSX.Element;\n","import { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport { cell, row, rowClassname } from './style';\nimport { getColSpan } from './utils';\nimport SummaryCell from './SummaryCell';\nimport type { CalculatedColumn, RowRendererProps } from './types';\nimport { useRovingRowRef } from './hooks';\n\ntype SharedRowRendererProps<R, SR> = Pick<RowRendererProps<R, SR>, 'viewportColumns' | 'rowIdx'>;\n\ninterface SummaryRowProps<R, SR> extends SharedRowRendererProps<R, SR> {\n 'aria-rowindex': number;\n row: SR;\n bottom: number;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n selectCell: (row: SR, column: CalculatedColumn<R, SR>) => void;\n}\n\nconst summaryRow = css`\n &.${row} {\n position: sticky;\n z-index: 3;\n grid-template-rows: var(--summary-row-height);\n height: var(--summary-row-height); /* needed on Firefox */\n line-height: var(--summary-row-height);\n }\n`;\n\nconst summaryRowBorderClassname = css`\n & > .${cell} {\n border-top: 2px solid var(--summary-border-color);\n }\n`;\n\nconst summaryRowClassname = `rdg-summary-row ${summaryRow}`;\n\nfunction SummaryRow<R, SR>({\n rowIdx,\n row,\n viewportColumns,\n bottom,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n 'aria-rowindex': ariaRowIndex\n}: SummaryRowProps<R, SR>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\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 isCellSelected={isCellSelected}\n selectCell={selectCell}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={ariaRowIndex}\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n summaryRowClassname,\n { [summaryRowBorderClassname]: rowIdx === 0 },\n className\n )}\n style={{ bottom }}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(SummaryRow) as <R, SR>(props: SummaryRowProps<R, SR>) => JSX.Element;\n","import { useEffect, useRef } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useLatestFunc } from './hooks';\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CellRendererProps, EditorProps } 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 &.rdg-cell {\n padding: 0;\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<CellRendererProps<R, SR>, 'colSpan' | 'rowIdx'>;\n\ninterface EditCellProps<R, SR> extends EditorProps<R, SR>, SharedCellRendererProps<R, SR> {}\n\nexport default function EditCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n onRowChange,\n onClose\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 onRowChange(row, true);\n });\n\n function cancelFrameRequest() {\n cancelAnimationFrame(frameRequestRef.current!);\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 const { cellClass } = column;\n const className = getCellClassname(\n column,\n 'rdg-editor-container',\n !column.editorOptions?.renderFormatter && 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 onMouseDownCapture={commitOnOutsideClick ? cancelFrameRequest : undefined}\n >\n {column.editor != null && (\n <>\n <column.editor column={column} row={row} onRowChange={onRowChange} onClose={onClose} />\n {column.editorOptions?.renderFormatter && (\n <column.formatter\n column={column}\n row={row}\n rowIdx={rowIdx}\n isCellSelected\n onRowChange={onRowChange}\n />\n )}\n </>\n )}\n </div>\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { CalculatedColumn, FillEvent, Position } from './types';\nimport type { DataGridProps, SelectCellState } from './DataGrid';\n\nconst cellDragHandle = css`\n cursor: move;\n position: absolute;\n right: 0;\n bottom: 0;\n width: 8px;\n height: 8px;\n background-color: var(--selection-color);\n\n &:hover {\n width: 16px;\n height: 16px;\n border: 2px solid var(--selection-color);\n background-color: var(--background-color);\n }\n`;\n\nconst cellDragHandleClassname = `rdg-cell-drag-handle ${cellDragHandle}`;\n\ninterface Props<R, SR> extends Pick<DataGridProps<R, SR>, 'rows' | 'onRowsChange'> {\n columns: readonly CalculatedColumn<R, SR>[];\n selectedPosition: SelectCellState;\n latestDraggedOverRowIdx: React.MutableRefObject<number | undefined>;\n isCellEditable: (position: Position) => boolean;\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 rows,\n columns,\n selectedPosition,\n latestDraggedOverRowIdx,\n isCellEditable,\n onRowsChange,\n onFill,\n setDragging,\n setDraggedOverRowIdx\n}: Props<R, SR>) {\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement, MouseEvent>) {\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 { rowIdx } = selectedPosition;\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(selectedPosition.rowIdx + 1, rows.length);\n }\n\n function updateRows(startRowIdx: number, endRowIdx: number) {\n const { idx, rowIdx } = selectedPosition;\n const column = columns[idx];\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 return (\n <div\n className={cellDragHandleClassname}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n />\n );\n}\n","import { forwardRef, useState, useRef, useImperativeHandle, useCallback, useMemo } from 'react';\nimport type { Key, RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport { rootClassname, viewportDraggingClassname } from './style';\nimport {\n useLayoutEffect,\n useGridDimensions,\n useCalculatedColumns,\n useViewportColumns,\n useViewportRows,\n useLatestFunc,\n RowSelectionChangeProvider\n} from './hooks';\nimport HeaderRow from './HeaderRow';\nimport Row from './Row';\nimport GroupRowRenderer from './GroupRow';\nimport SummaryRow from './SummaryRow';\nimport EditCell from './EditCell';\nimport DragHandle from './DragHandle';\nimport {\n assertIsValidKeyGetter,\n onEditorNavigation,\n getNextSelectedCellPosition,\n isSelectedCellEditable,\n canExitGrid,\n isCtrlKeyHeldDown,\n isDefaultCellInput,\n getColSpan,\n max,\n sign,\n getSelectedCellColSpan\n} from './utils';\n\nimport type {\n CalculatedColumn,\n Column,\n Position,\n RowRendererProps,\n RowsChangeData,\n SelectRowEvent,\n FillEvent,\n PasteEvent,\n CellNavigationMode,\n SortColumn,\n RowHeightArgs,\n Maybe\n} from './types';\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 'formatter' | 'minWidth' | 'resizable' | 'sortable'\n>;\n\nconst initialPosition: SelectCellState = {\n idx: -1,\n rowIdx: -2,\n mode: 'SELECT'\n};\n\nexport interface DataGridHandle {\n element: HTMLDivElement | null;\n scrollToColumn: (colIdx: number) => void;\n scrollToRow: (rowIdx: number) => void;\n selectCell: (position: Position, enableEditor?: Maybe<boolean>) => void;\n}\n\ntype SharedDivProps = Pick<\n React.HTMLAttributes<HTMLDivElement>,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'className' | '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 Column<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 bottom of the rows view for summary, the vertical scroll bar will not scroll these rows.\n * Bottom horizontal scroll bar can move the row left / right. Or a customized row renderer can be used to disabled the scrolling support.\n */\n summaryRows?: 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 | ((args: RowHeightArgs<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 groupBy?: Maybe<readonly string[]>;\n rowGrouper?: Maybe<(rows: readonly R[], columnKey: string) => Record<string, readonly R[]>>;\n expandedGroupIds?: Maybe<ReadonlySet<unknown>>;\n onExpandedGroupIdsChange?: Maybe<(expandedGroupIds: Set<unknown>) => void>;\n onFill?: Maybe<(event: FillEvent<R>) => R>;\n onPaste?: Maybe<(event: PasteEvent<R>) => R>;\n\n /**\n * Event props\n */\n /** Function called whenever a row is clicked */\n onRowClick?: Maybe<(row: R, column: CalculatedColumn<R, SR>) => void>;\n /** Function called whenever a row is double clicked */\n onRowDoubleClick?: Maybe<(row: R, column: CalculatedColumn<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\n /**\n * Toggles and modes\n */\n /** @default 'NONE' */\n cellNavigationMode?: Maybe<CellNavigationMode>;\n /** @default true */\n enableVirtualization?: Maybe<boolean>;\n\n /**\n * Miscellaneous\n */\n rowRenderer?: Maybe<React.ComponentType<RowRendererProps<R, SR>>>;\n noRowsFallback?: React.ReactNode;\n rowClass?: Maybe<(row: R) => Maybe<string>>;\n 'data-testid'?: Maybe<string>;\n editableRowIdxs?: Array<number>;\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 {\n // Grid and data Props\n columns: rawColumns,\n rows: rawRows,\n summaryRows,\n rowKeyGetter,\n onRowsChange,\n // Dimensions props\n rowHeight,\n headerRowHeight: rawHeaderRowHeight,\n summaryRowHeight: rawSummaryRowHeight,\n // Feature props\n selectedRows,\n onSelectedRowsChange,\n sortColumns,\n onSortColumnsChange,\n defaultColumnOptions,\n groupBy: rawGroupBy,\n rowGrouper,\n expandedGroupIds,\n onExpandedGroupIdsChange,\n // Event props\n onRowClick,\n onRowDoubleClick,\n onScroll,\n onColumnResize,\n onFill,\n onPaste,\n // Toggles and modes\n cellNavigationMode: rawCellNavigationMode,\n enableVirtualization,\n // Miscellaneous\n rowRenderer,\n noRowsFallback,\n className,\n style,\n rowClass,\n // ARIA\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'data-testid': testId,\n editableRowIdxs\n }: DataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n /**\n * defaults\n */\n rowHeight ??= 35;\n const headerRowHeight = rawHeaderRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const summaryRowHeight = rawSummaryRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const RowRenderer = rowRenderer ?? Row;\n const cellNavigationMode = rawCellNavigationMode ?? 'NONE';\n enableVirtualization ??= true;\n\n /**\n * states\n */\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n const [columnWidths, setColumnWidths] = useState<ReadonlyMap<string, number>>(() => new Map());\n const [selectedPosition, setSelectedPosition] = useState<SelectCellState | EditCellState<R>>(\n initialPosition\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\n /**\n * refs\n */\n const prevSelectedPosition = useRef(selectedPosition);\n const latestDraggedOverRowIdx = useRef(draggedOverRowIdx);\n const lastSelectedRowIdx = useRef(-1);\n\n /**\n * computed values\n */\n const [gridRef, gridWidth, gridHeight] = useGridDimensions();\n const headerRowsCount = 1;\n const summaryRowsCount = summaryRows?.length ?? 0;\n const clientHeight = gridHeight - headerRowHeight - summaryRowsCount * summaryRowHeight;\n const isSelectable = selectedRows != null && onSelectedRowsChange != null;\n const isHeaderRowSelected = selectedPosition.rowIdx === -1;\n\n const allRowsSelected = useMemo((): boolean => {\n // no rows to select = explicitely unchecked\n const { length } = rawRows;\n return (\n length !== 0 &&\n selectedRows != null &&\n rowKeyGetter != null &&\n selectedRows.size >= length &&\n rawRows.every((row) => selectedRows.has(rowKeyGetter(row)))\n );\n }, [rawRows, selectedRows, rowKeyGetter]);\n\n const {\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n layoutCssVars,\n columnMetrics,\n totalColumnWidth,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth,\n groupBy\n } = useCalculatedColumns({\n rawColumns,\n columnWidths,\n scrollLeft,\n viewportWidth: gridWidth,\n defaultColumnOptions,\n rawGroupBy: rowGrouper ? rawGroupBy : undefined,\n enableVirtualization\n });\n\n const {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n rowsCount,\n totalRowHeight,\n isGroupRow,\n getRowTop,\n getRowHeight,\n findRowIdx\n } = useViewportRows({\n rawRows,\n groupBy,\n rowGrouper,\n rowHeight,\n clientHeight,\n scrollTop,\n expandedGroupIds,\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 summaryRows,\n isGroupRow\n });\n\n const hasGroups = groupBy.length > 0 && typeof rowGrouper === 'function';\n const minColIdx = hasGroups ? -1 : 0;\n const maxColIdx = columns.length - 1;\n const minRowIdx = -1; // change it to 0?\n const maxRowIdx = headerRowsCount + rows.length + summaryRowsCount - 2;\n const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition);\n const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition);\n\n /**\n * The identity of the wrapper function is stable so it won't break memoization\n */\n const selectRowLatest = useLatestFunc(selectRow);\n const selectAllRowsLatest = useLatestFunc(selectAllRows);\n const handleFormatterRowChangeLatest = useLatestFunc(updateRow);\n const selectViewportCellLatest = useLatestFunc(\n (row: R, column: CalculatedColumn<R, SR>, enableEditor: Maybe<boolean>) => {\n const rowIdx = rows.indexOf(row);\n selectCell({ rowIdx, idx: column.idx }, enableEditor);\n }\n );\n const selectGroupLatest = useLatestFunc((rowIdx: number) => {\n selectCell({ rowIdx, idx: -1 });\n });\n const selectHeaderCellLatest = useLatestFunc((idx: number) => {\n selectCell({ rowIdx: -1, idx });\n });\n const selectSummaryCellLatest = useLatestFunc(\n (summaryRow: SR, column: CalculatedColumn<R, SR>) => {\n const rowIdx = summaryRows!.indexOf(summaryRow) + headerRowsCount + rows.length - 1;\n selectCell({ rowIdx, idx: column.idx });\n }\n );\n const toggleGroupLatest = useLatestFunc(toggleGroup);\n\n /**\n * effects\n */\n useLayoutEffect(() => {\n if (\n !selectedCellIsWithinSelectionBounds ||\n (selectedPosition.idx === prevSelectedPosition.current.idx &&\n selectedPosition.rowIdx === prevSelectedPosition.current.rowIdx) ||\n selectedPosition.mode === 'EDIT'\n ) {\n prevSelectedPosition.current = selectedPosition;\n return;\n }\n prevSelectedPosition.current = selectedPosition;\n scrollToCell(selectedPosition);\n });\n\n useImperativeHandle(ref, () => ({\n element: gridRef.current,\n scrollToColumn(idx: number) {\n scrollToCell({ idx });\n },\n scrollToRow(rowIdx: number) {\n const { current } = gridRef;\n if (!current) return;\n current.scrollTo({\n top: getRowTop(rowIdx),\n behavior: 'smooth'\n });\n },\n selectCell,\n reInitSelectPosition() {\n setSelectedPosition(initialPosition);\n }\n }));\n\n /**\n * callbacks\n */\n const handleColumnResize = useCallback(\n (column: CalculatedColumn<R, SR>, width: number) => {\n setColumnWidths((columnWidths) => {\n const newColumnWidths = new Map(columnWidths);\n newColumnWidths.set(column.key, width);\n return newColumnWidths;\n });\n\n onColumnResize?.(column.idx, width);\n },\n [onColumnResize]\n );\n\n const setDraggedOverRowIdx = useCallback((rowIdx?: number) => {\n setOverRowIdx(rowIdx);\n latestDraggedOverRowIdx.current = rowIdx;\n }, []);\n\n /**\n * event handlers\n */\n function selectRow({ row, checked, isShiftClick }: SelectRowEvent<R>) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const newSelectedRows = new Set(selectedRows);\n if (isGroupRow(row)) {\n for (const childRow of row.childRows) {\n const rowKey = rowKeyGetter(childRow);\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n onSelectedRowsChange(newSelectedRows);\n return;\n }\n\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 if (isGroupRow(row)) continue;\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 selectAllRows(checked: boolean) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const newSelectedRows = new Set(selectedRows);\n\n for (const row of rawRows) {\n const rowKey = rowKeyGetter(row);\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n\n onSelectedRowsChange(newSelectedRows);\n }\n\n function toggleGroup(expandedGroupId: unknown) {\n if (!onExpandedGroupIdsChange) return;\n const newExpandedGroupIds = new Set(expandedGroupIds);\n if (newExpandedGroupIds.has(expandedGroupId)) {\n newExpandedGroupIds.delete(expandedGroupId);\n } else {\n newExpandedGroupIds.add(expandedGroupId);\n }\n onExpandedGroupIdsChange(newExpandedGroupIds);\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (!(event.target instanceof Element)) return;\n const isCellEvent = event.target.closest('.rdg-cell') !== null;\n const isRowEvent = hasGroups && event.target.matches('.rdg-row, .rdg-header-row');\n if (!isCellEvent && !isRowEvent) return;\n\n const { key, keyCode } = event;\n const { rowIdx } = selectedPosition;\n\n if (\n selectedCellIsWithinViewportBounds &&\n onPaste != null &&\n isCtrlKeyHeldDown(event) &&\n !isGroupRow(rows[rowIdx]) &&\n selectedPosition.mode === 'SELECT'\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 handleCopy();\n return;\n }\n if (keyCode === vKey) {\n handlePaste();\n return;\n }\n }\n\n if (isRowIdxWithinViewportBounds(rowIdx)) {\n const row = rows[rowIdx];\n\n if (\n isGroupRow(row) &&\n selectedPosition.idx === -1 &&\n // Collapse the current group row if it is focused and is in expanded state\n ((key === 'ArrowLeft' && row.isExpanded) ||\n // Expand the current group row if it is focused and is in collapsed state\n (key === 'ArrowRight' && !row.isExpanded))\n ) {\n event.preventDefault(); // Prevents scrolling\n toggleGroup(row.id);\n return;\n }\n }\n\n switch (event.key) {\n case 'Escape':\n setCopiedCell(null);\n closeEditor();\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 setScrollTop(scrollTop);\n setScrollLeft(scrollLeft);\n onScroll?.(event);\n }\n\n function getRawRowIdx(rowIdx: number) {\n return hasGroups ? rawRows.indexOf(rows[rowIdx] as R) : rowIdx;\n }\n\n function updateRow(rowIdx: number, row: R) {\n if (typeof onRowsChange !== 'function') return;\n const rawRowIdx = getRawRowIdx(rowIdx);\n if (row === rawRows[rawRowIdx]) return;\n const updatedRows = [...rawRows];\n updatedRows[rawRowIdx] = row;\n onRowsChange(updatedRows, {\n indexes: [rawRowIdx],\n column: columns[selectedPosition.idx]\n });\n }\n\n function commitEditorChanges() {\n if (\n columns[selectedPosition.idx]?.editor == null ||\n selectedPosition.mode === 'SELECT' ||\n selectedPosition.row === selectedPosition.originalRow\n ) {\n return;\n }\n\n updateRow(selectedPosition.rowIdx, selectedPosition.row);\n }\n\n function handleCopy() {\n const { idx, rowIdx } = selectedPosition;\n setCopiedCell({ row: rawRows[getRawRowIdx(rowIdx)], columnKey: columns[idx].key });\n }\n\n function handlePaste() {\n if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const targetRow = rawRows[getRawRowIdx(rowIdx)];\n\n const updatedTargetRow = onPaste({\n sourceRow: copiedCell.row,\n sourceColumnKey: copiedCell.columnKey,\n targetRow,\n targetColumnKey: columns[idx].key\n });\n\n updateRow(rowIdx, updatedTargetRow);\n }\n\n function handleCellInput(event: React.KeyboardEvent<HTMLDivElement>) {\n if (!selectedCellIsWithinViewportBounds) return;\n const row = rows[selectedPosition.rowIdx];\n if (isGroupRow(row)) return;\n const { key, shiftKey } = event;\n\n if (selectedPosition.mode === 'EDIT') {\n if (key === 'Enter') {\n // Custom editors can listen for the event and stop propagation to prevent commit\n commitEditorChanges();\n closeEditor();\n }\n return;\n }\n\n // Select the row on Shift + Space\n if (isSelectable && shiftKey && key === ' ') {\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const rowKey = rowKeyGetter(row);\n selectRow({ row, checked: !selectedRows.has(rowKey), isShiftClick: false });\n // do not scroll\n event.preventDefault();\n return;\n }\n\n const column = columns[selectedPosition.idx];\n column.editorOptions?.onCellKeyDown?.(event);\n if (event.isDefaultPrevented()) return;\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 function handleEditorRowChange(row: R, commitChanges?: boolean) {\n if (selectedPosition.mode === 'SELECT') return;\n if (commitChanges) {\n updateRow(selectedPosition.rowIdx, row);\n closeEditor();\n } else {\n setSelectedPosition((position) => ({ ...position, row }));\n }\n }\n\n function handleOnClose(commitChanges?: boolean) {\n if (commitChanges) {\n commitEditorChanges();\n }\n closeEditor();\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 isCellWithinViewportBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellEditable(position: Position): boolean {\n return (\n isCellWithinViewportBounds(position) &&\n isSelectedCellEditable({ columns, rows, selectedPosition: position, isGroupRow })\n );\n }\n\n function selectCell(position: Position, enableEditor?: Maybe<boolean>): void {\n if (!isCellWithinSelectionBounds(position)) return;\n commitEditorChanges();\n\n if (enableEditor && isCellEditable(position)) {\n const row = rows[position.rowIdx] as R;\n setSelectedPosition({ ...position, mode: 'EDIT', row, originalRow: row });\n } else if (\n selectedPosition.mode !== 'SELECT' ||\n selectedPosition.idx !== position.idx ||\n selectedPosition.rowIdx !== position.rowIdx\n ) {\n // Avoid re-renders if the selected cell state is the same\n // TODO: replace with a #record? https://github.com/microsoft/TypeScript/issues/39831\n setSelectedPosition({ ...position, mode: 'SELECT' });\n }\n }\n\n function closeEditor() {\n if (selectedPosition.mode === 'SELECT') return;\n setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, mode: 'SELECT' }));\n }\n\n function scrollToCell({ idx, rowIdx }: Partial<Position>): void {\n const { current } = gridRef;\n if (!current) return;\n\n if (typeof idx === 'number' && idx > lastFrozenColumnIndex) {\n rowIdx ??= selectedPosition.rowIdx;\n if (!isCellWithinSelectionBounds({ rowIdx, idx })) return;\n const { clientWidth } = current;\n const column = columns[idx];\n const { left, width } = columnMetrics.get(column)!;\n let right = left + width;\n\n const colSpan = getSelectedCellColSpan({\n rows,\n summaryRows,\n rowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n });\n\n if (colSpan !== undefined) {\n const { left, width } = columnMetrics.get(columns[column.idx + colSpan - 1])!;\n right = left + width;\n }\n\n const isCellAtLeftBoundary = left < scrollLeft + totalFrozenColumnWidth;\n const isCellAtRightBoundary = right > clientWidth + scrollLeft;\n if (isCellAtLeftBoundary) {\n current.scrollLeft = left - totalFrozenColumnWidth;\n } else if (isCellAtRightBoundary) {\n current.scrollLeft = right - clientWidth;\n }\n }\n\n if (typeof rowIdx === 'number' && isRowIdxWithinViewportBounds(rowIdx)) {\n const rowTop = getRowTop(rowIdx);\n const rowHeight = getRowHeight(rowIdx);\n if (rowTop < scrollTop) {\n // at top boundary, scroll to the row's top\n current.scrollTop = rowTop;\n } else if (rowTop + rowHeight > scrollTop + clientHeight) {\n // at bottom boundary, scroll the next row's top to the bottom of the viewport\n current.scrollTop = rowTop + rowHeight - clientHeight;\n }\n }\n }\n\n function getNextPosition(key: string, ctrlKey: boolean, shiftKey: boolean): Position {\n const { idx, rowIdx } = selectedPosition;\n const row = rows[rowIdx];\n const isRowSelected = selectedCellIsWithinSelectionBounds && idx === -1;\n\n // If a group row is focused, and it is collapsed, move to the parent group row (if there is one).\n if (\n key === 'ArrowLeft' &&\n isRowSelected &&\n isGroupRow(row) &&\n !row.isExpanded &&\n row.level !== 0\n ) {\n let parentRowIdx = -1;\n for (let i = selectedPosition.rowIdx - 1; i >= 0; i--) {\n const parentRow = rows[i];\n if (isGroupRow(parentRow) && parentRow.id === row.parentId) {\n parentRowIdx = i;\n break;\n }\n }\n if (parentRowIdx !== -1) {\n return { idx, rowIdx: parentRowIdx };\n }\n }\n\n switch (key) {\n case 'ArrowUp':\n return { idx, rowIdx: rowIdx - 1 };\n case 'ArrowDown':\n return { idx, rowIdx: rowIdx + 1 };\n case 'ArrowLeft':\n return { idx: idx - 1, rowIdx };\n case 'ArrowRight':\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: 0 };\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: rows.length - 1 };\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: React.KeyboardEvent<HTMLDivElement>) {\n if (selectedPosition.mode === 'EDIT') {\n const onNavigation =\n columns[selectedPosition.idx].editorOptions?.onNavigation ?? onEditorNavigation;\n if (!onNavigation(event)) return;\n }\n const { key, shiftKey } = event;\n let mode = cellNavigationMode;\n if (key === 'Tab') {\n // If we are in a position to leave the grid, stop editing but stay in that cell\n if (\n canExitGrid({\n shiftKey,\n cellNavigationMode,\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 mode = cellNavigationMode === 'NONE' ? 'CHANGE_ROW' : cellNavigationMode;\n }\n\n // Do not allow focus to leave\n event.preventDefault();\n\n const ctrlKey = isCtrlKeyHeldDown(event);\n const nextPosition = getNextPosition(key, ctrlKey, shiftKey);\n if (\n nextPosition.rowIdx === selectedPosition.rowIdx &&\n nextPosition.idx === selectedPosition.idx\n ) {\n return;\n }\n\n const nextSelectedCellPosition = getNextSelectedCellPosition({\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n minRowIdx,\n maxRowIdx,\n lastFrozenColumnIndex,\n cellNavigationMode: mode,\n currentPosition: selectedPosition,\n nextPosition,\n isCellWithinBounds: isCellWithinSelectionBounds,\n isGroupRow\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 getDragHandle(rowIdx: number) {\n if (\n selectedPosition.rowIdx !== rowIdx ||\n selectedPosition.mode === 'EDIT' ||\n hasGroups || // drag fill is not supported when grouping is enabled\n onFill == null\n ) {\n return;\n }\n\n return (\n <DragHandle\n rows={rawRows}\n columns={columns}\n selectedPosition={selectedPosition}\n isCellEditable={isCellEditable}\n latestDraggedOverRowIdx={latestDraggedOverRowIdx}\n onRowsChange={onRowsChange}\n onFill={onFill}\n setDragging={setDragging}\n setDraggedOverRowIdx={setDraggedOverRowIdx}\n />\n );\n }\n\n function getCellEditor(rowIdx: number) {\n const isOutsideEditableRows = Array.isArray(editableRowIdxs)\n ? !editableRowIdxs.includes(selectedPosition.rowIdx)\n : selectedPosition.rowIdx !== rowIdx;\n if (isOutsideEditableRows || 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 return (\n <EditCell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={selectedPosition.rowIdx}\n onRowChange={handleEditorRowChange}\n onClose={handleOnClose}\n />\n );\n }\n\n function getViewportRows() {\n const rowElements = [];\n let startRowIndex = 0;\n\n const { idx: selectedIdx, rowIdx: selectedRowIdx } = selectedPosition;\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 = columns[selectedIdx];\n // selectedIdx can be -1 if grouping is enabled\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\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 if (selectedRowIdx === rowIdx && !viewportColumns.includes(selectedColumn)) {\n // if the row is within the viewport and cell is not, add the selected column to viewport columns\n rowColumns =\n selectedIdx > viewportColumns[viewportColumns.length - 1].idx\n ? [...viewportColumns, selectedColumn]\n : [\n ...viewportColumns.slice(0, lastFrozenColumnIndex + 1),\n selectedColumn,\n ...viewportColumns.slice(lastFrozenColumnIndex + 1)\n ];\n }\n }\n\n const row = rows[rowIdx];\n const top = getRowTop(rowIdx) + headerRowHeight;\n if (isGroupRow(row)) {\n ({ startRowIndex } = row);\n const isGroupRowSelected =\n isSelectable && row.childRows.every((cr) => selectedRows.has(rowKeyGetter!(cr)));\n rowElements.push(\n <GroupRowRenderer\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-rowindex={headerRowsCount + startRowIndex + 1} // aria-rowindex is 1 based\n aria-selected={isSelectable ? isGroupRowSelected : undefined}\n key={row.id}\n id={row.id}\n groupKey={row.groupKey}\n viewportColumns={rowColumns}\n childRows={row.childRows}\n rowIdx={rowIdx}\n row={row}\n top={top}\n height={getRowHeight(rowIdx)}\n level={row.level}\n isExpanded={row.isExpanded}\n selectedCellIdx={selectedRowIdx === rowIdx ? selectedIdx : undefined}\n isRowSelected={isGroupRowSelected}\n selectGroup={selectGroupLatest}\n toggleGroup={toggleGroupLatest}\n />\n );\n continue;\n }\n\n startRowIndex++;\n let key;\n let isRowSelected = false;\n if (typeof rowKeyGetter === 'function') {\n key = rowKeyGetter(row);\n isRowSelected = selectedRows?.has(key) ?? false;\n } else {\n key = hasGroups ? startRowIndex : rowIdx;\n }\n\n rowElements.push(\n <RowRenderer\n aria-rowindex={headerRowsCount + (hasGroups ? startRowIndex : rowIdx) + 1} // aria-rowindex is 1 based\n aria-selected={isSelectable ? isRowSelected : undefined}\n key={key}\n rowIdx={rowIdx}\n row={row}\n viewportColumns={rowColumns}\n isRowSelected={isRowSelected}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n rowClass={rowClass}\n top={top}\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={lastFrozenColumnIndex}\n onRowChange={handleFormatterRowChangeLatest}\n selectCell={selectViewportCellLatest}\n selectedCellDragHandle={getDragHandle(rowIdx)}\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(initialPosition);\n setDraggedOverRowIdx(undefined);\n }\n\n if (\n selectedPosition.mode === 'EDIT' &&\n rows[selectedPosition.rowIdx] !== selectedPosition.originalRow\n ) {\n // Discard changes if rows are updated from outside\n closeEditor();\n }\n\n return (\n <div\n role={hasGroups ? 'treegrid' : 'grid'}\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={headerRowsCount + rowsCount + summaryRowsCount}\n className={clsx(rootClassname, { [viewportDraggingClassname]: isDragging }, className)}\n style={\n {\n ...style,\n '--header-row-height': `${headerRowHeight}px`,\n '--row-width': `${totalColumnWidth}px`,\n '--summary-row-height': `${summaryRowHeight}px`,\n ...layoutCssVars\n } as unknown as React.CSSProperties\n }\n ref={gridRef}\n onScroll={handleScroll}\n onKeyDown={handleKeyDown}\n data-testid={testId}\n >\n <HeaderRow\n columns={viewportColumns}\n onColumnResize={handleColumnResize}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={selectAllRowsLatest}\n sortColumns={sortColumns}\n onSortColumnsChange={onSortColumnsChange}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isHeaderRowSelected ? selectedPosition.idx : undefined}\n selectCell={selectHeaderCellLatest}\n shouldFocusGrid={!selectedCellIsWithinSelectionBounds}\n />\n {rows.length === 0 && noRowsFallback ? (\n noRowsFallback\n ) : (\n <>\n <div style={{ height: max(totalRowHeight, clientHeight) }} />\n <RowSelectionChangeProvider value={selectRowLatest}>\n {getViewportRows()}\n </RowSelectionChangeProvider>\n {summaryRows?.map((row, rowIdx) => {\n const isSummaryRowSelected =\n selectedPosition.rowIdx === headerRowsCount + rows.length + rowIdx - 1;\n return (\n <SummaryRow\n aria-rowindex={headerRowsCount + rowsCount + rowIdx + 1}\n key={rowIdx}\n rowIdx={rowIdx}\n row={row}\n bottom={summaryRowHeight * (summaryRows.length - 1 - rowIdx)}\n viewportColumns={viewportColumns}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n selectCell={selectSummaryCellLatest}\n />\n );\n })}\n </>\n )}\n </div>\n );\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 { css } from '@linaria/core';\nimport type { EditorProps } from '../types';\n\nconst textEditor = css`\n appearance: none;\n\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 0px 6px 0 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--color);\n background-color: var(--background-color);\n\n font-family: inherit;\n font-size: var(--font-size);\n\n &:focus {\n border-color: var(--selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n`;\n\nexport const textEditorClassname = `rdg-text-editor ${textEditor}`;\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}: EditorProps<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)}\n />\n );\n}\n"],"names":["cell","cellClassname","cellFrozen","cellFrozenClassname","cellFrozenLast","cellFrozenLastClassname","root","rootClassname","viewportDragging","viewportDraggingClassname","row","rowClassname","useLayoutEffect","window","useEffect","useOriginalLayoutEffect","useFocusRef","isSelected","ref","useRef","current","focus","preventScroll","tabIndex","checkboxLabel","checkboxLabelClassname","checkboxInput","checkboxInputClassname","checkbox","checkboxClassname","checkboxLabelDisabled","checkboxLabelDisabledClassname","SelectCellFormatter","value","isCellSelected","disabled","onClick","onChange","ariaLabel","ariaLabelledBy","handleChange","e","target","checked","nativeEvent","shiftKey","_jsxs","className","clsx","children","_jsx","type","ValueFormatter","props","_Fragment","column","key","groupCellContent","groupCellContentClassname","caret","caretClassname","ToggleGroupFormatter","groupKey","isExpanded","toggleGroup","handleKeyDown","d","onKeyDown","viewBox","width","height","RowSelectionContext","createContext","undefined","RowSelectionProvider","Provider","RowSelectionChangeContext","RowSelectionChangeProvider","useRowSelection","rowSelectionContext","useContext","rowSelectionChangeContext","Error","getColSpan","lastFrozenColumnIndex","args","colSpan","Number","isInteger","frozen","idx","stopPropagation","event","nonInputKeys","Set","isCtrlKeyHeldDown","ctrlKey","metaKey","isDefaultCellInput","has","onEditorNavigation","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","matches","isSelectedCellEditable","selectedPosition","columns","rows","isGroupRow","rowIdx","isCellEditable","editor","rowGroup","editable","getSelectedCellColSpan","summaryRows","length","getNextSelectedCellPosition","cellNavigationMode","colSpanColumns","minRowIdx","maxRowIdx","currentPosition","currentIdx","nextPosition","isCellWithinBounds","nextIdx","nextRowIdx","setColSpan","moveRight","colIdx","columnsCount","isAfterLastColumn","isBeforeFirstColumn","isLastRow","isFirstRow","canExitGrid","maxColIdx","atLastCellInRow","atFirstCellInRow","atLastRow","atFirstRow","min","max","floor","sign","Math","assertIsValidKeyGetter","keyGetter","getCellStyle","gridColumnStart","gridColumnEnd","left","getCellClassname","extraClasses","isLastFrozenColumn","SELECT_COLUMN_KEY","SelectFormatter","isRowSelected","onRowSelectionChange","isShiftClick","SelectGroupFormatter","SelectColumn","name","maxWidth","resizable","sortable","headerRenderer","allRowsSelected","onAllRowsSelectionChange","formatter","groupFormatter","useCalculatedColumns","rawColumns","columnWidths","viewportWidth","scrollLeft","defaultColumnOptions","rawGroupBy","enableVirtualization","minColumnWidth","minWidth","defaultFormatter","defaultSortable","defaultResizable","groupBy","useMemo","map","rawColumn","includes","sort","aKey","frozenA","bKey","frozenB","indexOf","forEach","push","layoutCssVars","totalColumnWidth","totalFrozenColumnWidth","columnMetrics","Map","templateColumns","allocatedWidth","unassignedColumnsCount","getSpecifiedWidth","clampColumnWidth","set","unallocatedWidth","unallocatedColumnWidth","columnMetric","get","i","colOverscanStartIdx","colOverscanEndIdx","viewportLeft","viewportRight","lastColIdx","firstUnfrozenColumnIdx","colVisibleStartIdx","colVisibleEndIdx","test","parseInt","useCombinedRefs","refs","useCallback","handle","useGridDimensions","gridRef","gridWidth","setGridWidth","useState","gridHeight","setGridHeight","ResizeObserver","resizeObserver","clientWidth","clientHeight","devicePixelRatio","observe","disconnect","useLatestFunc","fn","useRovingCellRef","isChildFocused","forceRender","onFocus","isFocused","rowSelected","rowSelectedClassname","useRovingRowRef","selectedCellIdx","useViewportColumns","rowOverscanStartIdx","rowOverscanEndIdx","startIdx","updateStartIdx","viewportColumns","isReadonlyArray","arr","Array","isArray","useViewportRows","rawRows","rowHeight","scrollTop","rowGrouper","expandedGroupIds","groupedRows","rowsCount","groupRows","groupByKey","remainingGroupByKeys","startRowIndex","groupRowsCount","groups","childRows","Object","entries","childGroups","childRowsCount","allGroupRows","flattenedRows","expandGroup","parentId","level","keys","posInSet","id","groupRow","setSize","add","totalRowHeight","getRowTop","getRowHeight","findRowIdx","offset","rowPositions","currentRowHeight","position","top","validateRowIdx","start","end","middle","currentOffset","overscanThreshold","rowVisibleStartIdx","rowVisibleEndIdx","headerSortCell","headerSortCellClassname","headerSortName","headerSortNameClassname","arrow","arrowClassname","SortableHeaderCell","onSort","sortDirection","priority","preventDefault","handleClick","onMouseDown","cellResizable","cellResizableClassname","HeaderCell","onColumnResize","sortColumns","onSortColumnsChange","selectCell","shouldFocusGrid","sortIndex","findIndex","columnKey","sortColumn","direction","ariaSort","headerCellClass","onPointerDown","pointerType","buttons","currentTarget","pointerId","right","getBoundingClientRect","clientX","onPointerMove","onLostPointerCapture","removeEventListener","setPointerCapture","addEventListener","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","handleFocus","getCell","role","style","headerRow","headerRowClassname","HeaderRow","cells","index","memo","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","isCopied","isDraggedOver","dragHandle","onRowClick","onRowDoubleClick","onRowChange","cellClass","selectCellWrapper","openEditor","editorOptions","editOnClick","handleContextMenu","handleDoubleClick","onDoubleClick","onContextMenu","Row","copiedCellIdx","draggedOverCellIdx","selectedCellEditor","selectedCellDragHandle","rowClass","setDraggedOverRowIdx","onMouseEnter","rowRef","rovingClassName","handleRowChange","newRow","handleDragEnter","RowWithRef","forwardRef","GroupCell","groupColumnIndex","toggleGroupWrapper","isLevelMatching","cursor","groupRowClassname","GroupedRow","selectGroup","handleSelectGroup","SummaryCell","summaryFormatter","SummaryFormatter","summaryCellClass","summaryRow","summaryRowBorderClassname","summaryRowClassname","SummaryRow","bottom","ariaRowIndex","cellEditing","EditCell","onClose","frameRequestRef","commitOnOutsideClick","commitOnOutsideMouseDown","cancelFrameRequest","cancelAnimationFrame","onWindowCaptureMouseDown","requestAnimationFrame","capture","renderFormatter","onMouseDownCapture","cellDragHandle","cellDragHandleClassname","DragHandle","latestDraggedOverRowIdx","onRowsChange","onFill","setDragging","handleMouseDown","onMouseOver","onMouseUp","handleDragEnd","overRowIdx","endRowIndex","updateRows","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","updatedRow","targetRow","initialPosition","mode","DataGrid","rowKeyGetter","headerRowHeight","rawHeaderRowHeight","summaryRowHeight","rawSummaryRowHeight","selectedRows","onSelectedRowsChange","onExpandedGroupIdsChange","onScroll","onPaste","rawCellNavigationMode","rowRenderer","noRowsFallback","ariaDescribedBy","testId","editableRowIdxs","RowRenderer","setScrollTop","setScrollLeft","setColumnWidths","setSelectedPosition","copiedCell","setCopiedCell","isDragging","draggedOverRowIdx","setOverRowIdx","prevSelectedPosition","lastSelectedRowIdx","headerRowsCount","summaryRowsCount","isSelectable","isHeaderRowSelected","size","every","hasGroups","minColIdx","selectedCellIsWithinSelectionBounds","isCellWithinSelectionBounds","selectedCellIsWithinViewportBounds","isCellWithinViewportBounds","selectRowLatest","selectRow","selectAllRowsLatest","selectAllRows","handleFormatterRowChangeLatest","updateRow","selectViewportCellLatest","enableEditor","selectGroupLatest","selectHeaderCellLatest","selectSummaryCellLatest","toggleGroupLatest","scrollToCell","useImperativeHandle","element","scrollToColumn","scrollToRow","scrollTo","behavior","reInitSelectPosition","handleColumnResize","newColumnWidths","newSelectedRows","childRow","rowKey","delete","previousRowIdx","step","expandedGroupId","newExpandedGroupIds","Element","isCellEvent","closest","isRowEvent","keyCode","cKey","vKey","handleCopy","handlePaste","isRowIdxWithinViewportBounds","closeEditor","navigate","handleCellInput","handleScroll","getRawRowIdx","rawRowIdx","commitEditorChanges","originalRow","updatedTargetRow","sourceColumnKey","targetColumnKey","onCellKeyDown","isDefaultPrevented","handleEditorRowChange","commitChanges","handleOnClose","isColIdxWithinSelectionBounds","isCellAtLeftBoundary","isCellAtRightBoundary","rowTop","getNextPosition","parentRowIdx","parentRow","nextRowY","onNavigation","nextSelectedCellPosition","getDraggedOverCellIdx","currentRowIdx","getDragHandle","getCellEditor","isOutsideEditableRows","getViewportRows","rowElements","selectedIdx","selectedRowIdx","viewportRowIdx","isRowOutsideViewport","rowColumns","selectedColumn","slice","isGroupRowSelected","cr","GroupRowRenderer","c","isSummaryRowSelected","textEditor","textEditorClassname","autoFocusAndSelect","input","select","TextEditor","onBlur"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.cjs","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/style/cell.ts","../src/style/core.ts","../src/style/row.ts","../src/hooks/useLayoutEffect.ts","../src/hooks/useFocusRef.ts","../src/formatters/SelectCellFormatter.tsx","../src/formatters/ValueFormatter.tsx","../src/formatters/ToggleGroupFormatter.tsx","../src/hooks/useRowSelection.ts","../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/selectedCellUtils.ts","../src/utils/index.ts","../src/Columns.tsx","../src/hooks/useCalculatedColumns.ts","../src/hooks/useCombinedRefs.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingCellRef.ts","../src/hooks/useRovingRowRef.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/headerCells/SortableHeaderCell.tsx","../src/HeaderCell.tsx","../src/HeaderRow.tsx","../src/Cell.tsx","../src/Row.tsx","../src/GroupCell.tsx","../src/GroupRow.tsx","../src/SummaryCell.tsx","../src/SummaryRow.tsx","../src/EditCell.tsx","../src/DragHandle.tsx","../src/DataGrid.tsx","../src/editors/TextEditor.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { css } from '@linaria/core';\n\nexport const cell = css`\n contain: strict;\n contain: size layout style paint;\n padding: 0 8px;\n border-right: 1px solid var(--border-color);\n border-bottom: 1px solid var(--border-color);\n background-color: inherit;\n\n white-space: nowrap;\n overflow: hidden;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n box-shadow: inset 0 0 0 2px var(--selection-color);\n }\n`;\n\nexport const cellClassname = `rdg-cell ${cell}`;\n\nconst cellFrozen = css`\n position: sticky;\n /* Should have a higher value than 0 to show up above unfrozen cells */\n z-index: 1;\n`;\n\nexport const cellFrozenClassname = `rdg-cell-frozen ${cellFrozen}`;\n\nexport const cellFrozenLast = css`\n box-shadow: 2px 0 5px -2px rgba(136, 136, 136, 0.3);\n`;\n\nexport const cellFrozenLastClassname = `rdg-cell-frozen-last ${cellFrozenLast}`;\n","import { css } from '@linaria/core';\nimport { row } from './row';\n\nconst lightTheme = `\n --color: #000;\n --border-color: #ddd;\n --summary-border-color: #aaa;\n --background-color: hsl(0deg 0% 100%);\n --header-background-color: hsl(0deg 0% 97.5%);\n --row-hover-background-color: hsl(0deg 0% 96%);\n --row-selected-background-color: hsl(207deg 76% 92%);\n --row-selected-hover-background-color: hsl(207deg 76% 88%);\n\n --checkbox-color: hsl(207deg 100% 29%);\n --checkbox-focus-color: hsl(207deg 100% 69%);\n --checkbox-disabled-border-color: #ccc;\n --checkbox-disabled-background-color: #ddd;\n`;\n\nconst darkTheme = `\n --color: #ddd;\n --border-color: #444;\n --summary-border-color: #555;\n --background-color: hsl(0deg 0% 13%);\n --header-background-color: hsl(0deg 0% 10.5%);\n --row-hover-background-color: hsl(0deg 0% 9%);\n --row-selected-background-color: hsl(207deg 76% 42%);\n --row-selected-hover-background-color: hsl(207deg 76% 38%);\n\n --checkbox-color: hsl(207deg 100% 79%);\n --checkbox-focus-color: hsl(207deg 100% 89%);\n --checkbox-disabled-border-color: #000;\n --checkbox-disabled-background-color: #333;\n`;\n\nconst root = css`\n ${lightTheme}\n --selection-color: #66afe9;\n --font-size: 14px;\n\n color-scheme: var(--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 components. */\n contain: strict;\n contain: size layout style paint;\n content-visibility: auto;\n height: 350px;\n border: 1px solid var(--border-color);\n box-sizing: border-box;\n overflow: auto;\n user-select: none;\n background-color: var(--background-color);\n color: var(--color);\n font-size: var(--font-size);\n direction: ltr;\n\n /* set stacking context in safari */\n @supports not (contain: strict) {\n position: relative;\n z-index: 0;\n }\n\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n\n &.rdg-dark {\n --color-scheme: dark;\n ${darkTheme}\n }\n\n &.rdg-light {\n --color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n ${darkTheme}\n }\n }\n`;\n\nexport const rootClassname = `rdg ${root}`;\n\nconst viewportDragging = css`\n &.${row} {\n cursor: move;\n }\n`;\n\nexport const viewportDraggingClassname = `rdg-viewport-dragging ${viewportDragging}`;\n","import { css } from '@linaria/core';\n\nexport const row = css`\n contain: strict;\n contain: size layout style paint;\n display: grid;\n grid-template-rows: var(--row-height);\n grid-template-columns: var(--template-columns);\n position: absolute;\n left: 0;\n width: var(--row-width);\n height: var(--row-height); /* needed on Firefox */\n line-height: var(--row-height);\n background-color: var(--background-color);\n\n &:hover {\n background-color: var(--row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--row-selected-background-color);\n\n &:hover {\n background-color: var(--row-selected-hover-background-color);\n }\n }\n`;\n\nexport const rowClassname = `rdg-row ${row}`;\n","// eslint-disable-next-line 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 { useLayoutEffect } from './useLayoutEffect';\n\nexport function useFocusRef<T extends HTMLOrSVGElement>(isSelected: boolean) {\n const ref = useRef<T>(null);\n\n useLayoutEffect(() => {\n if (!isSelected) return;\n ref.current?.focus({ preventScroll: true });\n }, [isSelected]);\n\n return {\n ref,\n tabIndex: isSelected ? 0 : -1\n };\n}\n","import clsx from 'clsx';\nimport { css } from '@linaria/core';\nimport { useFocusRef } from '../hooks/useFocusRef';\n\nconst checkboxLabel = css`\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n inset: 0;\n margin-right: 1px; /* align checkbox in row group cell */\n`;\n\nconst checkboxLabelClassname = `rdg-checkbox-label ${checkboxLabel}`;\n\nconst checkboxInput = css`\n all: unset;\n width: 0;\n margin: 0;\n`;\n\nconst checkboxInputClassname = `rdg-checkbox-input ${checkboxInput}`;\n\nconst checkbox = css`\n content: '';\n width: 20px;\n height: 20px;\n border: 2px solid var(--border-color);\n background-color: var(--background-color);\n\n .${checkboxInput}:checked + & {\n background-color: var(--checkbox-color);\n box-shadow: inset 0px 0px 0px 4px var(--background-color);\n }\n\n .${checkboxInput}:focus + & {\n border-color: var(--checkbox-focus-color);\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox ${checkbox}`;\n\nconst checkboxLabelDisabled = css`\n cursor: default;\n\n .${checkbox} {\n border-color: var(--checkbox-disabled-border-color);\n background-color: var(--checkbox-disabled-background-color);\n }\n`;\n\nconst checkboxLabelDisabledClassname = `rdg-checkbox-label-disabled ${checkboxLabelDisabled}`;\n\ntype SharedInputProps = Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'disabled' | 'onClick' | 'aria-label' | 'aria-labelledby'\n>;\n\ninterface SelectCellFormatterProps extends SharedInputProps {\n isCellSelected: boolean;\n value: boolean;\n onChange: (value: boolean, isShiftClick: boolean) => void;\n}\n\nexport function SelectCellFormatter({\n value,\n isCellSelected,\n disabled,\n onClick,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n}: SelectCellFormatterProps) {\n const { ref, tabIndex } = useFocusRef<HTMLInputElement>(isCellSelected);\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <label className={clsx(checkboxLabelClassname, { [checkboxLabelDisabledClassname]: disabled })}>\n <input\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={ref}\n type=\"checkbox\"\n tabIndex={tabIndex}\n className={checkboxInputClassname}\n disabled={disabled}\n checked={value}\n onChange={handleChange}\n onClick={onClick}\n />\n <div className={checkboxClassname} />\n </label>\n );\n}\n","import type { FormatterProps } from '../types';\n\nexport function ValueFormatter<R, SR>(props: FormatterProps<R, SR>) {\n try {\n return <>{props.row[props.column.key as keyof R]}</>;\n } catch {\n return null;\n }\n}\n","import { css } from '@linaria/core';\nimport type { GroupFormatterProps } from '../types';\nimport { useFocusRef } from '../hooks/useFocusRef';\n\nconst groupCellContent = css`\n outline: none;\n`;\n\nconst groupCellContentClassname = `rdg-group-cell-content ${groupCellContent}`;\n\nconst caret = css`\n margin-left: 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\nconst caretClassname = `rdg-caret ${caret}`;\n\nexport function ToggleGroupFormatter<R, SR>({\n groupKey,\n isExpanded,\n isCellSelected,\n toggleGroup\n}: GroupFormatterProps<R, SR>) {\n const { ref, tabIndex } = useFocusRef<HTMLSpanElement>(isCellSelected);\n\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\n ref={ref}\n className={groupCellContentClassname}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {groupKey}\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 { createContext, useContext } from 'react';\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 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","export function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\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 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 target.matches(\n '.rdg-editor-container > :only-child, .rdg-editor-container > label:only-child > :only-child'\n );\n }\n return false;\n}\n","import type { CalculatedColumn, Position, GroupRow, CellNavigationMode, Maybe } from '../types';\nimport { getColSpan } from './colSpanUtils';\n\ninterface IsSelectedCellEditableOpts<R, SR> {\n selectedPosition: Position;\n columns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function isSelectedCellEditable<R, SR>({\n selectedPosition,\n columns,\n rows,\n isGroupRow\n}: IsSelectedCellEditableOpts<R, SR>): boolean {\n const column = columns[selectedPosition.idx];\n const row = rows[selectedPosition.rowIdx];\n return !isGroupRow(row) && isCellEditable(column, row);\n}\n\nexport function isCellEditable<R, SR>(column: CalculatedColumn<R, SR>, row: R): boolean {\n return (\n column.editor != null &&\n !column.rowGroup &&\n (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false\n );\n}\n\ninterface GetNextSelectedCellPositionOpts<R, SR> {\n cellNavigationMode: CellNavigationMode;\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n summaryRows: Maybe<readonly SR[]>;\n minRowIdx: number;\n maxRowIdx: number;\n currentPosition: Position;\n nextPosition: Position;\n lastFrozenColumnIndex: number;\n isCellWithinBounds: (position: Position) => boolean;\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function getSelectedCellColSpan<R, SR>({\n rows,\n summaryRows,\n rowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n}: Pick<\n GetNextSelectedCellPositionOpts<R, SR>,\n 'rows' | 'summaryRows' | 'isGroupRow' | 'lastFrozenColumnIndex'\n> & {\n rowIdx: number;\n column: CalculatedColumn<R, SR>;\n}) {\n if (rowIdx === -1) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n }\n\n if (rowIdx >= 0 && rowIdx < rows.length) {\n const row = rows[rowIdx];\n if (!isGroupRow(row)) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n }\n return undefined;\n }\n\n if (summaryRows) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: summaryRows[rowIdx - rows.length]\n });\n }\n\n return undefined;\n}\n\nexport function getNextSelectedCellPosition<R, SR>({\n cellNavigationMode,\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n minRowIdx,\n maxRowIdx,\n currentPosition: { idx: currentIdx },\n nextPosition,\n lastFrozenColumnIndex,\n isCellWithinBounds,\n isGroupRow\n}: GetNextSelectedCellPositionOpts<R, SR>): Position {\n let { idx: nextIdx, rowIdx: nextRowIdx } = nextPosition;\n\n const setColSpan = (moveRight: boolean) => {\n if (nextRowIdx >= 0 && nextRowIdx < rows.length) {\n const row = rows[nextRowIdx];\n if (isGroupRow(row)) return;\n }\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 summaryRows,\n rowIdx: nextRowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n });\n\n if (colSpan && nextIdx > colIdx && nextIdx < colSpan + colIdx) {\n nextIdx = colIdx + (moveRight ? colSpan : 0);\n break;\n }\n }\n };\n\n if (isCellWithinBounds(nextPosition)) {\n setColSpan(nextIdx - currentIdx > 0);\n }\n\n if (cellNavigationMode !== 'NONE') {\n const columnsCount = columns.length;\n const isAfterLastColumn = nextIdx === columnsCount;\n const isBeforeFirstColumn = nextIdx === -1;\n\n if (isAfterLastColumn) {\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isLastRow = nextRowIdx === maxRowIdx;\n if (!isLastRow) {\n nextIdx = 0;\n nextRowIdx += 1;\n }\n } else {\n nextIdx = 0;\n }\n } else if (isBeforeFirstColumn) {\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isFirstRow = nextRowIdx === minRowIdx;\n if (!isFirstRow) {\n nextRowIdx -= 1;\n nextIdx = columnsCount - 1;\n }\n } else {\n nextIdx = columnsCount - 1;\n }\n setColSpan(false);\n }\n }\n\n return { idx: nextIdx, rowIdx: nextRowIdx };\n}\n\ninterface CanExitGridOpts {\n cellNavigationMode: CellNavigationMode;\n maxColIdx: number;\n minRowIdx: number;\n maxRowIdx: number;\n selectedPosition: Position;\n shiftKey: boolean;\n}\n\nexport function canExitGrid({\n cellNavigationMode,\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition: { rowIdx, idx },\n shiftKey\n}: CanExitGridOpts): boolean {\n // When the cellNavigationMode is 'none' or 'changeRow', you can exit the grid if you're at the first or last cell of the grid\n // When the cellNavigationMode is 'loopOverRow', there is no logical exit point so you can't exit the grid\n if (cellNavigationMode === 'NONE' || cellNavigationMode === 'CHANGE_ROW') {\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\n return false;\n}\n","import clsx from 'clsx';\n\nimport type { CalculatedColumn } from '../types';\nimport { cellClassname, cellFrozenClassname, cellFrozenLastClassname } from '../style';\n\nexport * from './colSpanUtils';\nexport * from './domUtils';\nexport * from './keyboardUtils';\nexport * from './selectedCellUtils';\n\nexport const { min, max, floor, sign } = 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 getCellStyle<R, SR>(\n column: CalculatedColumn<R, SR>,\n colSpan?: number\n): React.CSSProperties {\n return {\n gridColumnStart: column.idx + 1,\n gridColumnEnd: colSpan !== undefined ? `span ${colSpan}` : undefined,\n left: column.frozen ? `var(--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 [cellFrozenLastClassname]: column.isLastFrozenColumn\n },\n ...extraClasses\n );\n}\n","import { SelectCellFormatter } from './formatters';\nimport { useRowSelection } from './hooks/useRowSelection';\nimport type { Column, FormatterProps, GroupFormatterProps } from './types';\nimport { stopPropagation } from './utils';\n\nexport const SELECT_COLUMN_KEY = 'select-row';\n\nfunction SelectFormatter(props: FormatterProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select\"\n isCellSelected={props.isCellSelected}\n value={isRowSelected}\n onClick={stopPropagation}\n onChange={(checked, isShiftClick) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick });\n }}\n />\n );\n}\n\nfunction SelectGroupFormatter(props: GroupFormatterProps<unknown>) {\n const [isRowSelected, onRowSelectionChange] = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select Group\"\n isCellSelected={props.isCellSelected}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick: false });\n }}\n // Stop propagation to prevent row selection\n onClick={stopPropagation}\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 maxWidth: 35,\n resizable: false,\n sortable: false,\n frozen: true,\n headerRenderer(props) {\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n isCellSelected={props.isCellSelected}\n value={props.allRowsSelected}\n onChange={props.onAllRowsSelectionChange}\n // Stop propagation to prevent row selection\n onClick={stopPropagation}\n />\n );\n },\n formatter: SelectFormatter,\n groupFormatter: SelectGroupFormatter\n};\n","import { useMemo } from 'react';\n\nimport type { CalculatedColumn, Column, Maybe } from '../types';\nimport type { DataGridProps } from '../DataGrid';\nimport { ValueFormatter, ToggleGroupFormatter } from '../formatters';\nimport { SELECT_COLUMN_KEY } from '../Columns';\nimport { floor, max, min } from '../utils';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\ninterface ColumnMetric {\n width: number;\n left: number;\n}\n\ninterface CalculatedColumnsArgs<R, SR> extends Pick<DataGridProps<R, SR>, 'defaultColumnOptions'> {\n rawColumns: readonly Column<R, SR>[];\n rawGroupBy: Maybe<readonly string[]>;\n viewportWidth: number;\n scrollLeft: number;\n columnWidths: ReadonlyMap<string, number>;\n enableVirtualization: boolean;\n}\n\nexport function useCalculatedColumns<R, SR>({\n rawColumns,\n columnWidths,\n viewportWidth,\n scrollLeft,\n defaultColumnOptions,\n rawGroupBy,\n enableVirtualization\n}: CalculatedColumnsArgs<R, SR>) {\n const minColumnWidth = defaultColumnOptions?.minWidth ?? 80;\n const defaultFormatter = defaultColumnOptions?.formatter ?? ValueFormatter;\n const defaultSortable = defaultColumnOptions?.sortable ?? false;\n const defaultResizable = defaultColumnOptions?.resizable ?? false;\n\n const { columns, colSpanColumns, lastFrozenColumnIndex, groupBy } = useMemo((): {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n lastFrozenColumnIndex: number;\n groupBy: readonly string[];\n } => {\n // Filter rawGroupBy and ignore keys that do not match the columns prop\n const groupBy: string[] = [];\n let lastFrozenColumnIndex = -1;\n\n const columns = rawColumns.map((rawColumn) => {\n const rowGroup = rawGroupBy?.includes(rawColumn.key) ?? false;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const frozen = rowGroup || rawColumn.frozen || false;\n\n const column: Mutable<CalculatedColumn<R, SR>> = {\n ...rawColumn,\n idx: 0,\n frozen,\n isLastFrozenColumn: false,\n rowGroup,\n sortable: rawColumn.sortable ?? defaultSortable,\n resizable: rawColumn.resizable ?? defaultResizable,\n formatter: rawColumn.formatter ?? defaultFormatter\n };\n\n if (rowGroup) {\n column.groupFormatter ??= ToggleGroupFormatter;\n }\n\n if (frozen) {\n lastFrozenColumnIndex++;\n }\n\n return column;\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 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 frozen columns third:\n if (frozenA) {\n if (frozenB) return 0;\n return -1;\n }\n if (frozenB) return 1;\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\n if (column.rowGroup) {\n groupBy.push(column.key);\n }\n\n if (column.colSpan != null) {\n colSpanColumns.push(column);\n }\n });\n\n if (lastFrozenColumnIndex !== -1) {\n columns[lastFrozenColumnIndex].isLastFrozenColumn = true;\n }\n\n return {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n groupBy\n };\n }, [rawColumns, defaultFormatter, defaultResizable, defaultSortable, rawGroupBy]);\n\n const { layoutCssVars, totalColumnWidth, totalFrozenColumnWidth, columnMetrics } = useMemo((): {\n layoutCssVars: Readonly<Record<string, string>>;\n totalColumnWidth: number;\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 totalColumnWidth = 0;\n let totalFrozenColumnWidth = 0;\n let templateColumns = '';\n let allocatedWidth = 0;\n let unassignedColumnsCount = 0;\n\n for (const column of columns) {\n let width = getSpecifiedWidth(column, columnWidths, viewportWidth);\n\n if (width === undefined) {\n unassignedColumnsCount++;\n } else {\n width = clampColumnWidth(width, column, minColumnWidth);\n allocatedWidth += width;\n columnMetrics.set(column, { width, left: 0 });\n }\n }\n\n const unallocatedWidth = viewportWidth - allocatedWidth;\n const unallocatedColumnWidth = unallocatedWidth / unassignedColumnsCount;\n\n for (const column of columns) {\n let width: number;\n if (columnMetrics.has(column)) {\n const columnMetric = columnMetrics.get(column)!;\n columnMetric.left = left;\n ({ width } = columnMetric);\n } else {\n width = clampColumnWidth(unallocatedColumnWidth, column, minColumnWidth);\n columnMetrics.set(column, { width, left });\n }\n totalColumnWidth += width;\n left += width;\n templateColumns += `${width}px `;\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 '--template-columns': templateColumns\n };\n\n for (let i = 0; i <= lastFrozenColumnIndex; i++) {\n const column = columns[i];\n layoutCssVars[`--frozen-left-${column.idx}`] = `${columnMetrics.get(column)!.left}px`;\n }\n\n return { layoutCssVars, totalColumnWidth, totalFrozenColumnWidth, columnMetrics };\n }, [columnWidths, columns, viewportWidth, minColumnWidth, 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 layoutCssVars,\n columnMetrics,\n totalColumnWidth,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth,\n groupBy\n };\n}\n\nfunction getSpecifiedWidth<R, SR>(\n { key, width }: Column<R, SR>,\n columnWidths: ReadonlyMap<string, number>,\n viewportWidth: number\n): number | undefined {\n if (columnWidths.has(key)) {\n // Use the resized width if available\n return columnWidths.get(key);\n }\n if (typeof width === 'number') {\n return width;\n }\n if (typeof width === 'string' && /^\\d+%$/.test(width)) {\n return floor((viewportWidth * parseInt(width, 10)) / 100);\n }\n return undefined;\n}\n\nfunction clampColumnWidth<R, SR>(\n width: number,\n { minWidth, maxWidth }: Column<R, SR>,\n minColumnWidth: number\n): number {\n width = max(width, minWidth ?? minColumnWidth);\n\n if (typeof maxWidth === 'number') {\n return min(width, maxWidth);\n }\n\n return width;\n}\n","import { useCallback } from 'react';\n\nexport function useCombinedRefs<T>(...refs: readonly React.Ref<T>[]) {\n return useCallback(\n (handle: T | null) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(handle);\n } else if (ref !== null && 'current' in ref) {\n // @ts-expect-error: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n ref.current = handle;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n );\n}\n","import { useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\n\nexport function useGridDimensions(): [\n ref: React.RefObject<HTMLDivElement>,\n width: number,\n height: number\n] {\n const gridRef = useRef<HTMLDivElement>(null);\n const [gridWidth, setGridWidth] = useState(1);\n const [gridHeight, setGridHeight] = useState(1);\n\n useLayoutEffect(() => {\n const { ResizeObserver } = window;\n\n // don't break in Node.js (SSR), jest/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 resizeObserver = new ResizeObserver(() => {\n // Get dimensions without scrollbars.\n // The dimensions given by the callback entries in Firefox do not substract the scrollbar sizes.\n const { clientWidth, clientHeight } = gridRef.current!;\n // TODO: remove once fixed upstream\n // we reduce width by 1px here to avoid layout issues in Chrome\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1206298\n setGridWidth(clientWidth - (devicePixelRatio % 1 === 0 ? 0 : 1));\n setGridHeight(clientHeight);\n });\n\n resizeObserver.observe(gridRef.current!);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return [gridRef, gridWidth, gridHeight];\n}\n","import { useRef, useEffect, useCallback } from 'react';\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 (...args: any[]) => any>(fn: T) {\n const ref = useRef(fn);\n\n useEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: Parameters<T>) => {\n ref.current(...args);\n }, []);\n}\n","import { useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\n\n// https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex\nexport function useRovingCellRef(isSelected: boolean) {\n const ref = useRef<HTMLDivElement>(null);\n // https://www.w3.org/TR/wai-aria-practices-1.1/#gridNav_focus\n const isChildFocused = useRef(false);\n const [, forceRender] = useState<unknown>({});\n\n useLayoutEffect(() => {\n if (!isSelected) {\n isChildFocused.current = false;\n return;\n }\n\n if (isChildFocused.current) {\n // When the child is focused, we need to rerender\n // the cell again so tabIndex is updated to -1\n forceRender({});\n return;\n }\n ref.current?.focus({ preventScroll: true });\n }, [isSelected]);\n\n function onFocus(event: React.FocusEvent<HTMLDivElement>) {\n if (event.target !== ref.current) {\n isChildFocused.current = true;\n }\n }\n\n const isFocused = isSelected && !isChildFocused.current;\n\n return {\n ref,\n tabIndex: isFocused ? 0 : -1,\n onFocus\n };\n}\n","import { css } from '@linaria/core';\n\nimport { cell } from '../style';\nimport { useFocusRef } from './useFocusRef';\n\nconst rowSelected = css`\n outline: none;\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n box-shadow: inset 0 0 0 2px var(--selection-color);\n pointer-events: none;\n z-index: 2;\n }\n\n > .${cell}:first-child {\n /* preserve left border on the first frozen cell after scrolling to the right */\n box-shadow: inset 2px 0 0 0 var(--selection-color);\n }\n`;\n\nexport const rowSelectedClassname = `rdg-row-selected ${rowSelected}`;\n\nexport function useRovingRowRef(selectedCellIdx: number | undefined) {\n const isSelected = selectedCellIdx === -1;\n const { ref, tabIndex } = useFocusRef<HTMLDivElement>(isSelected);\n\n return {\n ref,\n tabIndex,\n className: isSelected ? rowSelectedClassname : undefined\n };\n}\n","import { useMemo } from 'react';\n\nimport { getColSpan } from '../utils';\nimport type { CalculatedColumn, GroupRow, Maybe } from '../types';\n\ninterface ViewportColumnsArgs<R, SR> {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly (R | GroupRow<R>)[];\n summaryRows: Maybe<readonly SR[]>;\n colOverscanStartIdx: number;\n colOverscanEndIdx: number;\n lastFrozenColumnIndex: number;\n rowOverscanStartIdx: number;\n rowOverscanEndIdx: number;\n isGroupRow: (row: R | GroupRow<R>) => row is GroupRow<R>;\n}\n\nexport function useViewportColumns<R, SR>({\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n isGroupRow\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 (isGroupRow(row)) continue;\n if (\n updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row }))\n ) {\n break;\n }\n }\n\n // check summary rows\n if (summaryRows != null) {\n for (const row of summaryRows) {\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 summaryRows,\n colOverscanStartIdx,\n lastFrozenColumnIndex,\n colSpanColumns,\n isGroupRow\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';\nimport { floor, max, min } from '../utils';\nimport type { GroupRow, Maybe, RowHeightArgs } from '../types';\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\ninterface ViewportRowsArgs<R> {\n rawRows: readonly R[];\n rowHeight: number | ((args: RowHeightArgs<R>) => number);\n clientHeight: number;\n scrollTop: number;\n groupBy: readonly string[];\n rowGrouper: Maybe<(rows: readonly R[], columnKey: string) => Record<string, readonly R[]>>;\n expandedGroupIds: Maybe<ReadonlySet<unknown>>;\n enableVirtualization: boolean;\n}\n\n// TODO: https://github.com/microsoft/TypeScript/issues/41808\nfunction isReadonlyArray(arr: unknown): arr is readonly unknown[] {\n return Array.isArray(arr);\n}\n\nexport function useViewportRows<R>({\n rawRows,\n rowHeight,\n clientHeight,\n scrollTop,\n groupBy,\n rowGrouper,\n expandedGroupIds,\n enableVirtualization\n}: ViewportRowsArgs<R>) {\n const [groupedRows, rowsCount] = useMemo(() => {\n if (groupBy.length === 0 || rowGrouper == null) 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) ?? false;\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 { totalRowHeight, getRowTop, getRowHeight, findRowIdx } = useMemo(() => {\n if (typeof rowHeight === 'number') {\n return {\n totalRowHeight: rowHeight * rows.length,\n getRowTop: (rowIdx: number) => rowIdx * rowHeight,\n getRowHeight: () => rowHeight,\n findRowIdx: (offset: number) => floor(offset / rowHeight)\n };\n }\n\n let totalRowHeight = 0;\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: R | GroupRow<R>) => {\n const currentRowHeight = isGroupRow(row)\n ? rowHeight({ type: 'GROUP', row })\n : rowHeight({ type: 'ROW', row });\n const position = { top: totalRowHeight, height: currentRowHeight };\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 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 }, [isGroupRow, 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 rows,\n rowsCount,\n totalRowHeight,\n isGroupRow,\n getRowTop,\n getRowHeight,\n findRowIdx\n };\n}\n","import { css } from '@linaria/core';\nimport { useFocusRef } from '../hooks';\nimport type { HeaderRendererProps } from '../types';\n\nconst headerSortCell = css`\n cursor: pointer;\n display: flex;\n\n &:focus {\n outline: none;\n }\n`;\n\nconst headerSortCellClassname = `rdg-header-sort-cell ${headerSortCell}`;\n\nconst headerSortName = css`\n flex-grow: 1;\n overflow: hidden;\n overflow: clip;\n text-overflow: ellipsis;\n`;\n\nconst headerSortNameClassname = `rdg-header-sort-name ${headerSortName}`;\n\nconst arrow = css`\n fill: currentColor;\n\n > path {\n transition: d 0.1s;\n }\n`;\n\nconst arrowClassname = `rdg-sort-arrow ${arrow}`;\n\ntype SharedHeaderCellProps<R, SR> = Pick<\n HeaderRendererProps<R, SR>,\n 'sortDirection' | 'onSort' | 'priority' | 'isCellSelected'\n>;\n\ninterface Props<R, SR> extends SharedHeaderCellProps<R, SR> {\n children: React.ReactNode;\n}\n\nexport default function SortableHeaderCell<R, SR>({\n onSort,\n sortDirection,\n priority,\n children,\n isCellSelected\n}: Props<R, SR>) {\n const { ref, tabIndex } = useFocusRef<HTMLSpanElement>(isCellSelected);\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLSpanElement>) {\n if (event.key === ' ' || event.key === 'Enter') {\n // stop propagation to prevent scrolling\n event.preventDefault();\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function handleClick(event: React.MouseEvent<HTMLSpanElement>) {\n onSort(event.ctrlKey || event.metaKey);\n }\n\n return (\n <span\n ref={ref}\n tabIndex={tabIndex}\n className={headerSortCellClassname}\n onMouseDown={handleClick}\n onKeyDown={handleKeyDown}\n >\n <span className={headerSortNameClassname}>{children}</span>\n <span>\n {sortDirection !== undefined && (\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 {priority}\n </span>\n </span>\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { CalculatedColumn, SortColumn } from './types';\nimport type { HeaderRowProps } from './HeaderRow';\nimport SortableHeaderCell from './headerCells/SortableHeaderCell';\nimport { getCellStyle, getCellClassname } from './utils';\nimport { useRovingCellRef } from './hooks';\n\nconst cellResizable = css`\n touch-action: none;\n\n &::after {\n content: '';\n cursor: col-resize;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 10px;\n }\n`;\n\nconst cellResizableClassname = `rdg-cell-resizable ${cellResizable}`;\n\ntype SharedHeaderRowProps<R, SR> = Pick<\n HeaderRowProps<R, SR, React.Key>,\n | 'sortColumns'\n | 'onSortColumnsChange'\n | 'allRowsSelected'\n | 'onAllRowsSelectionChange'\n | 'selectCell'\n | 'onColumnResize'\n | 'shouldFocusGrid'\n>;\n\nexport interface HeaderCellProps<R, SR> extends SharedHeaderRowProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n colSpan: number | undefined;\n isCellSelected: boolean;\n}\n\nexport default function HeaderCell<R, SR>({\n column,\n colSpan,\n isCellSelected,\n onColumnResize,\n allRowsSelected,\n onAllRowsSelectionChange,\n sortColumns,\n onSortColumnsChange,\n selectCell,\n shouldFocusGrid\n}: HeaderCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(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\n const className = getCellClassname(column, column.headerCellClass, {\n [cellResizableClassname]: column.resizable\n });\n\n function onPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'mouse' && event.buttons !== 1) {\n return;\n }\n\n const { currentTarget, pointerId } = event;\n const { right } = currentTarget.getBoundingClientRect();\n const offset = right - event.clientX;\n\n if (offset > 11) {\n // +1px to account for the border size\n return;\n }\n\n function onPointerMove(event: PointerEvent) {\n const width = event.clientX + offset - currentTarget.getBoundingClientRect().left;\n if (width > 0) {\n onColumnResize(column, width);\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 && sortDirection === 'DESC') ||\n (!sortDescendingFirst && 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() {\n selectCell(column.idx);\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(0);\n }\n }\n\n function getCell() {\n if (column.headerRenderer) {\n return (\n <column.headerRenderer\n column={column}\n sortDirection={sortDirection}\n priority={priority}\n onSort={onSort}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={onAllRowsSelectionChange}\n isCellSelected={isCellSelected}\n />\n );\n }\n\n if (column.sortable) {\n return (\n <SortableHeaderCell\n onSort={onSort}\n sortDirection={sortDirection}\n priority={priority}\n isCellSelected={isCellSelected}\n >\n {column.name}\n </SortableHeaderCell>\n );\n }\n\n return column.name;\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n aria-sort={ariaSort}\n aria-colspan={colSpan}\n ref={ref}\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={getCellStyle(column, colSpan)}\n onFocus={handleFocus}\n onClick={onClick}\n onPointerDown={column.resizable ? onPointerDown : undefined}\n >\n {getCell()}\n </div>\n );\n}\n","import { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport HeaderCell from './HeaderCell';\nimport type { CalculatedColumn } from './types';\nimport { getColSpan } from './utils';\nimport type { DataGridProps } from './DataGrid';\nimport { useRovingRowRef } from './hooks';\n\ntype SharedDataGridProps<R, SR, K extends React.Key> = Pick<\n DataGridProps<R, SR, K>,\n 'sortColumns' | 'onSortColumnsChange'\n>;\n\nexport interface HeaderRowProps<R, SR, K extends React.Key> extends SharedDataGridProps<R, SR, K> {\n columns: readonly CalculatedColumn<R, SR>[];\n allRowsSelected: boolean;\n onAllRowsSelectionChange: (checked: boolean) => void;\n onColumnResize: (column: CalculatedColumn<R, SR>, width: number) => void;\n selectCell: (columnIdx: number) => void;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n shouldFocusGrid: boolean;\n}\n\nconst headerRow = css`\n contain: strict;\n contain: size layout style paint;\n display: grid;\n grid-template-columns: var(--template-columns);\n grid-template-rows: var(--header-row-height);\n height: var(--header-row-height); /* needed on Firefox */\n line-height: var(--header-row-height);\n width: var(--row-width);\n position: sticky;\n top: 0;\n background-color: var(--header-background-color);\n font-weight: bold;\n z-index: 3;\n outline: none;\n\n &[aria-selected='true'] {\n box-shadow: inset 0 0 0 2px var(--selection-color);\n }\n`;\n\nconst headerRowClassname = `rdg-header-row ${headerRow}`;\n\nfunction HeaderRow<R, SR, K extends React.Key>({\n columns,\n allRowsSelected,\n onAllRowsSelectionChange,\n onColumnResize,\n sortColumns,\n onSortColumnsChange,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n shouldFocusGrid\n}: HeaderRowProps<R, SR, K>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\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 isCellSelected={selectedCellIdx === column.idx}\n onColumnResize={onColumnResize}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={onAllRowsSelectionChange}\n onSortColumnsChange={onSortColumnsChange}\n sortColumns={sortColumns}\n selectCell={selectCell}\n shouldFocusGrid={shouldFocusGrid && index === 0}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={1} // aria-rowindex is 1 based\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(headerRowClassname, className)}\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';\nimport { css } from '@linaria/core';\n\nimport { getCellStyle, getCellClassname, isCellEditable } from './utils';\nimport type { CellRendererProps } from './types';\nimport { useRovingCellRef } from './hooks';\n\nconst cellCopied = css`\n background-color: #ccccff;\n`;\n\nconst cellCopiedClassname = `rdg-cell-copied ${cellCopied}`;\n\nconst cellDraggedOver = css`\n background-color: #ccccff;\n\n &.${cellCopied} {\n background-color: #9999ff;\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 dragHandle,\n onRowClick,\n onRowDoubleClick,\n onRowChange,\n selectCell,\n ...props\n}: CellRendererProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(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\n function selectCellWrapper(openEditor?: boolean | null) {\n selectCell(row, column, openEditor);\n }\n\n function handleClick() {\n selectCellWrapper(column.editorOptions?.editOnClick);\n onRowClick?.(row, column);\n }\n\n function handleContextMenu() {\n selectCellWrapper();\n }\n\n function handleDoubleClick() {\n selectCellWrapper(true);\n onRowDoubleClick?.(row, column);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-selected={isCellSelected}\n aria-colspan={colSpan}\n aria-readonly={!isCellEditable(column, row) || undefined}\n ref={ref}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleContextMenu}\n onFocus={onFocus}\n {...props}\n >\n {!column.rowGroup && (\n <>\n <column.formatter\n column={column}\n row={row}\n rowIdx={rowIdx}\n isCellSelected={isCellSelected}\n onRowChange={onRowChange}\n />\n {dragHandle}\n </>\n )}\n </div>\n );\n}\n\nexport default memo(Cell) as <R, SR>(props: CellRendererProps<R, SR>) => JSX.Element;\n","import { memo, forwardRef } from 'react';\nimport type { RefAttributes, CSSProperties } from 'react';\nimport clsx from 'clsx';\n\nimport Cell from './Cell';\nimport { RowSelectionProvider, useLatestFunc, useCombinedRefs, useRovingRowRef } from './hooks';\nimport { getColSpan } from './utils';\nimport { rowClassname } from './style';\nimport type { RowRendererProps } from './types';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n selectedCellIdx,\n isRowSelected,\n copiedCellIdx,\n draggedOverCellIdx,\n lastFrozenColumnIndex,\n row,\n viewportColumns,\n selectedCellEditor,\n selectedCellDragHandle,\n onRowClick,\n onRowDoubleClick,\n rowClass,\n setDraggedOverRowIdx,\n onMouseEnter,\n top,\n height,\n onRowChange,\n selectCell,\n ...props\n }: RowRendererProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const { ref: rowRef, tabIndex, className: rovingClassName } = useRovingRowRef(selectedCellIdx);\n\n const handleRowChange = useLatestFunc((newRow: R) => {\n onRowChange(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 rovingClassName,\n rowClass?.(row),\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 isCopied={copiedCellIdx === idx}\n isDraggedOver={draggedOverCellIdx === idx}\n isCellSelected={isCellSelected}\n dragHandle={isCellSelected ? selectedCellDragHandle : undefined}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n onRowChange={handleRowChange}\n selectCell={selectCell}\n rowIdx={rowIdx}\n />\n );\n }\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n ref={useCombinedRefs(ref, rowRef)}\n tabIndex={tabIndex}\n className={className}\n onMouseEnter={handleDragEnter}\n style={\n {\n top,\n '--row-height': `${height}px`\n } as unknown as CSSProperties\n }\n {...props}\n >\n {cells}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(Row) as <R, SR>(props: RowRendererProps<R, SR>) => JSX.Element;\n\nexport const RowWithRef = memo(forwardRef(Row)) as <R, SR>(\n props: RowRendererProps<R, SR> & RefAttributes<HTMLDivElement>\n) => JSX.Element;\n","import { memo } from 'react';\n\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CalculatedColumn, GroupRow } from './types';\nimport type { GroupRowRendererProps } from './GroupRow';\nimport { useRovingCellRef } from './hooks';\n\ntype SharedGroupRowRendererProps<R, SR> = Pick<\n GroupRowRendererProps<R, SR>,\n 'id' | 'groupKey' | 'childRows' | 'isExpanded' | 'toggleGroup'\n>;\n\ninterface GroupCellProps<R, SR> extends SharedGroupRowRendererProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n row: GroupRow<R>;\n isCellSelected: boolean;\n groupColumnIndex: number;\n}\n\nfunction GroupCell<R, SR>({\n id,\n groupKey,\n childRows,\n isExpanded,\n isCellSelected,\n column,\n row,\n groupColumnIndex,\n toggleGroup: toggleGroupWrapper\n}: GroupCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(isCellSelected);\n\n function toggleGroup() {\n toggleGroupWrapper(id);\n }\n\n // Only make the cell clickable if the group level matches\n const isLevelMatching = column.rowGroup && groupColumnIndex === column.idx;\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n ref={ref}\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 {(!column.rowGroup || groupColumnIndex === column.idx) && column.groupFormatter && (\n <column.groupFormatter\n groupKey={groupKey}\n childRows={childRows}\n column={column}\n row={row}\n isExpanded={isExpanded}\n isCellSelected={isCellSelected}\n toggleGroup={toggleGroup}\n />\n )}\n </div>\n );\n}\n\nexport default memo(GroupCell) as <R, SR>(props: GroupCellProps<R, SR>) => JSX.Element;\n","import type { CSSProperties } from 'react';\nimport { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport { cell, cellFrozenLast, rowClassname } from './style';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport GroupCell from './GroupCell';\nimport type { CalculatedColumn, GroupRow, Omit } from './types';\nimport { RowSelectionProvider, useRovingRowRef } from './hooks';\n\nexport interface GroupRowRendererProps<R, SR>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'children'> {\n id: string;\n groupKey: unknown;\n viewportColumns: readonly CalculatedColumn<R, SR>[];\n childRows: readonly R[];\n rowIdx: number;\n row: GroupRow<R>;\n top: number;\n height: number;\n level: number;\n selectedCellIdx: number | undefined;\n isExpanded: boolean;\n isRowSelected: boolean;\n selectGroup: (rowIdx: number) => void;\n toggleGroup: (expandedGroupId: unknown) => void;\n}\n\nconst groupRow = css`\n &:not([aria-selected='true']) {\n background-color: var(--header-background-color);\n }\n\n > .${cell}:not(:last-child):not(.${cellFrozenLast}) {\n border-right: none;\n }\n`;\n\nconst groupRowClassname = `rdg-group-row ${groupRow}`;\n\nfunction GroupedRow<R, SR>({\n id,\n groupKey,\n viewportColumns,\n childRows,\n rowIdx,\n row,\n top,\n height,\n level,\n isExpanded,\n selectedCellIdx,\n isRowSelected,\n selectGroup,\n toggleGroup,\n ...props\n}: GroupRowRendererProps<R, SR>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\n\n // Select is always the first column\n const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? level + 1 : level;\n\n function handleSelectGroup() {\n selectGroup(rowIdx);\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n aria-level={level}\n aria-expanded={isExpanded}\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(\n rowClassname,\n groupRowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n className\n )}\n onClick={handleSelectGroup}\n style={\n {\n top,\n '--row-height': `${height}px`\n } as unknown as CSSProperties\n }\n {...props}\n >\n {viewportColumns.map((column) => (\n <GroupCell\n key={column.key}\n id={id}\n groupKey={groupKey}\n childRows={childRows}\n isExpanded={isExpanded}\n isCellSelected={selectedCellIdx === column.idx}\n column={column}\n row={row}\n groupColumnIndex={idx}\n toggleGroup={toggleGroup}\n />\n ))}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(GroupedRow) as <R, SR>(props: GroupRowRendererProps<R, SR>) => JSX.Element;\n","import { memo } from 'react';\n\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CalculatedColumn, CellRendererProps } from './types';\nimport { useRovingCellRef } from './hooks';\n\ninterface SharedCellRendererProps<R, SR>\n extends Pick<CellRendererProps<R, SR>, 'column' | 'colSpan' | 'isCellSelected'> {\n selectCell: (row: SR, column: CalculatedColumn<R, SR>) => void;\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 isCellSelected,\n selectCell\n}: SummaryCellProps<R, SR>) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(isCellSelected);\n const { summaryFormatter: SummaryFormatter, summaryCellClass } = column;\n const className = getCellClassname(\n column,\n typeof summaryCellClass === 'function' ? summaryCellClass(row) : summaryCellClass\n );\n\n function onClick() {\n selectCell(row, column);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n ref={ref}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={onClick}\n onFocus={onFocus}\n >\n {SummaryFormatter && (\n <SummaryFormatter column={column} row={row} isCellSelected={isCellSelected} />\n )}\n </div>\n );\n}\n\nexport default memo(SummaryCell) as <R, SR>(props: SummaryCellProps<R, SR>) => JSX.Element;\n","import { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport { cell, row, rowClassname } from './style';\nimport { getColSpan } from './utils';\nimport SummaryCell from './SummaryCell';\nimport type { CalculatedColumn, RowRendererProps } from './types';\nimport { useRovingRowRef } from './hooks';\n\ntype SharedRowRendererProps<R, SR> = Pick<RowRendererProps<R, SR>, 'viewportColumns' | 'rowIdx'>;\n\ninterface SummaryRowProps<R, SR> extends SharedRowRendererProps<R, SR> {\n 'aria-rowindex': number;\n row: SR;\n bottom: number;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n selectCell: (row: SR, column: CalculatedColumn<R, SR>) => void;\n}\n\nconst summaryRow = css`\n &.${row} {\n position: sticky;\n z-index: 3;\n grid-template-rows: var(--summary-row-height);\n height: var(--summary-row-height); /* needed on Firefox */\n line-height: var(--summary-row-height);\n }\n`;\n\nconst summaryRowBorderClassname = css`\n & > .${cell} {\n border-top: 2px solid var(--summary-border-color);\n }\n`;\n\nconst summaryRowClassname = `rdg-summary-row ${summaryRow}`;\n\nfunction SummaryRow<R, SR>({\n rowIdx,\n row,\n viewportColumns,\n bottom,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n 'aria-rowindex': ariaRowIndex\n}: SummaryRowProps<R, SR>) {\n const { ref, tabIndex, className } = useRovingRowRef(selectedCellIdx);\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 isCellSelected={isCellSelected}\n selectCell={selectCell}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={ariaRowIndex}\n ref={ref}\n tabIndex={tabIndex}\n className={clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n summaryRowClassname,\n { [summaryRowBorderClassname]: rowIdx === 0 },\n className\n )}\n style={{ bottom }}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(SummaryRow) as <R, SR>(props: SummaryRowProps<R, SR>) => JSX.Element;\n","import { useEffect, useRef } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useLatestFunc } from './hooks';\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CellRendererProps, EditorProps } 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 &.rdg-cell {\n padding: 0;\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<CellRendererProps<R, SR>, 'colSpan' | 'rowIdx'>;\n\ninterface EditCellProps<R, SR> extends EditorProps<R, SR>, SharedCellRendererProps<R, SR> {}\n\nexport default function EditCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n onRowChange,\n onClose\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 onRowChange(row, true);\n });\n\n function cancelFrameRequest() {\n cancelAnimationFrame(frameRequestRef.current!);\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 const { cellClass } = column;\n const className = getCellClassname(\n column,\n 'rdg-editor-container',\n !column.editorOptions?.renderFormatter && 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 onMouseDownCapture={commitOnOutsideClick ? cancelFrameRequest : undefined}\n >\n {column.editor != null && (\n <>\n <column.editor column={column} row={row} onRowChange={onRowChange} onClose={onClose} />\n {column.editorOptions?.renderFormatter && (\n <column.formatter\n column={column}\n row={row}\n rowIdx={rowIdx}\n isCellSelected\n onRowChange={onRowChange}\n />\n )}\n </>\n )}\n </div>\n );\n}\n","import { css } from '@linaria/core';\n\nimport type { CalculatedColumn, FillEvent, Position } from './types';\nimport type { DataGridProps, SelectCellState } from './DataGrid';\n\nconst cellDragHandle = css`\n cursor: move;\n position: absolute;\n right: 0;\n bottom: 0;\n width: 8px;\n height: 8px;\n background-color: var(--selection-color);\n\n &:hover {\n width: 16px;\n height: 16px;\n border: 2px solid var(--selection-color);\n background-color: var(--background-color);\n }\n`;\n\nconst cellDragHandleClassname = `rdg-cell-drag-handle ${cellDragHandle}`;\n\ninterface Props<R, SR> extends Pick<DataGridProps<R, SR>, 'rows' | 'onRowsChange'> {\n columns: readonly CalculatedColumn<R, SR>[];\n selectedPosition: SelectCellState;\n latestDraggedOverRowIdx: React.MutableRefObject<number | undefined>;\n isCellEditable: (position: Position) => boolean;\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 rows,\n columns,\n selectedPosition,\n latestDraggedOverRowIdx,\n isCellEditable,\n onRowsChange,\n onFill,\n setDragging,\n setDraggedOverRowIdx\n}: Props<R, SR>) {\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement, MouseEvent>) {\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 { rowIdx } = selectedPosition;\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(selectedPosition.rowIdx + 1, rows.length);\n }\n\n function updateRows(startRowIdx: number, endRowIdx: number) {\n const { idx, rowIdx } = selectedPosition;\n const column = columns[idx];\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 return (\n <div\n className={cellDragHandleClassname}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n />\n );\n}\n","import { forwardRef, useState, useRef, useImperativeHandle, useCallback, useMemo } from 'react';\nimport type { Key, RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport { rootClassname, viewportDraggingClassname } from './style';\nimport {\n useLayoutEffect,\n useGridDimensions,\n useCalculatedColumns,\n useViewportColumns,\n useViewportRows,\n useLatestFunc,\n RowSelectionChangeProvider\n} from './hooks';\nimport HeaderRow from './HeaderRow';\nimport Row from './Row';\nimport GroupRowRenderer from './GroupRow';\nimport SummaryRow from './SummaryRow';\nimport EditCell from './EditCell';\nimport DragHandle from './DragHandle';\nimport {\n assertIsValidKeyGetter,\n onEditorNavigation,\n getNextSelectedCellPosition,\n isSelectedCellEditable,\n canExitGrid,\n isCtrlKeyHeldDown,\n isDefaultCellInput,\n getColSpan,\n max,\n sign,\n getSelectedCellColSpan\n} from './utils';\n\nimport type {\n CalculatedColumn,\n Column,\n Position,\n RowRendererProps,\n RowsChangeData,\n SelectRowEvent,\n FillEvent,\n PasteEvent,\n CellNavigationMode,\n SortColumn,\n RowHeightArgs,\n Maybe\n} from './types';\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 'formatter' | 'minWidth' | 'resizable' | 'sortable'\n>;\n\nconst initialPosition: SelectCellState = {\n idx: -1,\n rowIdx: -2,\n mode: 'SELECT'\n};\n\nexport interface DataGridHandle {\n element: HTMLDivElement | null;\n scrollToColumn: (colIdx: number) => void;\n scrollToRow: (rowIdx: number) => void;\n selectCell: (position: Position, enableEditor?: Maybe<boolean>) => void;\n}\n\ntype SharedDivProps = Pick<\n React.HTMLAttributes<HTMLDivElement>,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'className' | '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 Column<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 bottom of the rows view for summary, the vertical scroll bar will not scroll these rows.\n * Bottom horizontal scroll bar can move the row left / right. Or a customized row renderer can be used to disabled the scrolling support.\n */\n summaryRows?: 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 | ((args: RowHeightArgs<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 groupBy?: Maybe<readonly string[]>;\n rowGrouper?: Maybe<(rows: readonly R[], columnKey: string) => Record<string, readonly R[]>>;\n expandedGroupIds?: Maybe<ReadonlySet<unknown>>;\n onExpandedGroupIdsChange?: Maybe<(expandedGroupIds: Set<unknown>) => void>;\n onFill?: Maybe<(event: FillEvent<R>) => R>;\n onPaste?: Maybe<(event: PasteEvent<R>) => R>;\n\n /**\n * Event props\n */\n /** Function called whenever a row is clicked */\n onRowClick?: Maybe<(row: R, column: CalculatedColumn<R, SR>) => void>;\n /** Function called whenever a row is double clicked */\n onRowDoubleClick?: Maybe<(row: R, column: CalculatedColumn<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\n /**\n * Toggles and modes\n */\n /** @default 'NONE' */\n cellNavigationMode?: Maybe<CellNavigationMode>;\n /** @default true */\n enableVirtualization?: Maybe<boolean>;\n\n /**\n * Miscellaneous\n */\n rowRenderer?: Maybe<React.ComponentType<RowRendererProps<R, SR>>>;\n noRowsFallback?: React.ReactNode;\n rowClass?: Maybe<(row: R) => Maybe<string>>;\n 'data-testid'?: Maybe<string>;\n editableRowIdxs?: Array<number>;\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 {\n // Grid and data Props\n columns: rawColumns,\n rows: rawRows,\n summaryRows,\n rowKeyGetter,\n onRowsChange,\n // Dimensions props\n rowHeight,\n headerRowHeight: rawHeaderRowHeight,\n summaryRowHeight: rawSummaryRowHeight,\n // Feature props\n selectedRows,\n onSelectedRowsChange,\n sortColumns,\n onSortColumnsChange,\n defaultColumnOptions,\n groupBy: rawGroupBy,\n rowGrouper,\n expandedGroupIds,\n onExpandedGroupIdsChange,\n // Event props\n onRowClick,\n onRowDoubleClick,\n onScroll,\n onColumnResize,\n onFill,\n onPaste,\n // Toggles and modes\n cellNavigationMode: rawCellNavigationMode,\n enableVirtualization,\n // Miscellaneous\n rowRenderer,\n noRowsFallback,\n className,\n style,\n rowClass,\n // ARIA\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'data-testid': testId,\n editableRowIdxs\n }: DataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n /**\n * defaults\n */\n rowHeight ??= 35;\n const headerRowHeight = rawHeaderRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const summaryRowHeight = rawSummaryRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const RowRenderer = rowRenderer ?? Row;\n const cellNavigationMode = rawCellNavigationMode ?? 'NONE';\n enableVirtualization ??= true;\n\n /**\n * states\n */\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n const [columnWidths, setColumnWidths] = useState<ReadonlyMap<string, number>>(() => new Map());\n const [selectedPosition, setSelectedPosition] = useState<SelectCellState | EditCellState<R>>(\n initialPosition\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\n /**\n * refs\n */\n const prevSelectedPosition = useRef(selectedPosition);\n const latestDraggedOverRowIdx = useRef(draggedOverRowIdx);\n const lastSelectedRowIdx = useRef(-1);\n\n /**\n * computed values\n */\n const [gridRef, gridWidth, gridHeight] = useGridDimensions();\n const headerRowsCount = 1;\n const summaryRowsCount = summaryRows?.length ?? 0;\n const clientHeight = gridHeight - headerRowHeight - summaryRowsCount * summaryRowHeight;\n const isSelectable = selectedRows != null && onSelectedRowsChange != null;\n const isHeaderRowSelected = selectedPosition.rowIdx === -1;\n\n const allRowsSelected = useMemo((): boolean => {\n // no rows to select = explicitely unchecked\n const { length } = rawRows;\n return (\n length !== 0 &&\n selectedRows != null &&\n rowKeyGetter != null &&\n selectedRows.size >= length &&\n rawRows.every((row) => selectedRows.has(rowKeyGetter(row)))\n );\n }, [rawRows, selectedRows, rowKeyGetter]);\n\n const {\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n layoutCssVars,\n columnMetrics,\n totalColumnWidth,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth,\n groupBy\n } = useCalculatedColumns({\n rawColumns,\n columnWidths,\n scrollLeft,\n viewportWidth: gridWidth,\n defaultColumnOptions,\n rawGroupBy: rowGrouper ? rawGroupBy : undefined,\n enableVirtualization\n });\n\n const {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n rowsCount,\n totalRowHeight,\n isGroupRow,\n getRowTop,\n getRowHeight,\n findRowIdx\n } = useViewportRows({\n rawRows,\n groupBy,\n rowGrouper,\n rowHeight,\n clientHeight,\n scrollTop,\n expandedGroupIds,\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 summaryRows,\n isGroupRow\n });\n\n const hasGroups = groupBy.length > 0 && typeof rowGrouper === 'function';\n const minColIdx = hasGroups ? -1 : 0;\n const maxColIdx = columns.length - 1;\n const minRowIdx = -1; // change it to 0?\n const maxRowIdx = headerRowsCount + rows.length + summaryRowsCount - 2;\n const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition);\n const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition);\n\n /**\n * The identity of the wrapper function is stable so it won't break memoization\n */\n const selectRowLatest = useLatestFunc(selectRow);\n const selectAllRowsLatest = useLatestFunc(selectAllRows);\n const handleFormatterRowChangeLatest = useLatestFunc(updateRow);\n const selectViewportCellLatest = useLatestFunc(\n (row: R, column: CalculatedColumn<R, SR>, enableEditor: Maybe<boolean>) => {\n const rowIdx = rows.indexOf(row);\n selectCell({ rowIdx, idx: column.idx }, enableEditor);\n }\n );\n const selectGroupLatest = useLatestFunc((rowIdx: number) => {\n selectCell({ rowIdx, idx: -1 });\n });\n const selectHeaderCellLatest = useLatestFunc((idx: number) => {\n selectCell({ rowIdx: -1, idx });\n });\n const selectSummaryCellLatest = useLatestFunc(\n (summaryRow: SR, column: CalculatedColumn<R, SR>) => {\n const rowIdx = summaryRows!.indexOf(summaryRow) + headerRowsCount + rows.length - 1;\n selectCell({ rowIdx, idx: column.idx });\n }\n );\n const toggleGroupLatest = useLatestFunc(toggleGroup);\n\n /**\n * effects\n */\n useLayoutEffect(() => {\n if (\n !selectedCellIsWithinSelectionBounds ||\n (selectedPosition.idx === prevSelectedPosition.current.idx &&\n selectedPosition.rowIdx === prevSelectedPosition.current.rowIdx) ||\n selectedPosition.mode === 'EDIT'\n ) {\n prevSelectedPosition.current = selectedPosition;\n return;\n }\n prevSelectedPosition.current = selectedPosition;\n scrollToCell(selectedPosition);\n });\n\n useImperativeHandle(ref, () => ({\n element: gridRef.current,\n scrollToColumn(idx: number) {\n scrollToCell({ idx });\n },\n scrollToRow(rowIdx: number) {\n const { current } = gridRef;\n if (!current) return;\n current.scrollTo({\n top: getRowTop(rowIdx),\n behavior: 'smooth'\n });\n },\n selectCell,\n reInitSelectPosition() {\n setSelectedPosition(initialPosition);\n }\n }));\n\n /**\n * callbacks\n */\n const handleColumnResize = useCallback(\n (column: CalculatedColumn<R, SR>, width: number) => {\n setColumnWidths((columnWidths) => {\n const newColumnWidths = new Map(columnWidths);\n newColumnWidths.set(column.key, width);\n return newColumnWidths;\n });\n\n onColumnResize?.(column.idx, width);\n },\n [onColumnResize]\n );\n\n const setDraggedOverRowIdx = useCallback((rowIdx?: number) => {\n setOverRowIdx(rowIdx);\n latestDraggedOverRowIdx.current = rowIdx;\n }, []);\n\n /**\n * event handlers\n */\n function selectRow({ row, checked, isShiftClick }: SelectRowEvent<R>) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const newSelectedRows = new Set(selectedRows);\n if (isGroupRow(row)) {\n for (const childRow of row.childRows) {\n const rowKey = rowKeyGetter(childRow);\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n onSelectedRowsChange(newSelectedRows);\n return;\n }\n\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 if (isGroupRow(row)) continue;\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 selectAllRows(checked: boolean) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const newSelectedRows = new Set(selectedRows);\n\n for (const row of rawRows) {\n const rowKey = rowKeyGetter(row);\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n\n onSelectedRowsChange(newSelectedRows);\n }\n\n function toggleGroup(expandedGroupId: unknown) {\n if (!onExpandedGroupIdsChange) return;\n const newExpandedGroupIds = new Set(expandedGroupIds);\n if (newExpandedGroupIds.has(expandedGroupId)) {\n newExpandedGroupIds.delete(expandedGroupId);\n } else {\n newExpandedGroupIds.add(expandedGroupId);\n }\n onExpandedGroupIdsChange(newExpandedGroupIds);\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (!(event.target instanceof Element)) return;\n const isCellEvent = event.target.closest('.rdg-cell') !== null;\n const isRowEvent = hasGroups && event.target.matches('.rdg-row, .rdg-header-row');\n if (!isCellEvent && !isRowEvent) return;\n\n const { key, keyCode } = event;\n const { rowIdx } = selectedPosition;\n\n if (\n selectedCellIsWithinViewportBounds &&\n onPaste != null &&\n isCtrlKeyHeldDown(event) &&\n !isGroupRow(rows[rowIdx]) &&\n selectedPosition.mode === 'SELECT'\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 handleCopy();\n return;\n }\n if (keyCode === vKey) {\n handlePaste();\n return;\n }\n }\n\n if (isRowIdxWithinViewportBounds(rowIdx)) {\n const row = rows[rowIdx];\n\n if (\n isGroupRow(row) &&\n selectedPosition.idx === -1 &&\n // Collapse the current group row if it is focused and is in expanded state\n ((key === 'ArrowLeft' && row.isExpanded) ||\n // Expand the current group row if it is focused and is in collapsed state\n (key === 'ArrowRight' && !row.isExpanded))\n ) {\n event.preventDefault(); // Prevents scrolling\n toggleGroup(row.id);\n return;\n }\n }\n\n switch (event.key) {\n case 'Escape':\n setCopiedCell(null);\n closeEditor();\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 setScrollTop(scrollTop);\n setScrollLeft(scrollLeft);\n onScroll?.(event);\n }\n\n function getRawRowIdx(rowIdx: number) {\n return hasGroups ? rawRows.indexOf(rows[rowIdx] as R) : rowIdx;\n }\n\n function updateRow(rowIdx: number, row: R) {\n if (typeof onRowsChange !== 'function') return;\n const rawRowIdx = getRawRowIdx(rowIdx);\n if (row === rawRows[rawRowIdx]) return;\n const updatedRows = [...rawRows];\n updatedRows[rawRowIdx] = row;\n onRowsChange(updatedRows, {\n indexes: [rawRowIdx],\n column: columns[selectedPosition.idx]\n });\n }\n\n function commitEditorChanges() {\n if (\n columns[selectedPosition.idx]?.editor == null ||\n selectedPosition.mode === 'SELECT' ||\n selectedPosition.row === selectedPosition.originalRow\n ) {\n return;\n }\n\n updateRow(selectedPosition.rowIdx, selectedPosition.row);\n }\n\n function handleCopy() {\n const { idx, rowIdx } = selectedPosition;\n setCopiedCell({ row: rawRows[getRawRowIdx(rowIdx)], columnKey: columns[idx].key });\n }\n\n function handlePaste() {\n if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const targetRow = rawRows[getRawRowIdx(rowIdx)];\n\n const updatedTargetRow = onPaste({\n sourceRow: copiedCell.row,\n sourceColumnKey: copiedCell.columnKey,\n targetRow,\n targetColumnKey: columns[idx].key\n });\n\n updateRow(rowIdx, updatedTargetRow);\n }\n\n function handleCellInput(event: React.KeyboardEvent<HTMLDivElement>) {\n if (!selectedCellIsWithinViewportBounds) return;\n const row = rows[selectedPosition.rowIdx];\n if (isGroupRow(row)) return;\n const { key, shiftKey } = event;\n\n if (selectedPosition.mode === 'EDIT') {\n if (key === 'Enter') {\n // Custom editors can listen for the event and stop propagation to prevent commit\n commitEditorChanges();\n closeEditor();\n }\n return;\n }\n\n // Select the row on Shift + Space\n if (isSelectable && shiftKey && key === ' ') {\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const rowKey = rowKeyGetter(row);\n selectRow({ row, checked: !selectedRows.has(rowKey), isShiftClick: false });\n // do not scroll\n event.preventDefault();\n return;\n }\n\n const column = columns[selectedPosition.idx];\n column.editorOptions?.onCellKeyDown?.(event);\n if (event.isDefaultPrevented()) return;\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 function handleEditorRowChange(row: R, commitChanges?: boolean) {\n if (selectedPosition.mode === 'SELECT') return;\n if (commitChanges) {\n updateRow(selectedPosition.rowIdx, row);\n closeEditor();\n } else {\n setSelectedPosition((position) => ({ ...position, row }));\n }\n }\n\n function handleOnClose(commitChanges?: boolean) {\n if (commitChanges) {\n commitEditorChanges();\n }\n closeEditor();\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 isCellWithinViewportBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellEditable(position: Position): boolean {\n return (\n isCellWithinViewportBounds(position) &&\n isSelectedCellEditable({ columns, rows, selectedPosition: position, isGroupRow })\n );\n }\n\n function selectCell(position: Position, enableEditor?: Maybe<boolean>): void {\n if (!isCellWithinSelectionBounds(position)) return;\n commitEditorChanges();\n\n if (enableEditor && isCellEditable(position)) {\n const row = rows[position.rowIdx] as R;\n setSelectedPosition({ ...position, mode: 'EDIT', row, originalRow: row });\n } else if (\n selectedPosition.mode !== 'SELECT' ||\n selectedPosition.idx !== position.idx ||\n selectedPosition.rowIdx !== position.rowIdx\n ) {\n // Avoid re-renders if the selected cell state is the same\n // TODO: replace with a #record? https://github.com/microsoft/TypeScript/issues/39831\n setSelectedPosition({ ...position, mode: 'SELECT' });\n }\n }\n\n function closeEditor() {\n if (selectedPosition.mode === 'SELECT') return;\n setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, mode: 'SELECT' }));\n }\n\n function scrollToCell({ idx, rowIdx }: Partial<Position>): void {\n const { current } = gridRef;\n if (!current) return;\n\n if (typeof idx === 'number' && idx > lastFrozenColumnIndex) {\n rowIdx ??= selectedPosition.rowIdx;\n if (!isCellWithinSelectionBounds({ rowIdx, idx })) return;\n const { clientWidth } = current;\n const column = columns[idx];\n const { left, width } = columnMetrics.get(column)!;\n let right = left + width;\n\n const colSpan = getSelectedCellColSpan({\n rows,\n summaryRows,\n rowIdx,\n lastFrozenColumnIndex,\n column,\n isGroupRow\n });\n\n if (colSpan !== undefined) {\n const { left, width } = columnMetrics.get(columns[column.idx + colSpan - 1])!;\n right = left + width;\n }\n\n const isCellAtLeftBoundary = left < scrollLeft + totalFrozenColumnWidth;\n const isCellAtRightBoundary = right > clientWidth + scrollLeft;\n if (isCellAtLeftBoundary) {\n current.scrollLeft = left - totalFrozenColumnWidth;\n } else if (isCellAtRightBoundary) {\n current.scrollLeft = right - clientWidth;\n }\n }\n\n if (typeof rowIdx === 'number' && isRowIdxWithinViewportBounds(rowIdx)) {\n const rowTop = getRowTop(rowIdx);\n const rowHeight = getRowHeight(rowIdx);\n if (rowTop < scrollTop) {\n // at top boundary, scroll to the row's top\n current.scrollTop = rowTop;\n } else if (rowTop + rowHeight > scrollTop + clientHeight) {\n // at bottom boundary, scroll the next row's top to the bottom of the viewport\n current.scrollTop = rowTop + rowHeight - clientHeight;\n }\n }\n }\n\n function getNextPosition(key: string, ctrlKey: boolean, shiftKey: boolean): Position {\n const { idx, rowIdx } = selectedPosition;\n const row = rows[rowIdx];\n const isRowSelected = selectedCellIsWithinSelectionBounds && idx === -1;\n\n // If a group row is focused, and it is collapsed, move to the parent group row (if there is one).\n if (\n key === 'ArrowLeft' &&\n isRowSelected &&\n isGroupRow(row) &&\n !row.isExpanded &&\n row.level !== 0\n ) {\n let parentRowIdx = -1;\n for (let i = selectedPosition.rowIdx - 1; i >= 0; i--) {\n const parentRow = rows[i];\n if (isGroupRow(parentRow) && parentRow.id === row.parentId) {\n parentRowIdx = i;\n break;\n }\n }\n if (parentRowIdx !== -1) {\n return { idx, rowIdx: parentRowIdx };\n }\n }\n\n switch (key) {\n case 'ArrowUp':\n return { idx, rowIdx: rowIdx - 1 };\n case 'ArrowDown':\n return { idx, rowIdx: rowIdx + 1 };\n case 'ArrowLeft':\n return { idx: idx - 1, rowIdx };\n case 'ArrowRight':\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: 0 };\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: rows.length - 1 };\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: React.KeyboardEvent<HTMLDivElement>) {\n if (selectedPosition.mode === 'EDIT') {\n const onNavigation =\n columns[selectedPosition.idx].editorOptions?.onNavigation ?? onEditorNavigation;\n if (!onNavigation(event)) return;\n }\n const { key, shiftKey } = event;\n let mode = cellNavigationMode;\n if (key === 'Tab') {\n // If we are in a position to leave the grid, stop editing but stay in that cell\n if (\n canExitGrid({\n shiftKey,\n cellNavigationMode,\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 mode = cellNavigationMode === 'NONE' ? 'CHANGE_ROW' : cellNavigationMode;\n }\n\n // Do not allow focus to leave\n event.preventDefault();\n\n const ctrlKey = isCtrlKeyHeldDown(event);\n const nextPosition = getNextPosition(key, ctrlKey, shiftKey);\n if (\n nextPosition.rowIdx === selectedPosition.rowIdx &&\n nextPosition.idx === selectedPosition.idx\n ) {\n return;\n }\n\n const nextSelectedCellPosition = getNextSelectedCellPosition({\n columns,\n colSpanColumns,\n rows,\n summaryRows,\n minRowIdx,\n maxRowIdx,\n lastFrozenColumnIndex,\n cellNavigationMode: mode,\n currentPosition: selectedPosition,\n nextPosition,\n isCellWithinBounds: isCellWithinSelectionBounds,\n isGroupRow\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 getDragHandle(rowIdx: number) {\n if (\n selectedPosition.rowIdx !== rowIdx ||\n selectedPosition.mode === 'EDIT' ||\n hasGroups || // drag fill is not supported when grouping is enabled\n onFill == null\n ) {\n return;\n }\n\n return (\n <DragHandle\n rows={rawRows}\n columns={columns}\n selectedPosition={selectedPosition}\n isCellEditable={isCellEditable}\n latestDraggedOverRowIdx={latestDraggedOverRowIdx}\n onRowsChange={onRowsChange}\n onFill={onFill}\n setDragging={setDragging}\n setDraggedOverRowIdx={setDraggedOverRowIdx}\n />\n );\n }\n\n function getCellEditor(rowIdx: number) {\n const isOutsideEditableRows = Array.isArray(editableRowIdxs)\n ? !editableRowIdxs.includes(selectedPosition.rowIdx)\n : selectedPosition.rowIdx !== rowIdx;\n if (isOutsideEditableRows || 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 return (\n <EditCell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={selectedPosition.rowIdx}\n onRowChange={handleEditorRowChange}\n onClose={handleOnClose}\n />\n );\n }\n\n function getViewportRows() {\n const rowElements = [];\n let startRowIndex = 0;\n\n const { idx: selectedIdx, rowIdx: selectedRowIdx } = selectedPosition;\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 = columns[selectedIdx];\n // selectedIdx can be -1 if grouping is enabled\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\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 if (selectedRowIdx === rowIdx && !viewportColumns.includes(selectedColumn)) {\n // if the row is within the viewport and cell is not, add the selected column to viewport columns\n rowColumns =\n selectedIdx > viewportColumns[viewportColumns.length - 1].idx\n ? [...viewportColumns, selectedColumn]\n : [\n ...viewportColumns.slice(0, lastFrozenColumnIndex + 1),\n selectedColumn,\n ...viewportColumns.slice(lastFrozenColumnIndex + 1)\n ];\n }\n }\n\n const row = rows[rowIdx];\n const top = getRowTop(rowIdx) + headerRowHeight;\n if (isGroupRow(row)) {\n ({ startRowIndex } = row);\n const isGroupRowSelected =\n isSelectable && row.childRows.every((cr) => selectedRows.has(rowKeyGetter!(cr)));\n rowElements.push(\n <GroupRowRenderer\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-rowindex={headerRowsCount + startRowIndex + 1} // aria-rowindex is 1 based\n aria-selected={isSelectable ? isGroupRowSelected : undefined}\n key={row.id}\n id={row.id}\n groupKey={row.groupKey}\n viewportColumns={rowColumns}\n childRows={row.childRows}\n rowIdx={rowIdx}\n row={row}\n top={top}\n height={getRowHeight(rowIdx)}\n level={row.level}\n isExpanded={row.isExpanded}\n selectedCellIdx={selectedRowIdx === rowIdx ? selectedIdx : undefined}\n isRowSelected={isGroupRowSelected}\n selectGroup={selectGroupLatest}\n toggleGroup={toggleGroupLatest}\n />\n );\n continue;\n }\n\n startRowIndex++;\n let key;\n let isRowSelected = false;\n if (typeof rowKeyGetter === 'function') {\n key = rowKeyGetter(row);\n isRowSelected = selectedRows?.has(key) ?? false;\n } else {\n key = hasGroups ? startRowIndex : rowIdx;\n }\n\n rowElements.push(\n <RowRenderer\n aria-rowindex={headerRowsCount + (hasGroups ? startRowIndex : rowIdx) + 1} // aria-rowindex is 1 based\n aria-selected={isSelectable ? isRowSelected : undefined}\n key={key}\n rowIdx={rowIdx}\n row={row}\n viewportColumns={rowColumns}\n isRowSelected={isRowSelected}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n rowClass={rowClass}\n top={top}\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={lastFrozenColumnIndex}\n onRowChange={handleFormatterRowChangeLatest}\n selectCell={selectViewportCellLatest}\n selectedCellDragHandle={getDragHandle(rowIdx)}\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(initialPosition);\n setDraggedOverRowIdx(undefined);\n }\n\n if (\n selectedPosition.mode === 'EDIT' &&\n rows[selectedPosition.rowIdx] !== selectedPosition.originalRow\n ) {\n // Discard changes if rows are updated from outside\n closeEditor();\n }\n\n return (\n <div\n role={hasGroups ? 'treegrid' : 'grid'}\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={headerRowsCount + rowsCount + summaryRowsCount}\n className={clsx(rootClassname, { [viewportDraggingClassname]: isDragging }, className)}\n style={\n {\n ...style,\n '--header-row-height': `${headerRowHeight}px`,\n '--row-width': `${totalColumnWidth}px`,\n '--summary-row-height': `${summaryRowHeight}px`,\n ...layoutCssVars\n } as unknown as React.CSSProperties\n }\n ref={gridRef}\n onScroll={handleScroll}\n onKeyDown={handleKeyDown}\n data-testid={testId}\n >\n <HeaderRow\n columns={viewportColumns}\n onColumnResize={handleColumnResize}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={selectAllRowsLatest}\n sortColumns={sortColumns}\n onSortColumnsChange={onSortColumnsChange}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isHeaderRowSelected ? selectedPosition.idx : undefined}\n selectCell={selectHeaderCellLatest}\n shouldFocusGrid={!selectedCellIsWithinSelectionBounds}\n />\n {rows.length === 0 && noRowsFallback ? (\n noRowsFallback\n ) : (\n <>\n <div style={{ height: max(totalRowHeight, clientHeight) }} />\n <RowSelectionChangeProvider value={selectRowLatest}>\n {getViewportRows()}\n </RowSelectionChangeProvider>\n {summaryRows?.map((row, rowIdx) => {\n const isSummaryRowSelected =\n selectedPosition.rowIdx === headerRowsCount + rows.length + rowIdx - 1;\n return (\n <SummaryRow\n aria-rowindex={headerRowsCount + rowsCount + rowIdx + 1}\n key={rowIdx}\n rowIdx={rowIdx}\n row={row}\n bottom={summaryRowHeight * (summaryRows.length - 1 - rowIdx)}\n viewportColumns={viewportColumns}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n selectCell={selectSummaryCellLatest}\n />\n );\n })}\n </>\n )}\n </div>\n );\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 { css } from '@linaria/core';\nimport type { EditorProps } from '../types';\n\nconst textEditor = css`\n appearance: none;\n\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 0px 6px 0 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--color);\n background-color: var(--background-color);\n\n font-family: inherit;\n font-size: var(--font-size);\n\n &:focus {\n border-color: var(--selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n`;\n\nexport const textEditorClassname = `rdg-text-editor ${textEditor}`;\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}: EditorProps<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)}\n />\n );\n}\n"],"names":["cell","cellClassname","cellFrozen","cellFrozenClassname","cellFrozenLast","cellFrozenLastClassname","root","rootClassname","viewportDragging","viewportDraggingClassname","row","rowClassname","useLayoutEffect","window","useEffect","useOriginalLayoutEffect","useFocusRef","isSelected","ref","useRef","current","focus","preventScroll","tabIndex","checkboxLabel","checkboxLabelClassname","checkboxInput","checkboxInputClassname","checkbox","checkboxClassname","checkboxLabelDisabled","checkboxLabelDisabledClassname","SelectCellFormatter","value","isCellSelected","disabled","onClick","onChange","ariaLabel","ariaLabelledBy","handleChange","e","target","checked","nativeEvent","shiftKey","_jsxs","className","clsx","children","_jsx","type","ValueFormatter","props","_Fragment","column","key","groupCellContent","groupCellContentClassname","caret","caretClassname","ToggleGroupFormatter","groupKey","isExpanded","toggleGroup","handleKeyDown","d","onKeyDown","viewBox","width","height","RowSelectionContext","createContext","undefined","RowSelectionProvider","Provider","RowSelectionChangeContext","RowSelectionChangeProvider","useRowSelection","rowSelectionContext","useContext","rowSelectionChangeContext","Error","getColSpan","lastFrozenColumnIndex","args","colSpan","Number","isInteger","frozen","idx","stopPropagation","event","nonInputKeys","Set","isCtrlKeyHeldDown","ctrlKey","metaKey","isDefaultCellInput","has","onEditorNavigation","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","matches","isSelectedCellEditable","selectedPosition","columns","rows","isGroupRow","rowIdx","isCellEditable","editor","rowGroup","editable","getSelectedCellColSpan","summaryRows","length","getNextSelectedCellPosition","cellNavigationMode","colSpanColumns","minRowIdx","maxRowIdx","currentPosition","currentIdx","nextPosition","isCellWithinBounds","nextIdx","nextRowIdx","setColSpan","moveRight","colIdx","columnsCount","isAfterLastColumn","isBeforeFirstColumn","isLastRow","isFirstRow","canExitGrid","maxColIdx","atLastCellInRow","atFirstCellInRow","atLastRow","atFirstRow","min","max","floor","sign","Math","assertIsValidKeyGetter","keyGetter","getCellStyle","gridColumnStart","gridColumnEnd","left","getCellClassname","extraClasses","isLastFrozenColumn","SELECT_COLUMN_KEY","SelectFormatter","isRowSelected","onRowSelectionChange","isShiftClick","SelectGroupFormatter","SelectColumn","name","maxWidth","resizable","sortable","headerRenderer","allRowsSelected","onAllRowsSelectionChange","formatter","groupFormatter","useCalculatedColumns","rawColumns","columnWidths","viewportWidth","scrollLeft","defaultColumnOptions","rawGroupBy","enableVirtualization","minColumnWidth","minWidth","defaultFormatter","defaultSortable","defaultResizable","groupBy","useMemo","map","rawColumn","includes","sort","aKey","frozenA","bKey","frozenB","indexOf","forEach","push","layoutCssVars","totalColumnWidth","totalFrozenColumnWidth","columnMetrics","Map","templateColumns","allocatedWidth","unassignedColumnsCount","getSpecifiedWidth","clampColumnWidth","set","unallocatedWidth","unallocatedColumnWidth","columnMetric","get","i","colOverscanStartIdx","colOverscanEndIdx","viewportLeft","viewportRight","lastColIdx","firstUnfrozenColumnIdx","colVisibleStartIdx","colVisibleEndIdx","test","parseInt","useCombinedRefs","refs","useCallback","handle","useGridDimensions","gridRef","gridWidth","setGridWidth","useState","gridHeight","setGridHeight","ResizeObserver","resizeObserver","clientWidth","clientHeight","devicePixelRatio","observe","disconnect","useLatestFunc","fn","useRovingCellRef","isChildFocused","forceRender","onFocus","isFocused","rowSelected","rowSelectedClassname","useRovingRowRef","selectedCellIdx","useViewportColumns","rowOverscanStartIdx","rowOverscanEndIdx","startIdx","updateStartIdx","viewportColumns","isReadonlyArray","arr","Array","isArray","useViewportRows","rawRows","rowHeight","scrollTop","rowGrouper","expandedGroupIds","groupedRows","rowsCount","groupRows","groupByKey","remainingGroupByKeys","startRowIndex","groupRowsCount","groups","childRows","Object","entries","childGroups","childRowsCount","allGroupRows","flattenedRows","expandGroup","parentId","level","keys","posInSet","id","groupRow","setSize","add","totalRowHeight","getRowTop","getRowHeight","findRowIdx","offset","rowPositions","currentRowHeight","position","top","validateRowIdx","start","end","middle","currentOffset","overscanThreshold","rowVisibleStartIdx","rowVisibleEndIdx","headerSortCell","headerSortCellClassname","headerSortName","headerSortNameClassname","arrow","arrowClassname","SortableHeaderCell","onSort","sortDirection","priority","preventDefault","handleClick","onMouseDown","cellResizable","cellResizableClassname","HeaderCell","onColumnResize","sortColumns","onSortColumnsChange","selectCell","shouldFocusGrid","sortIndex","findIndex","columnKey","sortColumn","direction","ariaSort","headerCellClass","onPointerDown","pointerType","buttons","currentTarget","pointerId","right","getBoundingClientRect","clientX","onPointerMove","onLostPointerCapture","removeEventListener","setPointerCapture","addEventListener","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","handleFocus","getCell","role","style","headerRow","headerRowClassname","HeaderRow","cells","index","memo","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","isCopied","isDraggedOver","dragHandle","onRowClick","onRowDoubleClick","onRowChange","cellClass","selectCellWrapper","openEditor","editorOptions","editOnClick","handleContextMenu","handleDoubleClick","onDoubleClick","onContextMenu","Row","copiedCellIdx","draggedOverCellIdx","selectedCellEditor","selectedCellDragHandle","rowClass","setDraggedOverRowIdx","onMouseEnter","rowRef","rovingClassName","handleRowChange","newRow","handleDragEnter","RowWithRef","forwardRef","GroupCell","groupColumnIndex","toggleGroupWrapper","isLevelMatching","cursor","groupRowClassname","GroupedRow","selectGroup","handleSelectGroup","SummaryCell","summaryFormatter","SummaryFormatter","summaryCellClass","summaryRow","summaryRowBorderClassname","summaryRowClassname","SummaryRow","bottom","ariaRowIndex","cellEditing","EditCell","onClose","frameRequestRef","commitOnOutsideClick","commitOnOutsideMouseDown","cancelFrameRequest","cancelAnimationFrame","onWindowCaptureMouseDown","requestAnimationFrame","capture","renderFormatter","onMouseDownCapture","cellDragHandle","cellDragHandleClassname","DragHandle","latestDraggedOverRowIdx","onRowsChange","onFill","setDragging","handleMouseDown","onMouseOver","onMouseUp","handleDragEnd","overRowIdx","endRowIndex","updateRows","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","updatedRow","targetRow","initialPosition","mode","DataGrid","rowKeyGetter","headerRowHeight","rawHeaderRowHeight","summaryRowHeight","rawSummaryRowHeight","selectedRows","onSelectedRowsChange","onExpandedGroupIdsChange","onScroll","onPaste","rawCellNavigationMode","rowRenderer","noRowsFallback","ariaDescribedBy","testId","editableRowIdxs","RowRenderer","setScrollTop","setScrollLeft","setColumnWidths","setSelectedPosition","copiedCell","setCopiedCell","isDragging","draggedOverRowIdx","setOverRowIdx","prevSelectedPosition","lastSelectedRowIdx","headerRowsCount","summaryRowsCount","isSelectable","isHeaderRowSelected","size","every","hasGroups","minColIdx","selectedCellIsWithinSelectionBounds","isCellWithinSelectionBounds","selectedCellIsWithinViewportBounds","isCellWithinViewportBounds","selectRowLatest","selectRow","selectAllRowsLatest","selectAllRows","handleFormatterRowChangeLatest","updateRow","selectViewportCellLatest","enableEditor","selectGroupLatest","selectHeaderCellLatest","selectSummaryCellLatest","toggleGroupLatest","scrollToCell","useImperativeHandle","element","scrollToColumn","scrollToRow","scrollTo","behavior","reInitSelectPosition","handleColumnResize","newColumnWidths","newSelectedRows","childRow","rowKey","delete","previousRowIdx","step","expandedGroupId","newExpandedGroupIds","Element","isCellEvent","closest","isRowEvent","keyCode","cKey","vKey","handleCopy","handlePaste","isRowIdxWithinViewportBounds","closeEditor","navigate","handleCellInput","handleScroll","getRawRowIdx","rawRowIdx","commitEditorChanges","originalRow","updatedTargetRow","sourceColumnKey","targetColumnKey","onCellKeyDown","isDefaultPrevented","handleEditorRowChange","commitChanges","handleOnClose","isColIdxWithinSelectionBounds","isCellAtLeftBoundary","isCellAtRightBoundary","rowTop","getNextPosition","parentRowIdx","parentRow","nextRowY","onNavigation","nextSelectedCellPosition","getDraggedOverCellIdx","currentRowIdx","getDragHandle","getCellEditor","isOutsideEditableRows","getViewportRows","rowElements","selectedIdx","selectedRowIdx","viewportRowIdx","isRowOutsideViewport","rowColumns","selectedColumn","slice","isGroupRowSelected","cr","GroupRowRenderer","c","isSummaryRowSelected","textEditor","textEditorClassname","autoFocusAndSelect","input","select","TextEditor","onBlur"],"mappings":"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"}