From 328d5a459d829e7beaca50a390b22510485642d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 5 Mar 2021 09:46:47 +0100 Subject: [PATCH] refactoring --- packages/vue-3/src/NodeViewWrapper.ts | 2 +- packages/vue-3/src/VueNodeViewRenderer.ts | 10 +++++----- packages/vue-3/src/VueRenderer.ts | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/vue-3/src/NodeViewWrapper.ts b/packages/vue-3/src/NodeViewWrapper.ts index 2be7e271..12870176 100644 --- a/packages/vue-3/src/NodeViewWrapper.ts +++ b/packages/vue-3/src/NodeViewWrapper.ts @@ -17,7 +17,7 @@ export const NodeViewWrapper = defineComponent({ whiteSpace: 'normal', }, 'data-node-view-wrapper': '', - // @ts-ignore + // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031) onDragStart: this.onDragStart, }, this.$slots.default?.(), diff --git a/packages/vue-3/src/VueNodeViewRenderer.ts b/packages/vue-3/src/VueNodeViewRenderer.ts index d9a63929..027531a6 100644 --- a/packages/vue-3/src/VueNodeViewRenderer.ts +++ b/packages/vue-3/src/VueNodeViewRenderer.ts @@ -1,8 +1,4 @@ -import { - Node, - NodeViewRenderer, - NodeViewRendererProps, -} from '@tiptap/core' +import { Node, NodeViewRenderer, NodeViewRendererProps } from '@tiptap/core' import { ref, provide, @@ -103,6 +99,10 @@ class VueNodeView implements NodeView { } get dom() { + if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) { + throw Error('Please use the NodeViewWrapper component for your node view.') + } + return this.renderer.element } diff --git a/packages/vue-3/src/VueRenderer.ts b/packages/vue-3/src/VueRenderer.ts index 3d6ead9e..1d6a33f7 100644 --- a/packages/vue-3/src/VueRenderer.ts +++ b/packages/vue-3/src/VueRenderer.ts @@ -31,6 +31,11 @@ export class VueRenderer { if (this.editor.contentComponent) { this.editor.contentComponent.update() + + if (this.teleportElement.children.length !== 1) { + throw Error('VueRenderer doesn’t support multiple child elements.') + } + this.element = this.teleportElement.firstElementChild as Element } }