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< TableOptionsResolved, '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< TData extends RowData, TValue = unknown > = ColumnDefBase & ColumnIdentifiers interface GroupColumnDefBase extends ColumnDefBase { columns?: ColumnDef[] } export type GroupColumnDef< TData extends RowData, TValue = unknown > = GroupColumnDefBase & ColumnIdentifiers interface AccessorFnColumnDefBase extends ColumnDefBase { accessorFn: AccessorFn } export type AccessorFnColumnDef< TData extends RowData, TValue = unknown > = AccessorFnColumnDefBase & ColumnIdentifiers interface AccessorKeyColumnDefBase extends ColumnDefBase { id?: string accessorKey: (string & {}) | keyof TData } export type AccessorKeyColumnDef< TData extends RowData, TValue = unknown > = AccessorKeyColumnDefBase & Partial> export type AccessorColumnDef = | AccessorKeyColumnDef | AccessorFnColumnDef // export type ColumnDef = ( | DisplayColumnDef | GroupColumnDef | AccessorColumnDef ) & { rowSpanGrow?: number } export type ColumnDefResolved< TData extends RowData, TValue = unknown > = 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 {}