pdf-preview-pane.js 999 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { memo, Suspense } from 'react'
  2. import classNames from 'classnames'
  3. import PdfLogsViewer from './pdf-logs-viewer'
  4. import PdfViewer from './pdf-viewer'
  5. import LoadingSpinner from '../../../shared/components/loading-spinner'
  6. import PdfHybridPreviewToolbar from './pdf-preview-hybrid-toolbar'
  7. import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context'
  8. function PdfPreviewPane() {
  9. const { pdfUrl } = useCompileContext()
  10. const classes = classNames('pdf', 'full-size', {
  11. 'pdf-empty': !pdfUrl,
  12. })
  13. return (
  14. <div className={classes}>
  15. <PdfHybridPreviewToolbar />
  16. <Suspense fallback={<LoadingPreview />}>
  17. <div className="pdf-viewer">
  18. <PdfViewer />
  19. </div>
  20. </Suspense>
  21. <PdfLogsViewer />
  22. </div>
  23. )
  24. }
  25. function LoadingPreview() {
  26. return (
  27. <div className="pdf-loading-spinner-container">
  28. <LoadingSpinner delay={500} />
  29. </div>
  30. )
  31. }
  32. export default memo(PdfPreviewPane)