"use client"; import { useEffect, useState } from "react"; import { useTheme } from "next-themes"; import { BlockNoteEditor, PartialBlock, Block } from "@blocknote/core"; import { BlockNoteView, useBlockNote } from "@blocknote/react"; import Spinner from "../spinner"; import "@blocknote/core/style.css"; interface EditorProps { initialMarkdown?: string; } const Viewer = ({ initialMarkdown }: EditorProps) => { const { resolvedTheme } = useTheme(); const [loading, setLoading] = useState(true); const [initialContent, setInitialContent] = useState(); const editor: BlockNoteEditor = useBlockNote({ editable: false, initialContent: initialContent, }); useEffect(() => { console.log("ERFE", editor); if (editor) { if (!initialContent && initialMarkdown) { console.log("initial md", initialMarkdown); // Whenever the current Markdown content changes, converts it to an array // of Block objects and replaces the editor's content with them. const getBlocks = async () => { const blocks: Block[] = await editor.markdownToBlocks(initialMarkdown); setInitialContent(blocks); console.log("Blocks", blocks); // editor.replaceBlocks(editor.topLevelBlocks, blocks); setLoading(false); }; void getBlocks(); } else if (loading) { setLoading(false); } } }, [editor]); if (loading) { return (
); } return (
); }; export default Viewer;