import { useEffect, useRef, useState } from "react"; import { Document, Page } from "react-pdf"; import "react-pdf/dist/esm/Page/AnnotationLayer.css"; import "react-pdf/dist/esm/Page/TextLayer.css"; import ArrowCircleLeftIcon from "@mui/icons-material/ArrowCircleLeft"; import ArrowCircleRightIcon from "@mui/icons-material/ArrowCircleRight"; import { Box, IconButton } from "@mui/material"; import { socket } from "../socket"; interface PDFViewerProps { pitchBookId: string; currentPage?: number; } export default function PDFViewer({ pitchBookId, currentPage, }: PDFViewerProps) { const [numPages, setNumPages] = useState(null); const [pageNumber, setPageNumber] = useState(currentPage || 1); const [containerWidth, setContainerWidth] = useState(null); const [pdfKey, setPdfKey] = useState(Date.now()); const containerRef = useRef(null); const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => { setNumPages(numPages); }; useEffect(() => { const updateWidth = () => { if (containerRef.current) { setContainerWidth(containerRef.current.offsetWidth); } }; updateWidth(); window.addEventListener("resize", updateWidth); return () => window.removeEventListener("resize", updateWidth); }, []); useEffect(() => { if (currentPage && currentPage !== pageNumber) { setPageNumber(currentPage); } }, [currentPage, pageNumber]); useEffect(() => { const handleProgress = (data: { id: number; progress: number }) => { if (data.id.toString() === pitchBookId && data.progress === 50) { setPdfKey(Date.now()); } }; socket.on("progress", handleProgress); return () => { socket.off("progress", handleProgress); }; }, [pitchBookId]); return ( console.error("Es gab ein Fehler beim Laden des PDFs:", error) } onSourceError={(error) => console.error("Ungültige PDF:", error)} > {containerWidth && ( )} setPageNumber((p) => p - 1)} > {pageNumber} / {numPages} = (numPages || 1)} onClick={() => setPageNumber((p) => p + 1)} > ); }