'use client' import { RichTextEditor, Link } from '@mantine/tiptap'; import { useEditor } from '@tiptap/react'; import Highlight from '@tiptap/extension-highlight'; import StarterKit from '@tiptap/starter-kit'; import Underline from '@tiptap/extension-underline'; import TextAlign from '@tiptap/extension-text-align'; import Superscript from '@tiptap/extension-superscript'; import SubScript from '@tiptap/extension-subscript'; import { useEffect } from 'react'; type EditEditorProps = { value: string; onChange: (content: string) => void; }; export default function EditEditor({ value, onChange }: EditEditorProps) { const editor = useEditor({ extensions: [ StarterKit, Underline, Link, Superscript, SubScript, Highlight, TextAlign.configure({ types: ['heading', 'paragraph'] }), ], content: value, // Hapus `immediatelyRender` dan `onMount` }); // Sinkronisasi konten saat `value` berubah useEffect(() => { if (editor && value !== editor.getHTML()) { editor.commands.setContent(value); } }, [value, editor]); // Sinkronisasi konten ke parent saat diubah useEffect(() => { if (!editor) return; const updateHandler = () => onChange(editor.getHTML()); editor.on('update', updateHandler); return () => { editor.off('update', updateHandler); }; }, [editor, onChange]); return ( {/* Toolbar seperti sebelumnya */} ); }