pdf-preview-pane.jsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 { FullSizeLoadingSpinner } 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. import FasterCompilesFeedback from './faster-compiles-feedback'
  9. import { PdfPreviewMessages } from './pdf-preview-messages'
  10. import CompileTimeWarning from './compile-time-warning'
  11. import CompileTimeoutMessages from './compile-timeout-messages'
  12. import { PdfPreviewProvider } from './pdf-preview-provider'
  13. function PdfPreviewPane() {
  14. const { pdfUrl, showNewCompileTimeoutUI } = useCompileContext()
  15. const classes = classNames('pdf', 'full-size', {
  16. 'pdf-empty': !pdfUrl,
  17. })
  18. return (
  19. <div className={classes}>
  20. <PdfPreviewProvider>
  21. <PdfHybridPreviewToolbar />
  22. <PdfPreviewMessages>
  23. {showNewCompileTimeoutUI ? (
  24. <CompileTimeoutMessages />
  25. ) : (
  26. <CompileTimeWarning />
  27. )}
  28. </PdfPreviewMessages>
  29. <Suspense fallback={<FullSizeLoadingSpinner delay={500} />}>
  30. <div className="pdf-viewer">
  31. <PdfViewer />
  32. <FasterCompilesFeedback />
  33. </div>
  34. </Suspense>
  35. <PdfLogsViewer />
  36. </PdfPreviewProvider>
  37. </div>
  38. )
  39. }
  40. export default memo(PdfPreviewPane)