review-panel.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { FC, memo, useMemo } from 'react'
  2. import ReviewPanelTabs from './review-panel-tabs'
  3. import ReviewPanelHeader from './review-panel-header'
  4. import ReviewPanelCurrentFile from './review-panel-current-file'
  5. import { ReviewPanelOverview } from './review-panel-overview'
  6. import classnames from 'classnames'
  7. import { useReviewPanelStyles } from '@/features/review-panel/hooks/use-review-panel-styles'
  8. import { useReviewPanelViewContext } from '../context/review-panel-view-context'
  9. import { useIsNewEditorEnabled } from '@/features/ide-redesign/utils/new-editor-utils'
  10. const ReviewPanel: FC<{ mini?: boolean }> = ({ mini = false }) => {
  11. const choosenSubView = useReviewPanelViewContext()
  12. const newEditor = useIsNewEditorEnabled()
  13. const activeSubView = useMemo(
  14. () => (mini ? 'cur_file' : choosenSubView),
  15. [choosenSubView, mini]
  16. )
  17. const style = useReviewPanelStyles()
  18. const className = classnames('review-panel-container', {
  19. 'review-panel-mini': mini,
  20. 'review-panel-subview-overview': activeSubView === 'overview',
  21. })
  22. return (
  23. <div className={className} style={style} data-testid="review-panel">
  24. <div id="review-panel-inner" className="review-panel-inner">
  25. {!newEditor && !mini && <ReviewPanelHeader />}
  26. {activeSubView === 'cur_file' && <ReviewPanelCurrentFile />}
  27. {activeSubView === 'overview' && <ReviewPanelOverview />}
  28. <div
  29. className="review-panel-footer"
  30. id="review-panel-tabs"
  31. role="tablist"
  32. >
  33. <ReviewPanelTabs />
  34. </div>
  35. </div>
  36. </div>
  37. )
  38. }
  39. export default memo(ReviewPanel)