diff --git a/.gitignore b/.gitignore index e792aa891d..4ff4b6de92 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ /coverage /dist /node_modules -/package-lock.json __screenshots__ npm-debug.log diff --git a/.prettierignore b/.prettierignore index 3b8c0ad9fb..c98035c9c7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ package.json /website/routeTree.gen.ts +/lib diff --git a/lib/index.d.ts b/lib/index.d.ts index a5fbdeebde..836660163e 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -1,14 +1,6 @@ -import * as react0$1 from "react"; import * as react0 from "react"; -import * as react6 from "react"; import { Key, ReactElement, ReactNode } from "react"; -import * as react_jsx_runtime0$1 from "react/jsx-runtime"; import * as react_jsx_runtime0 from "react/jsx-runtime"; -import * as react_jsx_runtime10 from "react/jsx-runtime"; -import * as react_jsx_runtime8 from "react/jsx-runtime"; -import * as react_jsx_runtime6 from "react/jsx-runtime"; -import * as react_jsx_runtime3 from "react/jsx-runtime"; -import * as react_jsx_runtime4 from "react/jsx-runtime"; //#region src/types.d.ts type Omit = Pick>; @@ -448,7 +440,7 @@ interface DataGridProps extends Shared * * */ -declare function DataGrid(props: DataGridProps): react_jsx_runtime0$1.JSX.Element; +declare function DataGrid(props: DataGridProps): react_jsx_runtime0.JSX.Element; //#endregion //#region src/TreeDataGrid.d.ts interface TreeDataGridProps extends Omit, 'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled'> { @@ -481,7 +473,7 @@ declare function TreeDataGrid({ }: TreeDataGridProps): react_jsx_runtime0.JSX.Element; //#endregion //#region src/DataGridDefaultRenderersContext.d.ts -declare const DataGridDefaultRenderersContext: react0$1.Context>>; +declare const DataGridDefaultRenderersContext: react0.Context>>; //#endregion //#region src/Row.d.ts declare const RowComponent: (props: RenderRowProps) => React.JSX.Element; @@ -498,16 +490,16 @@ declare function renderCheckbox({ onChange, indeterminate, ...props -}: RenderCheckboxProps): react_jsx_runtime10.JSX.Element; +}: RenderCheckboxProps): react_jsx_runtime0.JSX.Element; //#endregion //#region src/cellRenderers/renderToggleGroup.d.ts -declare function renderToggleGroup(props: RenderGroupCellProps): react_jsx_runtime8.JSX.Element; +declare function renderToggleGroup(props: RenderGroupCellProps): react_jsx_runtime0.JSX.Element; declare function ToggleGroup({ groupKey, isExpanded, tabIndex, toggleGroup -}: RenderGroupCellProps): react_jsx_runtime8.JSX.Element; +}: RenderGroupCellProps): react_jsx_runtime0.JSX.Element; //#endregion //#region src/cellRenderers/renderValue.d.ts declare function renderValue(props: RenderCellProps): react0.ReactNode; @@ -525,7 +517,7 @@ declare function SelectCellFormatter({ onChange, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy -}: SelectCellFormatterProps): react6.ReactNode; +}: SelectCellFormatterProps): react0.ReactNode; //#endregion //#region src/editors/textEditor.d.ts declare function textEditor({ @@ -533,19 +525,19 @@ declare function textEditor({ column, onRowChange, onClose -}: RenderEditCellProps): react_jsx_runtime6.JSX.Element; +}: RenderEditCellProps): react_jsx_runtime0.JSX.Element; //#endregion //#region src/renderHeaderCell.d.ts declare function renderHeaderCell({ column, sortDirection, priority -}: RenderHeaderCellProps): string | react_jsx_runtime3.JSX.Element; +}: RenderHeaderCellProps): string | react_jsx_runtime0.JSX.Element; //#endregion //#region src/sortStatus.d.ts declare function renderSortIcon({ sortDirection -}: RenderSortIconProps): react_jsx_runtime4.JSX.Element | null; +}: RenderSortIconProps): react_jsx_runtime0.JSX.Element | null; declare function renderSortPriority({ priority }: RenderSortPriorityProps): number | undefined; diff --git a/lib/index.js b/lib/index.js index f54f59ce7c..b4adecfb54 100644 --- a/lib/index.js +++ b/lib/index.js @@ -616,7 +616,7 @@ function useCalculatedColumns({ rawColumns, defaultColumnOptions, getColumnWidth defaultDraggable ]); const { templateColumns, layoutCssVars, totalFrozenColumnWidth, columnMetrics } = useMemo(() => { - const columnMetrics$1 = new Map(); + const columnMetrics$1 = /* @__PURE__ */ new Map(); let left = 0; let totalFrozenColumnWidth$1 = 0; const templateColumns$1 = []; @@ -759,7 +759,7 @@ function useColumnWidths(columns, viewportColumns, templateColumns, gridRef, gri const { key: resizingKey } = column; flushSync(() => { if (columnsCanFlex) { - const columnsToRemeasure = new Set(); + const columnsToRemeasure = /* @__PURE__ */ new Set(); for (const { key, width } of viewportColumns) if (resizingKey !== key && typeof width === "string" && columnWidths.get(key)?.type !== "resized") columnsToRemeasure.add(key); setColumnsToMeasureOnResize(columnsToRemeasure); } @@ -1480,7 +1480,7 @@ var HeaderRow_default = memo(HeaderRow); //#region src/GroupedColumnHeaderRow.tsx function GroupedColumnHeaderRow({ rowIdx, level, columns, selectedCellIdx, selectCell }) { const cells = []; - const renderedParents = new Set(); + const renderedParents = /* @__PURE__ */ new Set(); for (const column of columns) { let { parent } = column; if (parent === void 0) continue; @@ -1712,6 +1712,9 @@ const initialSelectedRange = { endRowIdx: -1, endColumnIdx: -1 }; +function isRangeSelectionKey(key) { + return key === "ArrowUp" || key === "ArrowDown" || key === "ArrowLeft" || key === "ArrowRight"; +} /** * Main API Component to render a data grid of rows and columns * @@ -1742,7 +1745,7 @@ function DataGrid(props) { */ const [scrollTop, setScrollTop] = useState(0); const [scrollLeft, setScrollLeft] = useState(0); - const [columnWidthsInternal, setColumnWidthsInternal] = useState(() => columnWidthsRaw ?? new Map()); + const [columnWidthsInternal, setColumnWidthsInternal] = useState(() => columnWidthsRaw ?? /* @__PURE__ */ new Map()); const [isColumnResizing, setColumnResizing] = useState(false); const [isDragging, setDragging] = useState(false); const [draggedOverRowIdx, setDraggedOverRowIdx] = useState(void 0); @@ -1966,34 +1969,37 @@ function DataGrid(props) { const isCellEvent = event.target.closest(".rdg-cell") !== null; const isRowEvent = isTreeGrid && event.target === focusSinkRef.current; if (!isCellEvent && !isRowEvent) return; - if (event.shiftKey) switch (event.key) { - case "ArrowUp": - if (selectedRange.endRowIdx > 0) setSelectedRangeWithBoundary({ - ...selectedRange, - endRowIdx: selectedRange.endRowIdx - 1 - }); - break; - case "ArrowDown": - if (selectedRange.endRowIdx < rows.length - 1) setSelectedRangeWithBoundary({ - ...selectedRange, - endRowIdx: selectedRange.endRowIdx + 1 - }); - break; - case "ArrowRight": - if (selectedRange.endColumnIdx < columns.length - 1) setSelectedRangeWithBoundary({ - ...selectedRange, - endColumnIdx: selectedRange.endColumnIdx + 1 - }); - break; - case "ArrowLeft": - if (selectedRange.endColumnIdx > 0) setSelectedRangeWithBoundary({ - ...selectedRange, - endColumnIdx: selectedRange.endColumnIdx - 1 - }); - break; - default: break; + if (enableRangeSelection && event.shiftKey && isRangeSelectionKey(event.key)) { + switch (event.key) { + case "ArrowUp": + if (selectedRange.endRowIdx > 0) setSelectedRangeWithBoundary({ + ...selectedRange, + endRowIdx: selectedRange.endRowIdx - 1 + }); + break; + case "ArrowDown": + if (selectedRange.endRowIdx < rows.length - 1) setSelectedRangeWithBoundary({ + ...selectedRange, + endRowIdx: selectedRange.endRowIdx + 1 + }); + break; + case "ArrowRight": + if (selectedRange.endColumnIdx < columns.length - 1) setSelectedRangeWithBoundary({ + ...selectedRange, + endColumnIdx: selectedRange.endColumnIdx + 1 + }); + break; + case "ArrowLeft": + if (selectedRange.endColumnIdx > 0) setSelectedRangeWithBoundary({ + ...selectedRange, + endColumnIdx: selectedRange.endColumnIdx - 1 + }); + break; + default: break; + } + return; } - else switch (event.key) { + switch (event.key) { case "ArrowUp": case "ArrowDown": case "ArrowLeft": @@ -2010,6 +2016,18 @@ function DataGrid(props) { break; } } + function handleRangeMouseDown() { + setIsMouseRangeSelectionMode(true); + } + function handleRangeMouseUp() { + setIsMouseRangeSelectionMode(false); + setSelectedRange((boundValue) => ({ + startColumnIdx: Math.min(boundValue.startColumnIdx, boundValue.endColumnIdx), + endColumnIdx: Math.max(boundValue.startColumnIdx, boundValue.endColumnIdx), + startRowIdx: Math.min(boundValue.startRowIdx, boundValue.endRowIdx), + endRowIdx: Math.max(boundValue.startRowIdx, boundValue.endRowIdx) + })); + } function handleScroll(event) { const { scrollTop: scrollTop$1, scrollLeft: scrollLeft$1 } = event.currentTarget; flushSync(() => { @@ -2450,23 +2468,15 @@ function DataGrid(props) { selectCell: selectCellLatest, selectedCellEditor: getCellEditor(rowIdx), rangeSelectionMode: enableRangeSelection, - onMouseDownCapture: () => setIsMouseRangeSelectionMode(true), - onMouseUpCapture: () => { - setIsMouseRangeSelectionMode(false); - setSelectedRange((boundValue) => ({ - startColumnIdx: Math.min(boundValue.startColumnIdx, boundValue.endColumnIdx), - endColumnIdx: Math.max(boundValue.startColumnIdx, boundValue.endColumnIdx), - startRowIdx: Math.min(boundValue.startRowIdx, boundValue.endRowIdx), - endRowIdx: Math.max(boundValue.startRowIdx, boundValue.endRowIdx) - })); - }, - onMouseEnter: ({ column }) => { - if (isMouseRangeSelectionMode && enableRangeSelection) setSelectedRangeWithBoundary({ + onMouseDownCapture: enableRangeSelection ? handleRangeMouseDown : void 0, + onMouseUpCapture: enableRangeSelection ? handleRangeMouseUp : void 0, + onMouseEnter: enableRangeSelection ? ({ column }) => { + if (isMouseRangeSelectionMode) setSelectedRangeWithBoundary({ ...selectedRange, endRowIdx: rowIdx, endColumnIdx: column.idx }); - } + } : void 0 })); } return rowElements; @@ -2656,7 +2666,7 @@ var GroupCell_default = memo(GroupCell); //#region src/GroupRow.tsx const groupRow = "g1yxluv37-0-0-beta-58"; const groupRowClassname = `rdg-group-row ${groupRow}`; -function GroupedRow({ className, row: row$1, rowIdx, viewportColumns, selectedCellIdx, isRowSelected, selectCell, gridRowStart, groupBy, toggleGroup, isRowSelectionDisabled,...props }) { +function GroupedRow({ className, row: row$1, rowIdx, viewportColumns, selectedCellIdx, isRowSelected, selectCell, gridRowStart, groupBy, toggleGroup, isRowSelectionDisabled, rangeSelectionMode, onMouseDownCapture, onMouseUpCapture, onMouseEnter,...props }) { const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? row$1.level + 1 : row$1.level; function handleSelectGroup() { selectCell({ @@ -2756,7 +2766,7 @@ function TreeDataGrid({ columns: rawColumns, rows: rawRows, rowHeight: rawRowHei rawRows ]); const [rows, isGroupRow] = useMemo(() => { - const allGroupRows = new Set(); + const allGroupRows = /* @__PURE__ */ new Set(); if (!groupedRows) return [rawRows, isGroupRow$1]; const flattenedRows = []; const expandGroup = (rows$1, parentId, level) => { @@ -2916,7 +2926,7 @@ function TreeDataGrid({ columns: rawColumns, rows: rawRows, rowHeight: rawRowHei else newExpandedGroupIds.add(groupId); onExpandedGroupIdsChange(newExpandedGroupIds); } - function renderRow(key, { row: row$1, rowClass, onCellMouseDown, onCellClick, onCellDoubleClick, onCellContextMenu, onRowChange, lastFrozenColumnIndex, draggedOverCellIdx, selectedCellEditor,...rowProps }) { + function renderRow(key, { row: row$1, rowClass, onCellMouseDown, onCellClick, onCellDoubleClick, onCellContextMenu, onRowChange, lastFrozenColumnIndex, draggedOverCellIdx, selectedCellEditor, selectedCellsRange,...rowProps }) { if (isGroupRow(row$1)) { const { startRowIndex } = row$1; return /* @__PURE__ */ jsx(GroupRow_default, { @@ -2946,7 +2956,8 @@ function TreeDataGrid({ columns: rawColumns, rows: rawRows, rowHeight: rawRowHei onRowChange, lastFrozenColumnIndex, draggedOverCellIdx, - selectedCellEditor + selectedCellEditor, + selectedCellsRange }); } return /* @__PURE__ */ jsx(DataGrid, { diff --git a/lib/index.js.map b/lib/index.js.map index c9aec1dcf2..2fcc4aa026 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","names":["column: CalculatedColumn","lastFrozenColumnIndex: number","args: ColSpanArgs","event: React.SyntheticEvent","element: Maybe","behavior: ScrollBehavior","event: E","e: React.KeyboardEvent","event: React.KeyboardEvent","isUserHandlingPaste: boolean","direction: Maybe","CalculatedColumn","measuringCellClassname","renderMeasuringCells","viewportColumns","R","SR","map","key","idx","minWidth","maxWidth","gridColumnStart","row","column: CalculatedColumn","row: R","moveNext: boolean","moveNext","parent: CalculatedColumnParent","cell","cellClassname","cellFrozen","cellFrozenClassname","cellDragHandle","cellDragHandleFrozenClassname","cellDragHandleClassname","rowIdx: number","column: CalculatedColumnOrColumnGroup","rowSpan: number","column: CalculatedColumn","keyGetter: Maybe<(row: NoInfer) => K>","width: number","column: CalculatedColumnOrColumnGroup","rowIdx: number","value: number","num1: number","num2: number","RenderCheckboxProps","checkbox","checkboxClassname","renderCheckbox","onChange","indeterminate","props","handleChange","e","React","ChangeEvent","HTMLInputElement","target","checked","nativeEvent","MouseEvent","shiftKey","el","RenderGroupCellProps","groupCellContent","groupCellContentClassname","caret","caretClassname","renderToggleGroup","props","R","SR","ToggleGroup","groupKey","isExpanded","tabIndex","toggleGroup","handleKeyDown","key","React","KeyboardEvent","HTMLSpanElement","d","props: RenderCellProps","renderCheckbox","props: RenderHeaderCellProps","props: RenderCellProps","props: RenderGroupCellProps","SelectColumn: Column","RenderHeaderCellProps","useDefaultRenderers","headerSortCellClassname","headerSortName","headerSortNameClassname","renderHeaderCell","column","sortDirection","priority","R","SR","sortable","name","SharedHeaderCellProps","Pick","SortableHeaderCellProps","children","React","ReactNode","SortableHeaderCell","renderSortStatus","defaultRenderCell","lastFrozenColumnIndex","headerRowsCount","columns: MutableCalculatedColumn[]","rawColumns: readonly ColumnOrColumnGroup[]","level: number","parent?: MutableCalculatedColumnParent","rawColumns","calculatedColumnParent: MutableCalculatedColumnParent","column: MutableCalculatedColumn","colSpanColumns: CalculatedColumn[]","columnMetrics","totalFrozenColumnWidth","templateColumns: string[]","layoutCssVars: Record","colOverscanStartIdx","colOverscanEndIdx","column: MutableCalculatedColumn | MutableCalculatedColumnParent","index: number","columns: readonly CalculatedColumn[]","viewportColumns: readonly CalculatedColumn[]","templateColumns: readonly string[]","gridRef: React.RefObject","gridWidth: number","columnWidths: ColumnWidths","onColumnWidthsChange: (columnWidths: ColumnWidths) => void","onColumnResize: DataGridProps['onColumnResize']","setColumnResizing: (isColumnResizing: boolean) => void","columnsCanFlex: boolean","columnsToMeasure: string[]","column: CalculatedColumn","nextWidth: ResizedWidth","key: string","offsetHeight","clientHeight","fn: T","isSelected: boolean","event: React.FocusEvent","startIdx","colIdx: number","colSpan: number | undefined","row","viewportColumns: CalculatedColumn[]","rowIdx: number","offset: number","totalRowHeight","gridTemplateRows","currentHeight: number | null","row","memo","MouseEvent","useRovingTabIndex","createCellEvent","getCellClassname","getCellStyle","isCellEditableUtil","CellMouseEventHandler","CellRendererProps","cellDraggedOver","cellDraggedOverClassname","Cell","column","colSpan","isCellSelected","isDraggedOver","row","rowIdx","className","onMouseDown","onCellMouseDown","onClick","onCellClick","onDoubleClick","onCellDoubleClick","onContextMenu","onCellContextMenu","onRowChange","selectCell","style","rangeSelectionMode","onMouseDownCapture","onMouseUpCapture","onMouseEnter","props","R","SR","tabIndex","childTabIndex","onFocus","cellClass","isEditable","selectCellWrapper","enableEditor","idx","handleMouseEvent","event","React","HTMLDivElement","eventHandler","eventHandled","cellEvent","isGridDefaultPrevented","handleMouseDown","handleClick","handleDoubleClick","handleContextMenu","handleRowChange","newRow","undefined","e","renderCell","isCellEditable","CellComponent","JSX","Element","defaultRenderCell","key","Key","useEffectEvent","useLayoutEffect","useRef","createCellEvent","getCellClassname","getCellStyle","onEditorNavigation","CellKeyboardEvent","CellRendererProps","EditCellKeyDownArgs","Maybe","Omit","RenderEditCellProps","global","scheduler","Scheduler","postTask","callback","options","priority","signal","AbortSignal","delay","Promise","canUsePostTask","cellEditing","SharedCellRendererProps","Pick","R","SR","EditCellProps","rowIdx","onRowChange","row","commitChanges","shouldFocusCell","closeEditor","navigate","event","React","KeyboardEvent","HTMLDivElement","onKeyDown","args","EditCell","column","colSpan","captureEventRef","MouseEvent","undefined","abortControllerRef","AbortController","frameRequestRef","commitOnOutsideClick","editorOptions","commitOnOutsideMouseDown","onClose","onWindowCaptureMouseDown","current","abortController","catch","requestAnimationFrame","onWindowMouseDown","addEventListener","capture","removeEventListener","cancelTask","abort","cancelAnimationFrame","handleKeyDown","cellEvent","mode","isGridDefaultPrevented","key","onEditorRowChange","commitChangesAndFocus","cellClass","className","displayCellContent","idx","renderEditCell","renderCell","isCellEditable","tabIndex","useRef","useState","flushSync","useRovingTabIndex","clampColumnWidth","getCellClassname","getCellStyle","getHeaderCellRowSpan","getHeaderCellStyle","getLeftRightKey","isCtrlKeyHeldDown","stopPropagation","CalculatedColumn","SortColumn","HeaderRowProps","cellSortableClassname","cellResizable","cellResizableClassname","resizeHandle","resizeHandleClassname","cellDraggableClassname","cellDragging","cellDraggingClassname","cellOver","cellOverClassname","dragImageClassname","SharedHeaderRowProps","Pick","R","SR","React","Key","HeaderCellProps","column","colSpan","rowIdx","isCellSelected","draggedColumnKey","setDraggedColumnKey","HeaderCell","onColumnResize","onColumnResizeEnd","onColumnsReorder","sortColumns","onSortColumnsChange","selectCell","shouldFocusGrid","direction","isOver","setIsOver","dragImageRef","HTMLDivElement","isDragging","key","rowSpan","tabIndex","childTabIndex","onFocus","sortIndex","findIndex","sort","columnKey","sortColumn","undefined","sortDirection","priority","length","ariaSort","sortable","resizable","draggable","className","headerCellClass","onSort","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","handleFocus","event","FocusEvent","idx","onMouseDown","onClick","MouseEvent","HTMLSpanElement","ctrlKey","metaKey","onKeyDown","KeyboardEvent","preventDefault","width","currentTarget","getBoundingClientRect","leftKey","offset","newWidth","onDragStart","DragEvent","dataTransfer","setDragImage","current","dropEffect","onDragEnd","onDragOver","onDrop","onDragEnter","isEventPertinent","onDragLeave","dragTargetProps","ComponentProps","dropTargetProps","style","CSSProperties","content","renderHeaderCell","ResizeHandleProps","ResizeHandle","resizingOffsetRef","isRtl","onPointerDown","PointerEvent","pointerType","buttons","pointerId","setPointerCapture","headerCell","parentElement","right","left","clientX","onPointerMove","onLostPointerCapture","onDoubleClick","relatedTarget","HTMLElement","contains","row","rowClassname","rowSelected","rowSelectedClassname","rowSelectedWithFrozenCell","topSummaryRowClassname","bottomSummaryRowClassname","memo","useState","classnames","getColSpan","CalculatedColumn","Direction","Maybe","Position","ResizedWidth","DataGridProps","HeaderCell","rowSelectedClassname","SharedDataGridProps","React","Key","Pick","R","SR","K","HeaderRowProps","rowIdx","columns","onColumnResize","column","width","onColumnResizeEnd","selectCell","position","lastFrozenColumnIndex","selectedCellIdx","shouldFocusGrid","direction","headerRowClass","headerRow","headerRowClassname","HeaderRow","onColumnsReorder","sortColumns","onSortColumnsChange","draggedColumnKey","setDraggedColumnKey","cells","index","length","colSpan","type","undefined","push","key","idx","props","JSX","Element","column: CalculatedColumn","newRow: R","row","key: React.Key","props: RenderRowProps","RenderSortIconProps","RenderSortPriorityProps","RenderSortStatusProps","arrow","arrowClassname","renderSortStatus","sortDirection","priority","renderSortIcon","renderSortPriority","undefined","root","rootClassname","viewportDragging","viewportDraggingClassname","focusSinkClassname","focusSinkHeaderAndSummaryClassname","memo","useRovingTabIndex","getCellClassname","getCellStyle","CellRendererProps","summaryCellClassname","SharedCellRendererProps","Pick","R","SR","SummaryCellProps","row","SummaryCell","column","colSpan","rowIdx","isCellSelected","selectCell","tabIndex","childTabIndex","onFocus","summaryCellClass","className","onMouseDown","idx","renderSummaryCell","props","React","JSX","Element","memo","classnames","getColSpan","getRowStyle","RenderRowProps","bottomSummaryRowClassname","rowClassname","rowSelectedClassname","topSummaryRowClassname","SummaryCell","SharedRenderRowProps","Pick","R","SR","SummaryRowProps","row","top","bottom","lastFrozenColumnIndex","selectedCellIdx","isTop","summaryRow","topSummaryRow","summaryRowClassname","SummaryRow","rowIdx","gridRowStart","viewportColumns","selectCell","ariaRowIndex","cells","index","length","column","colSpan","type","undefined","isCellSelected","idx","push","key","props","React","JSX","Element","initialSelectedRange: CellsRange","props: DataGridProps","renderSortStatus","defaultRenderSortStatus","renderCheckbox","defaultRenderCheckbox","columnWidths: ColumnWidths","columnWidths","column: CalculatedColumn","row","value: CellsRange","cell","args: SelectHeaderRowEvent","args: SelectRowEvent","event: KeyboardEvent","event: React.UIEvent","scrollTop","scrollLeft","rowIdx: number","row: R","event: CellClipboardEvent","event: React.PointerEvent","event: React.MouseEvent","startRowIdx: number","endRowIdx: number","indexes: number[]","idx: number","position: Position","options?: SelectCellOptions","key: string","ctrlKey: boolean","shiftKey: boolean","cellNavigationMode: CellNavigationMode","currentRowIdx: number","style","dragHandleStyle: React.CSSProperties","shouldFocusCell: boolean","shouldFocusCell","commitChanges: boolean","rowElements: React.ReactNode[]","key: K | number","GroupedColumnHeaderRow","HeaderRow","SummaryRow","gridEl: HTMLDivElement","p1: Position","p2: Position","memo","useMemo","RowSelectionContext","RowSelectionContextValue","classnames","getRowStyle","BaseRenderRowProps","GroupRow","SELECT_COLUMN_KEY","GroupCell","rowClassname","rowSelectedClassname","groupRow","groupRowClassname","GroupRowRendererProps","R","SR","row","groupBy","toggleGroup","expandedGroupId","GroupedRow","className","rowIdx","viewportColumns","selectedCellIdx","isRowSelected","selectCell","gridRowStart","isRowSelectionDisabled","props","idx","key","level","handleSelectGroup","shouldFocusCell","selectionValue","setSize","posInSet","isExpanded","map","column","id","groupKey","childRows","includes","React","JSX","Element","columns","groupBy: string[]","rows: readonly R[]","startRowIndex: number","groups: GroupByDictionary","rows","isGroupRow","flattenedRows: Array>","rows: GroupByDictionary | readonly R[]","parentId: string | undefined","level: number","groupRow: GroupRow","groupRow","row: R | GroupRow","row","selectedRows","newSelectedRows: Set","args: CellKeyDownArgs","event: CellKeyboardEvent","event: CellClipboardEvent","updatedRows: R[]","rawIndexes: number[]","groupId: unknown","key: Key","GroupedRow","groupKey: string","arr: unknown","RenderEditCellProps","textEditorInternalClassname","textEditorClassname","autoFocusAndSelect","input","HTMLInputElement","focus","select","textEditor","row","column","onRowChange","onClose","TRow","TSummaryRow","key","event","target","value"],"sources":["../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/eventUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/renderMeasuringCells.tsx","../src/utils/selectedCellUtils.ts","../src/style/cell.ts","../src/utils/styleUtils.ts","../src/utils/index.ts","../src/cellRenderers/renderCheckbox.tsx","../src/cellRenderers/renderToggleGroup.tsx","../src/cellRenderers/renderValue.tsx","../src/DataGridDefaultRenderersContext.ts","../src/cellRenderers/SelectCellFormatter.tsx","../src/hooks/useRowSelection.ts","../src/Columns.tsx","../src/renderHeaderCell.tsx","../src/hooks/useCalculatedColumns.ts","../src/hooks/useColumnWidths.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingTabIndex.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/Cell.tsx","../src/EditCell.tsx","../src/GroupedColumnHeaderCell.tsx","../src/HeaderCell.tsx","../src/style/row.ts","../src/HeaderRow.tsx","../src/GroupedColumnHeaderRow.tsx","../src/Row.tsx","../src/ScrollToCell.tsx","../src/sortStatus.tsx","../src/style/core.ts","../src/SummaryCell.tsx","../src/SummaryRow.tsx","../src/DataGrid.tsx","../src/GroupCell.tsx","../src/GroupRow.tsx","../src/TreeDataGrid.tsx","../src/editors/textEditor.tsx"],"sourcesContent":["import type { CalculatedColumn, ColSpanArgs } from '../types';\n\nexport function getColSpan(\n column: CalculatedColumn,\n lastFrozenColumnIndex: number,\n args: ColSpanArgs\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, behavior: ScrollBehavior = 'instant') {\n element?.scrollIntoView({ inline: 'nearest', block: 'nearest', behavior });\n}\n","import type { CellEvent } from '../types';\n\nexport function createCellEvent>(\n event: E\n): CellEvent {\n let defaultPrevented = false;\n const cellEvent = {\n ...event,\n preventGridDefault() {\n defaultPrevented = true;\n },\n isGridDefaultPrevented() {\n return defaultPrevented;\n }\n };\n\n Object.setPrototypeOf(cellEvent, Object.getPrototypeOf(event));\n\n return cellEvent;\n}\n","import type { Direction, Maybe } from '../types';\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\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\nconst vKey = 86;\n\nexport function isDefaultCellInput(\n event: React.KeyboardEvent,\n isUserHandlingPaste: boolean\n): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (isCtrlKeyHeldDown(event) && (event.keyCode !== vKey || isUserHandlingPaste)) return false;\n return !nonInputKeys.has(event.key);\n}\n\n/**\n * By default, the following navigation keys are enabled while an editor is open, under specific conditions:\n * - Tab:\n * - The editor must be an , a