{"version":3,"file":"vue-3.cjs","sources":["../../../../../node_modules/.pnpm/@tiptap+vue-3@2.12.0_@tiptap+core@2.12.0_@tiptap+pm@2.12.0__@tiptap+pm@2.12.0_vue@3.4.15_typescript@5.8.3_/node_modules/@tiptap/vue-3/dist/index.js"],"sourcesContent":["import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';\nimport { defineComponent, ref, onMounted, onBeforeUnmount, h, markRaw, customRef, getCurrentInstance, watchEffect, nextTick, unref, shallowRef, reactive, render, provide } from 'vue';\nimport { Editor as Editor$1, NodeView } from '@tiptap/core';\nexport * from '@tiptap/core';\nimport { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';\n\nconst BubbleMenu = defineComponent({\n    name: 'BubbleMenu',\n    props: {\n        pluginKey: {\n            type: [String, Object],\n            default: 'bubbleMenu',\n        },\n        editor: {\n            type: Object,\n            required: true,\n        },\n        updateDelay: {\n            type: Number,\n            default: undefined,\n        },\n        tippyOptions: {\n            type: Object,\n            default: () => ({}),\n        },\n        shouldShow: {\n            type: Function,\n            default: null,\n        },\n    },\n    setup(props, { slots }) {\n        const root = ref(null);\n        onMounted(() => {\n            const { updateDelay, editor, pluginKey, shouldShow, tippyOptions, } = props;\n            editor.registerPlugin(BubbleMenuPlugin({\n                updateDelay,\n                editor,\n                element: root.value,\n                pluginKey,\n                shouldShow,\n                tippyOptions,\n            }));\n        });\n        onBeforeUnmount(() => {\n            const { pluginKey, editor } = props;\n            editor.unregisterPlugin(pluginKey);\n        });\n        return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n    },\n});\n\n/* eslint-disable react-hooks/rules-of-hooks */\nfunction useDebouncedRef(value) {\n    return customRef((track, trigger) => {\n        return {\n            get() {\n                track();\n                return value;\n            },\n            set(newValue) {\n                // update state\n                value = newValue;\n                // update view as soon as possible\n                requestAnimationFrame(() => {\n                    requestAnimationFrame(() => {\n                        trigger();\n                    });\n                });\n            },\n        };\n    });\n}\nclass Editor extends Editor$1 {\n    constructor(options = {}) {\n        super(options);\n        this.contentComponent = null;\n        this.appContext = null;\n        this.reactiveState = useDebouncedRef(this.view.state);\n        this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);\n        this.on('beforeTransaction', ({ nextState }) => {\n            this.reactiveState.value = nextState;\n            this.reactiveExtensionStorage.value = this.extensionStorage;\n        });\n        return markRaw(this); // eslint-disable-line\n    }\n    get state() {\n        return this.reactiveState ? this.reactiveState.value : this.view.state;\n    }\n    get storage() {\n        return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage;\n    }\n    /**\n     * Register a ProseMirror plugin.\n     */\n    registerPlugin(plugin, handlePlugins) {\n        const nextState = super.registerPlugin(plugin, handlePlugins);\n        if (this.reactiveState) {\n            this.reactiveState.value = nextState;\n        }\n        return nextState;\n    }\n    /**\n     * Unregister a ProseMirror plugin.\n     */\n    unregisterPlugin(nameOrPluginKey) {\n        const nextState = super.unregisterPlugin(nameOrPluginKey);\n        if (this.reactiveState && nextState) {\n            this.reactiveState.value = nextState;\n        }\n        return nextState;\n    }\n}\n\nconst EditorContent = defineComponent({\n    name: 'EditorContent',\n    props: {\n        editor: {\n            default: null,\n            type: Object,\n        },\n    },\n    setup(props) {\n        const rootEl = ref();\n        const instance = getCurrentInstance();\n        watchEffect(() => {\n            const editor = props.editor;\n            if (editor && editor.options.element && rootEl.value) {\n                nextTick(() => {\n                    if (!rootEl.value || !editor.options.element.firstChild) {\n                        return;\n                    }\n                    const element = unref(rootEl.value);\n                    rootEl.value.append(...editor.options.element.childNodes);\n                    // @ts-ignore\n                    editor.contentComponent = instance.ctx._;\n                    if (instance) {\n                        editor.appContext = {\n                            ...instance.appContext,\n                            // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n                            // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n                            // @ts-expect-error forward instance's 'provides' into appContext\n                            provides: instance.provides,\n                        };\n                    }\n                    editor.setOptions({\n                        element,\n                    });\n                    editor.createNodeViews();\n                });\n            }\n        });\n        onBeforeUnmount(() => {\n            const editor = props.editor;\n            if (!editor) {\n                return;\n            }\n            editor.contentComponent = null;\n            editor.appContext = null;\n        });\n        return { rootEl };\n    },\n    render() {\n        return h('div', {\n            ref: (el) => { this.rootEl = el; },\n        });\n    },\n});\n\nconst FloatingMenu = defineComponent({\n    name: 'FloatingMenu',\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        editor: {\n            type: Object,\n            required: true,\n        },\n        tippyOptions: {\n            type: Object,\n            default: () => ({}),\n        },\n        shouldShow: {\n            type: Function,\n            default: null,\n        },\n    },\n    setup(props, { slots }) {\n        const root = ref(null);\n        onMounted(() => {\n            const { pluginKey, editor, tippyOptions, shouldShow, } = props;\n            editor.registerPlugin(FloatingMenuPlugin({\n                pluginKey,\n                editor,\n                element: root.value,\n                tippyOptions,\n                shouldShow,\n            }));\n        });\n        onBeforeUnmount(() => {\n            const { pluginKey, editor } = props;\n            editor.unregisterPlugin(pluginKey);\n        });\n        return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n    },\n});\n\nconst NodeViewContent = defineComponent({\n    name: 'NodeViewContent',\n    props: {\n        as: {\n            type: String,\n            default: 'div',\n        },\n    },\n    render() {\n        return h(this.as, {\n            style: {\n                whiteSpace: 'pre-wrap',\n            },\n            'data-node-view-content': '',\n        });\n    },\n});\n\nconst NodeViewWrapper = defineComponent({\n    name: 'NodeViewWrapper',\n    props: {\n        as: {\n            type: String,\n            default: 'div',\n        },\n    },\n    inject: ['onDragStart', 'decorationClasses'],\n    render() {\n        var _a, _b;\n        return h(this.as, {\n            // @ts-ignore\n            class: this.decorationClasses,\n            style: {\n                whiteSpace: 'normal',\n            },\n            'data-node-view-wrapper': '',\n            // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n            onDragstart: this.onDragStart,\n        }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));\n    },\n});\n\nconst useEditor = (options = {}) => {\n    const editor = shallowRef();\n    onMounted(() => {\n        editor.value = new Editor(options);\n    });\n    onBeforeUnmount(() => {\n        var _a, _b, _c;\n        // Cloning root node (and its children) to avoid content being lost by destroy\n        const nodes = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.options.element;\n        const newEl = nodes === null || nodes === void 0 ? void 0 : nodes.cloneNode(true);\n        (_b = nodes === null || nodes === void 0 ? void 0 : nodes.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(newEl, nodes);\n        (_c = editor.value) === null || _c === void 0 ? void 0 : _c.destroy();\n    });\n    return editor;\n};\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nclass VueRenderer {\n    constructor(component, { props = {}, editor }) {\n        this.editor = editor;\n        this.component = markRaw(component);\n        this.el = document.createElement('div');\n        this.props = reactive(props);\n        this.renderedComponent = this.renderComponent();\n    }\n    get element() {\n        return this.renderedComponent.el;\n    }\n    get ref() {\n        var _a, _b, _c, _d;\n        // Composition API\n        if ((_b = (_a = this.renderedComponent.vNode) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.exposed) {\n            return this.renderedComponent.vNode.component.exposed;\n        }\n        // Option API\n        return (_d = (_c = this.renderedComponent.vNode) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.proxy;\n    }\n    renderComponent() {\n        let vNode = h(this.component, this.props);\n        if (this.editor.appContext) {\n            vNode.appContext = this.editor.appContext;\n        }\n        if (typeof document !== 'undefined' && this.el) {\n            render(vNode, this.el);\n        }\n        const destroy = () => {\n            if (this.el) {\n                render(null, this.el);\n            }\n            this.el = null;\n            vNode = null;\n        };\n        return { vNode, destroy, el: this.el ? this.el.firstElementChild : null };\n    }\n    updateProps(props = {}) {\n        Object.entries(props).forEach(([key, value]) => {\n            this.props[key] = value;\n        });\n        this.renderComponent();\n    }\n    destroy() {\n        this.renderedComponent.destroy();\n    }\n}\n\n/* eslint-disable no-underscore-dangle */\nconst nodeViewProps = {\n    editor: {\n        type: Object,\n        required: true,\n    },\n    node: {\n        type: Object,\n        required: true,\n    },\n    decorations: {\n        type: Object,\n        required: true,\n    },\n    selected: {\n        type: Boolean,\n        required: true,\n    },\n    extension: {\n        type: Object,\n        required: true,\n    },\n    getPos: {\n        type: Function,\n        required: true,\n    },\n    updateAttributes: {\n        type: Function,\n        required: true,\n    },\n    deleteNode: {\n        type: Function,\n        required: true,\n    },\n    view: {\n        type: Object,\n        required: true,\n    },\n    innerDecorations: {\n        type: Object,\n        required: true,\n    },\n    HTMLAttributes: {\n        type: Object,\n        required: true,\n    },\n};\nclass VueNodeView extends NodeView {\n    mount() {\n        const props = {\n            editor: this.editor,\n            node: this.node,\n            decorations: this.decorations,\n            innerDecorations: this.innerDecorations,\n            view: this.view,\n            selected: false,\n            extension: this.extension,\n            HTMLAttributes: this.HTMLAttributes,\n            getPos: () => this.getPos(),\n            updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n            deleteNode: () => this.deleteNode(),\n        };\n        const onDragStart = this.onDragStart.bind(this);\n        this.decorationClasses = ref(this.getDecorationClasses());\n        const extendedComponent = defineComponent({\n            extends: { ...this.component },\n            props: Object.keys(props),\n            template: this.component.template,\n            setup: reactiveProps => {\n                var _a, _b;\n                provide('onDragStart', onDragStart);\n                provide('decorationClasses', this.decorationClasses);\n                return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a, reactiveProps, {\n                    expose: () => undefined,\n                });\n            },\n            // add support for scoped styles\n            // @ts-ignore\n            // eslint-disable-next-line\n            __scopeId: this.component.__scopeId,\n            // add support for CSS Modules\n            // @ts-ignore\n            // eslint-disable-next-line\n            __cssModules: this.component.__cssModules,\n            // add support for vue devtools\n            // @ts-ignore\n            // eslint-disable-next-line\n            __name: this.component.__name,\n            // @ts-ignore\n            // eslint-disable-next-line\n            __file: this.component.__file,\n        });\n        this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n        this.editor.on('selectionUpdate', this.handleSelectionUpdate);\n        this.renderer = new VueRenderer(extendedComponent, {\n            editor: this.editor,\n            props,\n        });\n    }\n    /**\n     * Return the DOM element.\n     * This is the element that will be used to display the node view.\n     */\n    get dom() {\n        if (!this.renderer.element || !this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n            throw Error('Please use the NodeViewWrapper component for your node view.');\n        }\n        return this.renderer.element;\n    }\n    /**\n     * Return the content DOM element.\n     * This is the element that will be used to display the rich-text content of the node.\n     */\n    get contentDOM() {\n        if (this.node.isLeaf) {\n            return null;\n        }\n        return this.dom.querySelector('[data-node-view-content]');\n    }\n    /**\n     * On editor selection update, check if the node is selected.\n     * If it is, call `selectNode`, otherwise call `deselectNode`.\n     */\n    handleSelectionUpdate() {\n        const { from, to } = this.editor.state.selection;\n        const pos = this.getPos();\n        if (typeof pos !== 'number') {\n            return;\n        }\n        if (from <= pos && to >= pos + this.node.nodeSize) {\n            if (this.renderer.props.selected) {\n                return;\n            }\n            this.selectNode();\n        }\n        else {\n            if (!this.renderer.props.selected) {\n                return;\n            }\n            this.deselectNode();\n        }\n    }\n    /**\n     * On update, update the React component.\n     * To prevent unnecessary updates, the `update` option can be used.\n     */\n    update(node, decorations, innerDecorations) {\n        const rerenderComponent = (props) => {\n            this.decorationClasses.value = this.getDecorationClasses();\n            this.renderer.updateProps(props);\n        };\n        if (typeof this.options.update === 'function') {\n            const oldNode = this.node;\n            const oldDecorations = this.decorations;\n            const oldInnerDecorations = this.innerDecorations;\n            this.node = node;\n            this.decorations = decorations;\n            this.innerDecorations = innerDecorations;\n            return this.options.update({\n                oldNode,\n                oldDecorations,\n                newNode: node,\n                newDecorations: decorations,\n                oldInnerDecorations,\n                innerDecorations,\n                updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n            });\n        }\n        if (node.type !== this.node.type) {\n            return false;\n        }\n        if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n            return true;\n        }\n        this.node = node;\n        this.decorations = decorations;\n        this.innerDecorations = innerDecorations;\n        rerenderComponent({ node, decorations, innerDecorations });\n        return true;\n    }\n    /**\n     * Select the node.\n     * Add the `selected` prop and the `ProseMirror-selectednode` class.\n     */\n    selectNode() {\n        this.renderer.updateProps({\n            selected: true,\n        });\n        if (this.renderer.element) {\n            this.renderer.element.classList.add('ProseMirror-selectednode');\n        }\n    }\n    /**\n     * Deselect the node.\n     * Remove the `selected` prop and the `ProseMirror-selectednode` class.\n     */\n    deselectNode() {\n        this.renderer.updateProps({\n            selected: false,\n        });\n        if (this.renderer.element) {\n            this.renderer.element.classList.remove('ProseMirror-selectednode');\n        }\n    }\n    getDecorationClasses() {\n        return (this.decorations\n            // @ts-ignore\n            .map(item => item.type.attrs.class)\n            .flat()\n            .join(' '));\n    }\n    destroy() {\n        this.renderer.destroy();\n        this.editor.off('selectionUpdate', this.handleSelectionUpdate);\n    }\n}\nfunction VueNodeViewRenderer(component, options) {\n    return props => {\n        // try to get the parent component\n        // this is important for vue devtools to show the component hierarchy correctly\n        // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n        if (!props.editor.contentComponent) {\n            return {};\n        }\n        // check for class-component and normalize if neccessary\n        const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n            ? component.__vccOpts\n            : component;\n        return new VueNodeView(normalizedComponent, props, options);\n    };\n}\n\nexport { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps, useEditor };\n//# sourceMappingURL=index.js.map\n"],"names":["BubbleMenu","defineComponent","props","slots","root","ref","onMounted","updateDelay","editor","pluginKey","shouldShow","tippyOptions","BubbleMenuPlugin","onBeforeUnmount","_a","h","useDebouncedRef","value","customRef","track","trigger","newValue","Editor","Editor$1","options","nextState","markRaw","plugin","handlePlugins","nameOrPluginKey","EditorContent","rootEl","instance","getCurrentInstance","watchEffect","nextTick","element","unref","el","FloatingMenu","FloatingMenuPlugin","NodeViewContent","NodeViewWrapper","_b","useEditor","shallowRef","_c","nodes","newEl","VueRenderer","component","reactive","_d","vNode","render","key","nodeViewProps","VueNodeView","NodeView","attributes","onDragStart","extendedComponent","reactiveProps","provide","from","to","pos","node","decorations","innerDecorations","rerenderComponent","oldNode","oldDecorations","oldInnerDecorations","item","VueNodeViewRenderer","normalizedComponent"],"mappings":"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","x_google_ignoreList":[0]}