react-glide-table 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,482 +1,6 @@
1
- import * as react from 'react';
2
- import { ReactNode, ComponentType, RefObject, ReactElement } from 'react';
3
- import { ColumnDef, RowSelectionState, Updater, Row, Table as Table$1 } from '@tanstack/react-table';
1
+ export { D as DEFAULT_DATA_TABLE_LABELS, a as DataTableClassNames, b as DataTableLabels, c as DataTableProps, d as DataTableSlots, R as RowSelectionMode, T as TableColumnProps, e as TableProps, r as resolveDataTableLabels } from './types-BfthylVR.cjs';
2
+ export { CELL_SELECTION_EDGES_CLASS, CellSelectionBounds, ColumnRowSpanMap, DEFAULT_TREE_CHILDREN_FIELD, DEFAULT_TREE_ID_FIELD, DEFAULT_TREE_PARENT_ID_FIELD, DEFAULT_TREE_QTY_FIELD, DragState, EditingCell, RowSpanInfo, TreeRow, UseConvertTreeDataParams, UseGlideTableOptions, UseGlideTableResult, applyCellEdit, applyFillData, applySelectionUpdater, buildColumnRowSpanMap, canExpandRow, collectFillChanges, collectRowSpanColumns, getCellEditDraftValue, getCellSelectionEdgeStyle, getColumnEditType, getRowIndexInMergedCell, hasCellSelectionEdges, isCellInSelection, isColumnEditable, parseCellEditValue, resolveRowSelection, resolveRowSpanAt, toggleExpandedRowId, useCellEdit, useCellSelection, useConvertTreeData, useGlideTable } from './core.cjs';
3
+ export { DataTable, Table, TableCompoundComponent, createTable } from './compound.cjs';
4
4
  export { ColumnDef, RowSelectionState } from '@tanstack/react-table';
5
- import { Virtualizer, VirtualItem } from '@tanstack/react-virtual';
6
-
7
- type DataTableLabels = {
8
- empty: string;
9
- loading: string;
10
- selection: (selectedCount: number) => ReactNode;
11
- expandRow: string;
12
- collapseRow: string;
13
- };
14
- /** Default copy. Override via the `labels` option. */
15
- declare const DEFAULT_DATA_TABLE_LABELS: DataTableLabels;
16
- declare function resolveDataTableLabels(partial?: Partial<DataTableLabels>): DataTableLabels;
17
-
18
- /** Neutral default field names for tree conversion */
19
- declare const DEFAULT_TREE_ID_FIELD = "id";
20
- declare const DEFAULT_TREE_PARENT_ID_FIELD = "parentId";
21
- declare const DEFAULT_TREE_CHILDREN_FIELD = "children";
22
- declare const DEFAULT_TREE_QTY_FIELD = "qty";
23
-
24
- type RowSelectionMode = "none" | "single" | "multi";
25
- type CellEditType = "text" | "number";
26
-
27
- declare module "@tanstack/react-table" {
28
- interface ColumnMeta<TData, TValue> {
29
- /** Whether this column participates in vertical row spanning */
30
- rowSpan?: boolean;
31
- /** Merge key field. Falls back to the column id when omitted */
32
- rowSpanKey?: string;
33
- align?: "left" | "center" | "right";
34
- className?: string;
35
- headerClassName?: string;
36
- /** When true, double-click starts inline editing */
37
- editable?: boolean;
38
- /** Inline editor input type. Defaults to text */
39
- editType?: CellEditType;
40
- }
41
- }
42
- type DataTableProps<T extends Record<string, unknown>> = {
43
- data: T[];
44
- columns: ColumnDef<T, unknown>[];
45
- rowSelectionMode?: RowSelectionMode;
46
- rowSelection?: RowSelectionState;
47
- onRowSelectionChange?: (updater: Updater<RowSelectionState>) => void;
48
- /** Total row count before filtering */
49
- totalCount?: number;
50
- /** Visible row count after filtering */
51
- filteredCount?: number;
52
- /** Left-side summary slot */
53
- summary?: ReactNode;
54
- /** Right-side action slot */
55
- toolbar?: ReactNode;
56
- /**
57
- * UI copy overrides.
58
- * Takes precedence over `emptyText` / `selectionLabel`.
59
- */
60
- labels?: Partial<DataTableLabels>;
61
- /** @deprecated Prefer `labels.selection` */
62
- selectionLabel?: (selectedCount: number) => ReactNode;
63
- isPending?: boolean;
64
- /** @deprecated Prefer `labels.empty` */
65
- emptyText?: string;
66
- /** @deprecated Prefer `labels.loading` */
67
- loadingText?: string;
68
- enableRowSpan?: boolean;
69
- getRowId?: (row: T, index: number) => string;
70
- onRowClick?: (row: T, index: number) => void;
71
- preserveRowSelection?: boolean;
72
- getRowClassName?: (row: T, index: number) => string | undefined;
73
- /** Return false to make the row unselectable (row click and checkbox) */
74
- getRowCanSelect?: (row: T, index: number) => boolean;
75
- /** When false, row click does not toggle selection (checkbox-only) */
76
- selectOnRowClick?: boolean;
77
- /**
78
- * Enable cell drag selection and fill handle. Defaults to true.
79
- * When false, browser text selection is allowed and cell selection UI is off.
80
- */
81
- enableCellSelection?: boolean;
82
- /**
83
- * @deprecated Combining with paged/tree-transformed data can corrupt the source.
84
- * Prefer onCellChange / onBatchChange.
85
- */
86
- onDataChange?: (data: T[]) => void;
87
- /** Single-cell change (edit commit). Takes precedence over onDataChange */
88
- onCellChange?: (rowId: string, columnId: string, value: unknown) => void;
89
- /** Multi-cell change (fill handle, etc.). Takes precedence over onDataChange */
90
- onBatchChange?: (changes: Array<{
91
- rowId: string;
92
- columnId: string;
93
- value: unknown;
94
- }>) => void;
95
- /**
96
- * Root className hook (combined with `DataTableJSX`).
97
- * The package ships no CSS — style these hooks yourself or leave unstyled.
98
- */
99
- className?: string;
100
- /** Expand key field. Enables tree conversion / expand UI when set. Default `id` */
101
- toggleField?: string;
102
- /** Child → parent reference field. Default `parentId` */
103
- childField?: string;
104
- /** Nested children array field. Default `children` */
105
- flattenField?: string;
106
- /** Parent quantity field used for parentCount. Default `qty` */
107
- qtyField?: string;
108
- /** Expanded row key set (controlled) */
109
- expandedRows?: Set<string>;
110
- onExpandedRowsChange?: (next: Set<string>) => void;
111
- /** When true, expand is disabled (children always visible) */
112
- preventExpand?: boolean;
113
- /**
114
- * Enable row virtualization. Defaults to true.
115
- * Forced off when enableRowSpan is true to preserve merges
116
- * (HTML table + spacer rows; no absolute/translateY positioning).
117
- */
118
- enableVirtualization?: boolean;
119
- /** Estimated virtual row height in px. Default 44; refined via measureElement */
120
- estimateRowHeight?: number;
121
- /** Virtualization overscan row count. Default 8 */
122
- virtualOverscan?: number;
123
- /**
124
- * Optional UI part replacements for the unstyled DataTable renderer.
125
- * Use with `createTable` / `Table.Column`, or pass columns directly to `DataTable`.
126
- */
127
- slots?: DataTableSlots<T>;
128
- };
129
- type DataTableToolbarSlotProps = {
130
- filteredCount?: number;
131
- totalCount?: number;
132
- summary?: ReactNode;
133
- selectedCount: number;
134
- selectionLabel?: (selectedCount: number) => ReactNode;
135
- toolbar?: ReactNode;
136
- className?: string;
137
- };
138
- type DataTableRowSlotProps<T extends Record<string, unknown>> = {
139
- row: Row<T>;
140
- onToggleSelect: () => void;
141
- virtualIndex?: number;
142
- measureElement?: (node: Element | null) => void;
143
- };
144
- /**
145
- * Slot replacements for the default DataTable shell (semantic HTML + behavior only).
146
- * Row-level custom UI → `Row`; cell content → `Table.Column` / column `render`.
147
- * Header/Cell are not split into separate slots in this contract.
148
- */
149
- type DataTableSlots<T extends Record<string, unknown>> = {
150
- /** Top summary / actions region */
151
- Toolbar?: ComponentType<DataTableToolbarSlotProps>;
152
- /** Full row replacement (cells, selection, edit UI) */
153
- Row?: ComponentType<DataTableRowSlotProps<T>>;
154
- /** Replace the pending state view */
155
- Pending?: ComponentType<{
156
- loadingText: string;
157
- className?: string;
158
- }>;
159
- /** Replace the empty-state cell content */
160
- Empty?: ComponentType<{
161
- emptyText: string;
162
- columnCount: number;
163
- }>;
164
- };
165
- type TableColumnProps<T extends Record<string, unknown>, K extends string = keyof T & string> = {
166
- /** Column id: data field name, or an arbitrary id for virtual columns */
167
- field: K;
168
- /** When true, uses id only (no accessorKey) — e.g. checkbox / No. columns */
169
- virtual?: boolean;
170
- children?: ReactNode;
171
- sortable?: boolean;
172
- width?: number;
173
- align?: "left" | "center" | "right";
174
- rowSpan?: boolean;
175
- rowSpanKey?: string;
176
- editable?: boolean;
177
- editType?: CellEditType;
178
- className?: string;
179
- headerClassName?: string;
180
- render?: (value: K extends keyof T ? T[K] : unknown, row: Row<T>, index: number) => ReactNode;
181
- };
182
- type TableProps<T extends Record<string, unknown>> = Omit<DataTableProps<T>, "columns"> & {
183
- children: ReactNode;
184
- };
185
-
186
- type EditingCell = {
187
- rowIndex: number;
188
- colIndex: number;
189
- };
190
- type ColumnDefLike = {
191
- id?: string;
192
- accessorKey?: unknown;
193
- meta?: {
194
- editable?: boolean;
195
- editType?: CellEditType;
196
- };
197
- };
198
- declare function isColumnEditable(columnDef: ColumnDefLike): boolean;
199
- declare function getColumnEditType(columnDef: ColumnDefLike): CellEditType;
200
- declare function parseCellEditValue(raw: string, editType: CellEditType): {
201
- ok: true;
202
- value: string | number | null;
203
- } | {
204
- ok: false;
205
- };
206
- declare function getCellEditDraftValue(value: unknown): string;
207
- /** Returns updated data on success; null if parsing fails or the cell is not editable */
208
- declare function applyCellEdit<T extends Record<string, unknown>>(data: T[], rows: Row<T>[], rowIndex: number, colIndex: number, raw: string): T[] | null;
209
-
210
- type CellPosition = {
211
- row: number;
212
- col: number;
213
- };
214
- type CellSelectionBounds = {
215
- startRow: number;
216
- endRow: number;
217
- startCol: number;
218
- endCol: number;
219
- };
220
- type DragState = {
221
- isSelecting: boolean;
222
- isFillDragging: boolean;
223
- start: CellPosition | null;
224
- end: CellPosition | null;
225
- /** Fixed anchor opposite the fill handle (top-left) */
226
- fillAnchor: CellPosition | null;
227
- fillEnd: CellPosition | null;
228
- };
229
- declare function getRowIndexInMergedCell(clientY: number, cellElement: HTMLElement, rowIndex: number, rowSpan: number): number;
230
- declare function isCellInSelection(rowIndex: number, colIndex: number, bounds: CellSelectionBounds | null, rowSpan?: number): boolean;
231
- declare const CELL_SELECTION_EDGES_CLASS = "cell-selection-edges";
232
- type CellSelectionEdgeStyle = {
233
- /** Full-side inset border applied via ::after */
234
- ["--selection-edge-shadows"]?: string;
235
- /** Partial vertical border for merged-cell step (stair) segments */
236
- ["--selection-edge-gradients"]?: string;
237
- ["--selection-edge-sizes"]?: string;
238
- ["--selection-edge-positions"]?: string;
239
- /** Hide internal horizontal grid lines inside the selection with background color */
240
- borderBottomColor?: string;
241
- };
242
- /**
243
- * Draws the selection border with ::after (extended -1px at the bottom) plus
244
- * inset box-shadow / partial gradients so it does not break on the cell's
245
- * border-bottom.
246
- *
247
- * @param isVisuallySelectedAt Whether a logical cell is visually selected
248
- * (including adjacent merged cells). Used to suppress internal step borders
249
- * when multiple columns have rowSpan.
250
- */
251
- declare function getCellSelectionEdgeStyle(rowIndex: number, colIndex: number, bounds: CellSelectionBounds | null, rowSpan?: number, isVisuallySelectedAt?: (row: number, col: number) => boolean): CellSelectionEdgeStyle | undefined;
252
- declare function hasCellSelectionEdges(style: CellSelectionEdgeStyle | undefined): boolean;
253
-
254
- type RowSpanInfo = {
255
- /** 0 means skip render (merged into a parent row) */
256
- rowSpan: number;
257
- isFirstInGroup: boolean;
258
- };
259
- type ColumnRowSpanMap = Map<string, RowSpanInfo[]>;
260
- /**
261
- * Returns the start row and rowSpan of the merged cell covering a given row.
262
- * Rows with rowSpan === 0 walk up to the merge origin.
263
- */
264
- declare function resolveRowSpanAt(rowSpans: RowSpanInfo[] | undefined, rowIndex: number): {
265
- startRow: number;
266
- rowSpan: number;
267
- };
268
- /**
269
- * Computes merge info for every column that has rowSpan meta.
270
- */
271
- declare function buildColumnRowSpanMap<T extends Record<string, unknown>>(data: T[], columnKeys: Array<{
272
- columnId: string;
273
- rowSpanKey: string;
274
- }>): ColumnRowSpanMap;
275
- declare function collectRowSpanColumns<T extends Record<string, unknown>>(columns: ColumnDef<T, unknown>[]): Array<{
276
- columnId: string;
277
- rowSpanKey: string;
278
- }>;
279
-
280
- type RowData = Record<string, unknown>;
281
- type DataTableRowContextValue = {
282
- rowSpan: {
283
- enableRowSpan: boolean;
284
- primaryRowSpanKey?: string;
285
- columnRowSpanMap: ColumnRowSpanMap;
286
- hoveredRowIndex: number | null;
287
- hoveredGroupKey: string | null;
288
- selectedGroupKeys: Set<string>;
289
- onRowHover: (rowIndex: number, rowData: RowData) => void;
290
- };
291
- selection: {
292
- rowSelectionMode: RowSelectionMode;
293
- selectOnRowClick: boolean;
294
- onRowClick?: (row: RowData, index: number) => void;
295
- getRowClassName?: (row: RowData, index: number) => string | undefined;
296
- };
297
- cellSelection: {
298
- enableCellSelection: boolean;
299
- activeSelectionBounds: CellSelectionBounds | null;
300
- dragState: DragState;
301
- onCellMouseDown: (rowIndex: number, colIndex: number) => void;
302
- onCellMouseEnter: (rowIndex: number, colIndex: number) => void;
303
- onFillHandleMouseDown: (rowIndex: number, colIndex: number) => void;
304
- };
305
- cellEdit: {
306
- editingCell: EditingCell | null;
307
- draftValue: string;
308
- onDraftValueChange: (value: string) => void;
309
- onStartEdit: (rowIndex: number, colIndex: number) => void;
310
- onCommitEdit: (raw?: string) => boolean;
311
- onCancelEdit: () => void;
312
- };
313
- expand: {
314
- enableExpand: boolean;
315
- toggleField?: string;
316
- expandedRows?: Set<string>;
317
- preventExpand: boolean;
318
- onToggleExpand?: (rowKey: string) => void;
319
- expandRowLabel: string;
320
- collapseRowLabel: string;
321
- };
322
- };
323
-
324
- type UseGlideTableOptions<T extends Record<string, unknown>> = Omit<DataTableProps<T>, "className" | "slots" | "summary" | "toolbar" | "isPending" | "totalCount" | "filteredCount">;
325
- type UseGlideTableResult<T extends Record<string, unknown>> = {
326
- table: Table$1<T>;
327
- tableData: T[];
328
- rows: Row<T>[];
329
- columnCount: number;
330
- selectedCount: number;
331
- labels: DataTableLabels;
332
- emptyText: string;
333
- loadingText: string;
334
- selectionLabel: DataTableLabels["selection"];
335
- enableCellSelection: boolean;
336
- shouldVirtualize: boolean;
337
- scrollRef: RefObject<HTMLDivElement | null>;
338
- rowVirtualizer: Virtualizer<HTMLDivElement, Element>;
339
- virtualRows: VirtualItem[];
340
- paddingTop: number;
341
- paddingBottom: number;
342
- rowContextValue: DataTableRowContextValue;
343
- handleToggleSelect: (row: Row<T>) => void;
344
- clearHover: () => void;
345
- };
346
- declare function useGlideTable<T extends Record<string, unknown>>(options: UseGlideTableOptions<T>): UseGlideTableResult<T>;
347
-
348
- type UseCellEditOptions<T extends Record<string, unknown>> = {
349
- data: T[];
350
- rows: Row<T>[];
351
- onDataChange?: (data: T[]) => void;
352
- onCellChange?: (rowId: string, columnId: string, value: unknown) => void;
353
- };
354
- declare function useCellEdit<T extends Record<string, unknown>>({ data, rows, onDataChange, onCellChange, }: UseCellEditOptions<T>): {
355
- editingCell: EditingCell | null;
356
- draftValue: string;
357
- setDraftValue: react.Dispatch<react.SetStateAction<string>>;
358
- startEdit: (rowIndex: number, colIndex: number) => void;
359
- commitEdit: (raw?: string) => boolean;
360
- cancelEdit: () => void;
361
- };
362
-
363
- type UseCellSelectionOptions<T extends Record<string, unknown>> = {
364
- data: T[];
365
- rows: Row<T>[];
366
- enabled?: boolean;
367
- onDataChange?: (data: T[]) => void;
368
- onBatchChange?: (changes: Array<{
369
- rowId: string;
370
- columnId: string;
371
- value: unknown;
372
- }>) => void;
373
- };
374
- declare function useCellSelection<T extends Record<string, unknown>>({ data, rows, enabled, onDataChange, onBatchChange, }: UseCellSelectionOptions<T>): {
375
- dragState: DragState;
376
- activeSelectionBounds: CellSelectionBounds | null;
377
- handleCellMouseDown: (rowIndex: number, colIndex: number) => void;
378
- handleCellMouseEnter: (rowIndex: number, colIndex: number) => void;
379
- handleFillHandleMouseDown: (rowIndex: number, colIndex: number) => void;
380
- };
381
-
382
- type CellChange = {
383
- rowId: string;
384
- columnId: string;
385
- value: unknown;
386
- };
387
- declare function collectFillChanges<T extends Record<string, unknown>>(rows: Row<T>[], sourceBounds: CellSelectionBounds, fillBounds: CellSelectionBounds): CellChange[];
388
- declare function applyFillData<T extends Record<string, unknown>>(data: T[], rows: Row<T>[], sourceBounds: CellSelectionBounds, fillBounds: CellSelectionBounds): T[];
389
-
390
- type TreeRow<T extends Record<string, unknown> = Record<string, unknown>> = T & {
391
- level: number;
392
- children: TreeRow<T>[];
393
- treeNo?: string;
394
- uniqueId?: string;
395
- parentCount?: number;
396
- processed?: boolean;
397
- };
398
- type UseConvertTreeDataParams<T extends Record<string, unknown>> = {
399
- data: T[] | null;
400
- /** When false, returns data unchanged (plain DataTable) */
401
- enabled?: boolean;
402
- /** Row id / expand key field (idField). Defaults to `id` */
403
- toggleField?: string;
404
- /** Child → parent reference field (parentIdField). Defaults to `parentId` */
405
- childField?: string;
406
- /** Nested children array field (childrenField). Defaults to `children` */
407
- flattenField?: string;
408
- /** Parent quantity field (qtyField). Used for parentCount. Defaults to `qty` */
409
- qtyField?: string;
410
- preventExpand?: boolean;
411
- startIndex?: number;
412
- expandedRows?: Set<string>;
413
- onExpandedRowsChange?: (next: Set<string>) => void;
414
- };
415
- declare function canExpandRow(row: Record<string, unknown>): boolean;
416
- declare function toggleExpandedRowId(rowId: string, previous: Set<string>): Set<string>;
417
- /**
418
- * Builds a tree from flat/nested data, then returns only rows visible under expandedRows.
419
- * When enabled=false, returns data as-is.
420
- */
421
- declare const useConvertTreeData: <T extends Record<string, unknown>>({ data, enabled, toggleField, childField, flattenField, qtyField, preventExpand, startIndex, expandedRows, onExpandedRowsChange, }: UseConvertTreeDataParams<T>) => T[];
422
-
423
- declare function resolveRowSelection(mode: RowSelectionMode, controlledSelection: RowSelectionState | undefined, internalSelection: RowSelectionState): RowSelectionState;
424
- declare function applySelectionUpdater(mode: RowSelectionMode, updater: Updater<RowSelectionState>, previous: RowSelectionState): RowSelectionState;
425
-
426
- /**
427
- * Unstyled DataTable shell: semantic HTML + interaction behavior.
428
- * Class hooks (`DataTableJSX`, `data-table`, …) are opt-in — no CSS is shipped.
429
- * Customize via `className`, column `className` / `headerClassName`, `labels`,
430
- * `summary` / `toolbar`, `Column.render`, and `slots`.
431
- */
432
- declare function DataTable<T extends Record<string, unknown>>({ isPending, summary, toolbar, filteredCount, totalCount, className, slots, ...glideOptions }: DataTableProps<T>): react.JSX.Element;
433
-
434
- /** Body slot marker. DataTable renders the actual tbody. */
435
- declare function TableBody(): null;
436
- declare namespace TableBody {
437
- var displayName: string;
438
- }
439
-
440
- /** Used only inside Table.Header. Registers a column definition; does not render DOM. */
441
- declare function TableColumn<T extends Record<string, unknown>, K extends string = keyof T & string>(props: TableColumnProps<T, K>): null;
442
- declare namespace TableColumn {
443
- var displayName: string;
444
- }
445
-
446
- type TableHeaderProps = {
447
- children: ReactNode;
448
- };
449
- /** Column declaration slot. Does not render DOM. */
450
- declare function TableHeader(props: TableHeaderProps): null;
451
- declare namespace TableHeader {
452
- var displayName: string;
453
- }
454
-
455
- type TablePaginationProps = {
456
- page: number;
457
- pageSize?: number;
458
- totalCount?: number;
459
- onChange: (page: number) => void;
460
- className?: string;
461
- };
462
- declare function TablePagination({ page, pageSize, totalCount, onChange, className, }: TablePaginationProps): react.JSX.Element;
463
- declare namespace TablePagination {
464
- var displayName: string;
465
- }
466
-
467
- type TableCompoundComponent<T extends Record<string, unknown>> = ((props: TableProps<T>) => ReactElement) & {
468
- Header: typeof TableHeader;
469
- Column: <K extends string>(props: TableColumnProps<T, K>) => null;
470
- Body: typeof TableBody;
471
- Pagination: typeof TablePagination;
472
- };
473
- declare function TableRoot<T extends Record<string, unknown>>({ data, children, className, totalCount, filteredCount, ...dataTableProps }: TableProps<T>): react.JSX.Element;
474
- declare function createTable<T extends Record<string, unknown>>(): TableCompoundComponent<T>;
475
- declare const Table: typeof TableRoot & {
476
- Header: typeof TableHeader;
477
- Column: typeof TableColumn;
478
- Body: typeof TableBody;
479
- Pagination: typeof TablePagination;
480
- };
481
-
482
- export { CELL_SELECTION_EDGES_CLASS, type CellSelectionBounds, type ColumnRowSpanMap, DEFAULT_DATA_TABLE_LABELS, DEFAULT_TREE_CHILDREN_FIELD, DEFAULT_TREE_ID_FIELD, DEFAULT_TREE_PARENT_ID_FIELD, DEFAULT_TREE_QTY_FIELD, DataTable, type DataTableLabels, type DataTableProps, type DataTableSlots, type DragState, type EditingCell, type RowSelectionMode, type RowSpanInfo, Table, type TableColumnProps, type TableCompoundComponent, type TableProps, type TreeRow, type UseConvertTreeDataParams, type UseGlideTableOptions, type UseGlideTableResult, applyCellEdit, applyFillData, applySelectionUpdater, buildColumnRowSpanMap, canExpandRow, collectFillChanges, collectRowSpanColumns, createTable, getCellEditDraftValue, getCellSelectionEdgeStyle, getColumnEditType, getRowIndexInMergedCell, hasCellSelectionEdges, isCellInSelection, isColumnEditable, parseCellEditValue, resolveDataTableLabels, resolveRowSelection, resolveRowSpanAt, toggleExpandedRowId, useCellEdit, useCellSelection, useConvertTreeData, useGlideTable };
5
+ import 'react';
6
+ import '@tanstack/react-virtual';