"use client"; import { useCallback, useState } from "react"; import { pdfjs, Document, Page } from "react-pdf"; import "react-pdf/dist/esm/Page/AnnotationLayer.css"; import "react-pdf/dist/esm/Page/TextLayer.css"; import { useResizeObserver } from "@wojtekmaj/react-hooks"; import type { PDFDocumentProxy } from "pdfjs-dist"; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from "./ui/sheet"; pdfjs.GlobalWorkerOptions.workerSrc = new URL( "pdfjs-dist/build/pdf.worker.min.mjs", import.meta.url ).toString(); const options = { cMapUrl: "/cmaps/", standardFontDataUrl: "/standard_fonts/", }; export default function PdfViewer({ file }: { file: File }) { const [numPages, setNumPages] = useState(); const [containerRef, setContainerRef] = useState(null); const [containerWidth, setContainerWidth] = useState(); // Add resize observer const onResize = useCallback((entries) => { const [entry] = entries; if (entry) { setContainerWidth(entry.contentRect.width); } }, []); useResizeObserver(containerRef, {}, onResize); async function onDocumentLoadSuccess(page: PDFDocumentProxy): Promise { setNumPages(page._pdfInfo.numPages); } return ( Preview {file.name}
{Array.from(new Array(numPages), (_el, index) => ( ))}
); }