pdf-viewer.js 872 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import useScopeValue from '../../../shared/hooks/use-scope-value'
  2. import { lazy, memo, useEffect } from 'react'
  3. import { useCompileContext } from '../../../shared/context/compile-context'
  4. const PdfJsViewer = lazy(() =>
  5. import(/* webpackChunkName: "pdf-js-viewer" */ './pdf-js-viewer')
  6. )
  7. const params = new URLSearchParams(window.location.search)
  8. function PdfViewer() {
  9. const [pdfViewer, setPdfViewer] = useScopeValue('settings.pdfViewer')
  10. useEffect(() => {
  11. const viewer = params.get('viewer')
  12. if (viewer) {
  13. setPdfViewer(viewer)
  14. }
  15. }, [setPdfViewer])
  16. const { pdfUrl } = useCompileContext()
  17. if (!pdfUrl) {
  18. return null
  19. }
  20. switch (pdfViewer) {
  21. case 'native':
  22. return <iframe title="PDF Preview" src={pdfUrl} />
  23. case 'pdfjs':
  24. default:
  25. return <PdfJsViewer url={pdfUrl} />
  26. }
  27. }
  28. export default memo(PdfViewer)