import React from 'react'; import { ColumnWidth, RowField, SortingState, TableColumn, TableRow } from './Table'; 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 getNewSorting: (currentSorting: SortingState, newField: Exclude) => SortingState; export declare const getMaxLevel: (columns: TableColumn[]) => number; export declare const transformColumns: (columns: TableColumn[], maxLevel: number) => (({ title: React.ReactNode; accessor: Exclude; align?: "left" | "center" | "right" | undefined; withoutPadding?: boolean | undefined; width?: number | undefined; mergeCells?: boolean | undefined; } & { sortable?: false | undefined; } & { columns?: TableColumn[] | undefined; position?: Position | undefined; } & { position: Position; }) | ({ title: React.ReactNode; accessor: Exclude; align?: "left" | "center" | "right" | undefined; withoutPadding?: boolean | undefined; width?: number | undefined; mergeCells?: boolean | undefined; } & { sortable: true; sortByField?: Exclude | undefined; } & { columns?: TableColumn[] | undefined; position?: Position | 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: TableRow[]) => TableRow[]; setBoundaryRef: (columnIdx: number, rowIdx: number) => React.RefObject | undefined; };