{"version":3,"file":"vue-3.cjs","names":["CoreEditor","MarkView","NodeView"],"sources":["../../../../../node_modules/.pnpm/@tiptap+vue-3@3.19.0_patch_hash=hlk524tqy4svh2bbayevihx324_@floating-ui+dom@1.7.6_@tiptap+cor_kpexihlfm3sl2tcft5dydpfypm/node_modules/@tiptap/vue-3/dist/index.js"],"sourcesContent":["// src/Editor.ts\nimport { Editor as CoreEditor } from \"@tiptap/core\";\nimport { customRef, markRaw } from \"vue\";\nfunction useDebouncedRef(value) {\n  return customRef((track, trigger) => {\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        requestAnimationFrame(() => {\n          requestAnimationFrame(() => {\n            trigger();\n          });\n        });\n      }\n    };\n  });\n}\nvar Editor = class extends CoreEditor {\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);\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\n// src/EditorContent.ts\nimport { defineComponent, getCurrentInstance, h, nextTick, onBeforeUnmount, ref, unref, watchEffect } from \"vue\";\nvar 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          var _a;\n          if (!rootEl.value || !((_a = editor.view.dom) == null ? void 0 : _a.parentNode)) {\n            return;\n          }\n          const element = unref(rootEl.value);\n          rootEl.value.append(...editor.view.dom.parentNode.childNodes);\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) => {\n        this.rootEl = el;\n      }\n    });\n  }\n});\n\n// src/NodeViewContent.ts\nimport { defineComponent as defineComponent2, h as h2 } from \"vue\";\nvar NodeViewContent = defineComponent2({\n  name: \"NodeViewContent\",\n  props: {\n    as: {\n      type: String,\n      default: \"div\"\n    }\n  },\n  render() {\n    return h2(this.as, {\n      style: {\n        whiteSpace: \"pre-wrap\"\n      },\n      \"data-node-view-content\": \"\"\n    });\n  }\n});\n\n// src/NodeViewWrapper.ts\nimport { defineComponent as defineComponent3, h as h3 } from \"vue\";\nvar NodeViewWrapper = defineComponent3({\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 h3(\n      this.as,\n      {\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      },\n      (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)\n    );\n  }\n});\n\n// src/useEditor.ts\nimport { onBeforeUnmount as onBeforeUnmount2, onMounted, shallowRef } from \"vue\";\nvar useEditor = (options = {}) => {\n  const editor = shallowRef();\n  onMounted(() => {\n    editor.value = new Editor(options);\n  });\n  onBeforeUnmount2(() => {\n    var _a, _b, _c, _d;\n    const nodes = (_b = (_a = editor.value) == null ? void 0 : _a.view.dom) == null ? void 0 : _b.parentNode;\n    const newEl = nodes == null ? void 0 : nodes.cloneNode(true);\n    (_c = nodes == null ? void 0 : nodes.parentNode) == null ? void 0 : _c.replaceChild(newEl, nodes);\n    (_d = editor.value) == null ? void 0 : _d.destroy();\n  });\n  return editor;\n};\n\n// src/VueMarkViewRenderer.ts\nimport { MarkView } from \"@tiptap/core\";\nimport { defineComponent as defineComponent4, h as h5, toRaw } from \"vue\";\n\n// src/VueRenderer.ts\nimport { h as h4, markRaw as markRaw2, reactive, render } from \"vue\";\nvar VueRenderer = class {\n  constructor(component, { props = {}, editor }) {\n    /**\n     * Flag to track if the renderer has been destroyed, preventing queued or asynchronous renders from executing after teardown.\n     */\n    this.destroyed = false;\n    this.editor = editor;\n    this.component = markRaw2(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    if ((_b = (_a = this.renderedComponent.vNode) == null ? void 0 : _a.component) == null ? void 0 : _b.exposed) {\n      return this.renderedComponent.vNode.component.exposed;\n    }\n    return (_d = (_c = this.renderedComponent.vNode) == null ? void 0 : _c.component) == null ? void 0 : _d.proxy;\n  }\n  renderComponent() {\n    if (this.destroyed) {\n      return this.renderedComponent;\n    }\n    let vNode = h4(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    if (this.destroyed) {\n      return;\n    }\n    Object.entries(props).forEach(([key, value]) => {\n      this.props[key] = value;\n    });\n    this.renderComponent();\n  }\n  destroy() {\n    if (this.destroyed) {\n      return;\n    }\n    this.destroyed = true;\n    this.renderedComponent.destroy();\n  }\n};\n\n// src/VueMarkViewRenderer.ts\nvar markViewProps = {\n  editor: {\n    type: Object,\n    required: true\n  },\n  mark: {\n    type: Object,\n    required: true\n  },\n  extension: {\n    type: Object,\n    required: true\n  },\n  inline: {\n    type: Boolean,\n    required: true\n  },\n  view: {\n    type: Object,\n    required: true\n  },\n  updateAttributes: {\n    type: Function,\n    required: true\n  },\n  HTMLAttributes: {\n    type: Object,\n    required: true\n  }\n};\nvar MarkViewContent = defineComponent4({\n  name: \"MarkViewContent\",\n  props: {\n    as: {\n      type: String,\n      default: \"span\"\n    }\n  },\n  render() {\n    return h5(this.as, {\n      style: {\n        whiteSpace: \"inherit\"\n      },\n      \"data-mark-view-content\": \"\"\n    });\n  }\n});\nvar VueMarkView = class extends MarkView {\n  constructor(component, props, options) {\n    super(component, props, options);\n    const componentProps = { ...props, updateAttributes: this.updateAttributes.bind(this) };\n    const extendedComponent = defineComponent4({\n      extends: { ...component },\n      props: Object.keys(componentProps),\n      template: this.component.template,\n      setup: (reactiveProps) => {\n        var _a;\n        return (_a = component.setup) == null ? void 0 : _a.call(component, reactiveProps, {\n          expose: () => void 0\n        });\n      },\n      // Add support for scoped styles\n      __scopeId: component.__scopeId,\n      __cssModules: component.__cssModules,\n      __name: component.__name,\n      __file: component.__file\n    });\n    this.renderer = new VueRenderer(extendedComponent, {\n      editor: this.editor,\n      props: componentProps\n    });\n  }\n  get dom() {\n    return this.renderer.element;\n  }\n  get contentDOM() {\n    return this.dom.querySelector(\"[data-mark-view-content]\");\n  }\n  updateAttributes(attrs) {\n    const unproxiedMark = toRaw(this.mark);\n    super.updateAttributes(attrs, unproxiedMark);\n  }\n  destroy() {\n    this.renderer.destroy();\n  }\n};\nfunction VueMarkViewRenderer(component, options = {}) {\n  return (props) => {\n    if (!props.editor.contentComponent) {\n      return {};\n    }\n    return new VueMarkView(component, props, options);\n  };\n}\n\n// src/VueNodeViewRenderer.ts\nimport { NodeView } from \"@tiptap/core\";\nimport { defineComponent as defineComponent5, provide, ref as ref2 } from \"vue\";\nvar 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};\nvar VueNodeView = class extends NodeView {\n  constructor() {\n    super(...arguments);\n    this.cachedExtensionWithSyncedStorage = null;\n  }\n  /**\n   * Returns a proxy of the extension that redirects storage access to the editor's mutable storage.\n   * This preserves the original prototype chain (instanceof checks, methods like configure/extend work).\n   * Cached to avoid proxy creation on every update.\n   */\n  get extensionWithSyncedStorage() {\n    if (!this.cachedExtensionWithSyncedStorage) {\n      const editor = this.editor;\n      const extension = this.extension;\n      this.cachedExtensionWithSyncedStorage = new Proxy(extension, {\n        get(target, prop, receiver) {\n          var _a;\n          if (prop === \"storage\") {\n            return (_a = editor.storage[extension.name]) != null ? _a : {};\n          }\n          return Reflect.get(target, prop, receiver);\n        }\n      });\n    }\n    return this.cachedExtensionWithSyncedStorage;\n  }\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.extensionWithSyncedStorage,\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 = ref2(this.getDecorationClasses());\n    const extendedComponent = defineComponent5({\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 ? void 0 : _b.call(_a, reactiveProps, {\n          expose: () => void 0\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    } 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, extension: this.extensionWithSyncedStorage })\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, extension: this.extensionWithSyncedStorage });\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.flatMap((item) => item.type.attrs.class).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    if (!props.editor.contentComponent) {\n      return {};\n    }\n    const normalizedComponent = typeof component === \"function\" && \"__vccOpts\" in component ? component.__vccOpts : component;\n    return new VueNodeView(normalizedComponent, props, options);\n  };\n}\n\n// src/index.ts\nexport * from \"@tiptap/core\";\nexport {\n  Editor,\n  EditorContent,\n  MarkViewContent,\n  NodeViewContent,\n  NodeViewWrapper,\n  VueMarkView,\n  VueMarkViewRenderer,\n  VueNodeViewRenderer,\n  VueRenderer,\n  markViewProps,\n  nodeViewProps,\n  useEditor\n};\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0],"mappings":"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"}