pdf-preview-pane.jsx 1.3 KB

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 { 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 { PdfPreviewMessages } from './pdf-preview-messages'
  9. import CompileTimeWarningUpgradePrompt from './compile-time-warning-upgrade-prompt'
  10. import { PdfPreviewProvider } from './pdf-preview-provider'
  11. function PdfPreviewPane() {
  12. const { pdfUrl, hasShortCompileTimeout } = useCompileContext()
  13. const classes = classNames('pdf', 'full-size', {
  14. 'pdf-empty': !pdfUrl,
  15. })
  16. return (
  17. <div className={classes}>
  18. <PdfPreviewProvider>
  19. <PdfHybridPreviewToolbar />
  20. <PdfPreviewMessages>
  21. {hasShortCompileTimeout && <CompileTimeWarningUpgradePrompt />}
  22. </PdfPreviewMessages>
  23. <Suspense fallback={<FullSizeLoadingSpinner delay={500} />}>
  24. <div className="pdf-viewer">
  25. <PdfViewer />
  26. </div>
  27. </Suspense>
  28. <PdfLogsViewer />
  29. </PdfPreviewProvider>
  30. </div>
  31. )
  32. }
  33. export default memo(PdfPreviewPane)