import { TTableColumnOrGroup } from '../../model/col.types'; import { InferFiltersFromColumns, TTableQuickFilter, TTableQuickFiltersConfig } from '../../model/filter.types'; import { TTableSetFilters, TTableSortState } from '../../model/sort.types'; import { TTableItem } from '../../model/table.types'; export type TTableState[], Q extends TTableQuickFilter[]> = ReturnType>; export type TUseTableStatesProps[], Q extends TTableQuickFilter[]> = { columns: T; quickFilters?: TTableQuickFiltersConfig; filtersDebounceDelay?: number; debounceFields?: (keyof InferFiltersFromColumns)[]; prefix?: string; }; /** * Хук для управления состоянием таблицы, включая сортировку, пагинацию и фильтрацию. * Синхронизирует состояние пагинации и фильтрации с URL с помощью nuqs. * Предоставляет доступ к управляемым состояниям таблицы и функциям для их изменения. * * @template TItem - Тип элемента данных в таблице. * @template T - Тип массива колонок таблицы. * @template Q - Тип массива быстрых фильтров. * * @param {TUseTableStatesProps} props - Параметры конфигурации хука. * @param {T} props.columns - Массив определений колонок таблицы. * Каждая колонка должна включать определение фильтрации, если она должна быть фильтруемой. * @param {TTableQuickFiltersConfig} [props.quickFilters] - Конфигурация быстрых фильтров. * Если не указано, быстрые фильтры не будут использоваться. * @param {number} [props.filtersDebounceDelay=300] - Задержка debounce для значений фильтров (в миллисекундах). * По умолчанию 300ms. * @param {Array>} [props.debounceFields] - * Массив полей (ключей фильтров), для которых следует применять debounce. * Если не указано, debounce применяется к полям фильтрации типа "input" или "input-number". * @param {string} [props.prefix] - Префикс для параметров URL, используемых для пагинации. * Если указан, параметры в URL будут иметь вид `prefix_pageIndex`. * * @returns {object} Объект, содержащий управляемые состояния таблицы и функции для их изменения. */ declare const useTableStates: [], Q extends TTableQuickFilter[]>({ columns, quickFilters, filtersDebounceDelay, debounceFields, prefix, }: TUseTableStatesProps) => { sort: TTableSortState; setSort: import('../../../../../node_modules/.pnpm/react@19.1.1/node_modules/react').Dispatch>; pagination: { pageIndex: number; pageSize: number; }; setPagination: (data: { pageIndex: number; pageSize: number; }) => void; totalPages: number; filters: InferFiltersFromColumns; debouncedFilters: InferFiltersFromColumns; filterParsers: Record>; setFilters: TTableSetFilters; quickFilters: TTableQuickFiltersConfig | undefined; setTotalPages: (newValue?: number) => void; }; export default useTableStates; //# sourceMappingURL=use-table-states.d.ts.map