import React, { useRef, useEffect, useState, useCallback } from "react"; import { Editor } from "@tinymce/tinymce-react"; function FormEditor({ onChange, initialData }) { const editorRef = useRef(null); const [isEditorReady, setIsEditorReady] = useState(false); const [editorContent, setEditorContent] = useState(initialData || ""); // Handle editor initialization const handleInit = useCallback((evt, editor) => { editorRef.current = editor; setIsEditorReady(true); // Set initial content when editor is ready if (editorContent) { editor.setContent(editorContent); } // Handle content changes editor.on('change', () => { const content = editor.getContent(); setEditorContent(content); if (onChange) { onChange(content); } }); }, [editorContent, onChange]); // Watch for initialData changes (from setValue) useEffect(() => { if (initialData !== editorContent) { setEditorContent(initialData || ""); // Update editor content if ready if (editorRef.current && isEditorReady) { editorRef.current.setContent(initialData || ""); } } }, [initialData, editorContent, isEditorReady]); // Handle initial data when editor becomes ready useEffect(() => { if (isEditorReady && editorContent && editorRef.current) { editorRef.current.setContent(editorContent); } }, [isEditorReady, editorContent]); return ( ); } export default FormEditor;