import { type RefObject } from 'react'; export type PdfViewerOnLoadSuccessProps = { /** * Количество страниц в файле */ numPages: number; /** * Метод получения информации о странице */ getPage: (page: number) => Promise<{ view: number[]; rotate: number; }>; }; export type PdfViewerProps = { /** * Файл для отображения */ file: Blob | string | null | undefined; options?: { /** * Флаг следует ли включать cookie в запрос. По-умолчанию `true`. */ withCredentials?: boolean | undefined; }; /** * Будет вызван после успешной загрузки файла */ onLoadSuccess?: (pdf: PdfViewerOnLoadSuccessProps) => void; /** * Будет вызван при ошибке загрузки файла */ onLoadError?: (error: Error) => void; /** * Будет вызван при прокрутке к странице */ onChangePage?: (pageNumber: number) => void; /** * Реф на контейнер, в котором должен быть скролл */ scrollRef: RefObject; /** * Реф для пагинации */ paginationRef?: RefObject; /** * Функция, позволяющая задавать параметры обработки ошибки */ getErrorState?: (error: Error) => PdfViewerErrorData; /** * Скрытие персональных данных от инструментов мониторинга */ isHidePersonalData?: boolean; /** * Упрощенный режим просмотра документа. Не отображает текст аннотаций и номера страниц */ isViewerLite?: boolean; /** * Отображение страниц в полную высоту */ isFullHeight?: boolean; /** * Диапазон индексов страниц, которые необходимо отобразить */ renderPageRange?: { start?: number; end?: number; }; /** * Флаг отвечает за включение/отключения функций масштабирования в компоненте */ enabledZoom?: boolean; }; export type PdfViewerErrorData = { /** * Заголовок ошибки */ message: string; /** * Элементы кнопок для дальнейших действий. При передаче null кнопки не будет */ actions?: boolean | null; /** * Кастомное изображение ошибки */ errorImgSrc?: string; /** * Список ошибок для отображения */ errorList?: string[]; /** * Функция обработки нажатия на кнопку "Повторить отправку" */ onRetry?: () => void; };