{"version":3,"sources":["../src/index.ts","../src/Editor.ts","../src/EditorContent.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/VueNodeViewRenderer.ts","../src/Vue.ts","../src/VueRenderer.ts"],"sourcesContent":["export { Editor } from './Editor.js'\nexport * from './EditorContent.js'\nexport * from './NodeViewContent.js'\nexport * from './NodeViewWrapper.js'\nexport * from './VueNodeViewRenderer.js'\nexport * from './VueRenderer.js'\nexport * from '@tiptap/core'\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport type Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n  public contentComponent: Vue | null = null\n}\n","import type { Component, CreateElement, PropType } from 'vue'\nimport type Vue from 'vue'\n\nimport type { Editor } from './Editor.js'\n\nexport interface EditorContentInterface extends Vue {\n  editor: Editor\n}\n\nexport const EditorContent: Component = {\n  name: 'EditorContent',\n\n  props: {\n    editor: {\n      default: null,\n      type: Object as PropType<Editor>,\n    },\n  },\n\n  watch: {\n    editor: {\n      immediate: true,\n      handler(this: EditorContentInterface, editor: Editor) {\n        if (editor && editor.options.element) {\n          this.$nextTick(() => {\n            const element = this.$el\n\n            if (!element || !editor.view.dom?.parentNode) {\n              return\n            }\n\n            element.append(...editor.view.dom.parentNode.childNodes)\n            editor.contentComponent = this\n\n            editor.setOptions({\n              element,\n            })\n\n            editor.createNodeViews()\n          })\n        }\n      },\n    },\n  },\n\n  render(createElement: CreateElement) {\n    return createElement('div')\n  },\n\n  beforeDestroy(this: EditorContentInterface) {\n    const { editor } = this\n\n    if (!editor) {\n      return\n    }\n\n    if (!editor.isDestroyed) {\n      editor.view.setProps({\n        nodeViews: {},\n      })\n    }\n\n    editor.contentComponent = null\n\n    if (!editor.view.dom?.parentNode) {\n      return\n    }\n\n    // TODO using the new editor.mount method might allow us to remove this\n    const newElement = document.createElement('div')\n\n    newElement.append(...editor.view.dom.parentNode.childNodes)\n\n    editor.setOptions({\n      element: newElement,\n    })\n  },\n}\n","import type { Component, CreateElement } from 'vue'\nimport type Vue from 'vue'\n\nexport interface NodeViewContentInterface extends Vue {\n  as: string\n}\n\nexport const NodeViewContent: Component = {\n  props: {\n    as: {\n      type: String,\n      default: 'div',\n    },\n  },\n\n  render(this: NodeViewContentInterface, createElement: CreateElement) {\n    return createElement(this.as, {\n      style: {\n        whiteSpace: 'pre-wrap',\n      },\n      attrs: {\n        'data-node-view-content': '',\n      },\n    })\n  },\n}\n","import type { Component, CreateElement } from 'vue'\nimport type Vue from 'vue'\n\nexport interface NodeViewWrapperInterface extends Vue {\n  as: string\n  decorationClasses: {\n    value: string\n  }\n  onDragStart: () => void\n}\n\nexport const NodeViewWrapper: Component = {\n  props: {\n    as: {\n      type: String,\n      default: 'div',\n    },\n  },\n\n  inject: ['onDragStart', 'decorationClasses'],\n\n  render(this: NodeViewWrapperInterface, createElement: CreateElement) {\n    return createElement(\n      this.as,\n      {\n        class: this.decorationClasses.value,\n        style: {\n          whiteSpace: 'normal',\n        },\n        attrs: {\n          'data-node-view-wrapper': '',\n        },\n        on: {\n          dragstart: this.onDragStart,\n        },\n      },\n      this.$slots.default,\n    )\n  },\n}\n","import type { DecorationWithType, NodeViewProps, NodeViewRenderer, NodeViewRendererOptions } from '@tiptap/core'\nimport { cancelPositionCheck, isNodeViewSelected, NodeView, schedulePositionCheck } from '@tiptap/core'\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport type { Decoration, DecorationSource, NodeView as ProseMirrorNodeView } from '@tiptap/pm/view'\nimport type { VueConstructor } from 'vue'\nimport { booleanProp, functionProp, objectProp } from 'vue-ts-types'\n\nimport type { Editor } from './Editor.js'\nimport { Vue } from './Vue.js'\nimport { VueRenderer } from './VueRenderer.js'\n\nexport const nodeViewProps = {\n  editor: objectProp<NodeViewProps['editor']>().required,\n  node: objectProp<NodeViewProps['node']>().required,\n  decorations: objectProp<NodeViewProps['decorations']>().required,\n  selected: booleanProp().required,\n  extension: objectProp<NodeViewProps['extension']>().required,\n  getPos: functionProp<NodeViewProps['getPos']>().required,\n  updateAttributes: functionProp<NodeViewProps['updateAttributes']>().required,\n  deleteNode: functionProp<NodeViewProps['deleteNode']>().required,\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n  update:\n    | ((props: {\n        oldNode: ProseMirrorNode\n        oldDecorations: readonly Decoration[]\n        oldInnerDecorations: DecorationSource\n        newNode: ProseMirrorNode\n        newDecorations: readonly Decoration[]\n        innerDecorations: DecorationSource\n        updateProps: () => void\n      }) => boolean)\n    | null\n}\n\nclass VueNodeView extends NodeView<Vue | VueConstructor, Editor, VueNodeViewRendererOptions> {\n  renderer!: VueRenderer\n\n  /**\n   * The last known position of this node view, used to detect position-only\n   * changes that don't produce a new node object reference.\n   */\n  private currentPos: number | undefined\n\n  /**\n   * Callback registered with the per-editor position-update registry.\n   * Stored so it can be unregistered in destroy().\n   */\n  private positionCheckCallback: (() => void) | null = null\n\n  decorationClasses!: {\n    value: string\n  }\n\n  mount() {\n    const props = {\n      editor: this.editor,\n      node: this.node,\n      decorations: this.decorations as DecorationWithType[],\n      innerDecorations: this.innerDecorations,\n      view: this.view,\n      selected: false,\n      extension: this.extension,\n      HTMLAttributes: this.HTMLAttributes,\n      getPos: () => this.getPos(),\n      updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n      deleteNode: () => this.deleteNode(),\n    } satisfies NodeViewProps\n\n    const onDragStart = this.onDragStart.bind(this)\n\n    this.decorationClasses = Vue.observable({\n      value: this.getDecorationClasses(),\n    })\n\n    // @ts-ignore\n    const vue = this.editor.contentComponent?.$options._base ?? Vue // eslint-disable-line\n\n    const Component = vue.extend(this.component).extend({\n      props: Object.keys(props),\n      provide: () => {\n        return {\n          onDragStart,\n          decorationClasses: this.decorationClasses,\n        }\n      },\n    })\n\n    this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this)\n    this.editor.on('selectionUpdate', this.handleSelectionUpdate)\n    this.currentPos = this.getPos()\n\n    this.positionCheckCallback = () => {\n      // Guard against the callback firing before the renderer is fully initialized.\n      if (!this.renderer) {\n        return\n      }\n\n      const newPos = this.getPos()\n\n      if (typeof newPos !== 'number' || newPos === this.currentPos) {\n        return\n      }\n\n      this.currentPos = newPos\n\n      // Pass a fresh getPos reference so Vue's reactivity detects a prop change.\n      this.renderer.updateProps({ getPos: () => this.getPos() })\n    }\n\n    schedulePositionCheck(this.editor, this.positionCheckCallback)\n\n    this.renderer = new VueRenderer(Component, {\n      parent: this.editor.contentComponent,\n      propsData: props,\n    })\n  }\n\n  /**\n   * Return the DOM element.\n   * This is the element that will be used to display the node view.\n   */\n  get dom() {\n    if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n      throw Error('Please use the NodeViewWrapper component for your node view.')\n    }\n\n    return this.renderer.element as HTMLElement\n  }\n\n  /**\n   * Return the content DOM element.\n   * This is the element that will be used to display the rich-text content of the node.\n   */\n  get contentDOM() {\n    if (this.node.isLeaf) {\n      return null\n    }\n\n    return this.dom.querySelector('[data-node-view-content]') as HTMLElement | null\n  }\n\n  /**\n   * On editor selection update, check if the node is selected.\n   * If it is, call `selectNode`, otherwise call `deselectNode`.\n   */\n  handleSelectionUpdate() {\n    const pos = this.getPos()\n\n    if (typeof pos !== 'number') {\n      return\n    }\n\n    const isSelected = isNodeViewSelected({\n      selection: this.editor.state.selection,\n      pos,\n      nodeSize: this.node.nodeSize,\n      selectedOnTextSelection: this.options.selectedOnTextSelection,\n    })\n\n    if (isSelected) {\n      if (this.renderer.ref.$props.selected) {\n        return\n      }\n\n      this.selectNode()\n    } else {\n      if (!this.renderer.ref.$props.selected) {\n        return\n      }\n\n      this.deselectNode()\n    }\n  }\n\n  /**\n   * On update, update the React component.\n   * To prevent unnecessary updates, the `update` option can be used.\n   */\n  update(node: ProseMirrorNode, decorations: readonly Decoration[], innerDecorations: DecorationSource): boolean {\n    const rerenderComponent = (props?: Record<string, any>) => {\n      this.decorationClasses.value = this.getDecorationClasses()\n      this.renderer.updateProps(props)\n    }\n\n    if (typeof this.options.update === 'function') {\n      const oldNode = this.node\n      const oldDecorations = this.decorations\n      const oldInnerDecorations = this.innerDecorations\n\n      this.node = node\n      this.decorations = decorations\n      this.innerDecorations = innerDecorations\n      this.currentPos = this.getPos()\n\n      return this.options.update({\n        oldNode,\n        oldDecorations,\n        newNode: node,\n        newDecorations: decorations,\n        oldInnerDecorations,\n        innerDecorations,\n        updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n      })\n    }\n\n    if (node.type !== this.node.type) {\n      return false\n    }\n\n    const newPos = this.getPos()\n\n    if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n      if (newPos === this.currentPos) {\n        return true\n      }\n\n      // Position changed without a content/decoration change — trigger re-render\n      // so the component receives an up-to-date value from getPos().\n      // Pass a fresh getPos reference so Vue's reactivity detects a prop change.\n      this.currentPos = newPos\n      rerenderComponent({ node, decorations, innerDecorations, getPos: () => this.getPos() })\n      return true\n    }\n\n    this.node = node\n    this.decorations = decorations\n    this.innerDecorations = innerDecorations\n    this.currentPos = newPos\n\n    rerenderComponent({ node, decorations, innerDecorations })\n\n    return true\n  }\n\n  /**\n   * Select the node.\n   * Add the `selected` prop and the `ProseMirror-selectednode` class.\n   */\n  selectNode() {\n    this.renderer.updateProps({\n      selected: true,\n    })\n    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    this.renderer.element.classList.remove('ProseMirror-selectednode')\n  }\n\n  getDecorationClasses() {\n    return (\n      this.decorations\n        // @ts-ignore\n        .flatMap(item => item.type.attrs.class)\n        .join(' ')\n    )\n  }\n\n  destroy() {\n    this.renderer.destroy()\n    this.editor.off('selectionUpdate', this.handleSelectionUpdate)\n\n    if (this.positionCheckCallback) {\n      cancelPositionCheck(this.editor, this.positionCheckCallback)\n      this.positionCheckCallback = null\n    }\n  }\n}\n\nexport function VueNodeViewRenderer(\n  component: Vue | VueConstructor,\n  options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n  return props => {\n    // try to get the parent component\n    // this is important for vue devtools to show the component hierarchy correctly\n    // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n    if (!(props.editor as Editor).contentComponent) {\n      return {} as unknown as ProseMirrorNodeView\n    }\n\n    return new VueNodeView(component, props, options)\n  }\n}\n","import type { VueConstructor } from 'vue'\nimport VueDefault from 'vue'\n\n// With nodenext module resolution, TypeScript treats the default import as the module type.\n// We need to explicitly type it as VueConstructor to access static methods like extend and observable.\n// This is necessary because Vue 2's type definitions export Vue as VueConstructor, but nodenext\n// doesn't correctly infer the default export type.\nexport const Vue: VueConstructor = VueDefault as unknown as VueConstructor\n","import type { VueConstructor } from 'vue'\n\nimport { Vue } from './Vue.js'\n\n/**\n * The VueRenderer class is responsible for rendering a Vue component as a ProseMirror node view.\n */\nexport class VueRenderer {\n  ref!: Vue\n\n  constructor(component: Vue | VueConstructor, props: any) {\n    const Component = typeof component === 'function' ? component : Vue.extend(component)\n\n    this.ref = new Component(props).$mount()\n  }\n\n  get element(): Element {\n    return this.ref.$el\n  }\n\n  updateProps(props: Record<string, any> = {}): void {\n    if (!this.ref.$props) {\n      return\n    }\n\n    // prevents `Avoid mutating a prop directly` error message\n    // Fix: `VueNodeViewRenderer` change vue Constructor `config.silent` not working\n    const currentVueConstructor = this.ref.$props.editor?.contentComponent?.$options._base ?? Vue // eslint-disable-line\n    const originalSilent = currentVueConstructor.config.silent\n\n    currentVueConstructor.config.silent = true\n\n    Object.entries(props).forEach(([key, value]) => {\n      this.ref.$props[key] = value\n    })\n\n    currentVueConstructor.config.silent = originalSilent\n  }\n\n  destroy(): void {\n    this.ref.$destroy()\n  }\n}\n"],"mappings":"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","names":["CoreEditor","import_core","VueDefault"]}