mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
1 line
225 KiB
Plaintext
1 line
225 KiB
Plaintext
{"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/formatters/CheckboxFormatter.tsx","../src/hooks/useLayoutEffect.ts","../src/hooks/useFocusRef.ts","../src/DataGridDefaultComponentsProvider.ts","../src/formatters/SelectCellFormatter.tsx","../src/formatters/ValueFormatter.tsx","../src/formatters/ToggleGroupFormatter.tsx","../src/hooks/useRowSelection.ts","../src/Columns.tsx","../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/selectedCellUtils.ts","../src/utils/styleUtils.ts","../src/utils/index.ts","../src/hooks/useCalculatedColumns.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingCellRef.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/HeaderRenderer.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/SortIcon.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 /*\n Cannot use these because of a Chromium bug:\n https://bugs.chromium.org/p/chromium/issues/detail?id=1326946\n once this is fixed we can also remove \"position: relative:\"\n contain: strict;\n contain: size layout style paint;\n */\n position: relative; /* needed for absolute positioning to work */\n contain: size style;\n padding-block: 0;\n padding-inline: 8px;\n border-inline-end: 1px solid var(--rdg-border-color);\n border-block-end: 1px solid var(--rdg-border-color);\n grid-row-start: var(--rdg-grid-row-start);\n background-color: inherit;\n\n white-space: nowrap;\n overflow: hidden;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n`;\n\nexport const cellClassname = `rdg-cell ${cell}`;\n\n// max-content does not calculate width when contain is set to style or size\nexport const cellAutoResizeClassname = css`\n .${cell} {\n contain: content;\n }\n`;\n\nexport const 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: calc(2px * var(--rdg-sign)) 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 --rdg-color: #000;\n --rdg-border-color: #ddd;\n --rdg-summary-border-color: #aaa;\n --rdg-background-color: hsl(0deg 0% 100%);\n --rdg-header-background-color: hsl(0deg 0% 97.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 96%);\n --rdg-row-selected-background-color: hsl(207deg 76% 92%);\n --row-selected-hover-background-color: hsl(207deg 76% 88%);\n\n --rdg-checkbox-color: hsl(207deg 100% 29%);\n --rdg-checkbox-focus-color: hsl(207deg 100% 69%);\n --rdg-checkbox-disabled-border-color: #ccc;\n --rdg-checkbox-disabled-background-color: #ddd;\n`;\n\nconst darkTheme = `\n --rdg-color: #ddd;\n --rdg-border-color: #444;\n --rdg-summary-border-color: #555;\n --rdg-background-color: hsl(0deg 0% 13%);\n --rdg-header-background-color: hsl(0deg 0% 10.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 9%);\n --rdg-row-selected-background-color: hsl(207deg 76% 42%);\n --row-selected-hover-background-color: hsl(207deg 76% 38%);\n\n --rdg-checkbox-color: hsl(207deg 100% 79%);\n --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n --rdg-checkbox-disabled-border-color: #000;\n --rdg-checkbox-disabled-background-color: #333;\n`;\n\nconst root = css`\n ${lightTheme}\n --rdg-selection-color: #66afe9;\n --rdg-font-size: 14px;\n\n display: grid;\n\n color-scheme: var(--rdg-color-scheme, light dark);\n\n /* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context */\n /* We set a stacking context so internal elements don't render on top of external components. */\n contain: strict;\n contain: size layout style paint;\n content-visibility: auto;\n block-size: 350px;\n border: 1px solid var(--rdg-border-color);\n box-sizing: border-box;\n overflow: auto;\n user-select: none;\n background-color: var(--rdg-background-color);\n color: var(--rdg-color);\n font-size: var(--rdg-font-size);\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 /* needed on Firefox */\n &::before {\n content: '';\n grid-column: 1/-1;\n grid-row: 1/-1;\n }\n\n &.rdg-dark {\n --rdg-color-scheme: dark;\n ${darkTheme}\n }\n\n &.rdg-light {\n --rdg-color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n ${darkTheme}\n }\n }\n`;\n\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\nexport const focusSinkClassname = css`\n grid-column: 1/-1;\n pointer-events: none;\n /* Should have a higher value than 3 to show up above header row */\n z-index: 4;\n`;\n","import { css } from '@linaria/core';\n\nexport const row = css`\n display: contents;\n line-height: var(--rdg-row-height);\n background-color: var(--rdg-background-color);\n\n &:hover {\n background-color: var(--rdg-row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--rdg-row-selected-background-color);\n\n &:hover {\n background-color: var(--row-selected-hover-background-color);\n }\n }\n`;\n\nexport const rowClassname = `rdg-row ${row}`;\n\nexport const rowSelected = css`\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n`;\n\nexport const rowSelectedClassname = `rdg-row-selected`;\n\nexport const rowSelectedWithFrozenCell = css`\n &::before {\n content: '';\n display: inline-block;\n height: 100%;\n position: sticky;\n inset-inline-start: 0;\n border-inline-start: 2px solid var(--rdg-selection-color);\n }\n`;\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport type { CheckboxFormatterProps } from '../types';\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-inline-end: 1px; /* align checkbox in row group cell */\n`;\n\nconst checkboxLabelClassname = `rdg-checkbox-label ${checkboxLabel}`;\n\nconst checkboxInput = css`\n all: unset;\n`;\n\nconst checkboxInputClassname = `rdg-checkbox-input ${checkboxInput}`;\n\nconst checkbox = css`\n content: '';\n inline-size: 20px;\n block-size: 20px;\n border: 2px solid var(--rdg-border-color);\n background-color: var(--rdg-background-color);\n .${checkboxInput}:checked + & {\n background-color: var(--rdg-checkbox-color);\n outline: 4px solid var(--rdg-background-color);\n outline-offset: -6px;\n }\n .${checkboxInput}:focus + & {\n border-color: var(--rdg-checkbox-focus-color);\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox ${checkbox}`;\n\nconst checkboxLabelDisabled = css`\n cursor: default;\n .${checkbox} {\n border-color: var(--rdg-checkbox-disabled-border-color);\n background-color: var(--rdg-checkbox-disabled-background-color);\n }\n`;\n\nconst checkboxLabelDisabledClassname = `rdg-checkbox-label-disabled ${checkboxLabelDisabled}`;\n\nexport const CheckboxFormatter = forwardRef<HTMLInputElement, CheckboxFormatterProps>(\n function CheckboxFormatter({ onChange, ...props }: CheckboxFormatterProps, ref) {\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <label\n className={clsx(checkboxLabelClassname, {\n [checkboxLabelDisabledClassname]: props.disabled\n })}\n >\n <input\n type=\"checkbox\"\n ref={ref}\n {...props}\n className={checkboxInputClassname}\n onChange={handleChange}\n />\n <div className={checkboxClassname} />\n </label>\n );\n }\n);\n","// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from 'react';\n\n// Silence silly warning\n// https://reactjs.org/link/uselayouteffect-ssr\nexport const useLayoutEffect = typeof window === 'undefined' ? useEffect : useOriginalLayoutEffect;\n","import { useRef } from 'react';\nimport { 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 { createContext, useContext } from 'react';\n\nimport type { Components, Maybe } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DataGridDefaultComponentsContext = createContext<Maybe<Components<any, any>>>(undefined);\n\nexport const DataGridDefaultComponentsProvider = DataGridDefaultComponentsContext.Provider;\n\nexport function useDefaultComponents<R, SR>(): Maybe<Components<R, SR>> {\n return useContext(DataGridDefaultComponentsContext);\n}\n","import { useFocusRef } from '../hooks/useFocusRef';\nimport { useDefaultComponents } from '../DataGridDefaultComponentsProvider';\nimport type { CheckboxFormatterProps } from '../types';\n\ntype SharedInputProps = Pick<CheckboxFormatterProps, 'disabled' | 'aria-label' | 'aria-labelledby'>;\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 onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n}: SelectCellFormatterProps) {\n const { ref, tabIndex } = useFocusRef<HTMLInputElement>(isCellSelected);\n const Formatter = useDefaultComponents()!.checkboxFormatter!;\n\n return (\n <Formatter\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={ref}\n tabIndex={tabIndex}\n disabled={disabled}\n checked={value}\n onChange={onChange}\n />\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-inline-start: 4px;\n stroke: currentColor;\n stroke-width: 1.5px;\n fill: transparent;\n vertical-align: middle;\n\n > path {\n transition: d 0.1s;\n }\n`;\n\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 as string}\n <svg viewBox=\"0 0 14 8\" width=\"14\" height=\"8\" className={caretClassname} aria-hidden>\n <path d={d} />\n </svg>\n </span>\n );\n}\n","import { 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 { SelectCellFormatter } from './formatters';\nimport { useRowSelection } from './hooks/useRowSelection';\nimport type { Column, FormatterProps, GroupFormatterProps } from './types';\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 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 />\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const SelectColumn: Column<any, any> = {\n key: SELECT_COLUMN_KEY,\n name: '',\n width: 35,\n minWidth: 35,\n maxWidth: 35,\n resizable: false,\n sortable: false,\n frozen: true,\n headerRenderer(props) {\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n isCellSelected={props.isCellSelected}\n value={props.allRowsSelected}\n onChange={props.onAllRowsSelectionChange}\n />\n );\n },\n formatter: SelectFormatter,\n groupFormatter: SelectGroupFormatter\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","import type { Maybe } from '../types';\n\nexport function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\n}\n\nexport function scrollIntoView(element: Maybe<HTMLDivElement>) {\n element?.scrollIntoView({ inline: 'nearest', block: 'nearest' });\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\nexport function isSelectedCellSelectable<R, SR>(\n columns: readonly CalculatedColumn<R, SR>[],\n selectedPosition: Position\n): boolean {\n const column = columns[selectedPosition.idx];\n return column.selectable !== false;\n}\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 type { CSSProperties } from 'react';\nimport clsx from 'clsx';\n\nimport type { CalculatedColumn } from '../types';\nimport { cellClassname, cellFrozenClassname, cellFrozenLastClassname } from '../style';\n\nexport function getRowStyle(rowIdx: number, height?: number): CSSProperties {\n if (height !== undefined) {\n return {\n '--rdg-grid-row-start': rowIdx,\n '--rdg-row-height': `${height}px`\n } as unknown as CSSProperties;\n }\n return { '--rdg-grid-row-start': rowIdx } as unknown as CSSProperties;\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 insetInlineStart: column.frozen ? `var(--rdg-frozen-left-${column.idx})` : undefined\n };\n}\n\nexport function getCellClassname<R, SR>(\n column: CalculatedColumn<R, SR>,\n ...extraClasses: Parameters<typeof clsx>\n): string {\n return clsx(\n cellClassname,\n {\n [cellFrozenClassname]: column.frozen,\n [cellFrozenLastClassname]: column.isLastFrozenColumn\n },\n ...extraClasses\n );\n}\n","import type { CalculatedColumn } from '../types';\n\nexport * from './colSpanUtils';\nexport * from './domUtils';\nexport * from './keyboardUtils';\nexport * from './selectedCellUtils';\nexport * from './styleUtils';\n\nexport const { min, max, round, floor, sign, abs, ceil } = Math;\n\nexport function assertIsValidKeyGetter<R, K extends React.Key>(\n keyGetter: unknown\n): asserts keyGetter is (row: R) => K {\n if (typeof keyGetter !== 'function') {\n throw new Error('Please specify the rowKeyGetter prop to use selection');\n }\n}\n\nexport function clampColumnWidth<R, SR>(\n width: number,\n { minWidth, maxWidth }: CalculatedColumn<R, SR>\n): number {\n width = max(width, minWidth);\n\n // ignore maxWidth if it less than minWidth\n if (typeof maxWidth === 'number' && maxWidth >= minWidth) {\n return min(width, maxWidth);\n }\n\n return width;\n}\n","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 { clampColumnWidth, floor, max, min, round } 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 defaultWidth = defaultColumnOptions?.width;\n const defaultMinWidth = defaultColumnOptions?.minWidth ?? 80;\n const defaultMaxWidth = defaultColumnOptions?.maxWidth;\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 width: rawColumn.width ?? defaultWidth,\n minWidth: rawColumn.minWidth ?? defaultMinWidth,\n maxWidth: rawColumn.maxWidth ?? defaultMaxWidth,\n sortable: rawColumn.sortable ?? defaultSortable,\n resizable: rawColumn.resizable ?? defaultResizable,\n 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 }, [\n rawColumns,\n defaultWidth,\n defaultMinWidth,\n defaultMaxWidth,\n defaultFormatter,\n defaultResizable,\n defaultSortable,\n rawGroupBy\n ]);\n\n const { layoutCssVars, totalFrozenColumnWidth, columnMetrics } = useMemo((): {\n layoutCssVars: Readonly<Record<string, string>>;\n totalFrozenColumnWidth: number;\n columnMetrics: ReadonlyMap<CalculatedColumn<R, SR>, ColumnMetric>;\n } => {\n const columnMetrics = new Map<CalculatedColumn<R, SR>, ColumnMetric>();\n let left = 0;\n let totalFrozenColumnWidth = 0;\n 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);\n allocatedWidth += width;\n columnMetrics.set(column, { width, left: 0 });\n }\n }\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 // avoid decimals as subpixel positioning can lead to cell borders not being displayed\n const unallocatedWidth = viewportWidth - allocatedWidth;\n const unallocatedColumnWidth = round(unallocatedWidth / unassignedColumnsCount);\n width = clampColumnWidth(unallocatedColumnWidth, column);\n allocatedWidth += width;\n unassignedColumnsCount--;\n columnMetrics.set(column, { width, left });\n }\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 gridTemplateColumns: templateColumns\n };\n\n for (let i = 0; i <= lastFrozenColumnIndex; i++) {\n const column = columns[i];\n layoutCssVars[`--rdg-frozen-left-${column.idx}`] = `${columnMetrics.get(column)!.left}px`;\n }\n\n return { layoutCssVars, totalFrozenColumnWidth, columnMetrics };\n }, [columnWidths, columns, viewportWidth, 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 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\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","import { useRef, useState } from 'react';\nimport { useLayoutEffect } from './useLayoutEffect';\n\nimport { ceil } from '../utils';\n\nexport function useGridDimensions(): [\n ref: React.RefObject<HTMLDivElement>,\n width: number,\n height: number\n] {\n const gridRef = useRef<HTMLDivElement>(null);\n const [inlineSize, setInlineSize] = useState(1);\n const [blockSize, setBlockSize] = 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 { clientWidth, clientHeight, offsetWidth, offsetHeight } = gridRef.current!;\n const { width, height } = gridRef.current!.getBoundingClientRect();\n const initialWidth = width - offsetWidth + clientWidth;\n const initialHeight = height - offsetHeight + clientHeight;\n\n setInlineSize(handleDevicePixelRatio(initialWidth));\n setBlockSize(initialHeight);\n\n const resizeObserver = new ResizeObserver((entries) => {\n // contentBoxSize is not available in Chrome <84\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (entries[0].contentBoxSize?.length > 0) {\n const size = entries[0].contentBoxSize[0];\n setInlineSize(handleDevicePixelRatio(size.inlineSize));\n setBlockSize(size.blockSize);\n }\n });\n resizeObserver.observe(gridRef.current!);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return [gridRef, inlineSize, blockSize];\n}\n\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\nfunction handleDevicePixelRatio(size: number) {\n return size - (devicePixelRatio === 1 ? 0 : ceil(devicePixelRatio));\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 { useState } from 'react';\nimport { scrollIntoView } from '../utils';\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 // https://www.w3.org/TR/wai-aria-practices-1.1/#gridNav_focus\n const [isChildFocused, setIsChildFocused] = useState(false);\n const [cell, setRef] = useState<HTMLDivElement | null>(null);\n\n if (isChildFocused && !isSelected) {\n setIsChildFocused(false);\n }\n\n function onFocus(event: React.FocusEvent<HTMLDivElement>) {\n if (event.target !== event.currentTarget) {\n setIsChildFocused(true);\n }\n }\n\n useLayoutEffect(() => {\n if (isSelected && cell) {\n scrollIntoView(cell);\n if (cell.contains(document.activeElement)) return;\n cell.focus({ preventScroll: true });\n }\n }, [isSelected, cell]);\n\n const isFocused = isSelected && !isChildFocused;\n\n return {\n ref: setRef,\n tabIndex: isFocused ? 0 : -1,\n onFocus: isSelected ? onFocus : 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, gridTemplateRows, getRowTop, getRowHeight, findRowIdx } = useMemo(() => {\n if (typeof rowHeight === 'number') {\n return {\n totalRowHeight: rowHeight * rows.length,\n gridTemplateRows: ` repeat(${rows.length}, ${rowHeight}px)`,\n getRowTop: (rowIdx: number) => rowIdx * rowHeight,\n getRowHeight: () => rowHeight,\n findRowIdx: (offset: number) => floor(offset / rowHeight)\n };\n }\n\n let totalRowHeight = 0;\n let gridTemplateRows = ' ';\n // Calcule the height of all the rows upfront. This can cause performance issues\n // and we can consider using a similar approach as react-window\n // https://github.com/bvaughn/react-window/blob/b0a470cc264e9100afcaa1b78ed59d88f7914ad4/src/VariableSizeList.js#L68\n const rowPositions = rows.map((row: 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 gridTemplateRows += `${currentRowHeight}px `;\n totalRowHeight += currentRowHeight;\n return position;\n });\n\n const validateRowIdx = (rowIdx: number) => {\n return max(0, min(rows.length - 1, rowIdx));\n };\n\n return {\n totalRowHeight,\n gridTemplateRows,\n getRowTop: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].top,\n getRowHeight: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].height,\n findRowIdx(offset: number) {\n let start = 0;\n let end = rowPositions.length - 1;\n while (start <= end) {\n const middle = start + floor((end - start) / 2);\n const currentOffset = rowPositions[middle].top;\n\n if (currentOffset === offset) return middle;\n\n if (currentOffset < offset) {\n start = middle + 1;\n } else if (currentOffset > offset) {\n end = middle - 1;\n }\n\n if (start > end) return end;\n }\n return 0;\n }\n };\n }, [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 gridTemplateRows,\n isGroupRow,\n getRowTop,\n getRowHeight,\n findRowIdx\n };\n}\n","import { css } from '@linaria/core';\n\nimport { useFocusRef } from './hooks';\nimport type { HeaderRendererProps } from './types';\nimport { useDefaultComponents } from './DataGridDefaultComponentsProvider';\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\nexport default function HeaderRenderer<R, SR>({\n column,\n sortDirection,\n priority,\n onSort,\n isCellSelected\n}: HeaderRendererProps<R, SR>) {\n if (!column.sortable) return <>{column.name}</>;\n\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\ntype SharedHeaderCellProps<R, SR> = Pick<\n HeaderRendererProps<R, SR>,\n 'sortDirection' | 'onSort' | 'priority' | 'isCellSelected'\n>;\n\ninterface SortableHeaderCellProps<R, SR> extends SharedHeaderCellProps<R, SR> {\n children: React.ReactNode;\n}\n\nfunction SortableHeaderCell<R, SR>({\n onSort,\n sortDirection,\n priority,\n children,\n isCellSelected\n}: SortableHeaderCellProps<R, SR>) {\n const SortIcon = useDefaultComponents<R, SR>()!.sortIcon!;\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 onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <span className={headerSortNameClassname}>{children}</span>\n <span>\n <SortIcon sortDirection={sortDirection} />\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 DefaultHeaderRenderer from './HeaderRenderer';\nimport { getCellStyle, getCellClassname, clampColumnWidth } 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 inset-block-start: 0;\n inset-inline-end: 0;\n inset-block-end: 0;\n inline-size: 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 | 'direction'\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 direction\n}: HeaderCellProps<R, SR>) {\n const isRtl = direction === 'rtl';\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 const HeaderRenderer = column.headerRenderer ?? DefaultHeaderRenderer;\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, left } = currentTarget.getBoundingClientRect();\n const offset = isRtl ? event.clientX - left : 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 { right, left } = currentTarget.getBoundingClientRect();\n const width = isRtl ? right + offset - event.clientX : event.clientX + offset - left;\n if (width > 0) {\n onColumnResize(column, clampColumnWidth(width, column));\n }\n }\n\n function onLostPointerCapture() {\n currentTarget.removeEventListener('pointermove', onPointerMove);\n currentTarget.removeEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n currentTarget.setPointerCapture(pointerId);\n currentTarget.addEventListener('pointermove', onPointerMove);\n currentTarget.addEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n function onSort(ctrlClick: boolean) {\n if (onSortColumnsChange == null) return;\n const { sortDescendingFirst } = column;\n if (sortColumn === undefined) {\n // not currently sorted\n const nextSort: SortColumn = {\n columnKey: column.key,\n direction: sortDescendingFirst ? 'DESC' : 'ASC'\n };\n onSortColumnsChange(sortColumns && ctrlClick ? [...sortColumns, nextSort] : [nextSort]);\n } else {\n let nextSortColumn: SortColumn | undefined;\n if (\n (sortDescendingFirst && 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 onDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n const { right, left } = event.currentTarget.getBoundingClientRect();\n const offset = isRtl ? event.clientX - left : right - event.clientX;\n\n if (offset > 11) {\n // +1px to account for the border size\n return;\n }\n\n onColumnResize(column, 'auto');\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 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={{\n ...getCellStyle(column, colSpan),\n minWidth: column.minWidth,\n maxWidth: column.maxWidth ?? undefined\n }}\n onFocus={handleFocus}\n onClick={onClick}\n onDoubleClick={column.resizable ? onDoubleClick : undefined}\n onPointerDown={column.resizable ? onPointerDown : undefined}\n >\n <HeaderRenderer\n column={column}\n sortDirection={sortDirection}\n priority={priority}\n onSort={onSort}\n allRowsSelected={allRowsSelected}\n onAllRowsSelectionChange={onAllRowsSelectionChange}\n isCellSelected={isCellSelected}\n />\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, Direction } from './types';\nimport { getColSpan, getRowStyle } from './utils';\nimport type { DataGridProps } from './DataGrid';\nimport { cell, cellFrozen, rowSelectedClassname } from './style';\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 | 'auto') => void;\n selectCell: (columnIdx: number) => void;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n shouldFocusGrid: boolean;\n direction: Direction;\n}\n\nconst headerRow = css`\n display: contents;\n line-height: var(--rdg-header-row-height);\n background-color: var(--rdg-header-background-color);\n font-weight: bold;\n\n > .${cell} {\n /* Should have a higher value than 1 to show up above frozen cells */\n z-index: 2;\n position: sticky;\n inset-block-start: 0;\n }\n\n > .${cellFrozen} {\n z-index: 3;\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 direction\n}: HeaderRowProps<R, SR, K>) {\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 direction={direction}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={1} // aria-rowindex is 1 based\n className={clsx(headerRowClassname, {\n [rowSelectedClassname]: selectedCellIdx === -1\n })}\n style={getRowStyle(1)}\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 { type RefAttributes, forwardRef, 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 {\n column,\n colSpan,\n className,\n isScrolling,\n isCellSelected,\n isCopied,\n isDraggedOver,\n row,\n dragHandle,\n onRowClick,\n onRowDoubleClick,\n onRowChange,\n selectCell,\n onClick,\n onDoubleClick,\n onContextMenu,\n onMouseDown,\n onFocus: focusEventHandler,\n ...props\n }: CellRendererProps<R, SR>,\n refComponent: React.Ref<HTMLDivElement>\n) {\n const { ref, tabIndex, onFocus } = useRovingCellRef(isCellSelected);\n\n function setRef(element: HTMLDivElement | null) {\n ref(element);\n\n if (typeof refComponent === 'function') {\n refComponent(element);\n } else if (typeof refComponent === 'object' && refComponent !== null) {\n //@ts-expect-error ref mutation\n refComponent.current = element;\n }\n }\n\n const { cellClass } = column;\n className = getCellClassname(\n column,\n {\n [cellCopiedClassname]: isCopied,\n [cellDraggedOverClassname]: isDraggedOver\n },\n typeof cellClass === 'function' ? cellClass(row) : cellClass,\n className\n );\n\n function selectCellWrapper(openEditor?: boolean | null) {\n selectCell(row, column, openEditor);\n }\n\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n selectCellWrapper(column.editorOptions?.editOnClick);\n onRowClick?.(row, column);\n onMouseDown?.(event);\n }\n\n function handleClick(event: React.MouseEvent<HTMLDivElement>) {\n onClick?.(event);\n }\n\n function handleContextMenu(event: React.MouseEvent<HTMLDivElement>) {\n selectCellWrapper();\n onContextMenu?.(event);\n }\n\n function handleDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n selectCellWrapper(true);\n onRowDoubleClick?.(row, column);\n onDoubleClick?.(event);\n }\n\n function handleFocus(event: React.FocusEvent<HTMLDivElement, Element>) {\n onFocus?.(event);\n focusEventHandler?.(event);\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={setRef}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onMouseDown={handleMouseDown}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleContextMenu}\n onFocus={handleFocus}\n {...props}\n >\n {!column.rowGroup && (\n <>\n <column.formatter\n column={column}\n row={row}\n isScrolling={isScrolling}\n isCellSelected={isCellSelected}\n onRowChange={onRowChange}\n />\n {dragHandle}\n </>\n )}\n </div>\n );\n}\n\nexport default memo(forwardRef(Cell)) as <R, SR>(\n props: CellRendererProps<R, SR> & RefAttributes<HTMLDivElement>\n) => JSX.Element;\n","import { memo, forwardRef } from 'react';\nimport type { RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport Cell from './Cell';\nimport { RowSelectionProvider, useLatestFunc } from './hooks';\nimport { getColSpan, getRowStyle } from './utils';\nimport { rowClassname, rowSelectedClassname } from './style';\nimport type { RowRendererProps } from './types';\nimport { useDefaultComponents } from './DataGridDefaultComponentsProvider';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n gridRowStart,\n height,\n selectedCellIdx,\n isScrolling,\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 onRowChange,\n selectCell,\n ...props\n }: RowRendererProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const defaultComponents = useDefaultComponents<R, SR>();\n const CellRenderer = defaultComponents?.cellRenderer ?? Cell;\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 {\n [rowSelectedClassname]: selectedCellIdx === -1\n },\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 <CellRenderer\n key={column.key}\n isScrolling={isScrolling}\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 />\n );\n }\n }\n\n return (\n <RowSelectionProvider value={isRowSelected}>\n <div\n role=\"row\"\n ref={ref}\n className={className}\n onMouseEnter={handleDragEnter}\n style={getRowStyle(gridRowStart, height)}\n {...props}\n >\n {cells}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default 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' | 'isScrolling' | '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 isScrolling,\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 isScrolling={isScrolling}\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 { memo } from 'react';\nimport clsx from 'clsx';\nimport { css } from '@linaria/core';\n\nimport { cell, cellFrozenLast, rowClassname, rowSelectedClassname } from './style';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport GroupCell from './GroupCell';\nimport type { CalculatedColumn, GroupRow, Omit } from './types';\nimport { RowSelectionProvider } from './hooks';\nimport { getRowStyle } from './utils';\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 gridRowStart: number;\n height: number;\n level: number;\n selectedCellIdx: number | undefined;\n isScrolling: boolean;\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(--rdg-header-background-color);\n }\n\n > .${cell}:not(:last-child):not(.${cellFrozenLast}) {\n border-inline-end: 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 gridRowStart,\n height,\n level,\n isScrolling,\n isExpanded,\n selectedCellIdx,\n isRowSelected,\n selectGroup,\n toggleGroup,\n ...props\n}: GroupRowRendererProps<R, SR>) {\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 className={clsx(\n rowClassname,\n groupRowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n {\n [rowSelectedClassname]: selectedCellIdx === -1\n }\n )}\n onClick={handleSelectGroup}\n style={getRowStyle(gridRowStart, height)}\n {...props}\n >\n {viewportColumns.map((column) => (\n <GroupCell\n key={column.key}\n id={id}\n groupKey={groupKey}\n childRows={childRows}\n isScrolling={isScrolling}\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';\nimport { css } from '@linaria/core';\n\nimport { getCellStyle, getCellClassname } from './utils';\nimport type { CalculatedColumn, CellRendererProps } from './types';\nimport { useRovingCellRef } from './hooks';\n\nexport const summaryCellClassname = css`\n inset-block-start: var(--rdg-summary-row-top);\n inset-block-end: var(--rdg-summary-row-bottom);\n`;\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 summaryCellClassname,\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, rowSelectedClassname } from './style';\nimport { getColSpan, getRowStyle } from './utils';\nimport SummaryCell from './SummaryCell';\nimport type { CalculatedColumn, RowRendererProps } from './types';\n\ntype SharedRowRendererProps<R, SR> = Pick<\n RowRendererProps<R, SR>,\n 'viewportColumns' | 'rowIdx' | 'gridRowStart'\n>;\n\ninterface SummaryRowProps<R, SR> extends SharedRowRendererProps<R, SR> {\n 'aria-rowindex': number;\n row: SR;\n top: number | undefined;\n bottom: number | undefined;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n selectCell: (row: SR, column: CalculatedColumn<R, SR>) => void;\n}\n\nconst summaryRow = css`\n &.${row} {\n line-height: var(--rdg-summary-row-height);\n > .${cell} {\n position: sticky;\n }\n }\n`;\n\nconst summaryRowBorderClassname = css`\n & > .${cell} {\n border-block-start: 2px solid var(--rdg-summary-border-color);\n }\n`;\n\nconst summaryRowClassname = `rdg-summary-row ${summaryRow}`;\n\nfunction SummaryRow<R, SR>({\n rowIdx,\n gridRowStart,\n row,\n viewportColumns,\n top,\n bottom,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n 'aria-rowindex': ariaRowIndex\n}: SummaryRowProps<R, SR>) {\n const cells = [];\n for (let index = 0; index < viewportColumns.length; index++) {\n const column = viewportColumns[index];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n const isCellSelected = selectedCellIdx === column.idx;\n\n cells.push(\n <SummaryCell<R, SR>\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n isCellSelected={isCellSelected}\n selectCell={selectCell}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={ariaRowIndex}\n className={clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n summaryRowClassname,\n {\n [summaryRowBorderClassname]: rowIdx === 0,\n [rowSelectedClassname]: selectedCellIdx === -1\n }\n )}\n style={\n {\n ...getRowStyle(gridRowStart),\n '--rdg-summary-row-top': top !== undefined ? `${top}px` : undefined,\n '--rdg-summary-row-bottom': bottom !== undefined ? `${bottom}px` : undefined\n } as unknown as React.CSSProperties\n }\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(SummaryRow) as <R, SR>(props: SummaryRowProps<R, SR>) => JSX.Element;\n","import { useEffect, useRef } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useLatestFunc } from './hooks';\nimport { getCellStyle, getCellClassname, onEditorNavigation } from './utils';\nimport type { CellRendererProps, EditorProps, Omit } 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' | 'isScrolling'>;\n\ninterface EditCellProps<R, SR>\n extends Omit<EditorProps<R, SR>, 'onClose'>,\n SharedCellRendererProps<R, SR> {\n closeEditor: () => void;\n}\n\nexport default function EditCell<R, SR>({\n column,\n colSpan,\n row,\n isScrolling,\n onRowChange,\n closeEditor\n}: EditCellProps<R, SR>) {\n const frameRequestRef = useRef<number | undefined>();\n const commitOnOutsideClick = column.editorOptions?.commitOnOutsideClick !== false;\n\n // We need to prevent the `useEffect` from cleaning up between re-renders,\n // as `onWindowCaptureMouseDown` might otherwise miss valid mousedown events.\n // To that end we instead access the latest props via useLatestFunc.\n const commitOnOutsideMouseDown = useLatestFunc(() => {\n onClose(true);\n });\n\n useEffect(() => {\n if (!commitOnOutsideClick) return;\n\n function onWindowCaptureMouseDown() {\n frameRequestRef.current = requestAnimationFrame(commitOnOutsideMouseDown);\n }\n\n addEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n\n return () => {\n removeEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n cancelFrameRequest();\n };\n }, [commitOnOutsideClick, commitOnOutsideMouseDown]);\n\n function cancelFrameRequest() {\n cancelAnimationFrame(frameRequestRef.current!);\n }\n\n function onKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (event.key === 'Escape') {\n event.stopPropagation();\n // Discard changes\n onClose();\n } else if (event.key === 'Enter') {\n event.stopPropagation();\n onClose(true);\n } else {\n const onNavigation = column.editorOptions?.onNavigation ?? onEditorNavigation;\n if (!onNavigation(event)) {\n event.stopPropagation();\n }\n }\n }\n\n function onClose(commitChanges?: boolean) {\n if (commitChanges) {\n onRowChange(row, true);\n } else {\n closeEditor();\n }\n }\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 onKeyDown={onKeyDown}\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 isScrolling={isScrolling}\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 inset-inline-end: 0;\n inset-block-end: 0;\n inline-size: 8px;\n block-size: 8px;\n background-color: var(--rdg-selection-color);\n\n &:hover {\n inline-size: 16px;\n block-size: 16px;\n border: 2px solid var(--rdg-selection-color);\n background-color: var(--rdg-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 { css } from '@linaria/core';\nimport type { SortIconProps } from './types';\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\nexport default function SortIcon({ sortDirection }: SortIconProps) {\n return 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 ) : null;\n}\n","import { forwardRef, useState, useRef, useImperativeHandle, useCallback, useMemo } from 'react';\nimport type { Key, RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport {\n rootClassname,\n viewportDraggingClassname,\n focusSinkClassname,\n cellAutoResizeClassname,\n rowSelected,\n rowSelectedWithFrozenCell\n} 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 SortIcon from './SortIcon';\nimport { CheckboxFormatter } from './formatters';\nimport {\n DataGridDefaultComponentsProvider,\n useDefaultComponents\n} from './DataGridDefaultComponentsProvider';\nimport {\n assertIsValidKeyGetter,\n getNextSelectedCellPosition,\n isSelectedCellEditable,\n canExitGrid,\n isCtrlKeyHeldDown,\n isDefaultCellInput,\n getColSpan,\n sign,\n abs,\n getSelectedCellColSpan,\n scrollIntoView,\n isSelectedCellSelectable\n} from './utils';\n\nimport type {\n CalculatedColumn,\n Column,\n Position,\n RowsChangeData,\n SelectRowEvent,\n FillEvent,\n CopyEvent,\n PasteEvent,\n CellNavigationMode,\n SortColumn,\n RowHeightArgs,\n Maybe,\n Components,\n Direction\n} from './types';\nimport Cell from './Cell';\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' | 'width' | 'minWidth' | 'maxWidth' | '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 selectedCell: Position;\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 cell selection is changed */\n onSelectedCellChange?: Maybe<(selectedCell: Position) => void>;\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 onCopy?: Maybe<(event: CopyEvent<R>) => void>;\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 components?: Maybe<Components<R, SR>>;\n rowClass?: Maybe<(row: R) => Maybe<string>>;\n direction?: Maybe<Direction>;\n 'data-testid'?: Maybe<string>;\n}\n\n/**\n * Main API Component to render a data grid of rows and columns\n *\n * @example\n *\n * <DataGrid columns={columns} rows={rows} />\n */\nfunction DataGrid<R, SR, K extends Key>(\n {\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 onSelectedCellChange,\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 onCopy,\n onPaste,\n // Toggles and modes\n cellNavigationMode: rawCellNavigationMode,\n enableVirtualization,\n // Miscellaneous\n components,\n className,\n style,\n rowClass,\n direction,\n // ARIA\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'data-testid': testId\n }: DataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n /**\n * defaults\n */\n const defaultComponents = useDefaultComponents<R, SR>();\n rowHeight ??= 35;\n const headerRowHeight = rawHeaderRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const summaryRowHeight = rawSummaryRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const CellRenderer = components?.cellRenderer ?? defaultComponents?.cellRenderer ?? Cell;\n const RowRenderer = components?.rowRenderer ?? defaultComponents?.rowRenderer ?? Row;\n const sortIcon = components?.sortIcon ?? defaultComponents?.sortIcon ?? SortIcon;\n const checkboxFormatter =\n components?.checkboxFormatter ?? defaultComponents?.checkboxFormatter ?? CheckboxFormatter;\n const noRowsFallback = components?.noRowsFallback ?? defaultComponents?.noRowsFallback;\n const cellNavigationMode = rawCellNavigationMode ?? 'NONE';\n enableVirtualization ??= true;\n direction ??= 'ltr';\n\n /**\n * states\n */\n const scrollingResetRef = useRef(-1);\n const [isScrolling, setScrolling] = useState(false);\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 const [autoResizeColumn, setAutoResizeColumn] = useState<CalculatedColumn<R, SR> | null>(null);\n\n /**\n * refs\n */\n const prevSelectedPosition = useRef(selectedPosition);\n const latestDraggedOverRowIdx = useRef(draggedOverRowIdx);\n const lastSelectedRowIdx = useRef(-1);\n const rowRef = useRef<HTMLDivElement>(null);\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 const isRtl = direction === 'rtl';\n const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n\n const defaultGridComponents = useMemo<Maybe<Components<R, SR>>>(\n () => ({\n sortIcon,\n checkboxFormatter,\n cellRenderer: CellRenderer\n }),\n [sortIcon, checkboxFormatter, CellRenderer]\n );\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 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 gridTemplateRows,\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 isSamePosition(selectedPosition, prevSelectedPosition.current)\n ) {\n prevSelectedPosition.current = selectedPosition;\n return;\n }\n\n prevSelectedPosition.current = selectedPosition;\n\n if (selectedPosition.idx === -1) {\n rowRef.current!.focus({ preventScroll: true });\n scrollIntoView(rowRef.current);\n }\n });\n\n useLayoutEffect(() => {\n if (autoResizeColumn === null) return;\n const columnElement = gridRef.current!.querySelector(\n `[aria-colindex=\"${autoResizeColumn.idx + 1}\"]`\n )!;\n const { width } = columnElement.getBoundingClientRect();\n setColumnWidths((columnWidths) => {\n const newColumnWidths = new Map(columnWidths);\n newColumnWidths.set(autoResizeColumn.key, width);\n return newColumnWidths;\n });\n setAutoResizeColumn(null);\n onColumnResize?.(autoResizeColumn.idx, width);\n }, [autoResizeColumn, gridRef, onColumnResize]);\n\n useImperativeHandle(ref, () => ({\n element: gridRef.current,\n selectedCell: selectedPosition,\n scrollToColumn,\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 }));\n\n /**\n * callbacks\n */\n const handleColumnResize = useCallback(\n (column: CalculatedColumn<R, SR>, width: number | 'auto') => {\n if (width === 'auto') {\n setAutoResizeColumn(column);\n return;\n }\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 === rowRef.current;\n if (!isCellEvent && !isRowEvent) return;\n\n const { key, keyCode } = event;\n const { rowIdx } = selectedPosition;\n\n if (\n selectedCellIsWithinViewportBounds &&\n (onPaste != null || onCopy != 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 === leftKey && row.isExpanded) ||\n // Expand the current group row if it is focused and is in collapsed state\n (key === rightKey && !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 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 // scrollLeft is nagative when direction is rtl\n setScrollLeft(abs(scrollLeft));\n setScrolling(true);\n onScroll?.(event);\n\n clearTimeout(scrollingResetRef.current);\n scrollingResetRef.current = setTimeout(() => setScrolling(false), 16);\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 (selectedPosition.mode !== 'EDIT') return;\n updateRow(selectedPosition.rowIdx, selectedPosition.row);\n }\n\n function handleCopy() {\n const { idx, rowIdx } = selectedPosition;\n const sourceRow = rawRows[getRawRowIdx(rowIdx)];\n const sourceColumnKey = columns[idx].key;\n setCopiedCell({ row: sourceRow, columnKey: sourceColumnKey });\n onCopy?.({ sourceRow, sourceColumnKey });\n }\n\n function handlePaste() {\n if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const 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 // 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 /**\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 isCellSelectable(position: Position): boolean {\n return isCellWithinViewportBounds(position) && isSelectedCellSelectable(columns, position);\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 (isSamePosition(selectedPosition, position)) {\n // Avoid re-renders if the selected cell state is the same\n scrollIntoView(gridRef.current?.querySelector('[tabindex=\"0\"]'));\n }\n\n if (isCellSelectable(position)) {\n setSelectedPosition({ ...position, mode: 'SELECT' });\n onSelectedCellChange?.(position);\n }\n }\n\n function scrollToColumn(idx: number): void {\n const { current } = gridRef;\n if (!current) return;\n\n if (idx > lastFrozenColumnIndex) {\n const { rowIdx } = selectedPosition;\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 const sign = isRtl ? -1 : 1;\n if (isCellAtLeftBoundary) {\n current.scrollLeft = (left - totalFrozenColumnWidth) * sign;\n } else if (isCellAtRightBoundary) {\n current.scrollLeft = (right - clientWidth) * sign;\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 (key === leftKey && isRowSelected && isGroupRow(row) && !row.isExpanded && row.level !== 0) {\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 leftKey:\n return { idx: idx - 1, rowIdx };\n case rightKey:\n return { idx: idx + 1, rowIdx };\n case 'Tab':\n return { idx: idx + (shiftKey ? -1 : 1), rowIdx };\n case 'Home':\n // If row is selected then move focus to the first row\n if (isRowSelected) return { idx, rowIdx: 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 const { key, shiftKey } = event;\n let mode = cellNavigationMode;\n if (key === 'Tab') {\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 (isSamePosition(selectedPosition, nextPosition)) return;\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 getLayoutCssVars() {\n if (autoResizeColumn === null) return layoutCssVars;\n const { gridTemplateColumns } = layoutCssVars;\n const newSizes = gridTemplateColumns.split(' ');\n newSizes[autoResizeColumn.idx] = 'max-content';\n return {\n ...layoutCssVars,\n gridTemplateColumns: newSizes.join(' ')\n };\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 if (selectedPosition.rowIdx !== rowIdx || selectedPosition.mode === 'SELECT') return;\n\n const { idx, row } = selectedPosition;\n const column = columns[idx];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n\n const closeEditor = () => {\n setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, mode: 'SELECT' }));\n };\n\n const onRowChange = (row: R, commitChanges?: boolean) => {\n if (commitChanges) {\n updateRow(selectedPosition.rowIdx, row);\n closeEditor();\n } else {\n setSelectedPosition((position) => ({ ...position, row }));\n }\n };\n\n if (rows[selectedPosition.rowIdx] !== selectedPosition.originalRow) {\n // Discard changes if rows are updated from outside\n closeEditor();\n }\n\n return (\n <EditCell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n isScrolling={isScrolling}\n onRowChange={onRowChange}\n closeEditor={closeEditor}\n />\n );\n }\n\n function getRowViewportColumns(rowIdx: number) {\n const selectedColumn = columns[selectedPosition.idx];\n if (\n // idx can be -1 if grouping is enabled\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n selectedColumn !== undefined &&\n selectedPosition.rowIdx === rowIdx &&\n !viewportColumns.includes(selectedColumn)\n ) {\n // Add the selected column to viewport columns if the cell is not within the viewport\n return selectedPosition.idx > colOverscanEndIdx\n ? [...viewportColumns, selectedColumn]\n : [\n ...viewportColumns.slice(0, lastFrozenColumnIndex + 1),\n selectedColumn,\n ...viewportColumns.slice(lastFrozenColumnIndex + 1)\n ];\n }\n return viewportColumns;\n }\n\n function getViewportRows() {\n const rowElements = [];\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 {\n // if the row is within the viewport and cell is not, add the selected column to viewport columns\n rowColumns = getRowViewportColumns(rowIdx);\n }\n }\n\n const row = rows[rowIdx];\n const gridRowStart = headerRowsCount + rowIdx + 1;\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 gridRowStart={gridRowStart}\n height={getRowHeight(rowIdx)}\n level={row.level}\n isScrolling={isScrolling}\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 isScrolling={isScrolling}\n viewportColumns={rowColumns}\n isRowSelected={isRowSelected}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n rowClass={rowClass}\n gridRowStart={gridRowStart}\n height={getRowHeight(rowIdx)}\n copiedCellIdx={\n copiedCell !== null && copiedCell.row === row\n ? columns.findIndex((c) => c.key === copiedCell.columnKey)\n : undefined\n }\n selectedCellIdx={selectedRowIdx === rowIdx ? selectedIdx : undefined}\n draggedOverCellIdx={getDraggedOverCellIdx(rowIdx)}\n setDraggedOverRowIdx={isDragging ? setDraggedOverRowIdx : undefined}\n lastFrozenColumnIndex={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 let templateRows = `${headerRowHeight}px`;\n if (rows.length > 0) {\n templateRows += gridTemplateRows;\n }\n if (summaryRowsCount > 0) {\n templateRows += ` repeat(${summaryRowsCount}, ${summaryRowHeight}px)`;\n }\n\n const isGroupRowFocused = selectedPosition.idx === -1 && selectedPosition.rowIdx !== -2;\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(\n rootClassname,\n {\n [viewportDraggingClassname]: isDragging,\n [cellAutoResizeClassname]: autoResizeColumn !== null\n },\n className\n )}\n style={\n {\n ...style,\n // set scrollPadding to correctly position non-sticky cells after scrolling\n scrollPaddingInlineStart:\n selectedPosition.idx > lastFrozenColumnIndex\n ? `${totalFrozenColumnWidth}px`\n : undefined,\n scrollPaddingBlock:\n selectedPosition.rowIdx >= 0 && selectedPosition.rowIdx < rows.length\n ? `${headerRowHeight}px ${summaryRowsCount * summaryRowHeight}px`\n : undefined,\n gridTemplateRows: templateRows,\n '--rdg-header-row-height': `${headerRowHeight}px`,\n '--rdg-summary-row-height': `${summaryRowHeight}px`,\n '--rdg-sign': isRtl ? -1 : 1,\n ...getLayoutCssVars()\n } as unknown as React.CSSProperties\n }\n dir={direction}\n ref={gridRef}\n onScroll={handleScroll}\n onKeyDown={handleKeyDown}\n data-testid={testId}\n >\n {/* extra div is needed for row navigation in a treegrid */}\n {hasGroups && (\n <div\n ref={rowRef}\n tabIndex={isGroupRowFocused ? 0 : -1}\n className={clsx(focusSinkClassname, {\n [rowSelected]: isGroupRowFocused,\n [rowSelectedWithFrozenCell]: isGroupRowFocused && lastFrozenColumnIndex !== -1\n })}\n style={{\n gridRowStart: selectedPosition.rowIdx + 2\n }}\n onKeyDown={handleKeyDown}\n />\n )}\n <DataGridDefaultComponentsProvider value={defaultGridComponents}>\n <HeaderRow\n columns={getRowViewportColumns(-1)}\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 direction={direction}\n />\n {rows.length === 0 && noRowsFallback ? (\n noRowsFallback\n ) : (\n <>\n <RowSelectionChangeProvider value={selectRowLatest}>\n {getViewportRows()}\n </RowSelectionChangeProvider>\n {summaryRows?.map((row, rowIdx) => {\n const gridRowStart = headerRowsCount + rows.length + rowIdx + 1;\n const summaryRowIdx = headerRowsCount + rows.length + rowIdx - 1;\n const isSummaryRowSelected = selectedPosition.rowIdx === summaryRowIdx;\n const top =\n clientHeight > totalRowHeight\n ? gridHeight - summaryRowHeight * (summaryRows.length - rowIdx)\n : undefined;\n const bottom =\n top === undefined\n ? summaryRowHeight * (summaryRows.length - 1 - rowIdx)\n : undefined;\n\n return (\n <SummaryRow\n aria-rowindex={headerRowsCount + rowsCount + rowIdx + 1}\n key={rowIdx}\n rowIdx={rowIdx}\n gridRowStart={gridRowStart}\n row={row}\n top={top}\n bottom={bottom}\n viewportColumns={getRowViewportColumns(summaryRowIdx)}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n selectCell={selectSummaryCellLatest}\n />\n );\n })}\n </>\n )}\n </DataGridDefaultComponentsProvider>\n </div>\n );\n}\n\nfunction isSamePosition(p1: Position, p2: Position) {\n return p1.idx === p2.idx && p1.rowIdx === p2.rowIdx;\n}\n\nexport default forwardRef(DataGrid) as <R, SR = unknown, K extends Key = Key>(\n props: DataGridProps<R, SR, K> & RefAttributes<DataGridHandle>\n) => JSX.Element;\n","import { css } from '@linaria/core';\nimport type { EditorProps } from '../types';\n\nconst textEditor = css`\n appearance: none;\n\n box-sizing: border-box;\n inline-size: 100%;\n block-size: 100%;\n padding-block: 0;\n padding-inline: 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--rdg-color);\n background-color: var(--rdg-background-color);\n\n font-family: inherit;\n font-size: var(--rdg-font-size);\n\n &:focus {\n border-color: var(--rdg-selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n`;\n\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","cellAutoResizeClassname","cellFrozen","cellFrozenClassname","cellFrozenLast","cellFrozenLastClassname","root","rootClassname","viewportDragging","viewportDraggingClassname","focusSinkClassname","row","rowClassname","rowSelected","rowSelectedClassname","rowSelectedWithFrozenCell","checkboxLabel","checkboxLabelClassname","checkboxInput","checkboxInputClassname","checkbox","checkboxClassname","checkboxLabelDisabled","checkboxLabelDisabledClassname","CheckboxFormatter","forwardRef","onChange","props","ref","handleChange","e","target","checked","nativeEvent","shiftKey","_jsxs","clsx","disabled","_jsx","useLayoutEffect","window","useEffect","useOriginalLayoutEffect","useFocusRef","isSelected","useRef","current","focus","preventScroll","tabIndex","DataGridDefaultComponentsContext","createContext","undefined","DataGridDefaultComponentsProvider","Provider","useDefaultComponents","useContext","SelectCellFormatter","value","isCellSelected","ariaLabel","ariaLabelledBy","Formatter","checkboxFormatter","ValueFormatter","_Fragment","column","key","groupCellContent","groupCellContentClassname","caret","caretClassname","ToggleGroupFormatter","groupKey","isExpanded","toggleGroup","handleKeyDown","d","RowSelectionContext","RowSelectionProvider","RowSelectionChangeContext","RowSelectionChangeProvider","useRowSelection","rowSelectionContext","rowSelectionChangeContext","Error","SELECT_COLUMN_KEY","SelectFormatter","isRowSelected","onRowSelectionChange","isShiftClick","SelectGroupFormatter","SelectColumn","name","width","minWidth","maxWidth","resizable","sortable","frozen","headerRenderer","allRowsSelected","onAllRowsSelectionChange","formatter","groupFormatter","getColSpan","lastFrozenColumnIndex","args","colSpan","Number","isInteger","idx","scrollIntoView","element","inline","block","nonInputKeys","Set","isCtrlKeyHeldDown","ctrlKey","metaKey","isDefaultCellInput","event","has","onEditorNavigation","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","matches","isSelectedCellSelectable","columns","selectedPosition","selectable","isSelectedCellEditable","rows","isGroupRow","rowIdx","isCellEditable","editor","rowGroup","editable","getSelectedCellColSpan","summaryRows","type","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","getRowStyle","height","getCellStyle","gridColumnStart","gridColumnEnd","insetInlineStart","getCellClassname","extraClasses","isLastFrozenColumn","min","max","round","floor","sign","abs","ceil","Math","assertIsValidKeyGetter","keyGetter","clampColumnWidth","useCalculatedColumns","rawColumns","columnWidths","viewportWidth","scrollLeft","defaultColumnOptions","rawGroupBy","enableVirtualization","defaultWidth","defaultMinWidth","defaultMaxWidth","defaultFormatter","defaultSortable","defaultResizable","groupBy","useMemo","map","rawColumn","includes","sort","aKey","frozenA","bKey","frozenB","indexOf","forEach","push","layoutCssVars","totalFrozenColumnWidth","columnMetrics","Map","left","templateColumns","allocatedWidth","unassignedColumnsCount","getSpecifiedWidth","set","columnMetric","get","unallocatedWidth","unallocatedColumnWidth","gridTemplateColumns","i","colOverscanStartIdx","colOverscanEndIdx","viewportLeft","viewportRight","lastColIdx","firstUnfrozenColumnIdx","colVisibleStartIdx","colVisibleEndIdx","test","parseInt","useGridDimensions","gridRef","inlineSize","setInlineSize","useState","blockSize","setBlockSize","ResizeObserver","clientWidth","clientHeight","offsetWidth","offsetHeight","getBoundingClientRect","initialWidth","initialHeight","handleDevicePixelRatio","resizeObserver","entries","contentBoxSize","size","observe","disconnect","devicePixelRatio","useLatestFunc","fn","useCallback","useRovingCellRef","isChildFocused","setIsChildFocused","setRef","onFocus","currentTarget","contains","document","activeElement","isFocused","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","childGroups","childRowsCount","allGroupRows","flattenedRows","expandGroup","parentId","level","keys","posInSet","id","groupRow","setSize","add","totalRowHeight","gridTemplateRows","getRowTop","getRowHeight","findRowIdx","offset","rowPositions","currentRowHeight","position","top","validateRowIdx","start","end","middle","currentOffset","overscanThreshold","rowVisibleStartIdx","rowVisibleEndIdx","headerSortCell","headerSortCellClassname","headerSortName","headerSortNameClassname","HeaderRenderer","sortDirection","priority","onSort","SortableHeaderCell","children","SortIcon","sortIcon","preventDefault","handleClick","cellResizable","cellResizableClassname","HeaderCell","onColumnResize","sortColumns","onSortColumnsChange","selectCell","shouldFocusGrid","direction","isRtl","sortIndex","findIndex","columnKey","sortColumn","ariaSort","className","headerCellClass","DefaultHeaderRenderer","onPointerDown","pointerType","buttons","pointerId","right","clientX","onPointerMove","onLostPointerCapture","removeEventListener","setPointerCapture","addEventListener","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","onClick","onDoubleClick","handleFocus","headerRow","headerRowClassname","HeaderRow","selectedCellIdx","cells","index","memo","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","isScrolling","isCopied","isDraggedOver","dragHandle","onRowClick","onRowDoubleClick","onRowChange","onContextMenu","onMouseDown","focusEventHandler","refComponent","cellClass","selectCellWrapper","openEditor","handleMouseDown","editorOptions","editOnClick","handleContextMenu","handleDoubleClick","Row","gridRowStart","copiedCellIdx","draggedOverCellIdx","selectedCellEditor","selectedCellDragHandle","rowClass","setDraggedOverRowIdx","onMouseEnter","defaultComponents","CellRenderer","cellRenderer","handleRowChange","newRow","handleDragEnter","GroupCell","groupColumnIndex","toggleGroupWrapper","isLevelMatching","cursor","groupRowClassname","GroupedRow","selectGroup","handleSelectGroup","summaryCellClassname","SummaryCell","summaryFormatter","SummaryFormatter","summaryCellClass","summaryRow","summaryRowBorderClassname","summaryRowClassname","SummaryRow","bottom","ariaRowIndex","cellEditing","EditCell","closeEditor","frameRequestRef","commitOnOutsideClick","commitOnOutsideMouseDown","onClose","onWindowCaptureMouseDown","requestAnimationFrame","capture","cancelFrameRequest","cancelAnimationFrame","onKeyDown","stopPropagation","onNavigation","commitChanges","renderFormatter","cellDragHandle","cellDragHandleClassname","DragHandle","latestDraggedOverRowIdx","onRowsChange","onFill","setDragging","onMouseOver","onMouseUp","handleDragEnd","overRowIdx","endRowIndex","updateRows","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","updatedRow","targetRow","arrow","arrowClassname","initialPosition","mode","DataGrid","rowKeyGetter","headerRowHeight","rawHeaderRowHeight","summaryRowHeight","rawSummaryRowHeight","selectedRows","onSelectedCellChange","onSelectedRowsChange","onExpandedGroupIdsChange","onScroll","onCopy","onPaste","rawCellNavigationMode","components","style","ariaDescribedBy","testId","RowRenderer","rowRenderer","noRowsFallback","scrollingResetRef","setScrolling","setScrollTop","setScrollLeft","setColumnWidths","setSelectedPosition","copiedCell","setCopiedCell","isDragging","draggedOverRowIdx","setOverRowIdx","autoResizeColumn","setAutoResizeColumn","prevSelectedPosition","lastSelectedRowIdx","rowRef","gridWidth","gridHeight","headerRowsCount","summaryRowsCount","isSelectable","isHeaderRowSelected","leftKey","rightKey","defaultGridComponents","every","hasGroups","minColIdx","selectedCellIsWithinSelectionBounds","isCellWithinSelectionBounds","selectedCellIsWithinViewportBounds","isCellWithinViewportBounds","selectRowLatest","selectRow","selectAllRowsLatest","selectAllRows","handleFormatterRowChangeLatest","updateRow","selectViewportCellLatest","enableEditor","selectGroupLatest","selectHeaderCellLatest","selectSummaryCellLatest","toggleGroupLatest","isSamePosition","columnElement","querySelector","newColumnWidths","useImperativeHandle","selectedCell","scrollToColumn","scrollToRow","scrollTo","behavior","handleColumnResize","newSelectedRows","childRow","rowKey","delete","previousRowIdx","step","expandedGroupId","newExpandedGroupIds","Element","isCellEvent","closest","isRowEvent","keyCode","cKey","vKey","handleCopy","handlePaste","isRowIdxWithinViewportBounds","navigate","handleCellInput","handleScroll","clearTimeout","setTimeout","getRawRowIdx","rawRowIdx","commitEditorChanges","sourceColumnKey","updatedTargetRow","targetColumnKey","onCellKeyDown","isDefaultPrevented","originalRow","isColIdxWithinSelectionBounds","isCellSelectable","isCellAtLeftBoundary","isCellAtRightBoundary","getNextPosition","parentRowIdx","parentRow","nextRowY","nextSelectedCellPosition","getDraggedOverCellIdx","currentRowIdx","getLayoutCssVars","newSizes","split","join","getDragHandle","getCellEditor","getRowViewportColumns","selectedColumn","slice","getViewportRows","rowElements","selectedIdx","selectedRowIdx","viewportRowIdx","isRowOutsideViewport","rowColumns","isGroupRowSelected","cr","c","templateRows","isGroupRowFocused","scrollPaddingInlineStart","scrollPaddingBlock","summaryRowIdx","isSummaryRowSelected","p1","p2","textEditor","textEditorClassname","autoFocusAndSelect","input","select","TextEditor"],"mappings":"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"} |