import type { PDFDocumentProxy } from 'pdfjs-dist'; import type { Except, Simplify, UnknownRecord } from 'type-fest'; import type { ImageProps } from '../image/interface'; export type FilePreviewerType = 'image' | 'video' | 'audio' | 'pdf'; export type FilePreviewerStatus = 'beforeLoad' | 'loading' | 'loaded' | 'error'; type FilePreviewerImageFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; export type FilePreviewerImageProps = Simplify, 'fit'> & { fit?: FilePreviewerImageFit; } & UnknownRecord>; export type FilePreviewerMediaSkin = 'default' | 'minimal' | 'native' | false | (string & {}); export type FilePreviewerMediaProps = Simplify; export type FilePreviewerPdfRotation = 0 | 90 | 180 | 270; export type FilePreviewerPdfProps = Simplify void; }>; export interface FilePreviewerContentSlotProps { src: string; type: FilePreviewerType; title?: string; visible: boolean; fullscreen: boolean; status: FilePreviewerStatus; loading: boolean; loaded: boolean; error: boolean; close: () => void; onLoad: () => void; onError: () => void; } export interface FilePreviewerPdfSlotProps { src: string; status: FilePreviewerStatus; loading: boolean; loaded: boolean; error: boolean; doc: PDFDocumentProxy | null; page: number; numPages: number; goto: (page: number) => void; prev: () => void; next: () => void; render: (canvas: HTMLCanvasElement, page?: number) => Promise; close: () => void; onLoad: () => void; onError: (error?: unknown) => void; } export interface FilePreviewerMediaSlotProps { src: string; status: FilePreviewerStatus; loading: boolean; loaded: boolean; error: boolean; skin: FilePreviewerMediaSkin; useVideoJs: boolean; playerProps: UnknownRecord; skinProps: UnknownRecord; close: () => void; onLoad: () => void; onError: (error?: unknown) => void; } export interface FilePreviewerImageSlotProps { src: string; status: FilePreviewerStatus; loading: boolean; loaded: boolean; error: boolean; imageProps: FilePreviewerImageProps; close: () => void; onLoad: () => void; onError: (error?: unknown) => void; } export interface FilePreviewerProps { src?: string; type?: FilePreviewerType; visible?: boolean; defaultVisible?: boolean; fullscreen?: boolean; title?: string; maskClosable?: boolean; closable?: boolean; escToClose?: boolean; popupContainer?: HTMLElement | string; renderToBody?: boolean; imageProps?: FilePreviewerImageProps; mediaProps?: FilePreviewerMediaProps; pdfProps?: FilePreviewerPdfProps; } export {};