import { DiffEditor } from '@monaco-editor/react' import { useEffect, useState } from 'react' import { useProject } from '../../context/Project/provider' import type { DiffOnMount } from '@monaco-editor/react/' import TextEditorButtons from './TextEditorButtons' import createDiffEditorInteractions from '../../useCases/createDiffEditorInteractions' import ReactMarkdown from 'react-markdown' let editorInteractions: ReturnType const TextEditor = () => { const { selectedDocumentId, getProcessedAreasByDocumentId } = useProject() const [editorHeight, setEditorHeight] = useState(window.innerHeight - 200) const [editorValue, setEditorValue] = useState('') const [isEditorReady, setIsEditorReady] = useState(false) const [isPreviewOpen, setIsPreviewOpen] = useState(false) const [modifiedEditorValue, setIsModifiedEditorValue] = useState('') const handleEditorDidMount: DiffOnMount = (editor, _) => { editorInteractions = createDiffEditorInteractions(editor) const modifiedEditor = editor.getModifiedEditor() setIsModifiedEditorValue(modifiedEditor.getValue()) modifiedEditor.onDidChangeModelContent(() => { setIsModifiedEditorValue(modifiedEditor.getValue()) }) setIsEditorReady(true) } useEffect(() => { if (!selectedDocumentId) { setEditorValue('# No Document Selected') return } const requestProcessedArea = async () => { let response try { response = await getProcessedAreasByDocumentId(selectedDocumentId) if (!response || response.length === 0) return const fullTextOfAreas = response.map(area => area.fullText + '\n').join('\n') setEditorValue(fullTextOfAreas) } catch (err) { console.error(err) } } requestProcessedArea() }, [selectedDocumentId, getProcessedAreasByDocumentId]) window.addEventListener('resize', () => { setEditorHeight(window.innerHeight - 200) }) return
{ isEditorReady ? setIsPreviewOpen(!isPreviewOpen)} editorInteractions={editorInteractions} /> : '' } {isPreviewOpen ?

, h2: ({node, ...props}) =>

, h3: ({node, ...props}) =>

, h4: ({node, ...props}) =>

, h5: ({node, ...props}) =>

, h6: ({node, ...props}) =>
, ul: ({node, ...props}) =>
    , ol: ({node, ...props}) =>
      , }} > {modifiedEditorValue}
: '' }
} export default TextEditor