diff --git a/packages/tiptap-core/src/Editor.ts b/packages/tiptap-core/src/Editor.ts index cccdaadc..a4938fe5 100644 --- a/packages/tiptap-core/src/Editor.ts +++ b/packages/tiptap-core/src/Editor.ts @@ -57,7 +57,7 @@ export class Editor extends EventEmitter { private createSchema() { this.schema = new Schema({ - // topNode: this.options.topNode, + topNode: this.extensionManager.topNode, nodes: this.extensionManager.nodes, marks: this.extensionManager.marks, }) diff --git a/packages/tiptap-core/src/ExtensionManager.ts b/packages/tiptap-core/src/ExtensionManager.ts index a4752971..41ddc9a2 100644 --- a/packages/tiptap-core/src/ExtensionManager.ts +++ b/packages/tiptap-core/src/ExtensionManager.ts @@ -14,6 +14,14 @@ export default class ExtensionManager { }) } + get topNode() { + const topNode = this.extensions.find(extension => extension.topNode) + + if (topNode) { + return topNode.name + } + } + get nodes(): any { return collect(this.extensions) .where('type', 'node') diff --git a/packages/tiptap-core/src/Node.ts b/packages/tiptap-core/src/Node.ts index f89f4c6d..9e5bbd45 100644 --- a/packages/tiptap-core/src/Node.ts +++ b/packages/tiptap-core/src/Node.ts @@ -8,6 +8,8 @@ export default abstract class Node extends Extension { public type = 'node' + public topNode = false + // get type() { // return 'node' // } diff --git a/packages/tiptap-document-extension/index.ts b/packages/tiptap-document-extension/index.ts index 2127e6c6..cfa056d0 100644 --- a/packages/tiptap-document-extension/index.ts +++ b/packages/tiptap-document-extension/index.ts @@ -2,7 +2,9 @@ import { Node } from '@tiptap/core' export default class Document extends Node { - name = 'doc' + name = 'document' + + topNode = true schema = { content: 'block+',