editor.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { LoadingPane } from '@/features/ide-react/components/editor/loading-pane'
  2. import { useEditorManagerContext } from '@/features/ide-react/context/editor-manager-context'
  3. import { EditorScopeValue } from '@/features/ide-react/scope-adapters/editor-manager-context-adapter'
  4. import { useFileTreeOpenContext } from '@/features/ide-react/context/file-tree-open-context'
  5. import useScopeValue from '@/shared/hooks/use-scope-value'
  6. import classNames from 'classnames'
  7. import SourceEditor from '@/features/source-editor/components/source-editor'
  8. export const Editor = () => {
  9. const [editor] = useScopeValue<EditorScopeValue>('editor')
  10. const { selectedEntityCount, openEntity } = useFileTreeOpenContext()
  11. const { currentDocumentId } = useEditorManagerContext()
  12. if (!currentDocumentId) {
  13. return null
  14. }
  15. const isLoading = Boolean(
  16. (!editor.sharejs_doc || editor.opening) &&
  17. !editor.error_state &&
  18. editor.open_doc_id
  19. )
  20. return (
  21. <div
  22. className={classNames('ide-redesign-editor-content', {
  23. hidden: openEntity?.type !== 'doc' || selectedEntityCount !== 1,
  24. })}
  25. >
  26. <SourceEditor />
  27. {isLoading && <LoadingPane />}
  28. </div>
  29. )
  30. }