@tiptap/vue-3 2.5.4 → 2.5.6

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts"],"sourcesContent":["import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object] as PropType<BubbleMenuPluginProps['pluginKey']>,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n updateDelay: {\n type: Number as PropType<BubbleMenuPluginProps['updateDelay']>,\n default: undefined,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<BubbleMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n updateDelay,\n editor,\n pluginKey,\n shouldShow,\n tippyOptions,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value as HTMLElement,\n pluginKey,\n shouldShow,\n tippyOptions,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer.js'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(\n plugin: Plugin,\n handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[],\n ): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\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 return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\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<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n })\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render() {\n return h(\n this.as,\n {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n },\n this.$slots.default?.(),\n )\n },\n})\n","import { EditorOptions } from '@tiptap/core'\nimport { onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor.js'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\nimport { VueRenderer } from './VueRenderer.js'\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:\n | ((props: {\n oldNode: ProseMirrorNode\n oldDecorations: Decoration[]\n newNode: ProseMirrorNode\n newDecorations: Decoration[]\n updateProps: () => void\n }) => boolean)\n | null\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\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 = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n 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 as HTMLElement\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) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: DecorationWithType[]) {\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 this.renderer.element.classList.add('ProseMirror-selectednode')\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n this.renderer.element.classList.remove('ProseMirror-selectednode')\n }\n\n getDecorationClasses() {\n return (\n this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n )\n }\n\n destroy() {\n this.renderer.destroy()\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component,\n options?: Partial<VueNodeViewRendererOptions>,\n): 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 unknown as ProseMirrorNodeView\n }\n}\n"],"names":["CoreEditor"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts"],"sourcesContent":["import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object] as PropType<BubbleMenuPluginProps['pluginKey']>,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n updateDelay: {\n type: Number as PropType<BubbleMenuPluginProps['updateDelay']>,\n default: undefined,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<BubbleMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n updateDelay,\n editor,\n pluginKey,\n shouldShow,\n tippyOptions,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value as HTMLElement,\n pluginKey,\n shouldShow,\n tippyOptions,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'\nimport {\n AppContext,\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n Ref,\n} from 'vue'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public contentComponent: ContentComponent | null = null\n\n public appContext: AppContext | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('beforeTransaction', ({ nextState }) => {\n this.reactiveState.value = nextState\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(\n plugin: Plugin,\n handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[],\n ): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n if (instance) {\n editor.appContext = {\n ...instance.appContext,\n provides: {\n // @ts-ignore\n ...instance.provides,\n ...instance.appContext.provides,\n },\n }\n }\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n editor.appContext = 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 return { rootEl }\n },\n\n render() {\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\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<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n })\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render() {\n return h(\n this.as,\n {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n },\n this.$slots.default?.(),\n )\n },\n})\n","import { EditorOptions } from '@tiptap/core'\nimport { onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport {\n Component, DefineComponent, h, markRaw, reactive, render,\n} from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor.js'\n\nexport interface VueRendererOptions {\n editor: Editor;\n props?: Record<string, any>;\n}\n\ntype ExtendedVNode = ReturnType<typeof h> | null;\n\ninterface RenderedComponent {\n vNode: ExtendedVNode;\n destroy: () => void;\n el: Element | null;\n}\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nexport class VueRenderer {\n renderedComponent!: RenderedComponent\n\n editor: ExtendedEditor\n\n component: Component\n\n el: Element | null\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.el = document.createElement('div')\n this.props = reactive(props)\n this.renderedComponent = this.renderComponent()\n }\n\n get element(): Element | null {\n return this.renderedComponent.el\n }\n\n get ref(): any {\n // Composition API\n if (this.renderedComponent.vNode?.component?.exposed) {\n return this.renderedComponent.vNode.component.exposed\n }\n // Option API\n return this.renderedComponent.vNode?.component?.proxy\n }\n\n renderComponent() {\n let vNode: ExtendedVNode = h(this.component as DefineComponent, this.props)\n\n if (this.editor.appContext) {\n vNode.appContext = this.editor.appContext\n }\n if (typeof document !== 'undefined' && this.el) {\n render(vNode, this.el)\n }\n\n const destroy = () => {\n if (this.el) {\n render(null, this.el)\n }\n this.el = null\n vNode = null\n }\n\n return { vNode, destroy, el: this.el ? this.el.firstElementChild : null }\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object.entries(props).forEach(([key, value]) => {\n this.props[key] = value\n })\n this.renderComponent()\n }\n\n destroy(): void {\n this.renderedComponent.destroy()\n }\n}\n","import {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\nimport { VueRenderer } from './VueRenderer.js'\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:\n | ((props: {\n oldNode: ProseMirrorNode\n oldDecorations: Decoration[]\n newNode: ProseMirrorNode\n newDecorations: Decoration[]\n updateProps: () => void\n }) => boolean)\n | null\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\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 = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element || !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 as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n return this.dom.querySelector('[data-node-view-content]') as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: DecorationWithType[]) {\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 if (this.renderer.element) {\n this.renderer.element.classList.add('ProseMirror-selectednode')\n }\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n if (this.renderer.element) {\n this.renderer.element.classList.remove('ProseMirror-selectednode')\n }\n }\n\n getDecorationClasses() {\n return (\n this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n )\n }\n\n destroy() {\n this.renderer.destroy()\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component,\n options?: Partial<VueNodeViewRendererOptions>,\n): 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 unknown as ProseMirrorNodeView\n }\n}\n"],"names":["CoreEditor"],"mappings":"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"}
package/dist/index.umd.js CHANGED
@@ -72,12 +72,12 @@
72
72
  class Editor extends core.Editor {
73
73
  constructor(options = {}) {
74
74
  super(options);
75
- this.vueRenderers = vue.reactive(new Map());
76
75
  this.contentComponent = null;
76
+ this.appContext = null;
77
77
  this.reactiveState = useDebouncedRef(this.view.state);
78
78
  this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);
79
- this.on('transaction', () => {
80
- this.reactiveState.value = this.view.state;
79
+ this.on('beforeTransaction', ({ nextState }) => {
80
+ this.reactiveState.value = nextState;
81
81
  this.reactiveExtensionStorage.value = this.extensionStorage;
82
82
  });
83
83
  return vue.markRaw(this); // eslint-disable-line
@@ -126,6 +126,16 @@
126
126
  rootEl.value.append(...editor.options.element.childNodes);
127
127
  // @ts-ignore
128
128
  editor.contentComponent = instance.ctx._;
129
+ if (instance) {
130
+ editor.appContext = {
131
+ ...instance.appContext,
132
+ provides: {
133
+ // @ts-ignore
134
+ ...instance.provides,
135
+ ...instance.appContext.provides,
136
+ },
137
+ };
138
+ }
129
139
  editor.setOptions({
130
140
  element,
131
141
  });
@@ -145,6 +155,7 @@
145
155
  });
146
156
  }
147
157
  editor.contentComponent = null;
158
+ editor.appContext = null;
148
159
  if (!editor.options.element.firstChild) {
149
160
  return;
150
161
  }
@@ -157,22 +168,9 @@
157
168
  return { rootEl };
158
169
  },
159
170
  render() {
160
- const vueRenderers = [];
161
- if (this.editor) {
162
- this.editor.vueRenderers.forEach(vueRenderer => {
163
- const node = vue.h(vue.Teleport, {
164
- to: vueRenderer.teleportElement,
165
- key: vueRenderer.id,
166
- }, vue.h(vueRenderer.component, {
167
- ref: vueRenderer.id,
168
- ...vueRenderer.props,
169
- }));
170
- vueRenderers.push(node);
171
- });
172
- }
173
171
  return vue.h('div', {
174
172
  ref: (el) => { this.rootEl = el; },
175
- }, ...vueRenderers);
173
+ });
176
174
  },
177
175
  });
178
176
 
@@ -277,34 +275,49 @@
277
275
  */
278
276
  class VueRenderer {
279
277
  constructor(component, { props = {}, editor }) {
280
- this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString();
281
278
  this.editor = editor;
282
279
  this.component = vue.markRaw(component);
283
- this.teleportElement = document.createElement('div');
284
- this.element = this.teleportElement;
280
+ this.el = document.createElement('div');
285
281
  this.props = vue.reactive(props);
286
- this.editor.vueRenderers.set(this.id, this);
287
- if (this.editor.contentComponent) {
288
- this.editor.contentComponent.update();
289
- if (this.teleportElement.children.length !== 1) {
290
- throw Error('VueRenderer doesn’t support multiple child elements.');
291
- }
292
- this.element = this.teleportElement.firstElementChild;
293
- }
282
+ this.renderedComponent = this.renderComponent();
283
+ }
284
+ get element() {
285
+ return this.renderedComponent.el;
294
286
  }
295
287
  get ref() {
296
- var _a;
297
- return (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.refs[this.id];
288
+ var _a, _b, _c, _d;
289
+ // Composition API
290
+ if ((_b = (_a = this.renderedComponent.vNode) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.exposed) {
291
+ return this.renderedComponent.vNode.component.exposed;
292
+ }
293
+ // Option API
294
+ return (_d = (_c = this.renderedComponent.vNode) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.proxy;
295
+ }
296
+ renderComponent() {
297
+ let vNode = vue.h(this.component, this.props);
298
+ if (this.editor.appContext) {
299
+ vNode.appContext = this.editor.appContext;
300
+ }
301
+ if (typeof document !== 'undefined' && this.el) {
302
+ vue.render(vNode, this.el);
303
+ }
304
+ const destroy = () => {
305
+ if (this.el) {
306
+ vue.render(null, this.el);
307
+ }
308
+ this.el = null;
309
+ vNode = null;
310
+ };
311
+ return { vNode, destroy, el: this.el ? this.el.firstElementChild : null };
298
312
  }
299
313
  updateProps(props = {}) {
300
- Object
301
- .entries(props)
302
- .forEach(([key, value]) => {
314
+ Object.entries(props).forEach(([key, value]) => {
303
315
  this.props[key] = value;
304
316
  });
317
+ this.renderComponent();
305
318
  }
306
319
  destroy() {
307
- this.editor.vueRenderers.delete(this.id);
320
+ this.renderedComponent.destroy();
308
321
  }
309
322
  }
310
323
 
@@ -390,7 +403,7 @@
390
403
  });
391
404
  }
392
405
  get dom() {
393
- if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {
406
+ if (!this.renderer.element || !this.renderer.element.hasAttribute('data-node-view-wrapper')) {
394
407
  throw Error('Please use the NodeViewWrapper component for your node view.');
395
408
  }
396
409
  return this.renderer.element;
@@ -399,8 +412,7 @@
399
412
  if (this.node.isLeaf) {
400
413
  return null;
401
414
  }
402
- const contentElement = this.dom.querySelector('[data-node-view-content]');
403
- return (contentElement || this.dom);
415
+ return this.dom.querySelector('[data-node-view-content]');
404
416
  }
405
417
  update(node, decorations) {
406
418
  const updateProps = (props) => {
@@ -435,13 +447,17 @@
435
447
  this.renderer.updateProps({
436
448
  selected: true,
437
449
  });
438
- this.renderer.element.classList.add('ProseMirror-selectednode');
450
+ if (this.renderer.element) {
451
+ this.renderer.element.classList.add('ProseMirror-selectednode');
452
+ }
439
453
  }
440
454
  deselectNode() {
441
455
  this.renderer.updateProps({
442
456
  selected: false,
443
457
  });
444
- this.renderer.element.classList.remove('ProseMirror-selectednode');
458
+ if (this.renderer.element) {
459
+ this.renderer.element.classList.remove('ProseMirror-selectednode');
460
+ }
445
461
  }
446
462
  getDecorationClasses() {
447
463
  return (this.decorations
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts"],"sourcesContent":["import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object] as PropType<BubbleMenuPluginProps['pluginKey']>,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n updateDelay: {\n type: Number as PropType<BubbleMenuPluginProps['updateDelay']>,\n default: undefined,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<BubbleMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n updateDelay,\n editor,\n pluginKey,\n shouldShow,\n tippyOptions,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value as HTMLElement,\n pluginKey,\n shouldShow,\n tippyOptions,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer.js'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(\n plugin: Plugin,\n handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[],\n ): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\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 return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\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<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n })\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render() {\n return h(\n this.as,\n {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n },\n this.$slots.default?.(),\n )\n },\n})\n","import { EditorOptions } from '@tiptap/core'\nimport { onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor.js'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\nimport { VueRenderer } from './VueRenderer.js'\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:\n | ((props: {\n oldNode: ProseMirrorNode\n oldDecorations: Decoration[]\n newNode: ProseMirrorNode\n newDecorations: Decoration[]\n updateProps: () => void\n }) => boolean)\n | null\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\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 = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n 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 as HTMLElement\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) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: DecorationWithType[]) {\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 this.renderer.element.classList.add('ProseMirror-selectednode')\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n this.renderer.element.classList.remove('ProseMirror-selectednode')\n }\n\n getDecorationClasses() {\n return (\n this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n )\n }\n\n destroy() {\n this.renderer.destroy()\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component,\n options?: Partial<VueNodeViewRendererOptions>,\n): 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 unknown as ProseMirrorNodeView\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts"],"sourcesContent":["import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object] as PropType<BubbleMenuPluginProps['pluginKey']>,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n updateDelay: {\n type: Number as PropType<BubbleMenuPluginProps['updateDelay']>,\n default: undefined,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<BubbleMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n updateDelay,\n editor,\n pluginKey,\n shouldShow,\n tippyOptions,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value as HTMLElement,\n pluginKey,\n shouldShow,\n tippyOptions,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'\nimport {\n AppContext,\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n Ref,\n} from 'vue'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public contentComponent: ContentComponent | null = null\n\n public appContext: AppContext | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('beforeTransaction', ({ nextState }) => {\n this.reactiveState.value = nextState\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(\n plugin: Plugin,\n handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[],\n ): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n if (instance) {\n editor.appContext = {\n ...instance.appContext,\n provides: {\n // @ts-ignore\n ...instance.provides,\n ...instance.appContext.provides,\n },\n }\n }\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n editor.appContext = 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 return { rootEl }\n },\n\n render() {\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\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<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n })\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render() {\n return h(\n this.as,\n {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n },\n this.$slots.default?.(),\n )\n },\n})\n","import { EditorOptions } from '@tiptap/core'\nimport { onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\nimport { Editor } from './Editor.js'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport {\n Component, DefineComponent, h, markRaw, reactive, render,\n} from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor.js'\n\nexport interface VueRendererOptions {\n editor: Editor;\n props?: Record<string, any>;\n}\n\ntype ExtendedVNode = ReturnType<typeof h> | null;\n\ninterface RenderedComponent {\n vNode: ExtendedVNode;\n destroy: () => void;\n el: Element | null;\n}\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nexport class VueRenderer {\n renderedComponent!: RenderedComponent\n\n editor: ExtendedEditor\n\n component: Component\n\n el: Element | null\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.el = document.createElement('div')\n this.props = reactive(props)\n this.renderedComponent = this.renderComponent()\n }\n\n get element(): Element | null {\n return this.renderedComponent.el\n }\n\n get ref(): any {\n // Composition API\n if (this.renderedComponent.vNode?.component?.exposed) {\n return this.renderedComponent.vNode.component.exposed\n }\n // Option API\n return this.renderedComponent.vNode?.component?.proxy\n }\n\n renderComponent() {\n let vNode: ExtendedVNode = h(this.component as DefineComponent, this.props)\n\n if (this.editor.appContext) {\n vNode.appContext = this.editor.appContext\n }\n if (typeof document !== 'undefined' && this.el) {\n render(vNode, this.el)\n }\n\n const destroy = () => {\n if (this.el) {\n render(null, this.el)\n }\n this.el = null\n vNode = null\n }\n\n return { vNode, destroy, el: this.el ? this.el.firstElementChild : null }\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object.entries(props).forEach(([key, value]) => {\n this.props[key] = value\n })\n this.renderComponent()\n }\n\n destroy(): void {\n this.renderedComponent.destroy()\n }\n}\n","import {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor.js'\nimport { VueRenderer } from './VueRenderer.js'\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:\n | ((props: {\n oldNode: ProseMirrorNode\n oldDecorations: Decoration[]\n newNode: ProseMirrorNode\n newDecorations: Decoration[]\n updateProps: () => void\n }) => boolean)\n | null\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\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 = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element || !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 as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n return this.dom.querySelector('[data-node-view-content]') as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: DecorationWithType[]) {\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 if (this.renderer.element) {\n this.renderer.element.classList.add('ProseMirror-selectednode')\n }\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n if (this.renderer.element) {\n this.renderer.element.classList.remove('ProseMirror-selectednode')\n }\n }\n\n getDecorationClasses() {\n return (\n this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n )\n }\n\n destroy() {\n this.renderer.destroy()\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component,\n options?: Partial<VueNodeViewRendererOptions>,\n): 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 unknown as ProseMirrorNodeView\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","markRaw","getCurrentInstance","watchEffect","nextTick","unref","FloatingMenuPlugin","shallowRef","reactive","render","NodeView","provide"],"mappings":";;;;;;AAUO,QAAM,UAAU,GAAGA,mBAAe,CAAC;EACxC,IAAA,IAAI,EAAE,YAAY;EAElB,IAAA,KAAK,EAAE;EACL,QAAA,SAAS,EAAE;EACT,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAiD;EACtE,YAAA,OAAO,EAAE,YAAY;EACtB,SAAA;EAED,QAAA,MAAM,EAAE;EACN,YAAA,IAAI,EAAE,MAAmD;EACzD,YAAA,QAAQ,EAAE,IAAI;EACf,SAAA;EAED,QAAA,WAAW,EAAE;EACX,YAAA,IAAI,EAAE,MAAwD;EAC9D,YAAA,OAAO,EAAE,SAAS;EACnB,SAAA;EAED,QAAA,YAAY,EAAE;EACZ,YAAA,IAAI,EAAE,MAAyD;EAC/D,YAAA,OAAO,EAAE,OAAO,EAAE,CAAC;EACpB,SAAA;EAED,QAAA,UAAU,EAAE;EACV,YAAA,IAAI,EAAE,QAAkF;EACxF,YAAA,OAAO,EAAE,IAAI;EACd,SAAA;EACF,KAAA;EAED,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;EACpB,QAAA,MAAM,IAAI,GAAGC,OAAG,CAAqB,IAAI,CAAC,CAAA;UAE1CC,aAAS,CAAC,MAAK;EACb,YAAA,MAAM,EACJ,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,EACV,YAAY,GACb,GAAG,KAAK,CAAA;EAET,YAAA,MAAM,CAAC,cAAc,CAACC,oCAAgB,CAAC;kBACrC,WAAW;kBACX,MAAM;kBACN,OAAO,EAAE,IAAI,CAAC,KAAoB;kBAClC,SAAS;kBACT,UAAU;kBACV,YAAY;EACb,aAAA,CAAC,CAAC,CAAA;EACL,SAAC,CAAC,CAAA;UAEFC,mBAAe,CAAC,MAAK;EACnB,YAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;EAEnC,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;EACpC,SAAC,CAAC,CAAA;UAEF,OAAO,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,OAAAC,KAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAA,KAAK,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAC,CAAA,EAAA,CAAA;OACxD;EACF,CAAA;;EC3DD,SAAS,eAAe,CAAI,KAAQ,EAAA;EAClC,IAAA,OAAOC,aAAS,CAAI,CAAC,KAAK,EAAE,OAAO,KAAI;UACrC,OAAO;cACL,GAAG,GAAA;EACD,gBAAA,KAAK,EAAE,CAAA;EACP,gBAAA,OAAO,KAAK,CAAA;eACb;EACD,YAAA,GAAG,CAAC,QAAQ,EAAA;;kBAEV,KAAK,GAAG,QAAQ,CAAA;;kBAGhB,qBAAqB,CAAC,MAAK;sBACzB,qBAAqB,CAAC,MAAK;EACzB,wBAAA,OAAO,EAAE,CAAA;EACX,qBAAC,CAAC,CAAA;EACJ,iBAAC,CAAC,CAAA;eACH;WACF,CAAA;EACH,KAAC,CAAC,CAAA;EACJ,CAAC;EAMK,MAAO,MAAO,SAAQC,WAAU,CAAA;EASpC,IAAA,WAAA,CAAY,UAAkC,EAAE,EAAA;UAC9C,KAAK,CAAC,OAAO,CAAC,CAAA;UALT,IAAgB,CAAA,gBAAA,GAA4B,IAAI,CAAA;UAEhD,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAA;UAKzC,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;UACrD,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;UAEtE,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAI;EAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAA;cACpC,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAA;EAC7D,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOC,WAAO,CAAC,IAAI,CAAC,CAAA;OACrB;EAED,IAAA,IAAI,KAAK,GAAA;EACP,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;OACvE;EAED,IAAA,IAAI,OAAO,GAAA;EACT,QAAA,OAAO,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAA;OAC3F;EAED;;EAEG;MACI,cAAc,CACnB,MAAc,EACd,aAAkE,EAAA;EAElE,QAAA,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;UAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;OAC3C;EAED;;EAEG;EACI,IAAA,gBAAgB,CAAC,eAAmC,EAAA;EACzD,QAAA,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;UACvC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;OAC3C;EACF;;ACvEM,QAAM,aAAa,GAAGR,mBAAe,CAAC;EAC3C,IAAA,IAAI,EAAE,eAAe;EAErB,IAAA,KAAK,EAAE;EACL,QAAA,MAAM,EAAE;EACN,YAAA,OAAO,EAAE,IAAI;EACb,YAAA,IAAI,EAAE,MAA0B;EACjC,SAAA;EACF,KAAA;EAED,IAAA,KAAK,CAAC,KAAK,EAAA;EACT,QAAA,MAAM,MAAM,GAA6BC,OAAG,EAAE,CAAA;EAC9C,QAAA,MAAM,QAAQ,GAAGQ,sBAAkB,EAAE,CAAA;UAErCC,eAAW,CAAC,MAAK;EACf,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;EAE3B,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE;kBACpDC,YAAQ,CAAC,MAAK;EACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;0BACvD,OAAM;uBACP;sBAED,MAAM,OAAO,GAAGC,SAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;EAEnC,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;;sBAGzD,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;sBAExC,IAAI,QAAQ,EAAE;0BACZ,MAAM,CAAC,UAAU,GAAG;8BAClB,GAAG,QAAQ,CAAC,UAAU;EACtB,4BAAA,QAAQ,EAAE;;kCAER,GAAG,QAAQ,CAAC,QAAQ;EACpB,gCAAA,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ;EAChC,6BAAA;2BACF,CAAA;uBACF;sBAED,MAAM,CAAC,UAAU,CAAC;0BAChB,OAAO;EACR,qBAAA,CAAC,CAAA;sBAEF,MAAM,CAAC,eAAe,EAAE,CAAA;EAC1B,iBAAC,CAAC,CAAA;eACH;EACH,SAAC,CAAC,CAAA;UAEFR,mBAAe,CAAC,MAAK;EACnB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;cAE3B,IAAI,CAAC,MAAM,EAAE;kBACX,OAAM;eACP;;EAGD,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;EACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;EACnB,oBAAA,SAAS,EAAE,EAAE;EACd,iBAAA,CAAC,CAAA;eACH;EAED,YAAA,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAA;EAC9B,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;cAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;kBACtC,OAAM;eACP;cAED,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;EAEhD,YAAA,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;cAEvD,MAAM,CAAC,UAAU,CAAC;EAChB,gBAAA,OAAO,EAAE,UAAU;EACpB,aAAA,CAAC,CAAA;EACJ,SAAC,CAAC,CAAA;UAEF,OAAO,EAAE,MAAM,EAAE,CAAA;OAClB;MAED,MAAM,GAAA;UACJ,OAAOC,KAAC,CACN,KAAK,EACL;EACE,YAAA,GAAG,EAAE,CAAC,EAAO,KAAI,EAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA,EAAE;EACvC,SAAA,CACF,CAAA;OACF;EACF,CAAA;;AChGM,QAAM,YAAY,GAAGL,mBAAe,CAAC;EAC1C,IAAA,IAAI,EAAE,cAAc;EAEpB,IAAA,KAAK,EAAE;EACL,QAAA,SAAS,EAAE;;;EAGT,YAAA,IAAI,EAAE,IAAI;EACV,YAAA,OAAO,EAAE,cAAc;EACxB,SAAA;EAED,QAAA,MAAM,EAAE;EACN,YAAA,IAAI,EAAE,MAAqD;EAC3D,YAAA,QAAQ,EAAE,IAAI;EACf,SAAA;EAED,QAAA,YAAY,EAAE;EACZ,YAAA,IAAI,EAAE,MAA2D;EACjE,YAAA,OAAO,EAAE,OAAO,EAAE,CAAC;EACpB,SAAA;EAED,QAAA,UAAU,EAAE;EACV,YAAA,IAAI,EAAE,QAAoF;EAC1F,YAAA,OAAO,EAAE,IAAI;EACd,SAAA;EACF,KAAA;EAED,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;EACpB,QAAA,MAAM,IAAI,GAAGC,OAAG,CAAqB,IAAI,CAAC,CAAA;UAE1CC,aAAS,CAAC,MAAK;cACb,MAAM,EACJ,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,GAAG,KAAK,CAAA;EAET,YAAA,MAAM,CAAC,cAAc,CAACW,wCAAkB,CAAC;kBACvC,SAAS;kBACT,MAAM;kBACN,OAAO,EAAE,IAAI,CAAC,KAAoB;kBAClC,YAAY;kBACZ,UAAU;EACX,aAAA,CAAC,CAAC,CAAA;EACL,SAAC,CAAC,CAAA;UAEFT,mBAAe,CAAC,MAAK;EACnB,YAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;EAEnC,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;EACpC,SAAC,CAAC,CAAA;UAEF,OAAO,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,OAAAC,KAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAA,KAAK,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAC,CAAA,EAAA,CAAA;OACxD;EACF,CAAA;;AC/DM,QAAM,eAAe,GAAGL,mBAAe,CAAC;EAC7C,IAAA,IAAI,EAAE,iBAAiB;EAEvB,IAAA,KAAK,EAAE;EACL,QAAA,EAAE,EAAE;EACF,YAAA,IAAI,EAAE,MAAM;EACZ,YAAA,OAAO,EAAE,KAAK;EACf,SAAA;EACF,KAAA;MAED,MAAM,GAAA;EACJ,QAAA,OAAOK,KAAC,CAAC,IAAI,CAAC,EAAE,EAAE;EAChB,YAAA,KAAK,EAAE;EACL,gBAAA,UAAU,EAAE,UAAU;EACvB,aAAA;EACD,YAAA,wBAAwB,EAAE,EAAE;EAC7B,SAAA,CAAC,CAAA;OACH;EACF,CAAA;;AClBM,QAAM,eAAe,GAAGL,mBAAe,CAAC;EAC7C,IAAA,IAAI,EAAE,iBAAiB;EAEvB,IAAA,KAAK,EAAE;EACL,QAAA,EAAE,EAAE;EACF,YAAA,IAAI,EAAE,MAAM;EACZ,YAAA,OAAO,EAAE,KAAK;EACf,SAAA;EACF,KAAA;EAED,IAAA,MAAM,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;MAE5C,MAAM,GAAA;;EACJ,QAAA,OAAOK,KAAC,CACN,IAAI,CAAC,EAAE,EACP;;cAEE,KAAK,EAAE,IAAI,CAAC,iBAAiB;EAC7B,YAAA,KAAK,EAAE;EACL,gBAAA,UAAU,EAAE,QAAQ;EACrB,aAAA;EACD,YAAA,wBAAwB,EAAE,EAAE;;cAE5B,WAAW,EAAE,IAAI,CAAC,WAAW;WAC9B,EACD,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,EAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CACxB,CAAA;OACF;EACF,CAAA;;QCzBY,SAAS,GAAG,CAAC,OAAkC,GAAA,EAAE,KAAI;EAChE,IAAA,MAAM,MAAM,GAAGS,cAAU,EAAU,CAAA;MAEnCZ,aAAS,CAAC,MAAK;UACb,MAAM,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;EACpC,KAAC,CAAC,CAAA;MAEFE,mBAAe,CAAC,MAAK;;EACnB,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;EACzB,KAAC,CAAC,CAAA;EAEF,IAAA,OAAO,MAAM,CAAA;EACf;;ECGA;;EAEG;QACU,WAAW,CAAA;MAWtB,WAAY,CAAA,SAAoB,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAsB,EAAA;EAC1E,QAAA,IAAI,CAAC,MAAM,GAAG,MAAwB,CAAA;EACtC,QAAA,IAAI,CAAC,SAAS,GAAGI,WAAO,CAAC,SAAS,CAAC,CAAA;UACnC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;EACvC,QAAA,IAAI,CAAC,KAAK,GAAGO,YAAQ,CAAC,KAAK,CAAC,CAAA;EAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;OAChD;EAED,IAAA,IAAI,OAAO,GAAA;EACT,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAA;OACjC;EAED,IAAA,IAAI,GAAG,GAAA;;;EAEL,QAAA,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;cACpD,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAA;WACtD;;UAED,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA;OACtD;MAED,eAAe,GAAA;EACb,QAAA,IAAI,KAAK,GAAkBV,KAAC,CAAC,IAAI,CAAC,SAA4B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;EAE3E,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;cAC1B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;WAC1C;UACD,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE;EAC9C,YAAAW,UAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;WACvB;UAED,MAAM,OAAO,GAAG,MAAK;EACnB,YAAA,IAAI,IAAI,CAAC,EAAE,EAAE;EACX,gBAAAA,UAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;eACtB;EACD,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;cACd,KAAK,GAAG,IAAI,CAAA;EACd,SAAC,CAAA;UAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB,GAAG,IAAI,EAAE,CAAA;OAC1E;MAED,WAAW,CAAC,QAA6B,EAAE,EAAA;EACzC,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;EAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;EACzB,SAAC,CAAC,CAAA;UACF,IAAI,CAAC,eAAe,EAAE,CAAA;OACvB;MAED,OAAO,GAAA;EACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAA;OACjC;EACF;;AChEY,QAAA,aAAa,GAAG;EAC3B,IAAA,MAAM,EAAE;EACN,QAAA,IAAI,EAAE,MAA2C;EACjD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,IAAI,EAAE;EACJ,QAAA,IAAI,EAAE,MAAyC;EAC/C,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,WAAW,EAAE;EACX,QAAA,IAAI,EAAE,MAAgD;EACtD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,QAAQ,EAAE;EACR,QAAA,IAAI,EAAE,OAA8C;EACpD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,SAAS,EAAE;EACT,QAAA,IAAI,EAAE,MAA8C;EACpD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,MAAM,EAAE;EACN,QAAA,IAAI,EAAE,QAA6C;EACnD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,gBAAgB,EAAE;EAChB,QAAA,IAAI,EAAE,QAAuD;EAC7D,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;EACD,IAAA,UAAU,EAAE;EACV,QAAA,IAAI,EAAE,QAAiD;EACvD,QAAA,QAAQ,EAAE,IAAa;EACxB,KAAA;IACF;EAcD,MAAM,WAAY,SAAQC,aAAuD,CAAA;MAK/E,KAAK,GAAA;EACH,QAAA,MAAM,KAAK,GAAkB;cAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;cACnB,IAAI,EAAE,IAAI,CAAC,IAAI;cACf,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,YAAA,QAAQ,EAAE,KAAK;cACf,SAAS,EAAE,IAAI,CAAC,SAAS;EACzB,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;EAC3B,YAAA,gBAAgB,EAAE,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;EACxE,YAAA,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;WACpC,CAAA;UAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;UAE/C,IAAI,CAAC,iBAAiB,GAAGhB,OAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;UAEzD,MAAM,iBAAiB,GAAGD,mBAAe,CAAC;EACxC,YAAA,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;EAC9B,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;EACzB,YAAA,QAAQ,EAAG,IAAI,CAAC,SAAiB,CAAC,QAAQ;cAC1C,KAAK,EAAE,aAAa,IAAG;;EACrB,gBAAAkB,WAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;EACnC,gBAAAA,WAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;kBAEpD,OAAO,CAAA,EAAA,GAAA,MAAC,IAAI,CAAC,SAAiB,EAAC,KAAK,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,aAAa,EAAE;EACpD,oBAAA,MAAM,EAAE,MAAM,SAAS;EACxB,iBAAA,CAAC,CAAA;eACH;;;;EAID,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;;;;EAInC,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;;;;EAIzC,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;;;EAG7B,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;EAC9B,SAAA,CAAC,CAAA;EAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE;cACjD,MAAM,EAAE,IAAI,CAAC,MAAM;cACnB,KAAK;EACN,SAAA,CAAC,CAAA;OACH;EAED,IAAA,IAAI,GAAG,GAAA;EACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;EAC3F,YAAA,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAA;WAC5E;EAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAsB,CAAA;OAC5C;EAED,IAAA,IAAI,UAAU,GAAA;EACZ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACpB,YAAA,OAAO,IAAI,CAAA;WACZ;UAED,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAuB,CAAA;OAChF;MAED,MAAM,CAAC,IAAqB,EAAE,WAAiC,EAAA;EAC7D,QAAA,MAAM,WAAW,GAAG,CAAC,KAA2B,KAAI;cAClD,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;EAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;EAClC,SAAC,CAAA;UAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;EAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;EACzB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAA;EAEvC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;EAChB,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;EAE9B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;kBACzB,OAAO;kBACP,cAAc;EACd,gBAAA,OAAO,EAAE,IAAI;EACb,gBAAA,cAAc,EAAE,WAAW;kBAC3B,WAAW,EAAE,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;EACtD,aAAA,CAAC,CAAA;WACH;UAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;EAChC,YAAA,OAAO,KAAK,CAAA;WACb;EAED,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;EAC1D,YAAA,OAAO,IAAI,CAAA;WACZ;EAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;EAChB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;EAE9B,QAAA,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;EAElC,QAAA,OAAO,IAAI,CAAA;OACZ;MAED,UAAU,GAAA;EACR,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EACxB,YAAA,QAAQ,EAAE,IAAI;EACf,SAAA,CAAC,CAAA;EACF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;cACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;WAChE;OACF;MAED,YAAY,GAAA;EACV,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EACxB,YAAA,QAAQ,EAAE,KAAK;EAChB,SAAA,CAAC,CAAA;EACF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;cACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;WACnE;OACF;MAED,oBAAoB,GAAA;UAClB,QACE,IAAI,CAAC,WAAW;;EAEb,aAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;EAClC,aAAA,IAAI,EAAE;EACN,aAAA,IAAI,CAAC,GAAG,CAAC,EACb;OACF;MAED,OAAO,GAAA;EACL,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;OACxB;EACF,CAAA;EAEe,SAAA,mBAAmB,CACjC,SAAoB,EACpB,OAA6C,EAAA;MAE7C,OAAO,CAAC,KAA4B,KAAI;;;;EAItC,QAAA,IAAI,CAAE,KAAK,CAAC,MAAiB,CAAC,gBAAgB,EAAE;EAC9C,YAAA,OAAO,EAAE,CAAA;WACV;UAED,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAmC,CAAA;EACrF,KAAC,CAAA;EACH;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,10 +6,8 @@ import { ExtensionManager } from './ExtensionManager.js';
6
6
  import { NodePos } from './NodePos.js';
7
7
  import { CanCommands, ChainedCommands, EditorEvents, EditorOptions, JSONContent, SingleCommands, TextSerializer } from './types.js';
8
8
  export * as extensions from './extensions/index.js';
9
- declare global {
10
- interface HTMLElement {
11
- editor?: Editor;
12
- }
9
+ export interface TiptapEditorHTMLElement extends HTMLElement {
10
+ editor?: Editor;
13
11
  }
14
12
  export declare class Editor extends EventEmitter<EditorEvents> {
15
13
  private commandManager;
@@ -40,6 +40,11 @@ export interface EditorEvents {
40
40
  editor: Editor;
41
41
  transaction: Transaction;
42
42
  };
43
+ beforeTransaction: {
44
+ editor: Editor;
45
+ transaction: Transaction;
46
+ nextState: EditorState;
47
+ };
43
48
  transaction: {
44
49
  editor: Editor;
45
50
  transaction: Transaction;
@@ -149,9 +154,7 @@ export type GlobalAttributes = {
149
154
  /**
150
155
  * The attributes to add to the node or mark types.
151
156
  */
152
- attributes: {
153
- [key: string]: Attribute;
154
- };
157
+ attributes: Record<string, Attribute | undefined>;
155
158
  }[];
156
159
  export type PickValue<T, K extends keyof T> = T[K];
157
160
  export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -1,15 +1,14 @@
1
1
  import { Editor as CoreEditor, EditorOptions } from '@tiptap/core';
2
2
  import { EditorState, Plugin, PluginKey } from '@tiptap/pm/state';
3
- import { ComponentInternalInstance, ComponentPublicInstance } from 'vue';
4
- import { VueRenderer } from './VueRenderer.js';
3
+ import { AppContext, ComponentInternalInstance, ComponentPublicInstance } from 'vue';
5
4
  export type ContentComponent = ComponentInternalInstance & {
6
5
  ctx: ComponentPublicInstance;
7
6
  };
8
7
  export declare class Editor extends CoreEditor {
9
8
  private reactiveState;
10
9
  private reactiveExtensionStorage;
11
- vueRenderers: import("vue").Reactive<Map<string, VueRenderer>>;
12
10
  contentComponent: ContentComponent | null;
11
+ appContext: AppContext | null;
13
12
  constructor(options?: Partial<EditorOptions>);
14
13
  get state(): EditorState;
15
14
  get storage(): Record<string, any>;
@@ -1,6 +1,6 @@
1
- import { DefineComponent, PropType, Ref } from 'vue';
1
+ import { PropType, Ref } from 'vue';
2
2
  import { Editor } from './Editor.js';
3
- export declare const EditorContent: DefineComponent<{
3
+ export declare const EditorContent: import("vue").DefineComponent<{
4
4
  editor: {
5
5
  default: null;
6
6
  type: PropType<Editor>;
@@ -1,22 +1,36 @@
1
1
  import { Editor } from '@tiptap/core';
2
- import { Component } from 'vue';
2
+ import { Component, h } from 'vue';
3
3
  import { Editor as ExtendedEditor } from './Editor.js';
4
4
  export interface VueRendererOptions {
5
5
  editor: Editor;
6
6
  props?: Record<string, any>;
7
7
  }
8
+ type ExtendedVNode = ReturnType<typeof h> | null;
9
+ interface RenderedComponent {
10
+ vNode: ExtendedVNode;
11
+ destroy: () => void;
12
+ el: Element | null;
13
+ }
8
14
  /**
9
15
  * This class is used to render Vue components inside the editor.
10
16
  */
11
17
  export declare class VueRenderer {
12
- id: string;
18
+ renderedComponent: RenderedComponent;
13
19
  editor: ExtendedEditor;
14
20
  component: Component;
15
- teleportElement: Element;
16
- element: Element;
21
+ el: Element | null;
17
22
  props: Record<string, any>;
18
23
  constructor(component: Component, { props, editor }: VueRendererOptions);
24
+ get element(): Element | null;
19
25
  get ref(): any;
26
+ renderComponent(): {
27
+ vNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
28
+ [key: string]: any;
29
+ }>;
30
+ destroy: () => void;
31
+ el: Element | null;
32
+ };
20
33
  updateProps(props?: Record<string, any>): void;
21
34
  destroy(): void;
22
35
  }
36
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiptap/vue-3",
3
3
  "description": "Vue components for tiptap",
4
- "version": "2.5.4",
4
+ "version": "2.5.6",
5
5
  "homepage": "https://tiptap.dev",
6
6
  "keywords": [
7
7
  "tiptap",
@@ -29,17 +29,17 @@
29
29
  "dist"
30
30
  ],
31
31
  "dependencies": {
32
- "@tiptap/extension-bubble-menu": "^2.5.4",
33
- "@tiptap/extension-floating-menu": "^2.5.4"
32
+ "@tiptap/extension-bubble-menu": "^2.5.6",
33
+ "@tiptap/extension-floating-menu": "^2.5.6"
34
34
  },
35
35
  "devDependencies": {
36
- "@tiptap/core": "^2.5.4",
37
- "@tiptap/pm": "^2.5.4",
36
+ "@tiptap/core": "^2.5.6",
37
+ "@tiptap/pm": "^2.5.6",
38
38
  "vue": "^3.0.0"
39
39
  },
40
40
  "peerDependencies": {
41
- "@tiptap/core": "^2.5.4",
42
- "@tiptap/pm": "^2.5.4",
41
+ "@tiptap/core": "^2.5.6",
42
+ "@tiptap/pm": "^2.5.6",
43
43
  "vue": "^3.0.0"
44
44
  },
45
45
  "repository": {