Testing blocknote for doc

This commit is contained in:
2025-11-11 21:46:22 +01:00
parent 5dc7a1fcbf
commit 2c935d4a83
5 changed files with 3032 additions and 8 deletions
+2989 -6
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -8,6 +8,9 @@
"start": "next start" "start": "next start"
}, },
"dependencies": { "dependencies": {
"@blocknote/core": "^0.42.0",
"@blocknote/react": "^0.42.0",
"@blocknote/shadcn": "^0.42.0",
"@hello-pangea/dnd": "^18.0.1", "@hello-pangea/dnd": "^18.0.1",
"@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dialog": "^1.1.15",
@@ -29,7 +32,7 @@
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "^4", "@tailwindcss/postcss": "^4",
"@types/node": "^20", "@types/node": "^20.19.24",
"@types/react": "^19", "@types/react": "^19",
"@types/react-dom": "^19", "@types/react-dom": "^19",
"tailwindcss": "^4", "tailwindcss": "^4",
+2
View File
@@ -1,6 +1,8 @@
@import "tailwindcss"; @import "tailwindcss";
@import "tw-animate-css"; @import "tw-animate-css";
@source "../../node_modules/@blocknote/shadcn/src/style.css";
@custom-variant dark (&:is(.dark *)); @custom-variant dark (&:is(.dark *));
@theme inline { @theme inline {
+2 -1
View File
@@ -3,6 +3,7 @@
import { Workspace } from "@/hooks/workspace"; import { Workspace } from "@/hooks/workspace";
import { Task } from "@/lib/types"; import { Task } from "@/lib/types";
import TaskView from "./view/TaskView"; import TaskView from "./view/TaskView";
import DocView from "./view/Doc";
const id = (prefix = "t") => const id = (prefix = "t") =>
`${prefix}_${Math.random().toString(36).slice(2, 9)}`; `${prefix}_${Math.random().toString(36).slice(2, 9)}`;
@@ -33,6 +34,6 @@ export default function Router({ workspace }: { workspace: Workspace }) {
/> />
); );
case "doc": case "doc":
return entity.doc; return <DocView doc={entity.doc} setDoc={entity.setDoc} />;
} }
} }
+35
View File
@@ -0,0 +1,35 @@
import { SetState } from "@/lib/types";
import { useCreateBlockNote } from "@blocknote/react";
import { BlockNoteView } from "@blocknote/shadcn";
import { useEffect } from "react";
export default function DocView({
doc,
setDoc,
}: {
doc: string;
setDoc: SetState<string>;
}) {
const editor = useCreateBlockNote();
useEffect(() => {
if (editor && doc) {
editor.tryParseMarkdownToBlocks(doc);
}
}, [editor]);
return (
<BlockNoteView
defaultValue={doc}
editor={editor}
shadCNComponents={{}}
className="w-full h-svh px-6 mt-4"
onChange={async () => {
if (editor) {
console.log(editor.blocksToMarkdownLossy(editor.document));
setDoc(editor.blocksToMarkdownLossy(editor.document));
}
}}
/>
);
}