pdf-preview-pane.js 1.2 KB

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