import useResizeObserver from '@react-hook/resize-observer'; import 'react-pdf/dist/Page/TextLayer.css'; import 'react-pdf/dist/Page/AnnotationLayer.css'; import { convertFileSrc } from '@tauri-apps/api/core'; import type { PDFDocumentProxy } from 'pdfjs-dist'; import React, { useRef, useState } from 'react'; import { Document, Page } from 'react-pdf'; import { useDebouncedState } from '../../hooks/useDebouncedState'; import type { HttpResponse } from '../../lib/models'; import './PdfViewer.css'; interface Props { response: HttpResponse; } const options = { cMapUrl: '/cmaps/', standardFontDataUrl: '/standard_fonts/', }; export function PdfViewer({ response }: Props) { const containerRef = useRef(null); const [containerWidth, setContainerWidth] = useDebouncedState(0, 100); const [numPages, setNumPages] = useState(); useResizeObserver(containerRef.current ?? null, (v) => { setContainerWidth(v.contentRect.width); }); const onDocumentLoadSuccess = ({ numPages: nextNumPages }: PDFDocumentProxy): void => { setNumPages(nextNumPages); }; if (response.bodyPath === null) { return
Empty response body
; } const src = convertFileSrc(response.bodyPath); return (
{Array.from(new Array(numPages), (_, index) => ( ))}
); }