diff --git a/packages/tiptap-core/index.ts b/packages/tiptap-core/index.ts
index 67b83709..4579d128 100644
--- a/packages/tiptap-core/index.ts
+++ b/packages/tiptap-core/index.ts
@@ -1,5 +1,7 @@
import { Editor } from './src/Editor'
export default Editor
+export { Editor }
export { default as Extension } from './src/Extension'
-export { default as Node } from './src/Node'
\ No newline at end of file
+export { default as Node } from './src/Node'
+export { default as EditorContent } from './src/components/EditorContent'
\ No newline at end of file
diff --git a/packages/tiptap-core/src/Editor.ts b/packages/tiptap-core/src/Editor.ts
index 161e420c..311521ec 100644
--- a/packages/tiptap-core/src/Editor.ts
+++ b/packages/tiptap-core/src/Editor.ts
@@ -18,7 +18,6 @@ type EditorContent = string | JSON
type Command = (next: Function, editor: Editor, ...args: any) => any
interface Options {
- element?: globalThis.Node
content: EditorContent
extensions: (Extension | Node)[]
injectCSS: Boolean
@@ -26,6 +25,7 @@ interface Options {
export class Editor extends EventEmitter {
+ element = document.createElement('div')
extensionManager!: ExtensionManager
schema!: Schema
view!: EditorView
@@ -77,7 +77,7 @@ export class Editor extends EventEmitter {
}
private createView() {
- this.view = new EditorView(this.options.element, {
+ this.view = new EditorView(this.element, {
state: EditorState.create({
doc: this.createDocument(this.options.content),
plugins: this.plugins,
@@ -172,6 +172,22 @@ export class Editor extends EventEmitter {
return this[name](...args)
}
+ // public setParentComponent(component = null) {
+ // if (!component) {
+ // return
+ // }
+
+ // this.view.setProps({
+ // nodeViews: this.initNodeViews({
+ // parent: component,
+ // extensions: [
+ // ...this.builtInExtensions,
+ // ...this.options.extensions,
+ // ],
+ // }),
+ // })
+ // }
+
public json() {
return this.state.doc.toJSON()
}
diff --git a/packages/tiptap-core/src/components/EditorContent.ts b/packages/tiptap-core/src/components/EditorContent.ts
new file mode 100644
index 00000000..69d49d9c
--- /dev/null
+++ b/packages/tiptap-core/src/components/EditorContent.ts
@@ -0,0 +1,32 @@
+import Vue from 'vue'
+
+export default Vue.extend({
+ props: {
+ editor: {
+ default: null,
+ type: Object,
+ },
+ },
+
+ watch: {
+ editor: {
+ immediate: true,
+ handler(editor) {
+ if (editor && editor.element) {
+ this.$nextTick(() => {
+ this.$el.appendChild(editor.element.firstChild)
+ // editor.setParentComponent(this)
+ })
+ }
+ },
+ },
+ },
+
+ render(createElement) {
+ return createElement('div')
+ },
+
+ beforeDestroy() {
+ this.editor.element = this.$el
+ },
+})
diff --git a/src/demos/Basic/index.vue b/src/demos/Basic/index.vue
index 0e80572c..2c48d666 100644
--- a/src/demos/Basic/index.vue
+++ b/src/demos/Basic/index.vue
@@ -1,12 +1,16 @@
-
+