@tiptap/vue-2 2.0.0-beta.78 → 2.0.0-beta.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import { NodeViewRenderer, NodeViewRendererOptions } from '@tiptap/core';
2
- import { Decoration } from 'prosemirror-view';
3
1
  import { Node as ProseMirrorNode } from 'prosemirror-model';
2
+ import { Decoration } from 'prosemirror-view';
4
3
  import Vue from 'vue';
5
- import { VueConstructor, PropType } from 'vue/types/umd';
4
+ import { PropType, VueConstructor } from 'vue/types/umd';
5
+ import { NodeViewRenderer, NodeViewRendererOptions } from '@tiptap/core';
6
6
  export declare const nodeViewProps: {
7
7
  editor: {
8
8
  type: PropType<import("@tiptap/core").Editor>;
@@ -229,6 +229,7 @@ const nodeViewProps = {
229
229
  };
230
230
  class VueNodeView extends core.NodeView {
231
231
  mount() {
232
+ var _a, _b;
232
233
  const props = {
233
234
  editor: this.editor,
234
235
  node: this.node,
@@ -243,7 +244,9 @@ class VueNodeView extends core.NodeView {
243
244
  this.decorationClasses = Vue__default["default"].observable({
244
245
  value: this.getDecorationClasses(),
245
246
  });
246
- const Component = Vue__default["default"]
247
+ // @ts-ignore
248
+ const vue = (_b = (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.$options._base) !== null && _b !== void 0 ? _b : Vue__default["default"]; // eslint-disable-line
249
+ const Component = vue
247
250
  .extend(this.component)
248
251
  .extend({
249
252
  props: Object.keys(props),
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-2.cjs.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport Vue from 'vue'\nimport { VueConstructor, PropType } from 'vue/types/umd'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n const Component = Vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["BubbleMenuPlugin","CoreEditor","FloatingMenuPlugin","Vue","NodeView"],"mappings":"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"}
1
+ {"version":3,"file":"tiptap-vue-2.cjs.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport Vue from 'vue'\nimport { PropType, VueConstructor } from 'vue/types/umd'\n\nimport {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n // @ts-ignore\n const vue = this.editor.contentComponent?.$options._base ?? Vue // eslint-disable-line\n\n const Component = vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["BubbleMenuPlugin","CoreEditor","FloatingMenuPlugin","Vue","NodeView"],"mappings":"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"}
@@ -222,6 +222,7 @@ const nodeViewProps = {
222
222
  };
223
223
  class VueNodeView extends NodeView {
224
224
  mount() {
225
+ var _a, _b;
225
226
  const props = {
226
227
  editor: this.editor,
227
228
  node: this.node,
@@ -236,7 +237,9 @@ class VueNodeView extends NodeView {
236
237
  this.decorationClasses = Vue.observable({
237
238
  value: this.getDecorationClasses(),
238
239
  });
239
- const Component = Vue
240
+ // @ts-ignore
241
+ const vue = (_b = (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.$options._base) !== null && _b !== void 0 ? _b : Vue; // eslint-disable-line
242
+ const Component = vue
240
243
  .extend(this.component)
241
244
  .extend({
242
245
  props: Object.keys(props),
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-2.esm.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport Vue from 'vue'\nimport { VueConstructor, PropType } from 'vue/types/umd'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n const Component = Vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["CoreEditor"],"mappings":"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"}
1
+ {"version":3,"file":"tiptap-vue-2.esm.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport Vue from 'vue'\nimport { PropType, VueConstructor } from 'vue/types/umd'\n\nimport {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n // @ts-ignore\n const vue = this.editor.contentComponent?.$options._base ?? Vue // eslint-disable-line\n\n const Component = vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["CoreEditor"],"mappings":"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"}
@@ -226,6 +226,7 @@
226
226
  };
227
227
  class VueNodeView extends core.NodeView {
228
228
  mount() {
229
+ var _a, _b;
229
230
  const props = {
230
231
  editor: this.editor,
231
232
  node: this.node,
@@ -240,7 +241,9 @@
240
241
  this.decorationClasses = Vue__default["default"].observable({
241
242
  value: this.getDecorationClasses(),
242
243
  });
243
- const Component = Vue__default["default"]
244
+ // @ts-ignore
245
+ const vue = (_b = (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.$options._base) !== null && _b !== void 0 ? _b : Vue__default["default"]; // eslint-disable-line
246
+ const Component = vue
244
247
  .extend(this.component)
245
248
  .extend({
246
249
  props: Object.keys(props),
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-2.umd.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport Vue from 'vue'\nimport { VueConstructor, PropType } from 'vue/types/umd'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n const Component = Vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["BubbleMenuPlugin","CoreEditor","FloatingMenuPlugin","Vue","NodeView"],"mappings":"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"}
1
+ {"version":3,"file":"tiptap-vue-2.umd.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { Component, PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport interface BubbleMenuInterface extends Vue {\n pluginKey: BubbleMenuPluginProps['pluginKey'],\n editor: BubbleMenuPluginProps['editor'],\n tippyOptions: BubbleMenuPluginProps['tippyOptions'],\n shouldShow: BubbleMenuPluginProps['shouldShow'],\n}\n\nexport const BubbleMenu: Component = {\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<BubbleMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: BubbleMenuInterface, editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: BubbleMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: BubbleMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType, Component } from 'vue'\nimport { Editor } from './Editor'\n\nexport interface EditorContentInterface extends Vue {\n editor: Editor,\n}\n\nexport const EditorContent: Component = {\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: EditorContentInterface, editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.append(...editor.options.element.childNodes)\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy(this: EditorContentInterface) {\n const { editor } = this\n\n if (!editor) {\n return\n }\n\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n },\n}\n","import Vue, { Component, PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport interface FloatingMenuInterface extends Vue {\n pluginKey: FloatingMenuPluginProps['pluginKey'],\n tippyOptions: FloatingMenuPluginProps['tippyOptions'],\n editor: FloatingMenuPluginProps['editor'],\n shouldShow: FloatingMenuPluginProps['shouldShow'],\n}\n\nexport const FloatingMenu: Component = {\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<FloatingMenuPluginProps['shouldShow'], null>>,\n default: null,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(this: FloatingMenuInterface, editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }))\n })\n },\n },\n },\n\n render(this: FloatingMenuInterface, createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy(this: FloatingMenuInterface) {\n this.editor.unregisterPlugin(this.pluginKey)\n },\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport Vue from 'vue'\nimport { PropType, VueConstructor } from 'vue/types/umd'\n\nimport {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n // @ts-ignore\n const vue = this.editor.contentComponent?.$options._base ?? Vue // eslint-disable-line\n\n const Component = vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n as: string,\n decorationClasses: {\n value: string,\n },\n onDragStart: Function,\n}\n\nexport const NodeViewWrapper: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(this: NodeViewWrapperInterface, createElement) {\n return createElement(\n this.as, {\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n}\n","import Vue, { Component } from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n as: string,\n}\n\nexport const NodeViewContent: Component = {\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(this: NodeViewContentInterface, createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n}\n"],"names":["BubbleMenuPlugin","CoreEditor","FloatingMenuPlugin","Vue","NodeView"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiptap/vue-2",
3
3
  "description": "Vue components for tiptap",
4
- "version": "2.0.0-beta.78",
4
+ "version": "2.0.0-beta.79",
5
5
  "homepage": "https://tiptap.dev",
6
6
  "keywords": [
7
7
  "tiptap",
@@ -38,5 +38,5 @@
38
38
  "directory": "packages/vue-2"
39
39
  },
40
40
  "sideEffects": false,
41
- "gitHead": "90e719c711dbccae6a7333956d543fb93789f3d3"
41
+ "gitHead": "1789af864fe36086df487cf8cd3e578b10de1564"
42
42
  }
@@ -1,14 +1,16 @@
1
+ import { Node as ProseMirrorNode } from 'prosemirror-model'
2
+ import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
3
+ import Vue from 'vue'
4
+ import { PropType, VueConstructor } from 'vue/types/umd'
5
+
1
6
  import {
2
7
  NodeView,
3
8
  NodeViewProps,
4
9
  NodeViewRenderer,
5
- NodeViewRendererProps,
6
10
  NodeViewRendererOptions,
11
+ NodeViewRendererProps,
7
12
  } from '@tiptap/core'
8
- import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
9
- import { Node as ProseMirrorNode } from 'prosemirror-model'
10
- import Vue from 'vue'
11
- import { VueConstructor, PropType } from 'vue/types/umd'
13
+
12
14
  import { Editor } from './Editor'
13
15
  import { VueRenderer } from './VueRenderer'
14
16
 
@@ -83,7 +85,10 @@ class VueNodeView extends NodeView<(Vue | VueConstructor), Editor, VueNodeViewRe
83
85
  value: this.getDecorationClasses(),
84
86
  })
85
87
 
86
- const Component = Vue
88
+ // @ts-ignore
89
+ const vue = this.editor.contentComponent?.$options._base ?? Vue // eslint-disable-line
90
+
91
+ const Component = vue
87
92
  .extend(this.component)
88
93
  .extend({
89
94
  props: Object.keys(props),