From 7f8a66f36066bfc41ecfd1316fc1e2e8e08a5c01 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sat, 28 Mar 2026 14:18:40 +0100 Subject: [PATCH] fixed ref preview not updating --- frontend/src/components/react/admin/Editor.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/react/admin/Editor.tsx b/frontend/src/components/react/admin/Editor.tsx index 8c3bb68..7febc22 100644 --- a/frontend/src/components/react/admin/Editor.tsx +++ b/frontend/src/components/react/admin/Editor.tsx @@ -103,6 +103,7 @@ export default function Editor({ editSlug }: Props) { const viewRef = useRef(null); const previewRef = useRef(null); const previewTimerRef = useRef | null>(null); + const updatePreviewRef = useRef<() => void>(() => {}); const [slug, setSlug] = useState(editSlug || ''); const [summary, setSummary] = useState(''); const [originalSlug, setOriginalSlug] = useState(editSlug || ''); @@ -140,6 +141,8 @@ export default function Editor({ editSlug }: Props) { }); }, [showPreview]); + useEffect(() => { updatePreviewRef.current = updatePreview; }, [updatePreview]); + // Initialize CodeMirror once useEffect(() => { if (!editorRef.current || viewRef.current) return; @@ -158,7 +161,7 @@ export default function Editor({ editSlug }: Props) { EditorView.updateListener.of(update => { if (!update.docChanged) return; if (previewTimerRef.current) clearTimeout(previewTimerRef.current); - previewTimerRef.current = setTimeout(updatePreview, 300); + previewTimerRef.current = setTimeout(() => updatePreviewRef.current(), 300); const pos = update.state.selection.main.head; const line = update.state.doc.lineAt(pos); const textBefore = line.text.slice(0, pos - line.from);