simple-table-core 4.1.5 → 4.1.7
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/README.md +15 -7
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/consts/general-consts.d.ts +0 -4
- package/dist/core/SimpleTableVanilla.d.ts +19 -272
- package/dist/core/api/TableAPIContext.d.ts +74 -0
- package/dist/core/api/TableAPIImpl.d.ts +2 -74
- package/dist/core/api/buildTableAPIContext.d.ts +61 -0
- package/dist/core/dev/UnvirtualizedRowsWarning.d.ts +20 -0
- package/dist/core/initialization/createDataManagers.d.ts +37 -0
- package/dist/core/initialization/wireMountManagers.d.ts +43 -0
- package/dist/core/pipeline/syncPivotPipeline.d.ts +41 -0
- package/dist/core/rendering/RenderContext.d.ts +125 -0
- package/dist/core/rendering/RenderOrchestrator.d.ts +8 -116
- package/dist/core/rendering/SectionRenderer.d.ts +21 -15
- package/dist/core/rendering/TableRenderer.d.ts +6 -95
- package/dist/core/rendering/TableRendererDeps.d.ts +98 -0
- package/dist/core/rendering/buildRenderContext.d.ts +94 -0
- package/dist/core/rendering/cellRenderContexts.d.ts +11 -0
- package/dist/core/rendering/renderBodySections.d.ts +14 -0
- package/dist/core/rendering/renderHeaderSections.d.ts +13 -0
- package/dist/core/rendering/sectionCaches.d.ts +24 -0
- package/dist/core/rendering/sectionExtraRows.d.ts +19 -0
- package/dist/core/rendering/sectionLayout.d.ts +42 -0
- package/dist/core/vanilla/VanillaLiveHost.d.ts +103 -0
- package/dist/core/vanilla/applyTableUpdate.d.ts +10 -0
- package/dist/core/vanilla/createVanillaRenderContext.d.ts +4 -0
- package/dist/core/vanilla/destroyTableResources.d.ts +26 -0
- package/dist/core/vanilla/syncRowSelectionManager.d.ts +13 -0
- package/dist/core/vanilla/tableContainers.d.ts +5 -0
- package/dist/core/vanilla/toTableAPIContextHost.d.ts +3 -0
- package/dist/hooks/contentHeight.d.ts +3 -1
- package/dist/hooks/expandedDepths.d.ts +4 -3
- package/dist/hooks/scrollbarWidth.d.ts +0 -43
- package/dist/hooks/useAggregatedRows.d.ts +0 -2
- package/dist/icons/CloseIcon.d.ts +2 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.es.js +1 -1
- package/dist/managers/AccordionController.d.ts +39 -0
- package/dist/managers/AnimationCoordinator.d.ts +15 -1
- package/dist/managers/AutoSizeManager.d.ts +64 -0
- package/dist/managers/CellSlideAnimator.d.ts +54 -0
- package/dist/managers/DragHandlerManager.d.ts +4 -26
- package/dist/managers/ExternalScrollController.d.ts +68 -0
- package/dist/managers/PivotManager.d.ts +0 -2
- package/dist/managers/ScrollRenderCoalescer.d.ts +32 -0
- package/dist/managers/SelectionManager/mouseUtils.d.ts +3 -3
- package/dist/styles.css +1 -1
- package/dist/types/ColumnEditorCustomRendererProps.d.ts +5 -0
- package/dist/types/PivotTypes.d.ts +1 -8
- package/dist/types/SimpleTableConfig.d.ts +3 -1
- package/dist/types/SimpleTableProps.d.ts +8 -2
- package/dist/types/TableAPI.d.ts +2 -2
- package/dist/utils/accordionAnimation.d.ts +0 -5
- package/dist/utils/bodyCell/editing.d.ts +1 -1
- package/dist/utils/bodyCell/editors/booleanDropdown.d.ts +1 -1
- package/dist/utils/bodyCell/editors/datePicker.d.ts +1 -1
- package/dist/utils/bodyCell/editors/enumDropdown.d.ts +1 -1
- package/dist/utils/bodyCell/selection.d.ts +0 -1
- package/dist/utils/bodyCell/styling.d.ts +2 -0
- package/dist/utils/cellScrollUtils.d.ts +1 -1
- package/dist/utils/cellUtils.d.ts +0 -4
- package/dist/utils/collapseUtils.d.ts +0 -10
- package/dist/utils/columnEditor/createColumnEditor.d.ts +6 -0
- package/dist/utils/columnEditor/createColumnEditorPopout.d.ts +6 -0
- package/dist/utils/columnEditor/createPivotPanel.d.ts +16 -0
- package/dist/utils/externalScroll.d.ts +0 -10
- package/dist/utils/filters/createDropdown.d.ts +2 -0
- package/dist/utils/formatters.d.ts +0 -2
- package/dist/utils/headerCell/eventTracking.d.ts +2 -2
- package/dist/utils/headerCell/styling.d.ts +0 -1
- package/dist/utils/headerWidthUtils.d.ts +2 -2
- package/dist/utils/infiniteScrollUtils.d.ts +0 -1
- package/dist/utils/parkAndStagger.d.ts +44 -0
- package/dist/utils/resizeUtils/domUpdates.d.ts +1 -1
- package/dist/utils/resizeUtils/maxWidth.d.ts +2 -1
- package/dist/utils/rowSelectionUtils.d.ts +0 -4
- package/dist/utils/rowSeparatorRenderer.d.ts +0 -1
- package/dist/utils/rowUtils.d.ts +1 -27
- package/dist/utils/setAbsoluteCellPosition.d.ts +31 -0
- package/dist/utils/stateRowRenderer.d.ts +0 -1
- package/dist/utils/tableDomScope.d.ts +20 -0
- package/package.json +4 -3
- package/src/styles/base.css +144 -147
- package/dist/managers/ColumnManager.d.ts +0 -42
- package/dist/managers/RowManager.d.ts +0 -56
- package/dist/managers/TableManager.d.ts +0 -72
- package/dist/types/BoundingBox.d.ts +0 -11
- package/dist/types/DragHandlerProps.d.ts +0 -14
- package/dist/types/OnSortProps.d.ts +0 -3
- package/dist/types/SharedTableProps.d.ts +0 -24
- package/dist/types/TableBodyProps.d.ts +0 -20
- package/dist/types/TableHeaderProps.d.ts +0 -17
- package/dist/types/TableHeaderSectionProps.d.ts +0 -19
- package/dist/types/TableRowProps.d.ts +0 -29
- package/dist/utils/columnIndicesUtils.d.ts +0 -15
- package/dist/utils/columnVirtualizationUtils.d.ts +0 -128
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "../types/ColumnDef";
|
|
2
|
-
import { ColumnVisibilityState } from "../types/ColumnVisibilityTypes";
|
|
3
|
-
export interface ColumnManagerConfig {
|
|
4
|
-
headers: ColumnDef[];
|
|
5
|
-
collapsedHeaders: Set<Accessor>;
|
|
6
|
-
onColumnOrderChange?: (newHeaders: ColumnDef[]) => void;
|
|
7
|
-
onColumnVisibilityChange?: (visibilityState: ColumnVisibilityState) => void;
|
|
8
|
-
onColumnWidthChange?: (headers: ColumnDef[]) => void;
|
|
9
|
-
}
|
|
10
|
-
export interface ColumnManagerState {
|
|
11
|
-
headers: ColumnDef[];
|
|
12
|
-
collapsedHeaders: Set<Accessor>;
|
|
13
|
-
columnVisibility: ColumnVisibilityState;
|
|
14
|
-
draggedHeader: ColumnDef | null;
|
|
15
|
-
hoveredHeader: ColumnDef | null;
|
|
16
|
-
}
|
|
17
|
-
type StateChangeCallback = (state: ColumnManagerState) => void;
|
|
18
|
-
export declare class ColumnManager {
|
|
19
|
-
private config;
|
|
20
|
-
private state;
|
|
21
|
-
private subscribers;
|
|
22
|
-
constructor(config: ColumnManagerConfig);
|
|
23
|
-
private buildColumnVisibilityState;
|
|
24
|
-
updateConfig(config: Partial<ColumnManagerConfig>): void;
|
|
25
|
-
subscribe(callback: StateChangeCallback): () => void;
|
|
26
|
-
private notifySubscribers;
|
|
27
|
-
setHeaders(headers: ColumnDef[]): void;
|
|
28
|
-
setCollapsedHeaders(collapsedHeaders: Set<Accessor>): void;
|
|
29
|
-
toggleColumnCollapse(accessor: Accessor): void;
|
|
30
|
-
setColumnVisibility(accessor: Accessor, visible: boolean): void;
|
|
31
|
-
updateColumnWidth(accessor: Accessor, width: number | string): void;
|
|
32
|
-
reorderColumns(newHeaders: ColumnDef[]): void;
|
|
33
|
-
setDraggedHeader(header: ColumnDef | null): void;
|
|
34
|
-
setHoveredHeader(header: ColumnDef | null): void;
|
|
35
|
-
getState(): ColumnManagerState;
|
|
36
|
-
getHeaders(): ColumnDef[];
|
|
37
|
-
getCollapsedHeaders(): Set<Accessor>;
|
|
38
|
-
getColumnVisibility(): ColumnVisibilityState;
|
|
39
|
-
isColumnVisible(accessor: Accessor): boolean;
|
|
40
|
-
destroy(): void;
|
|
41
|
-
}
|
|
42
|
-
export {};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "../types/ColumnDef";
|
|
2
|
-
import Row from "../types/Row";
|
|
3
|
-
import RowState from "../types/RowState";
|
|
4
|
-
import TableRow from "../types/TableRow";
|
|
5
|
-
import { HeightOffsets } from "../utils/infiniteScrollUtils";
|
|
6
|
-
import { CustomTheme } from "../types/CustomTheme";
|
|
7
|
-
import { GetRowId } from "../types/GetRowId";
|
|
8
|
-
export interface RowManagerConfig {
|
|
9
|
-
rows: Row[];
|
|
10
|
-
headers: ColumnDef[];
|
|
11
|
-
rowGrouping?: Accessor[];
|
|
12
|
-
getRowId?: GetRowId;
|
|
13
|
-
rowHeight: number;
|
|
14
|
-
headerHeight: number;
|
|
15
|
-
customTheme: CustomTheme;
|
|
16
|
-
hasLoadingRenderer: boolean;
|
|
17
|
-
hasErrorRenderer: boolean;
|
|
18
|
-
hasEmptyRenderer: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface RowManagerState {
|
|
21
|
-
expandedRows: Map<string, number>;
|
|
22
|
-
collapsedRows: Map<string, number>;
|
|
23
|
-
expandedDepths: Set<number>;
|
|
24
|
-
rowStateMap: Map<string | number, RowState>;
|
|
25
|
-
aggregatedRows: Row[];
|
|
26
|
-
flattenedRows: TableRow[];
|
|
27
|
-
heightOffsets: HeightOffsets;
|
|
28
|
-
paginatableRows: TableRow[];
|
|
29
|
-
parentEndPositions: number[];
|
|
30
|
-
}
|
|
31
|
-
type StateChangeCallback = (state: RowManagerState) => void;
|
|
32
|
-
export declare class RowManager {
|
|
33
|
-
private config;
|
|
34
|
-
private state;
|
|
35
|
-
private subscribers;
|
|
36
|
-
constructor(config: RowManagerConfig);
|
|
37
|
-
private getAllAggregationHeaders;
|
|
38
|
-
private calculateAggregation;
|
|
39
|
-
private computeAggregatedRows;
|
|
40
|
-
private computeFlattenedRows;
|
|
41
|
-
updateConfig(config: Partial<RowManagerConfig>): void;
|
|
42
|
-
subscribe(callback: StateChangeCallback): () => void;
|
|
43
|
-
private notifySubscribers;
|
|
44
|
-
setExpandedRows(expandedRows: Map<string, number>): void;
|
|
45
|
-
setCollapsedRows(collapsedRows: Map<string, number>): void;
|
|
46
|
-
setExpandedDepths(expandedDepths: Set<number>): void;
|
|
47
|
-
setRowStateMap(rowStateMap: Map<string | number, RowState>): void;
|
|
48
|
-
getState(): RowManagerState;
|
|
49
|
-
getAggregatedRows(): Row[];
|
|
50
|
-
getFlattenedRows(): TableRow[];
|
|
51
|
-
getHeightOffsets(): HeightOffsets;
|
|
52
|
-
getPaginatableRows(): TableRow[];
|
|
53
|
-
getParentEndPositions(): number[];
|
|
54
|
-
destroy(): void;
|
|
55
|
-
}
|
|
56
|
-
export {};
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "../types/ColumnDef";
|
|
2
|
-
import Row from "../types/Row";
|
|
3
|
-
import SortColumn, { SortDirection } from "../types/SortColumn";
|
|
4
|
-
import { TableFilterState } from "../types/FilterTypes";
|
|
5
|
-
import { ColumnVisibilityState } from "../types/ColumnVisibilityTypes";
|
|
6
|
-
import { CustomTheme } from "../types/CustomTheme";
|
|
7
|
-
import { GetRowId } from "../types/GetRowId";
|
|
8
|
-
import { SortManager } from "./SortManager";
|
|
9
|
-
import { FilterManager } from "./FilterManager";
|
|
10
|
-
import { RowManager } from "./RowManager";
|
|
11
|
-
import { ColumnManager } from "./ColumnManager";
|
|
12
|
-
import { DimensionManager } from "./DimensionManager";
|
|
13
|
-
import { ScrollManager } from "./ScrollManager";
|
|
14
|
-
import { SelectionManager } from "./SelectionManager";
|
|
15
|
-
export interface TableManagerConfig {
|
|
16
|
-
headers: ColumnDef[];
|
|
17
|
-
rows: Row[];
|
|
18
|
-
rowHeight: number;
|
|
19
|
-
headerHeight?: number;
|
|
20
|
-
customTheme: CustomTheme;
|
|
21
|
-
externalSortHandling?: boolean;
|
|
22
|
-
externalFilterHandling?: boolean;
|
|
23
|
-
rowGrouping?: Accessor[];
|
|
24
|
-
getRowId?: GetRowId;
|
|
25
|
-
selectableCells?: boolean;
|
|
26
|
-
selectableColumns?: boolean;
|
|
27
|
-
enableRowSelection?: boolean;
|
|
28
|
-
copyHeadersToClipboard?: boolean;
|
|
29
|
-
height?: string | number;
|
|
30
|
-
maxHeight?: string | number;
|
|
31
|
-
initialSortColumn?: string;
|
|
32
|
-
initialSortDirection?: SortDirection;
|
|
33
|
-
onSortChange?: (sort: SortColumn | null) => void;
|
|
34
|
-
onFilterChange?: (filters: TableFilterState) => void;
|
|
35
|
-
onColumnOrderChange?: (newHeaders: ColumnDef[]) => void;
|
|
36
|
-
onColumnVisibilityChange?: (visibilityState: ColumnVisibilityState) => void;
|
|
37
|
-
onColumnWidthChange?: (headers: ColumnDef[]) => void;
|
|
38
|
-
onLoadMore?: () => void;
|
|
39
|
-
onCellEdit?: (props: any) => void;
|
|
40
|
-
announce?: (message: string) => void;
|
|
41
|
-
containerElement?: HTMLElement;
|
|
42
|
-
cellRegistry?: Map<string, any>;
|
|
43
|
-
collapsedHeaders?: Set<Accessor>;
|
|
44
|
-
}
|
|
45
|
-
export interface TableManagerState {
|
|
46
|
-
isReady: boolean;
|
|
47
|
-
}
|
|
48
|
-
type StateChangeCallback = () => void;
|
|
49
|
-
export declare class TableManager {
|
|
50
|
-
private config;
|
|
51
|
-
private state;
|
|
52
|
-
private subscribers;
|
|
53
|
-
sortManager: SortManager;
|
|
54
|
-
filterManager: FilterManager;
|
|
55
|
-
rowManager: RowManager;
|
|
56
|
-
columnManager: ColumnManager;
|
|
57
|
-
dimensionManager: DimensionManager;
|
|
58
|
-
scrollManager: ScrollManager;
|
|
59
|
-
selectionManager: SelectionManager;
|
|
60
|
-
constructor(config: TableManagerConfig);
|
|
61
|
-
private setupManagerSubscriptions;
|
|
62
|
-
private applyFiltersAndSort;
|
|
63
|
-
private handleSortChange;
|
|
64
|
-
private handleFilterChange;
|
|
65
|
-
updateConfig(config: Partial<TableManagerConfig>): void;
|
|
66
|
-
subscribe(callback: StateChangeCallback): () => void;
|
|
67
|
-
private notifySubscribers;
|
|
68
|
-
getState(): TableManagerState;
|
|
69
|
-
isReady(): boolean;
|
|
70
|
-
destroy(): void;
|
|
71
|
-
}
|
|
72
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "./ColumnDef";
|
|
2
|
-
type useDragHandlerProps = {
|
|
3
|
-
draggedHeaderRef: {
|
|
4
|
-
current: ColumnDef | null;
|
|
5
|
-
};
|
|
6
|
-
essentialAccessors?: ReadonlySet<Accessor | string>;
|
|
7
|
-
headers: ColumnDef[];
|
|
8
|
-
hoveredHeaderRef: {
|
|
9
|
-
current: ColumnDef | null;
|
|
10
|
-
};
|
|
11
|
-
onColumnOrderChange?: (newHeaders: ColumnDef[]) => void;
|
|
12
|
-
onTableHeaderDragEnd: (newHeaders: ColumnDef[]) => void;
|
|
13
|
-
};
|
|
14
|
-
export default useDragHandlerProps;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import ColumnDef from "./ColumnDef";
|
|
2
|
-
export interface RefObject<T> {
|
|
3
|
-
current: T | null;
|
|
4
|
-
}
|
|
5
|
-
interface SharedTableProps {
|
|
6
|
-
centerHeaderRef: RefObject<HTMLDivElement | null>;
|
|
7
|
-
draggedHeaderRef: {
|
|
8
|
-
current: ColumnDef | null;
|
|
9
|
-
};
|
|
10
|
-
headerContainerRef: RefObject<HTMLDivElement | null>;
|
|
11
|
-
headers: ColumnDef[];
|
|
12
|
-
hoveredHeaderRef: {
|
|
13
|
-
current: ColumnDef | null;
|
|
14
|
-
};
|
|
15
|
-
mainBodyRef: RefObject<HTMLDivElement | null>;
|
|
16
|
-
onTableHeaderDragEnd: (newHeaders: ColumnDef[]) => void;
|
|
17
|
-
pinnedLeftColumns: ColumnDef[];
|
|
18
|
-
pinnedLeftHeaderRef: RefObject<HTMLDivElement | null>;
|
|
19
|
-
pinnedRightColumns: ColumnDef[];
|
|
20
|
-
pinnedRightHeaderRef: RefObject<HTMLDivElement | null>;
|
|
21
|
-
rowHeight: number;
|
|
22
|
-
tableBodyContainerRef: RefObject<HTMLDivElement | null>;
|
|
23
|
-
}
|
|
24
|
-
export default SharedTableProps;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ColumnDef } from "..";
|
|
2
|
-
import TableRow from "./TableRow";
|
|
3
|
-
import { CumulativeHeightMap } from "../utils/infiniteScrollUtils";
|
|
4
|
-
interface TableBodyProps {
|
|
5
|
-
calculatedHeaderHeight: number;
|
|
6
|
-
heightMap?: CumulativeHeightMap;
|
|
7
|
-
partiallyVisibleRows: TableRow[];
|
|
8
|
-
pinnedLeftColumns: ColumnDef[];
|
|
9
|
-
pinnedLeftWidth: number;
|
|
10
|
-
pinnedRightColumns: ColumnDef[];
|
|
11
|
-
pinnedRightWidth: number;
|
|
12
|
-
regularRows: TableRow[];
|
|
13
|
-
rowsToRender: TableRow[];
|
|
14
|
-
setScrollDirection: (direction: "up" | "down" | "none") => void;
|
|
15
|
-
setScrollTop: (scrollTop: number) => void;
|
|
16
|
-
shouldShowEmptyState: boolean;
|
|
17
|
-
stickyParents: TableRow[];
|
|
18
|
-
tableRows: TableRow[];
|
|
19
|
-
}
|
|
20
|
-
export default TableBodyProps;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import SortColumn from "./SortColumn";
|
|
2
|
-
import ColumnDef from "./ColumnDef";
|
|
3
|
-
export interface RefObject<T> {
|
|
4
|
-
current: T | null;
|
|
5
|
-
}
|
|
6
|
-
type TableHeaderProps = {
|
|
7
|
-
calculatedHeaderHeight: number;
|
|
8
|
-
centerHeaderRef: RefObject<HTMLDivElement | null>;
|
|
9
|
-
headers: ColumnDef[];
|
|
10
|
-
mainBodyWidth: number;
|
|
11
|
-
pinnedLeftColumns: ColumnDef[];
|
|
12
|
-
pinnedLeftWidth: number;
|
|
13
|
-
pinnedRightColumns: ColumnDef[];
|
|
14
|
-
pinnedRightWidth: number;
|
|
15
|
-
sort: SortColumn | null;
|
|
16
|
-
};
|
|
17
|
-
export default TableHeaderProps;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Pinned } from "./Pinned";
|
|
2
|
-
import SortColumn from "./SortColumn";
|
|
3
|
-
import { ColumnDef } from "..";
|
|
4
|
-
import { ColumnIndices } from "../utils/columnIndicesUtils";
|
|
5
|
-
interface TableHeaderSectionProps {
|
|
6
|
-
calculatedHeaderHeight: number;
|
|
7
|
-
columnIndices: ColumnIndices;
|
|
8
|
-
handleScroll?: (event: UIEvent) => void;
|
|
9
|
-
headers: ColumnDef[];
|
|
10
|
-
leftOffset?: number;
|
|
11
|
-
maxDepth: number;
|
|
12
|
-
pinned?: Pinned;
|
|
13
|
-
sectionRef: {
|
|
14
|
-
current: HTMLDivElement | null;
|
|
15
|
-
};
|
|
16
|
-
sort: SortColumn | null;
|
|
17
|
-
width?: number;
|
|
18
|
-
}
|
|
19
|
-
export default TableHeaderSectionProps;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import CellChangeProps from "./CellChangeProps";
|
|
2
|
-
import ColumnDef from "./ColumnDef";
|
|
3
|
-
import Row from "./Row";
|
|
4
|
-
import Cell from "./Cell";
|
|
5
|
-
type TableRowProps = {
|
|
6
|
-
currentRows: Row[];
|
|
7
|
-
draggedHeaderRef: {
|
|
8
|
-
current: ColumnDef | null;
|
|
9
|
-
};
|
|
10
|
-
getBorderClass: (rowIndex: number, columnIndex: number) => string;
|
|
11
|
-
handleMouseDown: (props: Cell) => void;
|
|
12
|
-
handleMouseOver: (rowIndex: number, columnIndex: number) => void;
|
|
13
|
-
headers: ColumnDef[];
|
|
14
|
-
hoveredHeaderRef: {
|
|
15
|
-
current: ColumnDef | null;
|
|
16
|
-
};
|
|
17
|
-
isSelected: (rowIndex: number, columnIndex: number) => boolean;
|
|
18
|
-
isInitialFocusedCell: (rowIndex: number, columnIndex: number) => boolean;
|
|
19
|
-
onCellEdit?: (props: CellChangeProps) => void;
|
|
20
|
-
onTableHeaderDragEnd: (newHeaders: ColumnDef[]) => void;
|
|
21
|
-
onToggleGroup: (rowId: number) => void;
|
|
22
|
-
row: Row;
|
|
23
|
-
rowIndex: number;
|
|
24
|
-
enablePagination: boolean;
|
|
25
|
-
tableRef: {
|
|
26
|
-
current: HTMLDivElement | null;
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
export default TableRowProps;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "../types/ColumnDef";
|
|
2
|
-
export type ColumnIndices = Record<string, number>;
|
|
3
|
-
/**
|
|
4
|
-
* Calculates column indices for all headers to ensure consistent colIndex values
|
|
5
|
-
* This function is used in both TableBody and TableHeader components
|
|
6
|
-
*
|
|
7
|
-
* Note: In hierarchical headers, a parent header and its first child can share
|
|
8
|
-
* the same column index, which is needed for proper alignment in the grid.
|
|
9
|
-
*/
|
|
10
|
-
export declare function calculateColumnIndices({ headers, pinnedLeftColumns, pinnedRightColumns, collapsedHeaders, }: {
|
|
11
|
-
headers: ColumnDef[];
|
|
12
|
-
pinnedLeftColumns: ColumnDef[];
|
|
13
|
-
pinnedRightColumns: ColumnDef[];
|
|
14
|
-
collapsedHeaders?: Set<Accessor>;
|
|
15
|
-
}): ColumnIndices;
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import ColumnDef, { Accessor } from "../types/ColumnDef";
|
|
2
|
-
import { Pinned } from "../types/Pinned";
|
|
3
|
-
/**
|
|
4
|
-
* Precomputed cumulative width data structure for O(1) column position lookups
|
|
5
|
-
* and O(log n) viewport calculations (analogous to CumulativeHeightMap for rows)
|
|
6
|
-
*/
|
|
7
|
-
export interface CumulativeWidthMap {
|
|
8
|
-
/** Array where index i contains the left pixel position of leaf column i */
|
|
9
|
-
columnLeftPositions: number[];
|
|
10
|
-
/** Total width of all columns combined */
|
|
11
|
-
totalWidth: number;
|
|
12
|
-
/** Ordered array of leaf headers (actual columns that render) */
|
|
13
|
-
leafHeaders: ColumnDef[];
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get all leaf headers (actual columns that render) from a header tree
|
|
17
|
-
* Handles nested headers, collapsed state, showWhen logic, and pinned sections
|
|
18
|
-
*
|
|
19
|
-
* Uses the existing displayCell utility to respect all visibility rules
|
|
20
|
-
*
|
|
21
|
-
* @param headers - Array of header objects (can be nested)
|
|
22
|
-
* @param pinned - The pinned state for this section
|
|
23
|
-
* @param allHeaders - All headers in the table (for displayCell context)
|
|
24
|
-
* @param collapsedHeaders - Set of collapsed header accessors
|
|
25
|
-
* @returns Flat array of leaf headers in order
|
|
26
|
-
*/
|
|
27
|
-
export declare const getLeafHeaders: (headers: ColumnDef[], pinned: Pinned | undefined, allHeaders: ColumnDef[], collapsedHeaders?: Set<Accessor>) => ColumnDef[];
|
|
28
|
-
/**
|
|
29
|
-
* Build a cumulative width map for efficient viewport calculations
|
|
30
|
-
* This precomputes the left position of every column, enabling:
|
|
31
|
-
* - O(1) lookup of column left position
|
|
32
|
-
* - O(log n) binary search to find columns in viewport
|
|
33
|
-
*
|
|
34
|
-
* Similar to buildCumulativeHeightMap for rows
|
|
35
|
-
*
|
|
36
|
-
* @param headers - Array of header objects for a section
|
|
37
|
-
* @param pinned - The pinned state for this section
|
|
38
|
-
* @param allHeaders - All headers in the table (for displayCell context)
|
|
39
|
-
* @param collapsedHeaders - Set of collapsed header accessors
|
|
40
|
-
* @returns Cumulative width map with column positions
|
|
41
|
-
*/
|
|
42
|
-
export declare const buildCumulativeWidthMap: (headers: ColumnDef[], pinned: Pinned | undefined, allHeaders: ColumnDef[], collapsedHeaders?: Set<Accessor>) => CumulativeWidthMap;
|
|
43
|
-
/**
|
|
44
|
-
* Find the column index at a given scroll position using binary search
|
|
45
|
-
* Returns the index of the column that contains or is closest to the scroll position
|
|
46
|
-
*
|
|
47
|
-
* Similar to findRowAtScrollPosition for rows
|
|
48
|
-
*
|
|
49
|
-
* @param scrollLeft - The horizontal scroll position in pixels
|
|
50
|
-
* @param widthMap - Precomputed cumulative width map
|
|
51
|
-
* @returns Column index at the scroll position
|
|
52
|
-
*/
|
|
53
|
-
export declare const findColumnAtScrollPosition: (scrollLeft: number, widthMap: CumulativeWidthMap) => number;
|
|
54
|
-
/**
|
|
55
|
-
* Calculate visible columns for viewport with overscan buffer
|
|
56
|
-
* Returns column indices and the actual leaf header objects to render
|
|
57
|
-
*
|
|
58
|
-
* Similar to getViewportCalculations for rows
|
|
59
|
-
*
|
|
60
|
-
* @param scrollLeft - Current horizontal scroll position
|
|
61
|
-
* @param viewportWidth - Width of the visible viewport
|
|
62
|
-
* @param bufferColumnCount - Number of columns to render outside viewport (overscan)
|
|
63
|
-
* @param scrollDirection - Direction of scroll for asymmetric overscan
|
|
64
|
-
* @param widthMap - Precomputed cumulative width map
|
|
65
|
-
* @returns Object with startIndex, endIndex, and columns array (leaf columns only)
|
|
66
|
-
*/
|
|
67
|
-
export declare const getVisibleColumns: ({ scrollLeft, viewportWidth, bufferColumnCount, scrollDirection, widthMap, }: {
|
|
68
|
-
scrollLeft: number;
|
|
69
|
-
viewportWidth: number;
|
|
70
|
-
bufferColumnCount: number;
|
|
71
|
-
scrollDirection?: "left" | "right" | "none";
|
|
72
|
-
widthMap: CumulativeWidthMap;
|
|
73
|
-
}) => {
|
|
74
|
-
startIndex: number;
|
|
75
|
-
endIndex: number;
|
|
76
|
-
columns: ColumnDef[];
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Build parent-child relationship maps for the header hierarchy
|
|
80
|
-
* This enables efficient lookup of ancestors for visible leaf columns
|
|
81
|
-
*
|
|
82
|
-
* @param headers - Array of top-level header objects
|
|
83
|
-
* @param pinned - The pinned state for this section
|
|
84
|
-
* @param allHeaders - All headers in the table (for displayCell context)
|
|
85
|
-
* @param collapsedHeaders - Set of collapsed header accessors
|
|
86
|
-
* @returns Maps for leaf-to-parents and parent-to-leaves relationships
|
|
87
|
-
*/
|
|
88
|
-
export declare const buildColumnHierarchy: (headers: ColumnDef[], pinned: Pinned | undefined, allHeaders: ColumnDef[], collapsedHeaders?: Set<Accessor>) => {
|
|
89
|
-
leafToParents: Map<Accessor, Accessor[]>;
|
|
90
|
-
parentToLeaves: Map<Accessor, Accessor[]>;
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Get all headers to render (visible leaves + their ancestors)
|
|
94
|
-
*
|
|
95
|
-
* Strategy: Include a parent header if ANY of its children are visible
|
|
96
|
-
*
|
|
97
|
-
* @param visibleLeafColumns - Array of visible leaf header objects
|
|
98
|
-
* @param leafToParents - Map from leaf accessor to parent accessor chain
|
|
99
|
-
* @returns Set of all header accessors to render (leaves + ancestors)
|
|
100
|
-
*/
|
|
101
|
-
export declare const getHeadersToRender: (visibleLeafColumns: ColumnDef[], leafToParents: Map<Accessor, Accessor[]>) => Set<Accessor>;
|
|
102
|
-
/**
|
|
103
|
-
* GridCell type (matches TableHeaderSection.tsx)
|
|
104
|
-
* Represents a single header cell in the grid with its positioning
|
|
105
|
-
*/
|
|
106
|
-
export type GridCell = {
|
|
107
|
-
header: ColumnDef;
|
|
108
|
-
gridColumnStart: number;
|
|
109
|
-
gridColumnEnd: number;
|
|
110
|
-
gridRowStart: number;
|
|
111
|
-
gridRowEnd: number;
|
|
112
|
-
colIndex: number;
|
|
113
|
-
parentHeader?: ColumnDef;
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Recalculate grid column positions for visible headers
|
|
117
|
-
* Adjusts gridColumnStart/End to account for hidden columns before the viewport
|
|
118
|
-
*
|
|
119
|
-
* This is the key function that makes virtualization work - it offsets the grid
|
|
120
|
-
* positions so that the visible subset appears correctly positioned
|
|
121
|
-
*
|
|
122
|
-
* @param originalGridCells - All grid cells from the full header tree
|
|
123
|
-
* @param headersToRender - Set of header accessors that should be rendered
|
|
124
|
-
* @param visibleLeafColumns - Array of visible leaf columns (for determining offset)
|
|
125
|
-
* @param startColumnIndex - Index of first visible leaf column in the full leaf array
|
|
126
|
-
* @returns Filtered and repositioned grid cells
|
|
127
|
-
*/
|
|
128
|
-
export declare const recalculateGridPositions: (originalGridCells: GridCell[], headersToRender: Set<Accessor>, visibleLeafColumns: ColumnDef[], startColumnIndex: number) => GridCell[];
|