UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

1 lines 28.3 kB
{"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]}