@tiptap/vue-3 2.0.0-beta.90 → 2.0.0-beta.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { EditorState, Plugin, PluginKey } from 'prosemirror-state';
2
1
  import { Editor as CoreEditor, EditorOptions } from '@tiptap/core';
2
+ import { EditorState, Plugin, PluginKey } from 'prosemirror-state';
3
3
  import { ComponentInternalInstance, ComponentPublicInstance } from 'vue';
4
4
  import { VueRenderer } from './VueRenderer';
5
5
  export declare type ContentComponent = ComponentInternalInstance & {
@@ -1,4 +1,4 @@
1
- import { Ref, PropType, DefineComponent } from 'vue';
1
+ import { DefineComponent, PropType, Ref } from 'vue';
2
2
  import { Editor } from './Editor';
3
3
  export declare const EditorContent: DefineComponent<{
4
4
  editor: {
@@ -1,41 +1,39 @@
1
1
  import { NodeViewRenderer, NodeViewRendererOptions } from '@tiptap/core';
2
- import { PropType, Component } from 'vue';
3
- import { Decoration } from 'prosemirror-view';
4
2
  import { Node as ProseMirrorNode } from 'prosemirror-model';
3
+ import { Decoration } from 'prosemirror-view';
4
+ import { Component, PropType } from 'vue';
5
5
  export declare const nodeViewProps: {
6
6
  editor: {
7
7
  type: PropType<import("@tiptap/core").Editor>;
8
- required: boolean;
8
+ required: true;
9
9
  };
10
10
  node: {
11
- type: PropType<ProseMirrorNode<any>>;
12
- required: boolean;
11
+ type: PropType<ProseMirrorNode>;
12
+ required: true;
13
13
  };
14
14
  decorations: {
15
- type: PropType<Decoration<{
16
- [key: string]: any;
17
- }>[]>;
18
- required: boolean;
15
+ type: PropType<Decoration[]>;
16
+ required: true;
19
17
  };
20
18
  selected: {
21
19
  type: PropType<boolean>;
22
- required: boolean;
20
+ required: true;
23
21
  };
24
22
  extension: {
25
23
  type: PropType<import("@tiptap/core").Node<any, any>>;
26
- required: boolean;
24
+ required: true;
27
25
  };
28
26
  getPos: {
29
27
  type: PropType<() => number>;
30
- required: boolean;
28
+ required: true;
31
29
  };
32
30
  updateAttributes: {
33
31
  type: PropType<(attributes: Record<string, any>) => void>;
34
- required: boolean;
32
+ required: true;
35
33
  };
36
34
  deleteNode: {
37
35
  type: PropType<() => void>;
38
- required: boolean;
36
+ required: true;
39
37
  };
40
38
  };
41
39
  export interface VueNodeViewRendererOptions extends NodeViewRendererOptions {
@@ -1,5 +1,5 @@
1
- import { Component } from 'vue';
2
1
  import { Editor } from '@tiptap/core';
2
+ import { Component } from 'vue';
3
3
  import { Editor as ExtendedEditor } from './Editor';
4
4
  export interface VueRendererOptions {
5
5
  editor: Editor;
@@ -1,10 +1,10 @@
1
- export * from '@tiptap/core';
2
1
  export * from './BubbleMenu';
3
2
  export { Editor } from './Editor';
4
3
  export * from './EditorContent';
5
4
  export * from './FloatingMenu';
5
+ export * from './NodeViewContent';
6
+ export * from './NodeViewWrapper';
6
7
  export * from './useEditor';
7
- export * from './VueRenderer';
8
8
  export * from './VueNodeViewRenderer';
9
- export * from './NodeViewWrapper';
10
- export * from './NodeViewContent';
9
+ export * from './VueRenderer';
10
+ export * from '@tiptap/core';
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var core = require('@tiptap/core');
6
- var vue = require('vue');
7
5
  var extensionBubbleMenu = require('@tiptap/extension-bubble-menu');
6
+ var vue = require('vue');
7
+ var core = require('@tiptap/core');
8
8
  var extensionFloatingMenu = require('@tiptap/extension-floating-menu');
9
9
 
10
10
  const BubbleMenu = vue.defineComponent({
@@ -80,7 +80,7 @@ class Editor extends core.Editor {
80
80
  this.reactiveState.value = this.view.state;
81
81
  this.reactiveExtensionStorage.value = this.extensionStorage;
82
82
  });
83
- return vue.markRaw(this);
83
+ return vue.markRaw(this); // eslint-disable-line
84
84
  }
85
85
  get state() {
86
86
  return this.reactiveState
@@ -222,6 +222,46 @@ const FloatingMenu = vue.defineComponent({
222
222
  },
223
223
  });
224
224
 
225
+ const NodeViewContent = vue.defineComponent({
226
+ props: {
227
+ as: {
228
+ type: String,
229
+ default: 'div',
230
+ },
231
+ },
232
+ render() {
233
+ return vue.h(this.as, {
234
+ style: {
235
+ whiteSpace: 'pre-wrap',
236
+ },
237
+ 'data-node-view-content': '',
238
+ });
239
+ },
240
+ });
241
+
242
+ const NodeViewWrapper = vue.defineComponent({
243
+ props: {
244
+ as: {
245
+ type: String,
246
+ default: 'div',
247
+ },
248
+ },
249
+ inject: ['onDragStart', 'decorationClasses'],
250
+ render() {
251
+ var _a, _b;
252
+ return vue.h(this.as, {
253
+ // @ts-ignore
254
+ class: this.decorationClasses.value,
255
+ style: {
256
+ whiteSpace: 'normal',
257
+ },
258
+ 'data-node-view-wrapper': '',
259
+ // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
260
+ onDragstart: this.onDragStart,
261
+ }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
262
+ },
263
+ });
264
+
225
265
  const useEditor = (options = {}) => {
226
266
  const editor = vue.shallowRef();
227
267
  vue.onMounted(() => {
@@ -331,6 +371,10 @@ class VueNodeView extends core.NodeView {
331
371
  // @ts-ignore
332
372
  // eslint-disable-next-line
333
373
  __scopeId: this.component.__scopeId,
374
+ // add support for CSS Modules
375
+ // @ts-ignore
376
+ // eslint-disable-next-line
377
+ __cssModules: this.component.__cssModules,
334
378
  });
335
379
  this.renderer = new VueRenderer(extendedComponent, {
336
380
  editor: this.editor,
@@ -348,7 +392,7 @@ class VueNodeView extends core.NodeView {
348
392
  return null;
349
393
  }
350
394
  const contentElement = this.dom.querySelector('[data-node-view-content]');
351
- return contentElement || this.dom;
395
+ return (contentElement || this.dom);
352
396
  }
353
397
  update(node, decorations) {
354
398
  const updateProps = (props) => {
@@ -412,46 +456,6 @@ function VueNodeViewRenderer(component, options) {
412
456
  };
413
457
  }
414
458
 
415
- const NodeViewWrapper = vue.defineComponent({
416
- props: {
417
- as: {
418
- type: String,
419
- default: 'div',
420
- },
421
- },
422
- inject: ['onDragStart', 'decorationClasses'],
423
- render() {
424
- var _a, _b;
425
- return vue.h(this.as, {
426
- // @ts-ignore
427
- class: this.decorationClasses.value,
428
- style: {
429
- whiteSpace: 'normal',
430
- },
431
- 'data-node-view-wrapper': '',
432
- // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
433
- onDragstart: this.onDragStart,
434
- }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
435
- },
436
- });
437
-
438
- const NodeViewContent = vue.defineComponent({
439
- props: {
440
- as: {
441
- type: String,
442
- default: 'div',
443
- },
444
- },
445
- render() {
446
- return vue.h(this.as, {
447
- style: {
448
- whiteSpace: 'pre-wrap',
449
- },
450
- 'data-node-view-content': '',
451
- });
452
- },
453
- });
454
-
455
459
  exports.BubbleMenu = BubbleMenu;
456
460
  exports.Editor = Editor;
457
461
  exports.EditorContent = EditorContent;
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-3.cjs.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport {\n markRaw,\n Ref,\n customRef,\n ComponentInternalInstance,\n ComponentPublicInstance,\n reactive,\n} from 'vue'\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this)\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n h,\n ref,\n Ref,\n unref,\n Teleport,\n PropType,\n defineComponent,\n DefineComponent,\n watchEffect,\n nextTick,\n onBeforeUnmount,\n getCurrentInstance,\n} from 'vue'\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\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 { onMounted, onBeforeUnmount, shallowRef } from 'vue'\nimport { EditorOptions } from '@tiptap/core'\nimport { Editor } from './Editor'\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 { reactive, markRaw, Component } from 'vue'\nimport { Editor } from '@tiptap/core'\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport {\n ref,\n Ref,\n provide,\n PropType,\n Component,\n defineComponent,\n} from 'vue'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import { h, defineComponent } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\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 // @ts-ignore\n class: this.decorationClasses.value,\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 { h, defineComponent } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n },\n )\n },\n})\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
1
+ {"version":3,"file":"tiptap-vue-3.cjs.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 // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n 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 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.value,\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'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return (contentElement || this.dom) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as unknown as ProseMirrorNodeView\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
+ import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';
2
+ import { defineComponent, ref, onMounted, onBeforeUnmount, h, reactive, customRef, markRaw, getCurrentInstance, watchEffect, nextTick, unref, Teleport, shallowRef, provide } from 'vue';
1
3
  import { Editor as Editor$1, NodeView } from '@tiptap/core';
2
4
  export * from '@tiptap/core';
3
- import { defineComponent, ref, onMounted, onBeforeUnmount, h, reactive, customRef, markRaw, getCurrentInstance, watchEffect, nextTick, unref, Teleport, shallowRef, provide } from 'vue';
4
- import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';
5
5
  import { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';
6
6
 
7
7
  const BubbleMenu = defineComponent({
@@ -77,7 +77,7 @@ class Editor extends Editor$1 {
77
77
  this.reactiveState.value = this.view.state;
78
78
  this.reactiveExtensionStorage.value = this.extensionStorage;
79
79
  });
80
- return markRaw(this);
80
+ return markRaw(this); // eslint-disable-line
81
81
  }
82
82
  get state() {
83
83
  return this.reactiveState
@@ -219,6 +219,46 @@ const FloatingMenu = defineComponent({
219
219
  },
220
220
  });
221
221
 
222
+ const NodeViewContent = defineComponent({
223
+ props: {
224
+ as: {
225
+ type: String,
226
+ default: 'div',
227
+ },
228
+ },
229
+ render() {
230
+ return h(this.as, {
231
+ style: {
232
+ whiteSpace: 'pre-wrap',
233
+ },
234
+ 'data-node-view-content': '',
235
+ });
236
+ },
237
+ });
238
+
239
+ const NodeViewWrapper = defineComponent({
240
+ props: {
241
+ as: {
242
+ type: String,
243
+ default: 'div',
244
+ },
245
+ },
246
+ inject: ['onDragStart', 'decorationClasses'],
247
+ render() {
248
+ var _a, _b;
249
+ return h(this.as, {
250
+ // @ts-ignore
251
+ class: this.decorationClasses.value,
252
+ style: {
253
+ whiteSpace: 'normal',
254
+ },
255
+ 'data-node-view-wrapper': '',
256
+ // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
257
+ onDragstart: this.onDragStart,
258
+ }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
259
+ },
260
+ });
261
+
222
262
  const useEditor = (options = {}) => {
223
263
  const editor = shallowRef();
224
264
  onMounted(() => {
@@ -328,6 +368,10 @@ class VueNodeView extends NodeView {
328
368
  // @ts-ignore
329
369
  // eslint-disable-next-line
330
370
  __scopeId: this.component.__scopeId,
371
+ // add support for CSS Modules
372
+ // @ts-ignore
373
+ // eslint-disable-next-line
374
+ __cssModules: this.component.__cssModules,
331
375
  });
332
376
  this.renderer = new VueRenderer(extendedComponent, {
333
377
  editor: this.editor,
@@ -345,7 +389,7 @@ class VueNodeView extends NodeView {
345
389
  return null;
346
390
  }
347
391
  const contentElement = this.dom.querySelector('[data-node-view-content]');
348
- return contentElement || this.dom;
392
+ return (contentElement || this.dom);
349
393
  }
350
394
  update(node, decorations) {
351
395
  const updateProps = (props) => {
@@ -409,45 +453,5 @@ function VueNodeViewRenderer(component, options) {
409
453
  };
410
454
  }
411
455
 
412
- const NodeViewWrapper = defineComponent({
413
- props: {
414
- as: {
415
- type: String,
416
- default: 'div',
417
- },
418
- },
419
- inject: ['onDragStart', 'decorationClasses'],
420
- render() {
421
- var _a, _b;
422
- return h(this.as, {
423
- // @ts-ignore
424
- class: this.decorationClasses.value,
425
- style: {
426
- whiteSpace: 'normal',
427
- },
428
- 'data-node-view-wrapper': '',
429
- // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
430
- onDragstart: this.onDragStart,
431
- }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
432
- },
433
- });
434
-
435
- const NodeViewContent = defineComponent({
436
- props: {
437
- as: {
438
- type: String,
439
- default: 'div',
440
- },
441
- },
442
- render() {
443
- return h(this.as, {
444
- style: {
445
- whiteSpace: 'pre-wrap',
446
- },
447
- 'data-node-view-content': '',
448
- });
449
- },
450
- });
451
-
452
456
  export { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps, useEditor };
453
457
  //# sourceMappingURL=tiptap-vue-3.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-3.esm.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport {\n markRaw,\n Ref,\n customRef,\n ComponentInternalInstance,\n ComponentPublicInstance,\n reactive,\n} from 'vue'\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this)\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n h,\n ref,\n Ref,\n unref,\n Teleport,\n PropType,\n defineComponent,\n DefineComponent,\n watchEffect,\n nextTick,\n onBeforeUnmount,\n getCurrentInstance,\n} from 'vue'\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\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 { onMounted, onBeforeUnmount, shallowRef } from 'vue'\nimport { EditorOptions } from '@tiptap/core'\nimport { Editor } from './Editor'\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 { reactive, markRaw, Component } from 'vue'\nimport { Editor } from '@tiptap/core'\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport {\n ref,\n Ref,\n provide,\n PropType,\n Component,\n defineComponent,\n} from 'vue'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import { h, defineComponent } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\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 // @ts-ignore\n class: this.decorationClasses.value,\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 { h, defineComponent } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n },\n )\n },\n})\n"],"names":["CoreEditor"],"mappings":";;;;;;MAUa,UAAU,GAAG,eAAe,CAAC;IACxC,IAAI,EAAE,YAAY;IAElB,KAAK,EAAE;QACL,SAAS,EAAE;;;YAGT,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,YAAY;SACtB;QAED,MAAM,EAAE;YACN,IAAI,EAAE,MAAmD;YACzD,QAAQ,EAAE,IAAI;SACf;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,MAAyD;YAC/D,OAAO,EAAE,OAAO,EAAE,CAAC;SACpB;QAED,UAAU,EAAE;YACV,IAAI,EAAE,QAAkF;YACxF,OAAO,EAAE,IAAI;SACd;KACF;IAED,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,IAAI,GAAG,GAAG,CAAqB,IAAI,CAAC,CAAA;QAE1C,SAAS,CAAC;YACR,MAAM,EACJ,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,GAAG,KAAK,CAAA;YAET,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACrC,SAAS;gBACT,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,KAAoB;gBAClC,YAAY;gBACZ,UAAU;aACX,CAAC,CAAC,CAAA;SACJ,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;YAEnC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;SACnC,CAAC,CAAA;QAEF,OAAO,gBAAM,OAAA,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAA,KAAK,CAAC,OAAO,+CAAb,KAAK,CAAY,CAAC,CAAA,EAAA,CAAA;KACxD;CACF;;ACrDD,SAAS,eAAe,CAAI,KAAQ;IAClC,OAAO,SAAS,CAAI,CAAC,KAAK,EAAE,OAAO;QACjC,OAAO;YACL,GAAG;gBACD,KAAK,EAAE,CAAA;gBACP,OAAO,KAAK,CAAA;aACb;YACD,GAAG,CAAC,QAAQ;;gBAEV,KAAK,GAAG,QAAQ,CAAA;;gBAGhB,qBAAqB,CAAC;oBACpB,qBAAqB,CAAC;wBACpB,OAAO,EAAE,CAAA;qBACV,CAAC,CAAA;iBACH,CAAC,CAAA;aACH;SACF,CAAA;KACF,CAAC,CAAA;AACJ,CAAC;MAMY,MAAO,SAAQA,QAAU;IASpC,YAAY,UAAkC,EAAE;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAA;QALT,iBAAY,GAAG,QAAQ,CAA2B,IAAI,GAAG,EAAE,CAAC,CAAA;QAE5D,qBAAgB,GAA4B,IAAI,CAAA;QAKrD,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAEtE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;YAC1C,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAA;SAC5D,CAAC,CAAA;QAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;KACrB;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,aAAa;cACrB,IAAI,CAAC,aAAa,CAAC,KAAK;cACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;KACpB;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,wBAAwB;cAChC,IAAI,CAAC,wBAAwB,CAAC,KAAK;cACnC,KAAK,CAAC,OAAO,CAAA;KAClB;;;;IAKM,cAAc,CAAC,MAAc,EAAE,aAAkE;QACtG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;KAC3C;;;;IAKM,gBAAgB,CAAC,eAAmC;QACzD,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;QACvC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;KAC3C;;;MCvEU,aAAa,GAAG,eAAe,CAAC;IAC3C,IAAI,EAAE,eAAe;IAErB,KAAK,EAAE;QACL,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAA0B;SACjC;KACF;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAA6B,GAAG,EAAE,CAAA;QAC9C,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAA;QAErC,WAAW,CAAC;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YAE3B,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE;gBACpD,QAAQ,CAAC;oBACP,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;wBACvD,OAAM;qBACP;oBAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAEnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;;oBAGzD,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;oBAExC,MAAM,CAAC,UAAU,CAAC;wBAChB,OAAO;qBACR,CAAC,CAAA;oBAEF,MAAM,CAAC,eAAe,EAAE,CAAA;iBACzB,CAAC,CAAA;aACH;SACF,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YAE3B,IAAI,CAAC,MAAM,EAAE;gBACX,OAAM;aACP;;YAGD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACnB,SAAS,EAAE,EAAE;iBACd,CAAC,CAAA;aACH;YAED,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;gBACtC,OAAM;aACP;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAEhD,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAEvD,MAAM,CAAC,UAAU,CAAC;gBAChB,OAAO,EAAE,UAAU;aACpB,CAAC,CAAA;SACH,CAAC,CAAA;QAEF,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB;IAED,MAAM;QACJ,MAAM,YAAY,GAAU,EAAE,CAAA;QAE9B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW;gBAC1C,MAAM,IAAI,GAAG,CAAC,CACZ,QAAQ,EACR;oBACE,EAAE,EAAE,WAAW,CAAC,eAAe;oBAC/B,GAAG,EAAE,WAAW,CAAC,EAAE;iBACpB,EACD,CAAC,CACC,WAAW,CAAC,SAA4B,EACxC;oBACE,GAAG,EAAE,WAAW,CAAC,EAAE;oBACnB,GAAG,WAAW,CAAC,KAAK;iBACrB,CACF,CACF,CAAA;gBAED,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACxB,CAAC,CAAA;SACH;QAED,OAAO,CAAC,CACN,KAAK,EACL;YACE,GAAG,EAAE,CAAC,EAAO,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA,EAAE;SACvC,EACD,GAAG,YAAY,CAChB,CAAA;KACF;CACF;;MC7GY,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,cAAc;IAEpB,KAAK,EAAE;QACL,SAAS,EAAE;;;YAGT,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,cAAc;SACxB;QAED,MAAM,EAAE;YACN,IAAI,EAAE,MAAqD;YAC3D,QAAQ,EAAE,IAAI;SACf;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,MAA2D;YACjE,OAAO,EAAE,OAAO,EAAE,CAAC;SACpB;QAED,UAAU,EAAE;YACV,IAAI,EAAE,QAAoF;YAC1F,OAAO,EAAE,IAAI;SACd;KACF;IAED,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,IAAI,GAAG,GAAG,CAAqB,IAAI,CAAC,CAAA;QAE1C,SAAS,CAAC;YACR,MAAM,EACJ,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,GAAG,KAAK,CAAA;YAET,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC;gBACvC,SAAS;gBACT,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,KAAoB;gBAClC,YAAY;gBACZ,UAAU;aACX,CAAC,CAAC,CAAA;SACJ,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;YAEnC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;SACnC,CAAC,CAAA;QAEF,OAAO,gBAAM,OAAA,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAA,KAAK,CAAC,OAAO,+CAAb,KAAK,CAAY,CAAC,CAAA,EAAA,CAAA;KACxD;CACF;;MC7DY,SAAS,GAAG,CAAC,UAAkC,EAAE;IAC5D,MAAM,MAAM,GAAG,UAAU,EAAU,CAAA;IAEnC,SAAS,CAAC;QACR,MAAM,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;KACnC,CAAC,CAAA;IAEF,eAAe,CAAC;;QACd,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAA;KACxB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf;;MCPa,WAAW;IAatB,YAAY,SAAoB,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAsB;QAC1E,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAwB,CAAA;QACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QACnC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAE3C,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAA;YAErC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAA;aACpE;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,iBAA4B,CAAA;SACjE;KACF;IAED,IAAI,GAAG;;QACL,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,0CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KACnD;IAED,WAAW,CAAC,QAA6B,EAAE;QACzC,MAAM;aACH,OAAO,CAAC,KAAK,CAAC;aACd,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;SACxB,CAAC,CAAA;KACL;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KACzC;;;MCpCU,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,MAA2C;QACjD,QAAQ,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAyC;QAC/C,QAAQ,EAAE,IAAI;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,MAAgD;QACtD,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,OAA8C;QACpD,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAA8C;QACpD,QAAQ,EAAE,IAAI;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAA6C;QACnD,QAAQ,EAAE,IAAI;KACf;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAuD;QAC7D,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAiD;QACvD,QAAQ,EAAE,IAAI;KACf;EACF;AAYD,MAAM,WAAY,SAAQ,QAAuD;IAM/E,KAAK;QACH,MAAM,KAAK,GAAkB;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;YAC3B,gBAAgB,EAAE,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YACxE,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;SACpC,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/C,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;QAEzD,MAAM,iBAAiB,GAAG,eAAe,CAAC;YACxC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YAC9B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,QAAQ,EAAG,IAAI,CAAC,SAAiB,CAAC,QAAQ;YAC1C,KAAK,EAAE,aAAa;;gBAClB,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;gBACnC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAEpD,OAAO,MAAA,MAAC,IAAI,CAAC,SAAiB,EAAC,KAAK,mDAAG,aAAa,EAAE;oBACpD,MAAM,EAAE,MAAM,SAAS;iBACxB,CAAC,CAAA;aACH;;;;YAID,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE;YACjD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;SACN,CAAC,CAAA;KACH;IAED,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;YACjE,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAA;SAC5E;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAA;KAC7B;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAA;QAEzE,OAAO,cAAc,IAAI,IAAI,CAAC,GAAG,CAAA;KAClC;IAED,MAAM,CAAC,IAAqB,EAAE,WAAyB;QACrD,MAAM,WAAW,GAAG,CAAC,KAA2B;YAC9C,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC1D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;SACjC,CAAA;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAA;YAEvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAE9B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACzB,OAAO;gBACP,cAAc;gBACd,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,WAAW;gBAC3B,WAAW,EAAE,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;aACtD,CAAC,CAAA;SACH;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAChC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;YAC1D,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAE9B,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QAElC,OAAO,IAAI,CAAA;KACZ;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACxB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;KACH;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;KACH;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,WAAW;;aAEpB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;aAClC,IAAI,EAAE;aACN,IAAI,CAAC,GAAG,CAAC,CAAA;KACb;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;KACxB;CAEF;SAEe,mBAAmB,CAAC,SAAoB,EAAE,OAA6C;IACrG,OAAO,CAAC,KAA4B;;;;QAIlC,IAAI,CAAE,KAAK,CAAC,MAAiB,CAAC,gBAAgB,EAAE;YAC9C,OAAO,EAAE,CAAA;SACV;QAED,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAwB,CAAA;KACzE,CAAA;AACH;;MC1Ma,eAAe,GAAG,eAAe,CAAC;IAC7C,KAAK,EAAE;QACL,EAAE,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK;SACf;KACF;IAED,MAAM,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAE5C,MAAM;;QACJ,OAAO,CAAC,CACN,IAAI,CAAC,EAAE,EAAE;;YAEP,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;YACnC,KAAK,EAAE;gBACL,UAAU,EAAE,QAAQ;aACrB;YACD,wBAAwB,EAAE,EAAE;;YAE5B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD,MAAA,MAAA,IAAI,CAAC,MAAM,EAAC,OAAO,kDAAI,CACxB,CAAA;KACF;CACF;;MCzBY,eAAe,GAAG,eAAe,CAAC;IAC7C,KAAK,EAAE;QACL,EAAE,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK;SACf;KACF;IAED,MAAM;QACJ,OAAO,CAAC,CACN,IAAI,CAAC,EAAE,EAAE;YACP,KAAK,EAAE;gBACL,UAAU,EAAE,UAAU;aACvB;YACD,wBAAwB,EAAE,EAAE;SAC7B,CACF,CAAA;KACF;CACF;;;;"}
1
+ {"version":3,"file":"tiptap-vue-3.esm.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 // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n 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 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.value,\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'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return (contentElement || this.dom) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as unknown as ProseMirrorNodeView\n }\n}\n"],"names":["CoreEditor"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tiptap/core'), require('vue'), require('@tiptap/extension-bubble-menu'), require('@tiptap/extension-floating-menu')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@tiptap/core', 'vue', '@tiptap/extension-bubble-menu', '@tiptap/extension-floating-menu'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@tiptap/vue-3"] = {}, global.core, global.vue, global.extensionBubbleMenu, global.extensionFloatingMenu));
5
- })(this, (function (exports, core, vue, extensionBubbleMenu, extensionFloatingMenu) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tiptap/extension-bubble-menu'), require('vue'), require('@tiptap/core'), require('@tiptap/extension-floating-menu')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@tiptap/extension-bubble-menu', 'vue', '@tiptap/core', '@tiptap/extension-floating-menu'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@tiptap/vue-3"] = {}, global.extensionBubbleMenu, global.vue, global.core, global.extensionFloatingMenu));
5
+ })(this, (function (exports, extensionBubbleMenu, vue, core, extensionFloatingMenu) { 'use strict';
6
6
 
7
7
  const BubbleMenu = vue.defineComponent({
8
8
  name: 'BubbleMenu',
@@ -77,7 +77,7 @@
77
77
  this.reactiveState.value = this.view.state;
78
78
  this.reactiveExtensionStorage.value = this.extensionStorage;
79
79
  });
80
- return vue.markRaw(this);
80
+ return vue.markRaw(this); // eslint-disable-line
81
81
  }
82
82
  get state() {
83
83
  return this.reactiveState
@@ -219,6 +219,46 @@
219
219
  },
220
220
  });
221
221
 
222
+ const NodeViewContent = vue.defineComponent({
223
+ props: {
224
+ as: {
225
+ type: String,
226
+ default: 'div',
227
+ },
228
+ },
229
+ render() {
230
+ return vue.h(this.as, {
231
+ style: {
232
+ whiteSpace: 'pre-wrap',
233
+ },
234
+ 'data-node-view-content': '',
235
+ });
236
+ },
237
+ });
238
+
239
+ const NodeViewWrapper = vue.defineComponent({
240
+ props: {
241
+ as: {
242
+ type: String,
243
+ default: 'div',
244
+ },
245
+ },
246
+ inject: ['onDragStart', 'decorationClasses'],
247
+ render() {
248
+ var _a, _b;
249
+ return vue.h(this.as, {
250
+ // @ts-ignore
251
+ class: this.decorationClasses.value,
252
+ style: {
253
+ whiteSpace: 'normal',
254
+ },
255
+ 'data-node-view-wrapper': '',
256
+ // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
257
+ onDragstart: this.onDragStart,
258
+ }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
259
+ },
260
+ });
261
+
222
262
  const useEditor = (options = {}) => {
223
263
  const editor = vue.shallowRef();
224
264
  vue.onMounted(() => {
@@ -328,6 +368,10 @@
328
368
  // @ts-ignore
329
369
  // eslint-disable-next-line
330
370
  __scopeId: this.component.__scopeId,
371
+ // add support for CSS Modules
372
+ // @ts-ignore
373
+ // eslint-disable-next-line
374
+ __cssModules: this.component.__cssModules,
331
375
  });
332
376
  this.renderer = new VueRenderer(extendedComponent, {
333
377
  editor: this.editor,
@@ -345,7 +389,7 @@
345
389
  return null;
346
390
  }
347
391
  const contentElement = this.dom.querySelector('[data-node-view-content]');
348
- return contentElement || this.dom;
392
+ return (contentElement || this.dom);
349
393
  }
350
394
  update(node, decorations) {
351
395
  const updateProps = (props) => {
@@ -409,46 +453,6 @@
409
453
  };
410
454
  }
411
455
 
412
- const NodeViewWrapper = vue.defineComponent({
413
- props: {
414
- as: {
415
- type: String,
416
- default: 'div',
417
- },
418
- },
419
- inject: ['onDragStart', 'decorationClasses'],
420
- render() {
421
- var _a, _b;
422
- return vue.h(this.as, {
423
- // @ts-ignore
424
- class: this.decorationClasses.value,
425
- style: {
426
- whiteSpace: 'normal',
427
- },
428
- 'data-node-view-wrapper': '',
429
- // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
430
- onDragstart: this.onDragStart,
431
- }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
432
- },
433
- });
434
-
435
- const NodeViewContent = vue.defineComponent({
436
- props: {
437
- as: {
438
- type: String,
439
- default: 'div',
440
- },
441
- },
442
- render() {
443
- return vue.h(this.as, {
444
- style: {
445
- whiteSpace: 'pre-wrap',
446
- },
447
- 'data-node-view-content': '',
448
- });
449
- },
450
- });
451
-
452
456
  exports.BubbleMenu = BubbleMenu;
453
457
  exports.Editor = Editor;
454
458
  exports.EditorContent = EditorContent;
@@ -1 +1 @@
1
- {"version":3,"file":"tiptap-vue-3.umd.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport {\n markRaw,\n Ref,\n customRef,\n ComponentInternalInstance,\n ComponentPublicInstance,\n reactive,\n} from 'vue'\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this)\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n h,\n ref,\n Ref,\n unref,\n Teleport,\n PropType,\n defineComponent,\n DefineComponent,\n watchEffect,\n nextTick,\n onBeforeUnmount,\n getCurrentInstance,\n} from 'vue'\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import {\n h,\n ref,\n PropType,\n onMounted,\n onBeforeUnmount,\n defineComponent,\n} from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\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 { onMounted, onBeforeUnmount, shallowRef } from 'vue'\nimport { EditorOptions } from '@tiptap/core'\nimport { Editor } from './Editor'\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 { reactive, markRaw, Component } from 'vue'\nimport { Editor } from '@tiptap/core'\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n NodeViewRendererOptions,\n} from '@tiptap/core'\nimport {\n ref,\n Ref,\n provide,\n PropType,\n Component,\n defineComponent,\n} from 'vue'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return contentElement || this.dom\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as ProseMirrorNodeView\n }\n}\n","import { h, defineComponent } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\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 // @ts-ignore\n class: this.decorationClasses.value,\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 { h, defineComponent } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n },\n )\n },\n})\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
1
+ {"version":3,"file":"tiptap-vue-3.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 // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<BubbleMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<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 pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\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 { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from 'prosemirror-state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance,\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState\n ? this.reactiveState.value\n : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage\n ? this.reactiveExtensionStorage.value\n : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n 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 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.value,\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'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update: ((props: {\n oldNode: ProseMirrorNode,\n oldDecorations: Decoration[],\n newNode: ProseMirrorNode,\n newDecorations: Decoration[],\n updateProps: () => void,\n }) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return (contentElement || this.dom) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Component, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as unknown as ProseMirrorNodeView\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
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.0.0-beta.90",
4
+ "version": "2.0.0-beta.95",
5
5
  "homepage": "https://tiptap.dev",
6
6
  "keywords": [
7
7
  "tiptap",
@@ -28,10 +28,10 @@
28
28
  "vue": "^3.0.0"
29
29
  },
30
30
  "dependencies": {
31
- "@tiptap/extension-bubble-menu": "^2.0.0-beta.55",
32
- "@tiptap/extension-floating-menu": "^2.0.0-beta.50",
33
- "prosemirror-state": "^1.3.4",
34
- "prosemirror-view": "^1.23.6"
31
+ "@tiptap/extension-bubble-menu": "^2.0.0-beta.60",
32
+ "@tiptap/extension-floating-menu": "^2.0.0-beta.55",
33
+ "prosemirror-state": "^1.4.0",
34
+ "prosemirror-view": "^1.25.0"
35
35
  },
36
36
  "repository": {
37
37
  "type": "git",
@@ -39,5 +39,5 @@
39
39
  "directory": "packages/vue-3"
40
40
  },
41
41
  "sideEffects": false,
42
- "gitHead": "82759a898a77aa0bf6a459178021e86b6713ef39"
42
+ "gitHead": "a1e612bf897a14065b4f9ba6d48925c97d136811"
43
43
  }
package/src/BubbleMenu.ts CHANGED
@@ -1,12 +1,12 @@
1
+ import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'
1
2
  import {
3
+ defineComponent,
2
4
  h,
3
- ref,
4
- PropType,
5
- onMounted,
6
5
  onBeforeUnmount,
7
- defineComponent,
6
+ onMounted,
7
+ PropType,
8
+ ref,
8
9
  } from 'vue'
9
- import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'
10
10
 
11
11
  export const BubbleMenu = defineComponent({
12
12
  name: 'BubbleMenu',
package/src/Editor.ts CHANGED
@@ -1,13 +1,14 @@
1
- import { EditorState, Plugin, PluginKey } from 'prosemirror-state'
2
1
  import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'
2
+ import { EditorState, Plugin, PluginKey } from 'prosemirror-state'
3
3
  import {
4
- markRaw,
5
- Ref,
6
- customRef,
7
4
  ComponentInternalInstance,
8
5
  ComponentPublicInstance,
6
+ customRef,
7
+ markRaw,
9
8
  reactive,
9
+ Ref,
10
10
  } from 'vue'
11
+
11
12
  import { VueRenderer } from './VueRenderer'
12
13
 
13
14
  function useDebouncedRef<T>(value: T) {
@@ -56,7 +57,7 @@ export class Editor extends CoreEditor {
56
57
  this.reactiveExtensionStorage.value = this.extensionStorage
57
58
  })
58
59
 
59
- return markRaw(this)
60
+ return markRaw(this) // eslint-disable-line
60
61
  }
61
62
 
62
63
  get state() {
@@ -1,17 +1,18 @@
1
1
  import {
2
+ DefineComponent,
3
+ defineComponent,
4
+ getCurrentInstance,
2
5
  h,
3
- ref,
6
+ nextTick,
7
+ onBeforeUnmount,
8
+ PropType,
4
9
  Ref,
5
- unref,
10
+ ref,
6
11
  Teleport,
7
- PropType,
8
- defineComponent,
9
- DefineComponent,
12
+ unref,
10
13
  watchEffect,
11
- nextTick,
12
- onBeforeUnmount,
13
- getCurrentInstance,
14
14
  } from 'vue'
15
+
15
16
  import { Editor } from './Editor'
16
17
 
17
18
  export const EditorContent = defineComponent({
@@ -1,12 +1,12 @@
1
+ import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'
1
2
  import {
3
+ defineComponent,
2
4
  h,
3
- ref,
4
- PropType,
5
- onMounted,
6
5
  onBeforeUnmount,
7
- defineComponent,
6
+ onMounted,
7
+ PropType,
8
+ ref,
8
9
  } from 'vue'
9
- import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'
10
10
 
11
11
  export const FloatingMenu = defineComponent({
12
12
  name: 'FloatingMenu',
@@ -1,4 +1,4 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { defineComponent, h } from 'vue'
2
2
 
3
3
  export const NodeViewContent = defineComponent({
4
4
  props: {
@@ -9,13 +9,11 @@ export const NodeViewContent = defineComponent({
9
9
  },
10
10
 
11
11
  render() {
12
- return h(
13
- this.as, {
14
- style: {
15
- whiteSpace: 'pre-wrap',
16
- },
17
- 'data-node-view-content': '',
12
+ return h(this.as, {
13
+ style: {
14
+ whiteSpace: 'pre-wrap',
18
15
  },
19
- )
16
+ 'data-node-view-content': '',
17
+ })
20
18
  },
21
19
  })
@@ -1,4 +1,4 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { defineComponent, h } from 'vue'
2
2
 
3
3
  export const NodeViewWrapper = defineComponent({
4
4
  props: {
@@ -12,7 +12,8 @@ export const NodeViewWrapper = defineComponent({
12
12
 
13
13
  render() {
14
14
  return h(
15
- this.as, {
15
+ this.as,
16
+ {
16
17
  // @ts-ignore
17
18
  class: this.decorationClasses.value,
18
19
  style: {
@@ -2,54 +2,55 @@ import {
2
2
  NodeView,
3
3
  NodeViewProps,
4
4
  NodeViewRenderer,
5
- NodeViewRendererProps,
6
5
  NodeViewRendererOptions,
6
+ NodeViewRendererProps,
7
7
  } from '@tiptap/core'
8
+ import { Node as ProseMirrorNode } from 'prosemirror-model'
9
+ import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
8
10
  import {
9
- ref,
10
- Ref,
11
- provide,
12
- PropType,
13
11
  Component,
14
12
  defineComponent,
13
+ PropType,
14
+ provide,
15
+ Ref,
16
+ ref,
15
17
  } from 'vue'
16
- import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
17
- import { Node as ProseMirrorNode } from 'prosemirror-model'
18
+
18
19
  import { Editor } from './Editor'
19
20
  import { VueRenderer } from './VueRenderer'
20
21
 
21
22
  export const nodeViewProps = {
22
23
  editor: {
23
24
  type: Object as PropType<NodeViewProps['editor']>,
24
- required: true,
25
+ required: true as const,
25
26
  },
26
27
  node: {
27
28
  type: Object as PropType<NodeViewProps['node']>,
28
- required: true,
29
+ required: true as const,
29
30
  },
30
31
  decorations: {
31
32
  type: Object as PropType<NodeViewProps['decorations']>,
32
- required: true,
33
+ required: true as const,
33
34
  },
34
35
  selected: {
35
36
  type: Boolean as PropType<NodeViewProps['selected']>,
36
- required: true,
37
+ required: true as const,
37
38
  },
38
39
  extension: {
39
40
  type: Object as PropType<NodeViewProps['extension']>,
40
- required: true,
41
+ required: true as const,
41
42
  },
42
43
  getPos: {
43
44
  type: Function as PropType<NodeViewProps['getPos']>,
44
- required: true,
45
+ required: true as const,
45
46
  },
46
47
  updateAttributes: {
47
48
  type: Function as PropType<NodeViewProps['updateAttributes']>,
48
- required: true,
49
+ required: true as const,
49
50
  },
50
51
  deleteNode: {
51
52
  type: Function as PropType<NodeViewProps['deleteNode']>,
52
- required: true,
53
+ required: true as const,
53
54
  },
54
55
  }
55
56
 
@@ -101,6 +102,10 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
101
102
  // @ts-ignore
102
103
  // eslint-disable-next-line
103
104
  __scopeId: this.component.__scopeId,
105
+ // add support for CSS Modules
106
+ // @ts-ignore
107
+ // eslint-disable-next-line
108
+ __cssModules: this.component.__cssModules,
104
109
  })
105
110
 
106
111
  this.renderer = new VueRenderer(extendedComponent, {
@@ -114,7 +119,7 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
114
119
  throw Error('Please use the NodeViewWrapper component for your node view.')
115
120
  }
116
121
 
117
- return this.renderer.element
122
+ return this.renderer.element as HTMLElement
118
123
  }
119
124
 
120
125
  get contentDOM() {
@@ -124,7 +129,7 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
124
129
 
125
130
  const contentElement = this.dom.querySelector('[data-node-view-content]')
126
131
 
127
- return contentElement || this.dom
132
+ return (contentElement || this.dom) as HTMLElement | null
128
133
  }
129
134
 
130
135
  update(node: ProseMirrorNode, decorations: Decoration[]) {
@@ -200,6 +205,6 @@ export function VueNodeViewRenderer(component: Component, options?: Partial<VueN
200
205
  return {}
201
206
  }
202
207
 
203
- return new VueNodeView(component, props, options) as ProseMirrorNodeView
208
+ return new VueNodeView(component, props, options) as unknown as ProseMirrorNodeView
204
209
  }
205
210
  }
@@ -1,5 +1,6 @@
1
- import { reactive, markRaw, Component } from 'vue'
2
1
  import { Editor } from '@tiptap/core'
2
+ import { Component, markRaw, reactive } from 'vue'
3
+
3
4
  import { Editor as ExtendedEditor } from './Editor'
4
5
 
5
6
  export interface VueRendererOptions {
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
- export * from '@tiptap/core'
2
1
  export * from './BubbleMenu'
3
2
  export { Editor } from './Editor'
4
3
  export * from './EditorContent'
5
4
  export * from './FloatingMenu'
5
+ export * from './NodeViewContent'
6
+ export * from './NodeViewWrapper'
6
7
  export * from './useEditor'
7
- export * from './VueRenderer'
8
8
  export * from './VueNodeViewRenderer'
9
- export * from './NodeViewWrapper'
10
- export * from './NodeViewContent'
9
+ export * from './VueRenderer'
10
+ export * from '@tiptap/core'
package/src/useEditor.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { onMounted, onBeforeUnmount, shallowRef } from 'vue'
2
1
  import { EditorOptions } from '@tiptap/core'
2
+ import { onBeforeUnmount, onMounted, shallowRef } from 'vue'
3
+
3
4
  import { Editor } from './Editor'
4
5
 
5
6
  export const useEditor = (options: Partial<EditorOptions> = {}) => {