review-panel-container.tsx 807 B

123456789101112131415161718192021222324252627
  1. import ReactDOM from 'react-dom'
  2. import { useCodeMirrorViewContext } from '../../source-editor/components/codemirror-context'
  3. import { memo } from 'react'
  4. import ReviewPanel from './review-panel'
  5. import ReviewModeSwitcher from './review-mode-switcher'
  6. import useReviewPanelLayout from '../hooks/use-review-panel-layout'
  7. import { useLayoutContext } from '@/shared/context/layout-context'
  8. function ReviewPanelContainer() {
  9. const view = useCodeMirrorViewContext()
  10. const { showPanel, mini } = useReviewPanelLayout()
  11. const { focusMode } = useLayoutContext()
  12. if (!view) {
  13. return null
  14. }
  15. return ReactDOM.createPortal(
  16. <>
  17. {!focusMode && <ReviewModeSwitcher />}
  18. {showPanel && <ReviewPanel mini={mini} />}
  19. </>,
  20. view.scrollDOM
  21. )
  22. }
  23. export default memo(ReviewPanelContainer)