import React from 'react'; import { ColumnWidth, SortingState, TableColumn, TableRow, TableTreeRow } from './Table'; export declare const Order: { readonly ASC: "ASC"; readonly asc: "asc"; readonly DESC: "DESC"; readonly desc: "desc"; }; export declare type OrderType = typeof Order[keyof typeof Order]; export declare type Position = { colSpan?: number; rowSpan?: number; level: number; gridIndex: number; topHeaderGridIndex: number; smallTextSize?: boolean; height?: number; }; export declare type Header = TableColumn & { position: Position; }; export declare type HeaderData = { headers: Array>[]; flattenedHeaders: Array>; lowHeaders: Array>; headerRowsRefs: React.MutableRefObject>; headerRowsHeights: Array; headerColumnsHeights: Array; resizerTopOffsets: Array; }; export declare const getColumnsSize: (sizes: ColumnWidth[]) => string; export declare const getColumnLeftOffset: ({ columnIndex, resizedColumnWidths, initialColumnWidths, }: { columnIndex: number; resizedColumnWidths: Array; initialColumnWidths: number[]; }) => number; export declare const createSortingState: (by: keyof T, order?: "desc" | "asc" | "ASC" | "DESC" | undefined, sortFn?: ((a: T[keyof T], b: T[keyof T]) => number) | undefined) => SortingState; export declare const getNewSorting: (currentSorting: SortingState, newField: keyof T, sortFn?: ((a: T[keyof T], b: T[keyof T]) => number) | undefined) => SortingState; export declare const getMaxLevel: (columns: TableColumn[]) => number; export declare const transformColumns: (columns: TableColumn[], maxLevel: number) => (({ title: React.ReactNode; align?: "left" | "center" | "right" | undefined; withoutPadding?: boolean | undefined; width?: number | undefined; mergeCells?: boolean | undefined; position?: Position | undefined; control?: (({ column }: import("./Table").TableControl) => React.ReactNode) | undefined; } & { columns: TableColumn[]; } & { [K_1 in keyof import("./Table").ValueOf<{ [K in keyof T]: { accessor: K extends string ? K : never; sortable?: boolean | undefined; sortByField?: keyof T | undefined; order?: "desc" | "asc" | "ASC" | "DESC" | undefined; sortFn?(a: T[K], b: T[K]): number; renderCell?: ((row: T) => React.ReactNode) | undefined; getComparisonValue?: ((cell: T[K]) => React.ReactText) | undefined; }; }>]?: undefined; } & { position: Position; }) | ({ title: React.ReactNode; align?: "left" | "center" | "right" | undefined; withoutPadding?: boolean | undefined; width?: number | undefined; mergeCells?: boolean | undefined; position?: Position | undefined; control?: (({ column }: import("./Table").TableControl) => React.ReactNode) | undefined; } & import("./Table").ValueOf<{ [K in keyof T]: { accessor: K extends string ? K : never; sortable?: boolean | undefined; sortByField?: keyof T | undefined; order?: "desc" | "asc" | "ASC" | "DESC" | undefined; sortFn?(a: T[K], b: T[K]): number; renderCell?: ((row: T) => React.ReactNode) | undefined; getComparisonValue?: ((cell: T[K]) => React.ReactText) | undefined; }; }> & { columns?: undefined; } & { position: Position; }))[][]; /** * Возвращает данные, необходимые для построения хидера таблицы * * @param columns - массив колонок * * @return { * {Array>[]} headers: двумерный массив заголовков, выстроенный по вертикали; * {Array>} flattenedHeaders: плоский массив заголовков; * {Array>} lowHeaders: самые нижние заголовки (по ним строятся колонки); * {Record} headerRowsRefs: содержит рефы на заголовки; * {Array} headerRowsHeights: массив высот строк заголовков; * {Array} headerColumnsHeights: массив высот колонок заголовков; * {Array} resizerTopOffsets: массив отступов для компонентов Resizer; * } */ export declare const useHeaderData: (columns: TableColumn[]) => HeaderData; /** * Возвращает 2 функции, необходимые для отображения большого количества строк в таблице * * @param maxVisibleRows - максимальное количество отображаемых строк в один момент времени * @param scrollableEl - элемент, на который вешается scroll listener * @param enabled - флаг включения данной функциональность * * @return { * getSlicedRows: функция, обрезающая исходный массив данных * setBoundaryRef: функция, проставляющая рефы необходимым ячейкам для вычисления границ отображения строк * } */ export declare const useLazyLoadData: (maxVisibleRows: number, scrollableEl: HTMLDivElement | Window | null, enabled: boolean) => { getSlicedRows: (rows: T[]) => T[]; setBoundaryRef: (columnIdx: number, rowIdx: number) => React.RefObject | undefined; }; export declare const transformRows: (rows: T[], expandedRowIds: string[], isTableExpanded?: boolean | undefined) => TableTreeRow[];