import { DataItemType, FieldsDefinitionType } from './types.ts'; export type SortOrderType = 'ASC' | 'DESC'; export type UseMockDataPropsType = { fields: Fields; page: number; pageSize: number; searchText?: string | null; sortKey?: keyof Fields | null; sortOrder?: SortOrderType | null; storageKey: string; }; /** * Хук `useMockData` позволяет работать с данными, которые могут быть: * - Загружены из localStorage, если они уже сохранены, * - Сгенерированы случайно, если данных в localStorage нет. * * Хук поддерживает: * - Добавление, изменение и удаление элементов данных. * - Фильтрацию данных по поисковому запросу. * - Сортировку данных по заданному ключу и порядку. * - Пагинацию данных. * * @template Fields Определяет тип полей данных, передаваемый в хук. * * @param {UseMockDataPropsType} props - Объект с параметрами хука: * * @param {Fields} props.fields - Поля данных, каждое из которых определяет название и тип ('string', 'number', 'boolean', 'Date'). * @param {number} props.page - Номер текущей страницы пагинации. * @param {number} props.pageSize - Количество элементов на странице. * @param {string} props.searchText - Поисковый запрос для фильтрации данных. * @param {keyof Fields | null} props.sortKey - Ключ для сортировки данных. Если `null`, сортировка не применяется. * @param {SortOrderType} props.sortOrder - Порядок сортировки данных: 'ASC' или 'DESC'. * @param {string} props.storageKey - Ключ для хранения данных в localStorage. * * @returns {Object} Возвращает объект с данными и функциями управления: * @returns {DataItemType[]} data - Массив отфильтрованных, отсортированных и пагинированных данных. * @returns {boolean} isLoading - Состояние загрузки данных. * @returns {number} totalDataLength - Общее количество данных после фильтрации (для информации о количестве страниц). * @returns {() => void} onAddDataHandler - Функция для добавления нового элемента данных. * @returns {(id: string, updatedItem: Partial, 'id'>>) => void} onChangeDataByIdHandler - Функция для изменения элемента данных по id. * @returns {(id: string) => void} onDeleteDataByIdHandler - Функция для удаления элемента данных по id. * * @example * const fields = { * name: 'string', * age: 'number', * isActive: 'boolean', * createdAt: 'Date', * }; * * const { * data, * isLoading, * totalDataLength, * onAddDataHandler, * onChangeDataByIdHandler, * onDeleteDataByIdHandler, * } = useMockData({ * fields, * page: 1, * pageSize: 10, * searchText: '', * sortKey: 'age', * sortOrder: 'ASC', * storageKey: 'myDataStorageKey', * }); */ export declare const useMockData: ({ fields, page, pageSize, searchText, sortKey, sortOrder, storageKey, }: UseMockDataPropsType) => { data: DataItemType[]; isLoading: boolean; totalDataLength: number; onAddDataHandler: () => void; onChangeDataByIdHandler: (id: string, updatedItem: Partial, "id">>) => void; onDeleteDataByIdHandler: (id: string) => void; };