@tiptap/vue-3 2.0.0-beta.89 → 2.0.0-beta.91

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.
@@ -25,24 +25,31 @@ export declare const BubbleMenu: import("vue").DefineComponent<{
25
25
  };
26
26
  }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
27
27
  [key: string]: any;
28
- }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
29
- pluginKey?: unknown;
30
- editor?: unknown;
31
- tippyOptions?: unknown;
32
- shouldShow?: unknown;
33
- } & {
34
- editor: import("@tiptap/core").Editor;
35
- tippyOptions: Partial<import("tippy.js").Props> | undefined;
36
- shouldShow: (props: {
37
- editor: import("@tiptap/core").Editor;
38
- view: import("prosemirror-view").EditorView<any>;
39
- state: import("prosemirror-state").EditorState<any>;
40
- oldState?: import("prosemirror-state").EditorState<any> | undefined;
41
- from: number;
42
- to: number;
43
- }) => boolean;
44
- pluginKey: any;
45
- } & {}>, {
28
+ }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
29
+ pluginKey: {
30
+ type: null;
31
+ default: string;
32
+ };
33
+ editor: {
34
+ type: PropType<import("@tiptap/core").Editor>;
35
+ required: true;
36
+ };
37
+ tippyOptions: {
38
+ type: PropType<Partial<import("tippy.js").Props> | undefined>;
39
+ default: () => {};
40
+ };
41
+ shouldShow: {
42
+ type: PropType<(props: {
43
+ editor: import("@tiptap/core").Editor;
44
+ view: import("prosemirror-view").EditorView<any>;
45
+ state: import("prosemirror-state").EditorState<any>;
46
+ oldState?: import("prosemirror-state").EditorState<any> | undefined;
47
+ from: number;
48
+ to: number;
49
+ }) => boolean>;
50
+ default: null;
51
+ };
52
+ }>>, {
46
53
  tippyOptions: Partial<import("tippy.js").Props> | undefined;
47
54
  shouldShow: (props: {
48
55
  editor: import("@tiptap/core").Editor;
@@ -7,10 +7,11 @@ export declare const EditorContent: DefineComponent<{
7
7
  };
8
8
  }, {
9
9
  rootEl: Ref<Element | undefined>;
10
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
11
- editor?: unknown;
12
- } & {
13
- editor: Editor;
14
- } & {}>, {
10
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
11
+ editor: {
12
+ default: null;
13
+ type: PropType<Editor>;
14
+ };
15
+ }>>, {
15
16
  editor: Editor;
16
17
  }>;
@@ -23,22 +23,29 @@ export declare const FloatingMenu: import("vue").DefineComponent<{
23
23
  };
24
24
  }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
25
25
  [key: string]: any;
26
- }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
27
- pluginKey?: unknown;
28
- editor?: unknown;
29
- tippyOptions?: unknown;
30
- shouldShow?: unknown;
31
- } & {
32
- editor: import("@tiptap/core").Editor;
33
- tippyOptions: Partial<import("tippy.js").Props> | undefined;
34
- shouldShow: (props: {
35
- editor: import("@tiptap/core").Editor;
36
- view: import("prosemirror-view").EditorView<any>;
37
- state: import("prosemirror-state").EditorState<any>;
38
- oldState?: import("prosemirror-state").EditorState<any> | undefined;
39
- }) => boolean;
40
- pluginKey: any;
41
- } & {}>, {
26
+ }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
27
+ pluginKey: {
28
+ type: null;
29
+ default: string;
30
+ };
31
+ editor: {
32
+ type: PropType<import("@tiptap/core").Editor>;
33
+ required: true;
34
+ };
35
+ tippyOptions: {
36
+ type: PropType<Partial<import("tippy.js").Props> | undefined>;
37
+ default: () => {};
38
+ };
39
+ shouldShow: {
40
+ type: PropType<(props: {
41
+ editor: import("@tiptap/core").Editor;
42
+ view: import("prosemirror-view").EditorView<any>;
43
+ state: import("prosemirror-state").EditorState<any>;
44
+ oldState?: import("prosemirror-state").EditorState<any> | undefined;
45
+ }) => boolean>;
46
+ default: null;
47
+ };
48
+ }>>, {
42
49
  tippyOptions: Partial<import("tippy.js").Props> | undefined;
43
50
  shouldShow: (props: {
44
51
  editor: import("@tiptap/core").Editor;
@@ -3,10 +3,11 @@ export declare const NodeViewContent: import("vue").DefineComponent<{
3
3
  type: StringConstructor;
4
4
  default: string;
5
5
  };
6
- }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
7
- as?: unknown;
8
- } & {
9
- as: string;
10
- } & {}>, {
6
+ }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
7
+ as: {
8
+ type: StringConstructor;
9
+ default: string;
10
+ };
11
+ }>>, {
11
12
  as: string;
12
13
  }>;
@@ -3,10 +3,11 @@ export declare const NodeViewWrapper: import("vue").DefineComponent<{
3
3
  type: StringConstructor;
4
4
  default: string;
5
5
  };
6
- }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
7
- as?: unknown;
8
- } & {
9
- as: string;
10
- } & {}>, {
6
+ }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
7
+ as: {
8
+ type: StringConstructor;
9
+ default: string;
10
+ };
11
+ }>>, {
11
12
  as: string;
12
13
  }>;
@@ -5,37 +5,37 @@ import { Node as ProseMirrorNode } from 'prosemirror-model';
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
11
  type: PropType<ProseMirrorNode<any>>;
12
- required: boolean;
12
+ required: true;
13
13
  };
14
14
  decorations: {
15
15
  type: PropType<Decoration<{
16
16
  [key: string]: any;
17
17
  }>[]>;
18
- required: boolean;
18
+ required: true;
19
19
  };
20
20
  selected: {
21
21
  type: PropType<boolean>;
22
- required: boolean;
22
+ required: true;
23
23
  };
24
24
  extension: {
25
25
  type: PropType<import("@tiptap/core").Node<any, any>>;
26
- required: boolean;
26
+ required: true;
27
27
  };
28
28
  getPos: {
29
29
  type: PropType<() => number>;
30
- required: boolean;
30
+ required: true;
31
31
  };
32
32
  updateAttributes: {
33
33
  type: PropType<(attributes: Record<string, any>) => void>;
34
- required: boolean;
34
+ required: true;
35
35
  };
36
36
  deleteNode: {
37
37
  type: PropType<() => void>;
38
- required: boolean;
38
+ required: true;
39
39
  };
40
40
  };
41
41
  export interface VueNodeViewRendererOptions extends NodeViewRendererOptions {
@@ -331,6 +331,10 @@ class VueNodeView extends core.NodeView {
331
331
  // @ts-ignore
332
332
  // eslint-disable-next-line
333
333
  __scopeId: this.component.__scopeId,
334
+ // add support for CSS Modules
335
+ // @ts-ignore
336
+ // eslint-disable-next-line
337
+ __cssModules: this.component.__cssModules,
334
338
  });
335
339
  this.renderer = new VueRenderer(extendedComponent, {
336
340
  editor: this.editor,
@@ -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/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 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\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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"}
@@ -328,6 +328,10 @@ class VueNodeView extends NodeView {
328
328
  // @ts-ignore
329
329
  // eslint-disable-next-line
330
330
  __scopeId: this.component.__scopeId,
331
+ // add support for CSS Modules
332
+ // @ts-ignore
333
+ // eslint-disable-next-line
334
+ __cssModules: this.component.__cssModules,
331
335
  });
332
336
  this.renderer = new VueRenderer(extendedComponent, {
333
337
  editor: this.editor,
@@ -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":"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"}
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 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\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":"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"}
@@ -328,6 +328,10 @@
328
328
  // @ts-ignore
329
329
  // eslint-disable-next-line
330
330
  __scopeId: this.component.__scopeId,
331
+ // add support for CSS Modules
332
+ // @ts-ignore
333
+ // eslint-disable-next-line
334
+ __cssModules: this.component.__cssModules,
331
335
  });
332
336
  this.renderer = new VueRenderer(extendedComponent, {
333
337
  editor: this.editor,
@@ -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/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 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\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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"}
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.89",
4
+ "version": "2.0.0-beta.91",
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.54",
32
- "@tiptap/extension-floating-menu": "^2.0.0-beta.49",
31
+ "@tiptap/extension-bubble-menu": "^2.0.0-beta.56",
32
+ "@tiptap/extension-floating-menu": "^2.0.0-beta.51",
33
33
  "prosemirror-state": "^1.3.4",
34
- "prosemirror-view": "^1.23.5"
34
+ "prosemirror-view": "^1.23.6"
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": "9e48f8c23960198b166b23804c094f2ddccc3927"
42
+ "gitHead": "90e719c711dbccae6a7333956d543fb93789f3d3"
43
43
  }
@@ -21,35 +21,35 @@ import { VueRenderer } from './VueRenderer'
21
21
  export const nodeViewProps = {
22
22
  editor: {
23
23
  type: Object as PropType<NodeViewProps['editor']>,
24
- required: true,
24
+ required: true as const,
25
25
  },
26
26
  node: {
27
27
  type: Object as PropType<NodeViewProps['node']>,
28
- required: true,
28
+ required: true as const,
29
29
  },
30
30
  decorations: {
31
31
  type: Object as PropType<NodeViewProps['decorations']>,
32
- required: true,
32
+ required: true as const,
33
33
  },
34
34
  selected: {
35
35
  type: Boolean as PropType<NodeViewProps['selected']>,
36
- required: true,
36
+ required: true as const,
37
37
  },
38
38
  extension: {
39
39
  type: Object as PropType<NodeViewProps['extension']>,
40
- required: true,
40
+ required: true as const,
41
41
  },
42
42
  getPos: {
43
43
  type: Function as PropType<NodeViewProps['getPos']>,
44
- required: true,
44
+ required: true as const,
45
45
  },
46
46
  updateAttributes: {
47
47
  type: Function as PropType<NodeViewProps['updateAttributes']>,
48
- required: true,
48
+ required: true as const,
49
49
  },
50
50
  deleteNode: {
51
51
  type: Function as PropType<NodeViewProps['deleteNode']>,
52
- required: true,
52
+ required: true as const,
53
53
  },
54
54
  }
55
55
 
@@ -101,6 +101,10 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
101
101
  // @ts-ignore
102
102
  // eslint-disable-next-line
103
103
  __scopeId: this.component.__scopeId,
104
+ // add support for CSS Modules
105
+ // @ts-ignore
106
+ // eslint-disable-next-line
107
+ __cssModules: this.component.__cssModules,
104
108
  })
105
109
 
106
110
  this.renderer = new VueRenderer(extendedComponent, {