smart-dropzone-react
Version:
🚀 A production-ready React dropzone component with smart defaults, drag & drop reordering, chunked uploads, resume functionality, and comprehensive provider support (Cloudinary, AWS S3, Supabase)
44 lines (42 loc) • 1.24 kB
TypeScript
interface PreviewOptions {
maxWidth?: number;
maxHeight?: number;
quality?: number;
format?: "webp" | "jpeg" | "png";
generateThumbnail?: boolean;
thumbnailSize?: number;
}
interface FilePreview {
id: string;
url: string;
thumbnailUrl?: string;
type: "image" | "video" | "document" | "other";
dimensions?: {
width: number;
height: number;
};
duration?: number;
size: number;
mimeType: string;
metadata?: Record<string, any>;
}
declare class FilePreviewManager {
private static instance;
private previewCache;
private supportedImageTypes;
private supportedVideoTypes;
static getInstance(): FilePreviewManager;
generatePreview(file: File, options?: PreviewOptions): Promise<FilePreview>;
private createPreview;
private createImagePreview;
private createVideoPreview;
private createGenericPreview;
private generateThumbnail;
private calculateDimensions;
private calculateThumbnailDimensions;
private generatePreviewId;
private detectVideoCodec;
clearCache(): void;
getCachedPreview(file: File): FilePreview | undefined;
}
export { type FilePreview, FilePreviewManager, type PreviewOptions };