virtualized-ui 0.0.1 → 0.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/VirtualTable/useVirtualTable.ts","../src/VirtualTable/VirtualTable.tsx"],"names":["useRef","useMemo","useState","useCallback","useReactTable","getCoreRowModel","getSortedRowModel","getExpandedRowModel","useVirtualizer","jsx","jsxs","flexRender"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useRef, useCallback, useState, useMemo } from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getExpandedRowModel,\n type RowSelectionState,\n type SortingState,\n type ExpandedState,\n type ColumnSizingState,\n type ColumnOrderState,\n type Updater,\n type ColumnDef,\n} from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport type { UseVirtualTableOptions } from './types';\n\nconst DEFAULT_ROW_HEIGHT = 40;\nconst DEFAULT_EXPANDED_ROW_HEIGHT = 200;\nconst DEFAULT_OVERSCAN = 5;\nconst DEFAULT_SCROLL_THRESHOLD = 100;\n\n/** Extract column ID from a ColumnDef */\nfunction getColumnId<TData>(column: ColumnDef<TData, unknown>): string {\n // Check for explicit id first\n if ('id' in column && typeof column.id === 'string') {\n return column.id;\n }\n // Fall back to accessorKey for accessor columns\n if ('accessorKey' in column && typeof column.accessorKey === 'string') {\n return column.accessorKey;\n }\n return '';\n}\n\nexport function useVirtualTable<TData>(options: UseVirtualTableOptions<TData>) {\n const {\n data,\n columns,\n rowHeight = DEFAULT_ROW_HEIGHT,\n overscan = DEFAULT_OVERSCAN,\n enableRowSelection = false,\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n enableSorting = false,\n sorting: controlledSorting,\n onSortingChange,\n enableMultiSort = false,\n maxMultiSortColCount,\n enableColumnResizing = false,\n columnResizeMode = 'onChange',\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n enableColumnReordering = false,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n enableRowExpansion = false,\n expanded: controlledExpanded,\n onExpandedChange,\n expandedRowHeight = DEFAULT_EXPANDED_ROW_HEIGHT,\n getRowCanExpand,\n getRowId,\n enableKeyboardNavigation = false,\n focusedRowIndex: controlledFocusedRowIndex,\n onFocusedRowChange,\n onScrollToBottom,\n scrollBottomThreshold = DEFAULT_SCROLL_THRESHOLD,\n } = options;\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Default column order from column definitions\n const defaultColumnOrder = useMemo(() => columns.map(getColumnId), [columns]);\n\n // Internal state for uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState<RowSelectionState>({});\n const [internalSorting, setInternalSorting] = useState<SortingState>([]);\n const [internalExpanded, setInternalExpanded] = useState<ExpandedState>({});\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState>({});\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState>([]);\n const [internalFocusedRowIndex, setInternalFocusedRowIndex] = useState<number>(-1);\n\n // Use controlled or internal state\n const rowSelectionState = controlledRowSelection ?? internalRowSelection;\n const sortingState = controlledSorting ?? internalSorting;\n const expandedState = controlledExpanded ?? internalExpanded;\n const columnSizingState = controlledColumnSizing ?? internalColumnSizing;\n const columnOrderState =\n controlledColumnOrder ??\n (internalColumnOrder.length ? internalColumnOrder : defaultColumnOrder);\n const focusedRowIndex = controlledFocusedRowIndex ?? internalFocusedRowIndex;\n\n const handleRowSelectionChange = useCallback(\n (updater: Updater<RowSelectionState>) => {\n const newValue = typeof updater === 'function' ? updater(rowSelectionState) : updater;\n if (onRowSelectionChange) {\n onRowSelectionChange(newValue);\n } else {\n setInternalRowSelection(newValue);\n }\n },\n [rowSelectionState, onRowSelectionChange]\n );\n\n const handleSortingChange = useCallback(\n (updater: Updater<SortingState>) => {\n const newValue = typeof updater === 'function' ? updater(sortingState) : updater;\n if (onSortingChange) {\n onSortingChange(newValue);\n } else {\n setInternalSorting(newValue);\n }\n },\n [sortingState, onSortingChange]\n );\n\n const handleExpandedChange = useCallback(\n (updater: Updater<ExpandedState>) => {\n const newValue = typeof updater === 'function' ? updater(expandedState) : updater;\n if (onExpandedChange) {\n onExpandedChange(newValue);\n } else {\n setInternalExpanded(newValue);\n }\n },\n [expandedState, onExpandedChange]\n );\n\n const handleColumnSizingChange = useCallback(\n (updater: Updater<ColumnSizingState>) => {\n const newValue = typeof updater === 'function' ? updater(columnSizingState) : updater;\n if (onColumnSizingChange) {\n onColumnSizingChange(newValue);\n } else {\n setInternalColumnSizing(newValue);\n }\n },\n [columnSizingState, onColumnSizingChange]\n );\n\n const handleColumnOrderChange = useCallback(\n (updater: Updater<ColumnOrderState>) => {\n const newValue = typeof updater === 'function' ? updater(columnOrderState) : updater;\n if (onColumnOrderChange) {\n onColumnOrderChange(newValue);\n } else {\n setInternalColumnOrder(newValue);\n }\n },\n [columnOrderState, onColumnOrderChange]\n );\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getExpandedRowModel: enableRowExpansion ? getExpandedRowModel() : undefined,\n enableRowSelection,\n enableSorting,\n enableMultiSort,\n maxMultiSortColCount,\n enableColumnResizing,\n columnResizeMode,\n getRowCanExpand: enableRowExpansion ? (getRowCanExpand ?? (() => true)) : undefined,\n state: {\n rowSelection: rowSelectionState,\n sorting: sortingState,\n expanded: expandedState,\n columnSizing: columnSizingState,\n columnOrder: enableColumnReordering ? columnOrderState : undefined,\n },\n onRowSelectionChange: handleRowSelectionChange,\n onSortingChange: handleSortingChange,\n onExpandedChange: handleExpandedChange,\n onColumnSizingChange: handleColumnSizingChange,\n onColumnOrderChange: enableColumnReordering ? handleColumnOrderChange : undefined,\n getRowId,\n });\n\n const { rows } = table.getRowModel();\n\n // Dynamic row height estimation based on expanded state\n const estimateSize = useCallback(\n (index: number) => {\n if (!enableRowExpansion) return rowHeight;\n const row = rows[index];\n return row?.getIsExpanded() ? rowHeight + expandedRowHeight : rowHeight;\n },\n [rows, rowHeight, expandedRowHeight, enableRowExpansion]\n );\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => containerRef.current,\n estimateSize,\n overscan,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n\n // Handle scroll to bottom detection\n const handleScroll = useCallback(() => {\n if (!onScrollToBottom || !containerRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = containerRef.current;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n if (distanceFromBottom < scrollBottomThreshold) {\n onScrollToBottom();\n }\n }, [onScrollToBottom, scrollBottomThreshold]);\n\n // Helper to reorder columns (for drag and drop)\n const reorderColumn = useCallback(\n (draggedColumnId: string, targetColumnId: string) => {\n const newOrder = [...columnOrderState];\n const draggedIndex = newOrder.indexOf(draggedColumnId);\n const targetIndex = newOrder.indexOf(targetColumnId);\n\n if (draggedIndex === -1 || targetIndex === -1) return;\n\n newOrder.splice(draggedIndex, 1);\n newOrder.splice(targetIndex, 0, draggedColumnId);\n\n handleColumnOrderChange(newOrder);\n },\n [columnOrderState, handleColumnOrderChange]\n );\n\n // Focus row change handler\n const setFocusedRow = useCallback(\n (index: number) => {\n const clampedIndex = Math.max(-1, Math.min(index, rows.length - 1));\n if (onFocusedRowChange) {\n onFocusedRowChange(clampedIndex);\n } else {\n setInternalFocusedRowIndex(clampedIndex);\n }\n // Scroll focused row into view\n if (clampedIndex >= 0) {\n virtualizer.scrollToIndex(clampedIndex, { align: 'auto' });\n }\n },\n [rows.length, onFocusedRowChange, virtualizer]\n );\n\n // Keyboard navigation handler\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (!enableKeyboardNavigation) return;\n\n const currentIndex = focusedRowIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n setFocusedRow(currentIndex + 1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n setFocusedRow(currentIndex - 1);\n break;\n case 'Home':\n e.preventDefault();\n setFocusedRow(0);\n break;\n case 'End':\n e.preventDefault();\n setFocusedRow(rows.length - 1);\n break;\n case 'Enter':\n if (currentIndex >= 0 && enableRowExpansion) {\n e.preventDefault();\n const row = rows[currentIndex];\n if (row?.getCanExpand()) {\n row.toggleExpanded();\n }\n }\n break;\n case ' ':\n if (currentIndex >= 0 && enableRowSelection) {\n e.preventDefault();\n const row = rows[currentIndex];\n row?.toggleSelected();\n }\n break;\n }\n },\n [\n enableKeyboardNavigation,\n focusedRowIndex,\n rows,\n enableRowExpansion,\n enableRowSelection,\n setFocusedRow,\n ]\n );\n\n return {\n table,\n rows,\n virtualizer,\n virtualItems,\n totalSize,\n containerRef,\n handleScroll,\n handleKeyDown,\n reorderColumn,\n setFocusedRow,\n // Expose state for consumers\n rowSelection: rowSelectionState,\n sorting: sortingState,\n expanded: expandedState,\n columnSizing: columnSizingState,\n columnOrder: columnOrderState,\n focusedRowIndex,\n };\n}\n","import { useState } from 'react';\nimport { flexRender } from '@tanstack/react-table';\nimport { useVirtualTable } from './useVirtualTable';\nimport type { VirtualTableProps } from './types';\n\nconst DEFAULT_HEIGHT = 400;\n\nexport function VirtualTable<TData>(props: VirtualTableProps<TData>) {\n const {\n height = DEFAULT_HEIGHT,\n stickyHeader = true,\n renderExpandedRow,\n className,\n style,\n ...tableOptions\n } = props;\n\n const {\n rows,\n virtualizer,\n virtualItems,\n totalSize,\n containerRef,\n handleScroll,\n handleKeyDown,\n table,\n reorderColumn,\n setFocusedRow,\n focusedRowIndex,\n } = useVirtualTable(tableOptions);\n\n const headerGroups = table.getHeaderGroups();\n const enableRowExpansion = tableOptions.enableRowExpansion;\n const enableColumnResizing = tableOptions.enableColumnResizing;\n const enableColumnReordering = tableOptions.enableColumnReordering;\n const enableKeyboardNavigation = tableOptions.enableKeyboardNavigation;\n\n // Drag state for column reordering\n const [draggedColumnId, setDraggedColumnId] = useState<string | null>(null);\n\n return (\n <div\n ref={containerRef}\n className={className}\n tabIndex={enableKeyboardNavigation ? 0 : undefined}\n style={{\n height,\n overflow: 'auto',\n position: 'relative',\n outline: 'none',\n ...style,\n }}\n onScroll={handleScroll}\n onKeyDown={enableKeyboardNavigation ? handleKeyDown : undefined}\n >\n <table\n style={{\n display: 'grid',\n width: '100%',\n }}\n >\n <thead\n style={{\n display: 'grid',\n position: stickyHeader ? 'sticky' : 'relative',\n top: 0,\n zIndex: 1,\n }}\n >\n {headerGroups.map((headerGroup) => (\n <tr\n key={headerGroup.id}\n style={{\n display: 'flex',\n width: '100%',\n }}\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n draggable={enableColumnReordering && !header.isPlaceholder}\n data-dragging={draggedColumnId === header.column.id || undefined}\n onDragStart={\n enableColumnReordering\n ? (e) => {\n setDraggedColumnId(header.column.id);\n e.dataTransfer.effectAllowed = 'move';\n }\n : undefined\n }\n onDragOver={\n enableColumnReordering\n ? (e) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n }\n : undefined\n }\n onDrop={\n enableColumnReordering\n ? (e) => {\n e.preventDefault();\n if (draggedColumnId && draggedColumnId !== header.column.id) {\n reorderColumn(draggedColumnId, header.column.id);\n }\n }\n : undefined\n }\n onDragEnd={enableColumnReordering ? () => setDraggedColumnId(null) : undefined}\n style={{\n flex: `0 0 ${header.getSize()}px`,\n cursor: enableColumnReordering\n ? 'grab'\n : header.column.getCanSort()\n ? 'pointer'\n : 'default',\n position: 'relative',\n opacity: draggedColumnId === header.column.id ? 0.5 : 1,\n }}\n onClick={\n !enableColumnReordering ? header.column.getToggleSortingHandler() : undefined\n }\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getIsSorted() === 'asc' && ' ↑'}\n {header.column.getIsSorted() === 'desc' && ' ↓'}\n\n {/* Column resize handle */}\n {enableColumnResizing && header.column.getCanResize() && (\n <div\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onClick={(e) => e.stopPropagation()}\n className=\"virtual-table-resizer\"\n data-resizing={header.column.getIsResizing() || undefined}\n style={{\n position: 'absolute',\n right: 0,\n top: 0,\n height: '100%',\n width: '5px',\n cursor: 'col-resize',\n userSelect: 'none',\n touchAction: 'none',\n background: header.column.getIsResizing()\n ? 'rgba(0, 0, 0, 0.5)'\n : 'transparent',\n }}\n />\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody\n style={{\n display: 'grid',\n height: `${totalSize}px`,\n position: 'relative',\n }}\n >\n {virtualItems.map((virtualRow) => {\n const row = rows[virtualRow.index];\n const isExpanded = row.getIsExpanded();\n const canExpand = enableRowExpansion && row.getCanExpand();\n const isFocused = enableKeyboardNavigation && virtualRow.index === focusedRowIndex;\n\n const handleRowClick = () => {\n if (enableKeyboardNavigation) {\n setFocusedRow(virtualRow.index);\n }\n if (canExpand) {\n row.toggleExpanded();\n }\n };\n\n return (\n <tr\n key={row.id}\n data-index={virtualRow.index}\n data-expanded={isExpanded || undefined}\n data-focused={isFocused || undefined}\n ref={(node) => virtualizer.measureElement(node)}\n style={{\n display: 'block',\n position: 'absolute',\n transform: `translateY(${virtualRow.start}px)`,\n width: '100%',\n cursor: canExpand || enableKeyboardNavigation ? 'pointer' : 'default',\n }}\n onClick={handleRowClick}\n >\n {/* Row cells */}\n <div\n style={{\n display: 'flex',\n width: '100%',\n }}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n style={{\n flex: `0 0 ${cell.column.getSize()}px`,\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </div>\n\n {/* Expanded content */}\n {isExpanded && renderExpandedRow && (\n <div onClick={(e) => e.stopPropagation()} style={{ width: '100%' }}>\n {renderExpandedRow(row)}\n </div>\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n"]}
@@ -0,0 +1,120 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _tanstack_react_table from '@tanstack/react-table';
3
+ import { ColumnDef, RowSelectionState, SortingState, ColumnResizeMode, ColumnSizingState, ColumnOrderState, ExpandedState, Row } from '@tanstack/react-table';
4
+ export { CellContext, ColumnDef, ColumnOrderState, ColumnResizeMode, ColumnSizingState, ExpandedState, HeaderContext, Row, RowSelectionState, SortingState, createColumnHelper } from '@tanstack/react-table';
5
+ import * as _tanstack_react_virtual from '@tanstack/react-virtual';
6
+ import { Virtualizer } from '@tanstack/react-virtual';
7
+ import * as react from 'react';
8
+ import { ReactNode, CSSProperties, RefObject } from 'react';
9
+
10
+ interface VirtualTableProps<TData> {
11
+ /** Array of data items to render in the table */
12
+ data: TData[];
13
+ /** TanStack Table column definitions */
14
+ columns: ColumnDef<TData, any>[];
15
+ /** Height of each row in pixels (used for virtualization) */
16
+ rowHeight?: number;
17
+ /** Height of the table container (CSS value) */
18
+ height?: number | string;
19
+ /** Number of rows to render outside visible area */
20
+ overscan?: number;
21
+ /** Enable row selection */
22
+ enableRowSelection?: boolean;
23
+ /** Controlled row selection state */
24
+ rowSelection?: RowSelectionState;
25
+ /** Callback when row selection changes */
26
+ onRowSelectionChange?: (selection: RowSelectionState) => void;
27
+ /** Enable sorting */
28
+ enableSorting?: boolean;
29
+ /** Controlled sorting state */
30
+ sorting?: SortingState;
31
+ /** Callback when sorting changes */
32
+ onSortingChange?: (sorting: SortingState) => void;
33
+ /** Enable multi-column sorting (hold Shift to add sort) */
34
+ enableMultiSort?: boolean;
35
+ /** Maximum number of columns that can be sorted at once */
36
+ maxMultiSortColCount?: number;
37
+ /** Enable sticky header */
38
+ stickyHeader?: boolean;
39
+ /** Enable column resizing */
40
+ enableColumnResizing?: boolean;
41
+ /** Column resize mode: 'onChange' updates live, 'onEnd' updates on mouse up */
42
+ columnResizeMode?: ColumnResizeMode;
43
+ /** Controlled column sizing state */
44
+ columnSizing?: ColumnSizingState;
45
+ /** Callback when column sizing changes */
46
+ onColumnSizingChange?: (sizing: ColumnSizingState) => void;
47
+ /** Enable column reordering (drag and drop) */
48
+ enableColumnReordering?: boolean;
49
+ /** Controlled column order state */
50
+ columnOrder?: ColumnOrderState;
51
+ /** Callback when column order changes */
52
+ onColumnOrderChange?: (order: ColumnOrderState) => void;
53
+ /** Enable row expansion */
54
+ enableRowExpansion?: boolean;
55
+ /** Controlled expanded state */
56
+ expanded?: ExpandedState;
57
+ /** Callback when expanded state changes */
58
+ onExpandedChange?: (expanded: ExpandedState) => void;
59
+ /** Height of expanded row content in pixels */
60
+ expandedRowHeight?: number;
61
+ /** Render function for expanded row content */
62
+ renderExpandedRow?: (row: Row<TData>) => ReactNode;
63
+ /** Determine if a row can be expanded (defaults to true for all rows) */
64
+ getRowCanExpand?: (row: Row<TData>) => boolean;
65
+ /** Called when user scrolls to bottom (useful for infinite loading) */
66
+ onScrollToBottom?: () => void;
67
+ /** Threshold in pixels before bottom to trigger onScrollToBottom */
68
+ scrollBottomThreshold?: number;
69
+ /** Get unique row ID (defaults to index) */
70
+ getRowId?: (row: TData, index: number) => string;
71
+ /** Enable keyboard navigation (arrow keys, Enter, Space) */
72
+ enableKeyboardNavigation?: boolean;
73
+ /** Controlled focused row index */
74
+ focusedRowIndex?: number;
75
+ /** Callback when focused row changes */
76
+ onFocusedRowChange?: (index: number) => void;
77
+ /** Class name for the container */
78
+ className?: string;
79
+ /** Style for the container */
80
+ style?: CSSProperties;
81
+ }
82
+ interface VirtualTableRenderProps<TData> {
83
+ /** The TanStack Table rows */
84
+ rows: Row<TData>[];
85
+ /** The virtualizer instance */
86
+ virtualizer: Virtualizer<HTMLDivElement, Element>;
87
+ /** Virtual items to render */
88
+ virtualItems: ReturnType<Virtualizer<HTMLDivElement, Element>['getVirtualItems']>;
89
+ /** Total height of all rows */
90
+ totalSize: number;
91
+ /** Ref for the scroll container */
92
+ containerRef: RefObject<HTMLDivElement>;
93
+ /** Columns from the table */
94
+ columns: ColumnDef<TData, any>[];
95
+ }
96
+ interface UseVirtualTableOptions<TData> extends Pick<VirtualTableProps<TData>, 'data' | 'columns' | 'rowHeight' | 'overscan' | 'enableRowSelection' | 'rowSelection' | 'onRowSelectionChange' | 'enableSorting' | 'sorting' | 'onSortingChange' | 'enableMultiSort' | 'maxMultiSortColCount' | 'enableColumnResizing' | 'columnResizeMode' | 'columnSizing' | 'onColumnSizingChange' | 'enableColumnReordering' | 'columnOrder' | 'onColumnOrderChange' | 'enableRowExpansion' | 'expanded' | 'onExpandedChange' | 'expandedRowHeight' | 'getRowCanExpand' | 'getRowId' | 'enableKeyboardNavigation' | 'focusedRowIndex' | 'onFocusedRowChange' | 'onScrollToBottom' | 'scrollBottomThreshold'> {
97
+ }
98
+
99
+ declare function VirtualTable<TData>(props: VirtualTableProps<TData>): react_jsx_runtime.JSX.Element;
100
+
101
+ declare function useVirtualTable<TData>(options: UseVirtualTableOptions<TData>): {
102
+ table: _tanstack_react_table.Table<TData>;
103
+ rows: _tanstack_react_table.Row<TData>[];
104
+ virtualizer: _tanstack_react_virtual.Virtualizer<HTMLDivElement, Element>;
105
+ virtualItems: _tanstack_react_virtual.VirtualItem[];
106
+ totalSize: number;
107
+ containerRef: react.RefObject<HTMLDivElement>;
108
+ handleScroll: () => void;
109
+ handleKeyDown: (e: React.KeyboardEvent) => void;
110
+ reorderColumn: (draggedColumnId: string, targetColumnId: string) => void;
111
+ setFocusedRow: (index: number) => void;
112
+ rowSelection: RowSelectionState;
113
+ sorting: SortingState;
114
+ expanded: ExpandedState;
115
+ columnSizing: ColumnSizingState;
116
+ columnOrder: ColumnOrderState;
117
+ focusedRowIndex: number;
118
+ };
119
+
120
+ export { type UseVirtualTableOptions, VirtualTable, type VirtualTableProps, type VirtualTableRenderProps, useVirtualTable };
@@ -0,0 +1,120 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _tanstack_react_table from '@tanstack/react-table';
3
+ import { ColumnDef, RowSelectionState, SortingState, ColumnResizeMode, ColumnSizingState, ColumnOrderState, ExpandedState, Row } from '@tanstack/react-table';
4
+ export { CellContext, ColumnDef, ColumnOrderState, ColumnResizeMode, ColumnSizingState, ExpandedState, HeaderContext, Row, RowSelectionState, SortingState, createColumnHelper } from '@tanstack/react-table';
5
+ import * as _tanstack_react_virtual from '@tanstack/react-virtual';
6
+ import { Virtualizer } from '@tanstack/react-virtual';
7
+ import * as react from 'react';
8
+ import { ReactNode, CSSProperties, RefObject } from 'react';
9
+
10
+ interface VirtualTableProps<TData> {
11
+ /** Array of data items to render in the table */
12
+ data: TData[];
13
+ /** TanStack Table column definitions */
14
+ columns: ColumnDef<TData, any>[];
15
+ /** Height of each row in pixels (used for virtualization) */
16
+ rowHeight?: number;
17
+ /** Height of the table container (CSS value) */
18
+ height?: number | string;
19
+ /** Number of rows to render outside visible area */
20
+ overscan?: number;
21
+ /** Enable row selection */
22
+ enableRowSelection?: boolean;
23
+ /** Controlled row selection state */
24
+ rowSelection?: RowSelectionState;
25
+ /** Callback when row selection changes */
26
+ onRowSelectionChange?: (selection: RowSelectionState) => void;
27
+ /** Enable sorting */
28
+ enableSorting?: boolean;
29
+ /** Controlled sorting state */
30
+ sorting?: SortingState;
31
+ /** Callback when sorting changes */
32
+ onSortingChange?: (sorting: SortingState) => void;
33
+ /** Enable multi-column sorting (hold Shift to add sort) */
34
+ enableMultiSort?: boolean;
35
+ /** Maximum number of columns that can be sorted at once */
36
+ maxMultiSortColCount?: number;
37
+ /** Enable sticky header */
38
+ stickyHeader?: boolean;
39
+ /** Enable column resizing */
40
+ enableColumnResizing?: boolean;
41
+ /** Column resize mode: 'onChange' updates live, 'onEnd' updates on mouse up */
42
+ columnResizeMode?: ColumnResizeMode;
43
+ /** Controlled column sizing state */
44
+ columnSizing?: ColumnSizingState;
45
+ /** Callback when column sizing changes */
46
+ onColumnSizingChange?: (sizing: ColumnSizingState) => void;
47
+ /** Enable column reordering (drag and drop) */
48
+ enableColumnReordering?: boolean;
49
+ /** Controlled column order state */
50
+ columnOrder?: ColumnOrderState;
51
+ /** Callback when column order changes */
52
+ onColumnOrderChange?: (order: ColumnOrderState) => void;
53
+ /** Enable row expansion */
54
+ enableRowExpansion?: boolean;
55
+ /** Controlled expanded state */
56
+ expanded?: ExpandedState;
57
+ /** Callback when expanded state changes */
58
+ onExpandedChange?: (expanded: ExpandedState) => void;
59
+ /** Height of expanded row content in pixels */
60
+ expandedRowHeight?: number;
61
+ /** Render function for expanded row content */
62
+ renderExpandedRow?: (row: Row<TData>) => ReactNode;
63
+ /** Determine if a row can be expanded (defaults to true for all rows) */
64
+ getRowCanExpand?: (row: Row<TData>) => boolean;
65
+ /** Called when user scrolls to bottom (useful for infinite loading) */
66
+ onScrollToBottom?: () => void;
67
+ /** Threshold in pixels before bottom to trigger onScrollToBottom */
68
+ scrollBottomThreshold?: number;
69
+ /** Get unique row ID (defaults to index) */
70
+ getRowId?: (row: TData, index: number) => string;
71
+ /** Enable keyboard navigation (arrow keys, Enter, Space) */
72
+ enableKeyboardNavigation?: boolean;
73
+ /** Controlled focused row index */
74
+ focusedRowIndex?: number;
75
+ /** Callback when focused row changes */
76
+ onFocusedRowChange?: (index: number) => void;
77
+ /** Class name for the container */
78
+ className?: string;
79
+ /** Style for the container */
80
+ style?: CSSProperties;
81
+ }
82
+ interface VirtualTableRenderProps<TData> {
83
+ /** The TanStack Table rows */
84
+ rows: Row<TData>[];
85
+ /** The virtualizer instance */
86
+ virtualizer: Virtualizer<HTMLDivElement, Element>;
87
+ /** Virtual items to render */
88
+ virtualItems: ReturnType<Virtualizer<HTMLDivElement, Element>['getVirtualItems']>;
89
+ /** Total height of all rows */
90
+ totalSize: number;
91
+ /** Ref for the scroll container */
92
+ containerRef: RefObject<HTMLDivElement>;
93
+ /** Columns from the table */
94
+ columns: ColumnDef<TData, any>[];
95
+ }
96
+ interface UseVirtualTableOptions<TData> extends Pick<VirtualTableProps<TData>, 'data' | 'columns' | 'rowHeight' | 'overscan' | 'enableRowSelection' | 'rowSelection' | 'onRowSelectionChange' | 'enableSorting' | 'sorting' | 'onSortingChange' | 'enableMultiSort' | 'maxMultiSortColCount' | 'enableColumnResizing' | 'columnResizeMode' | 'columnSizing' | 'onColumnSizingChange' | 'enableColumnReordering' | 'columnOrder' | 'onColumnOrderChange' | 'enableRowExpansion' | 'expanded' | 'onExpandedChange' | 'expandedRowHeight' | 'getRowCanExpand' | 'getRowId' | 'enableKeyboardNavigation' | 'focusedRowIndex' | 'onFocusedRowChange' | 'onScrollToBottom' | 'scrollBottomThreshold'> {
97
+ }
98
+
99
+ declare function VirtualTable<TData>(props: VirtualTableProps<TData>): react_jsx_runtime.JSX.Element;
100
+
101
+ declare function useVirtualTable<TData>(options: UseVirtualTableOptions<TData>): {
102
+ table: _tanstack_react_table.Table<TData>;
103
+ rows: _tanstack_react_table.Row<TData>[];
104
+ virtualizer: _tanstack_react_virtual.Virtualizer<HTMLDivElement, Element>;
105
+ virtualItems: _tanstack_react_virtual.VirtualItem[];
106
+ totalSize: number;
107
+ containerRef: react.RefObject<HTMLDivElement>;
108
+ handleScroll: () => void;
109
+ handleKeyDown: (e: React.KeyboardEvent) => void;
110
+ reorderColumn: (draggedColumnId: string, targetColumnId: string) => void;
111
+ setFocusedRow: (index: number) => void;
112
+ rowSelection: RowSelectionState;
113
+ sorting: SortingState;
114
+ expanded: ExpandedState;
115
+ columnSizing: ColumnSizingState;
116
+ columnOrder: ColumnOrderState;
117
+ focusedRowIndex: number;
118
+ };
119
+
120
+ export { type UseVirtualTableOptions, VirtualTable, type VirtualTableProps, type VirtualTableRenderProps, useVirtualTable };