import { CoreOptions, CoreTableState, CoreInstance } from './core/table'; import { VisibilityInstance, VisibilityTableState, VisibilityColumn as ColumnVisibilityColumn, VisibilityOptions, VisibilityColumnDef, VisibilityRow } from './features/Visibility'; import { ColumnOrderInstance, ColumnOrderOptions, ColumnOrderTableState } from './features/Ordering'; import { ColumnPinningColumn, ColumnPinningColumnDef, ColumnPinningInstance, ColumnPinningOptions, ColumnPinningRow, ColumnPinningTableState } from './features/Pinning'; import { CoreHeader, CoreHeaderGroup, HeaderContext, HeadersInstance } from './core/headers'; import { FiltersColumn, FiltersColumnDef, FiltersInstance, FiltersOptions, FiltersRow, FiltersTableState } from './features/Filters'; import { SortingColumn, SortingColumnDef, SortingInstance, SortingOptions, SortingTableState } from './features/Sorting'; import { GroupingCell, GroupingColumn, GroupingColumnDef, GroupingInstance, GroupingOptions, GroupingRow, GroupingTableState } from './features/Grouping'; import { ExpandedInstance, ExpandedOptions, ExpandedTableState, ExpandedRow } from './features/Expanding'; import { ColumnSizingColumn, ColumnSizingColumnDef, ColumnSizingHeader, ColumnSizingInstance, ColumnSizingOptions, ColumnSizingTableState } from './features/ColumnSizing'; import { PaginationInitialTableState, PaginationInstance, PaginationOptions, PaginationTableState } from './features/Pagination'; import { RowSelectionInstance, RowSelectionOptions, RowSelectionRow, RowSelectionTableState } from './features/RowSelection'; import { CoreRow } from './core/row'; import { PartialKeys, UnionToIntersection } from './utils'; import { CellContext, CoreCell } from './core/cell'; import { CoreColumn } from './core/column'; export interface TableMeta { } export interface ColumnMeta { } export interface FilterMeta { } export interface FilterFns { } export interface SortingFns { } export interface AggregationFns { } export type Updater = T | ((old: T) => T); export type OnChangeFn = (updaterOrValue: Updater) => void; export type RowData = unknown | object | any[]; export type AnyRender = (Comp: any, props: any) => any; export interface Table extends CoreInstance, HeadersInstance, VisibilityInstance, ColumnOrderInstance, ColumnPinningInstance, FiltersInstance, SortingInstance, GroupingInstance, ColumnSizingInstance, ExpandedInstance, PaginationInstance, RowSelectionInstance { } interface FeatureOptions extends VisibilityOptions, ColumnOrderOptions, ColumnPinningOptions, FiltersOptions, SortingOptions, GroupingOptions, ExpandedOptions, ColumnSizingOptions, PaginationOptions, RowSelectionOptions { } export type TableOptionsResolved = CoreOptions & FeatureOptions; export interface TableOptions extends PartialKeys, 'state' | 'onStateChange' | 'renderFallbackValue'> { } export interface TableState extends CoreTableState, VisibilityTableState, ColumnOrderTableState, ColumnPinningTableState, FiltersTableState, SortingTableState, ExpandedTableState, GroupingTableState, ColumnSizingTableState, PaginationTableState, RowSelectionTableState { } interface CompleteInitialTableState extends CoreTableState, VisibilityTableState, ColumnOrderTableState, ColumnPinningTableState, FiltersTableState, SortingTableState, ExpandedTableState, GroupingTableState, ColumnSizingTableState, PaginationInitialTableState, RowSelectionTableState { } export interface InitialTableState extends Partial { } export interface Row extends CoreRow, VisibilityRow, ColumnPinningRow, FiltersRow, GroupingRow, RowSelectionRow, ExpandedRow { } export interface RowModel { rows: Row[]; flatRows: Row[]; rowsById: Record>; } export type AccessorFn = (originalRow: TData, index: number) => TValue; export type ColumnDefTemplate = string | ((props: TProps) => any); export type StringOrTemplateHeader = string | ColumnDefTemplate>; interface StringHeaderIdentifier { header: string; id?: string; } interface IdIdentifier { id: string; header?: StringOrTemplateHeader; } type ColumnIdentifiers = IdIdentifier | StringHeaderIdentifier; interface ColumnDefExtensions extends VisibilityColumnDef, ColumnPinningColumnDef, FiltersColumnDef, SortingColumnDef, GroupingColumnDef, ColumnSizingColumnDef { } export interface ColumnDefBase extends ColumnDefExtensions { getUniqueValues?: AccessorFn; footer?: ColumnDefTemplate>; cell?: ColumnDefTemplate>; meta?: ColumnMeta; } export interface IdentifiedColumnDef extends ColumnDefBase { id?: string; header?: StringOrTemplateHeader; } export type DisplayColumnDef = ColumnDefBase & ColumnIdentifiers; interface GroupColumnDefBase extends ColumnDefBase { columns?: ColumnDef[]; } export type GroupColumnDef = GroupColumnDefBase & ColumnIdentifiers; interface AccessorFnColumnDefBase extends ColumnDefBase { accessorFn: AccessorFn; } export type AccessorFnColumnDef = AccessorFnColumnDefBase & ColumnIdentifiers; interface AccessorKeyColumnDefBase extends ColumnDefBase { id?: string; accessorKey: (string & {}) | keyof TData; } export type AccessorKeyColumnDef = AccessorKeyColumnDefBase & Partial>; export type AccessorColumnDef = AccessorKeyColumnDef | AccessorFnColumnDef; export type ColumnDef = (DisplayColumnDef | GroupColumnDef | AccessorColumnDef) & { rowSpanGrow?: number; }; export type ColumnDefResolved = Partial>> & { accessorKey?: string; }; export interface Column extends CoreColumn, ColumnVisibilityColumn, ColumnPinningColumn, FiltersColumn, SortingColumn, GroupingColumn, ColumnSizingColumn { } export interface Cell extends CoreCell, GroupingCell { } export interface Header extends CoreHeader, ColumnSizingHeader { } export interface HeaderGroup extends CoreHeaderGroup { } export {};