@tiptap/vue-3 2.8.0 → 2.9.0
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/EditorContent.d.ts.map +1 -1
- package/dist/index.cjs +0 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +0 -14
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +0 -14
- package/dist/index.umd.js.map +1 -1
- package/package.json +5 -5
- package/src/EditorContent.ts +1 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorContent.d.ts","sourceRoot":"","sources":["../src/EditorContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,QAAQ,EACR,GAAG,EAIJ,MAAM,KAAK,CAAA;AAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,eAAO,MAAM,aAAa;;;cAMJ,QAAQ,CAAC,MAAM,CAAC;;;;;;;cAAhB,QAAQ,CAAC,MAAM,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"EditorContent.d.ts","sourceRoot":"","sources":["../src/EditorContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,QAAQ,EACR,GAAG,EAIJ,MAAM,KAAK,CAAA;AAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,eAAO,MAAM,aAAa;;;cAMJ,QAAQ,CAAC,MAAM,CAAC;;;;;;;cAAhB,QAAQ,CAAC,MAAM,CAAC;;;;MAkEpC,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -155,22 +155,8 @@ const EditorContent = vue.defineComponent({
|
|
|
155
155
|
if (!editor) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
-
// destroy nodeviews before vue removes dom element
|
|
159
|
-
if (!editor.isDestroyed) {
|
|
160
|
-
editor.view.setProps({
|
|
161
|
-
nodeViews: {},
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
158
|
editor.contentComponent = null;
|
|
165
159
|
editor.appContext = null;
|
|
166
|
-
if (!editor.options.element.firstChild) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
const newElement = document.createElement('div');
|
|
170
|
-
newElement.append(...editor.options.element.childNodes);
|
|
171
|
-
editor.setOptions({
|
|
172
|
-
element: newElement,
|
|
173
|
-
});
|
|
174
160
|
});
|
|
175
161
|
return { rootEl };
|
|
176
162
|
},
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","markRaw","getCurrentInstance","watchEffect","nextTick","unref","FloatingMenuPlugin","shallowRef","reactive","render","NodeView","provide"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\n }\n }\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n editor.contentComponent = null\n editor.appContext = null\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","markRaw","getCurrentInstance","watchEffect","nextTick","unref","FloatingMenuPlugin","shallowRef","reactive","render","NodeView","provide"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -154,22 +154,8 @@ const EditorContent = defineComponent({
|
|
|
154
154
|
if (!editor) {
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
|
-
// destroy nodeviews before vue removes dom element
|
|
158
|
-
if (!editor.isDestroyed) {
|
|
159
|
-
editor.view.setProps({
|
|
160
|
-
nodeViews: {},
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
157
|
editor.contentComponent = null;
|
|
164
158
|
editor.appContext = null;
|
|
165
|
-
if (!editor.options.element.firstChild) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const newElement = document.createElement('div');
|
|
169
|
-
newElement.append(...editor.options.element.childNodes);
|
|
170
|
-
editor.setOptions({
|
|
171
|
-
element: newElement,
|
|
172
|
-
});
|
|
173
159
|
});
|
|
174
160
|
return { rootEl };
|
|
175
161
|
},
|
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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\n }\n }\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n editor.contentComponent = null\n editor.appContext = null\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\n }\n}\n"],"names":["CoreEditor"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -154,22 +154,8 @@
|
|
|
154
154
|
if (!editor) {
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
|
-
// destroy nodeviews before vue removes dom element
|
|
158
|
-
if (!editor.isDestroyed) {
|
|
159
|
-
editor.view.setProps({
|
|
160
|
-
nodeViews: {},
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
157
|
editor.contentComponent = null;
|
|
164
158
|
editor.appContext = null;
|
|
165
|
-
if (!editor.options.element.firstChild) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const newElement = document.createElement('div');
|
|
169
|
-
newElement.append(...editor.options.element.childNodes);
|
|
170
|
-
editor.setOptions({
|
|
171
|
-
element: newElement,
|
|
172
|
-
});
|
|
173
159
|
});
|
|
174
160
|
return { rootEl };
|
|
175
161
|
},
|
package/dist/index.umd.js.map
CHANGED
|
@@ -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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","markRaw","getCurrentInstance","watchEffect","nextTick","unref","FloatingMenuPlugin","shallowRef","reactive","render","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","/* eslint-disable react-hooks/rules-of-hooks */\nimport { 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 ): EditorState {\n const nextState = super.registerPlugin(plugin, handlePlugins)\n\n if (this.reactiveState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): EditorState | undefined {\n const nextState = super.unregisterPlugin(nameOrPluginKey)\n\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState\n }\n\n return nextState\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 // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\n }\n }\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n editor.contentComponent = null\n editor.appContext = null\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","/* eslint-disable no-underscore-dangle */\nimport {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport {\n Component, defineComponent, PropType, provide, Ref, 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: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\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 = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n } satisfies NodeViewProps\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.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\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 /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\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 /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection\n const pos = this.getPos()\n\n if (typeof pos !== 'number') {\n return\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return\n }\n\n this.selectNode()\n } else {\n if (!this.renderer.props.selected) {\n return\n }\n\n this.deselectNode()\n }\n }\n\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(\n node: ProseMirrorNode,\n decorations: readonly Decoration[],\n innerDecorations: DecorationSource,\n ): boolean {\n const rerenderComponent = (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 const oldInnerDecorations = this.innerDecorations\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n this.innerDecorations = innerDecorations\n\n rerenderComponent({ node, decorations, innerDecorations })\n\n return true\n }\n\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\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 /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\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 this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component<NodeViewProps>,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return props => {\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 {} as unknown as ProseMirrorNodeView\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? (component.__vccOpts as Component)\n : component\n\n return new VueNodeView(normalizedComponent, props, options)\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;;ECtED;EAYA,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;UAElE,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;EAE7D,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAA;WACrC;EAED,QAAA,OAAO,SAAS,CAAA;OACjB;EAED;;EAEG;EACI,IAAA,gBAAgB,CAAC,eAAmC,EAAA;UACzD,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;EAEzD,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE;EACnC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAA;WACrC;EAED,QAAA,OAAO,SAAS,CAAA;OACjB;EACF;;AClFM,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;;;;8BAItB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;2BAC5B,CAAA;uBACF;sBAED,MAAM,CAAC,UAAU,CAAC;0BAChB,OAAO;EACR,qBAAA,CAAC,CAAA;sBAEF,MAAM,CAAC,eAAe,EAAE,CAAA;EAC1B,iBAAC,CAAC,CAAA;eAEH;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;EAED,YAAA,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAA;EAC9B,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;EAC1B,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;;AC7EM,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;;ECtFD;AAiBa,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;EAgBD,MAAM,WAAY,SAAQC,aAAuD,CAAA;MAK/E,KAAK,GAAA;EACH,QAAA,MAAM,KAAK,GAAG;cACZ,MAAM,EAAE,IAAI,CAAC,MAAM;cACnB,IAAI,EAAE,IAAI,CAAC,IAAI;cACf,WAAW,EAAE,IAAI,CAAC,WAAmC;cACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;cACvC,IAAI,EAAE,IAAI,CAAC,IAAI;EACf,YAAA,QAAQ,EAAE,KAAK;cACf,SAAS,EAAE,IAAI,CAAC,SAAS;cACzB,cAAc,EAAE,IAAI,CAAC,cAAc;EACnC,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;WACZ,CAAA;UAEzB,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;UAEF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;UAClE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;EAE7D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE;cACjD,MAAM,EAAE,IAAI,CAAC,MAAM;cACnB,KAAK;EACN,SAAA,CAAC,CAAA;OACH;EAED;;;EAGG;EACH,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;;;EAGG;EACH,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;EAED;;;EAGG;MACH,qBAAqB,GAAA;EACnB,QAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;EAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;EAEzB,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;cAC3B,OAAM;WACP;EAED,QAAA,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;cACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;kBAChC,OAAM;eACP;cAED,IAAI,CAAC,UAAU,EAAE,CAAA;WAClB;eAAM;cACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;kBACjC,OAAM;eACP;cAED,IAAI,CAAC,YAAY,EAAE,CAAA;WACpB;OACF;EAED;;;EAGG;EACH,IAAA,MAAM,CACJ,IAAqB,EACrB,WAAkC,EAClC,gBAAkC,EAAA;EAElC,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAA2B,KAAI;cACxD,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;EACvC,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAA;EAEjD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;EAChB,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;EAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;EAExC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;kBACzB,OAAO;kBACP,cAAc;EACd,gBAAA,OAAO,EAAE,IAAI;EACb,gBAAA,cAAc,EAAE,WAAW;kBAC3B,mBAAmB;kBACnB,gBAAgB;EAChB,gBAAA,WAAW,EAAE,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;EAC9E,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,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,EAAE;EACxG,YAAA,OAAO,IAAI,CAAA;WACZ;EAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;EAChB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;EAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;UAExC,iBAAiB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAA;EAE1D,QAAA,OAAO,IAAI,CAAA;OACZ;EAED;;;EAGG;MACH,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;EAED;;;EAGG;MACH,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;UACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;OAC/D;EACF,CAAA;EAEe,SAAA,mBAAmB,CACjC,SAAmC,EACnC,OAA6C,EAAA;MAE7C,OAAO,KAAK,IAAG;;;;EAIb,QAAA,IAAI,CAAE,KAAK,CAAC,MAAiB,CAAC,gBAAgB,EAAE;EAC9C,YAAA,OAAO,EAAoC,CAAA;WAC5C;;UAED,MAAM,mBAAmB,GAAG,OAAO,SAAS,KAAK,UAAU,IAAI,WAAW,IAAI,SAAS;gBAClF,SAAS,CAAC,SAAuB;gBAClC,SAAS,CAAA;UAEb,OAAO,IAAI,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;EAC7D,KAAC,CAAA;EACH;;;;;;;;;;;;;;;;;;;;;;;"}
|
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.
|
|
4
|
+
"version": "2.9.0",
|
|
5
5
|
"homepage": "https://tiptap.dev",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"tiptap",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"dist"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@tiptap/extension-bubble-menu": "^2.
|
|
33
|
-
"@tiptap/extension-floating-menu": "^2.
|
|
32
|
+
"@tiptap/extension-bubble-menu": "^2.9.0",
|
|
33
|
+
"@tiptap/extension-floating-menu": "^2.9.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@tiptap/core": "^2.
|
|
37
|
-
"@tiptap/pm": "^2.
|
|
36
|
+
"@tiptap/core": "^2.9.0",
|
|
37
|
+
"@tiptap/pm": "^2.9.0",
|
|
38
38
|
"vue": "^3.0.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
package/src/EditorContent.ts
CHANGED
|
@@ -59,6 +59,7 @@ export const EditorContent = defineComponent({
|
|
|
59
59
|
|
|
60
60
|
editor.createNodeViews()
|
|
61
61
|
})
|
|
62
|
+
|
|
62
63
|
}
|
|
63
64
|
})
|
|
64
65
|
|
|
@@ -69,27 +70,8 @@ export const EditorContent = defineComponent({
|
|
|
69
70
|
return
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
// destroy nodeviews before vue removes dom element
|
|
73
|
-
if (!editor.isDestroyed) {
|
|
74
|
-
editor.view.setProps({
|
|
75
|
-
nodeViews: {},
|
|
76
|
-
})
|
|
77
|
-
}
|
|
78
|
-
|
|
79
73
|
editor.contentComponent = null
|
|
80
74
|
editor.appContext = null
|
|
81
|
-
|
|
82
|
-
if (!editor.options.element.firstChild) {
|
|
83
|
-
return
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const newElement = document.createElement('div')
|
|
87
|
-
|
|
88
|
-
newElement.append(...editor.options.element.childNodes)
|
|
89
|
-
|
|
90
|
-
editor.setOptions({
|
|
91
|
-
element: newElement,
|
|
92
|
-
})
|
|
93
75
|
})
|
|
94
76
|
|
|
95
77
|
return { rootEl }
|