import React, { useState, useEffect, useRef } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { FileText, Download, Eye, ZoomIn, ZoomOut, RotateCw, Maximize2, ArrowLeft, Settings, Printer, Share2 } from 'lucide-react'; const DocumentViewer = ({ file, onBack }) => { const [viewMode, setViewMode] = useState('preview'); const [zoom, setZoom] = useState(1); const [rotation, setRotation] = useState(0); const [isFullscreen, setIsFullscreen] = useState(false); const [documentUrl, setDocumentUrl] = useState(null); const [isLoading, setIsLoading] = useState(true); const viewerRef = useRef(null); useEffect(() => { if (file) { const url = URL.createObjectURL(file); setDocumentUrl(url); setIsLoading(false); return () => URL.revokeObjectURL(url); } }, [file]); const handleZoomIn = () => setZoom(prev => Math.min(prev + 0.25, 3)); const handleZoomOut = () => setZoom(prev => Math.max(prev - 0.25, 0.5)); const handleRotate = () => setRotation(prev => (prev + 90) % 360); const toggleFullscreen = async () => { try { if (!document.fullscreenElement) { await viewerRef.current?.requestFullscreen(); setIsFullscreen(true); } else { await document.exitFullscreen(); setIsFullscreen(false); } } catch (error) { setIsFullscreen(!isFullscreen); } }; const handleDownload = () => { if (documentUrl) { const a = document.createElement('a'); a.href = documentUrl; a.download = file.name; document.body.appendChild(a); a.click(); document.body.removeChild(a); } }; const renderPDFViewer = () => (
); const renderHTMLViewer = () => (