39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import {
|
|
BlockNoteSchema,
|
|
createHeadingBlockSpec,
|
|
defaultBlockSpecs,
|
|
defaultInlineContentSpecs,
|
|
defaultStyleSpecs,
|
|
} from "@blocknote/core";
|
|
import { pageReferenceBlock } from "./blocks/PageReferenceBlock";
|
|
import { advancedTodoBlock } from "./blocks/AdvancedTodoBlock";
|
|
import { progressBlock } from "./blocks/ProgressBlock";
|
|
import { mediaBlock } from "./blocks/MediaBlock";
|
|
import { onlineTableBlock } from "./blocks/OnlineTableBlock";
|
|
|
|
const headingSpec =
|
|
typeof window === "undefined"
|
|
? defaultBlockSpecs.heading
|
|
: createHeadingBlockSpec({
|
|
levels: [1, 2, 3, 4, 5],
|
|
allowToggleHeadings: true,
|
|
});
|
|
|
|
export const customBlockSchema = BlockNoteSchema.create({
|
|
blockSpecs: {
|
|
...defaultBlockSpecs,
|
|
heading: headingSpec,
|
|
pageReference: pageReferenceBlock,
|
|
advancedTodo: advancedTodoBlock,
|
|
progressMeter: progressBlock,
|
|
media: mediaBlock,
|
|
onlineTable: onlineTableBlock(),
|
|
},
|
|
inlineContentSpecs: defaultInlineContentSpecs,
|
|
styleSpecs: defaultStyleSpecs,
|
|
});
|
|
|
|
export type CustomBlockSchema = typeof customBlockSchema.blockSchema;
|