UNPKG

jagran-react-doc-viewer

Version:

A highly customizable React document viewer with support for PDF, DOCX, PPTX, images, and more

209 lines 5.88 kB
import { ReactNode, ComponentType } from 'react'; export interface DocumentSource { uri: string; fileName?: string; fileType?: string; startPage?: number; thumbnail?: string; } export interface ViewerTheme { primary?: string; secondary?: string; background?: string; surface?: string; text?: string; textSecondary?: string; border?: string; error?: string; success?: string; } export interface HeaderConfig { visible?: boolean; customContent?: ReactNode; height?: string; style?: React.CSSProperties; className?: string; } export interface NavigationConfig { visible?: boolean; position?: 'top' | 'bottom' | 'left' | 'right'; style?: React.CSSProperties; className?: string; customPrevButton?: ReactNode; customNextButton?: ReactNode; customPageIndicator?: ReactNode; showThumbnails?: boolean; thumbnailSize?: { width: number; height: number; }; icons?: { prev?: ReactNode; next?: ReactNode; download?: ReactNode; print?: ReactNode; fullscreen?: ReactNode; zoomIn?: ReactNode; zoomOut?: ReactNode; zoomReset?: ReactNode; }; } export interface PrerenderConfig { enabled?: boolean; threshold?: number; strategy?: 'next' | 'all'; } export interface ViewerConfig { theme?: 'light' | 'dark' | ViewerTheme; showToolbar?: boolean; showNavigation?: boolean; allowDownload?: boolean; allowPrint?: boolean; allowFullscreen?: boolean; loadingTimeout?: number; errorRetryAttempts?: number; header?: HeaderConfig; navigation?: NavigationConfig; prerender?: PrerenderConfig; customToolbar?: React.ReactNode; customNavigation?: React.ReactNode; customActions?: React.ReactNode; toolbarPosition?: 'top' | 'bottom' | 'left' | 'right'; navigationPosition?: 'top' | 'bottom' | 'left' | 'right'; renderFromPage?: boolean; showThumbnail?: boolean; thumbnailSize?: { width: number; height: number; }; tooltips?: { download?: string; zoom?: { in?: string; out?: string; reset?: string; current?: string; }; navigation?: { previous?: string; next?: string; pageInfo?: string; }; toolbar?: { download?: string; print?: string; fullscreen?: string; customActions?: Record<string, string>; }; error?: { retry?: string; generic?: string; }; }; pageGap?: number; pagePadding?: number; initialZoom?: number; initialZoomByDevice?: { mobile?: number; tablet?: number; ipad?: number; desktop?: number; tv?: number; }; zoomStep?: number; minZoom?: number; maxZoom?: number; mobileBreakpoint?: number; tabletBreakpoint?: number; mobileBehavior?: { collapseToolbar?: boolean; hideNavigation?: boolean; simplifiedControls?: boolean; }; toolbarClassName?: string; navigationClassName?: string; contentClassName?: string; animatePageTransition?: boolean; transitionDuration?: number; zoomAnimationDuration?: number; } export interface ViewerEvents { onDocumentLoad?: (document: DocumentSource) => void; onDocumentError?: (error: Error, document: DocumentSource) => void; onPageChange?: (page: number, totalPages: number) => void; onZoomChange?: (zoom: number) => void; onFullscreenToggle?: (isFullscreen: boolean) => void; } export interface RendererProps { document: DocumentSource; config: ViewerConfig; events: ViewerEvents; className?: string; style?: React.CSSProperties; documents?: DocumentSource[]; currentIndex?: number; externalZoom?: number; onZoomUpdate?: (zoom: number) => number; loading?: boolean; onLoadingChange?: (loading: boolean) => void; loadingCustomComponent?: ComponentType; } export interface CustomRenderer { fileTypes: string[]; component: ComponentType<RendererProps>; priority?: number; handlesOwnZoom?: boolean; } export interface LoadingRendererProps { document: DocumentSource; fileName?: string; progress?: number; } export interface ErrorRendererProps { error: Error; document: DocumentSource; onRetry?: () => void; } export interface DocViewerProps { documents: DocumentSource[]; activeDocument?: number; startIndex?: number; config?: ViewerConfig; events?: ViewerEvents; customRenderers?: CustomRenderer[]; loadingRenderer?: ComponentType<LoadingRendererProps>; errorRenderer?: ComponentType<ErrorRendererProps>; className?: string; style?: React.CSSProperties; zoomLevel?: number; onZoomChange?: (zoomLevel: number) => number; allowScreenshot?: boolean; loading?: boolean; LoadingComponent?: ComponentType<LoadingRendererProps>; showThumbnail?: boolean; onLoadingChange?: (loading: boolean) => void; loadingCustomComponent?: ComponentType; } export interface DocViewerRef { nextDocument: () => void; previousDocument: () => void; setActiveDocument: (index: number) => void; getCurrentDocument: () => DocumentSource | null; reload: () => void; downloadCurrent: () => void; printCurrent: () => void; toggleFullscreen: () => void; incrementZoom: () => void; decrementZoom: () => void; resetZoom: () => void; } declare global { interface PromiseConstructor { withResolvers<T>(): { promise: Promise<T>; resolve: (value: T | PromiseLike<T>) => void; reject: (reason?: any) => void; }; } } //# sourceMappingURL=index.d.ts.map