element-to-vue-instance-registry.js 696 Bytes
import { isVue3 } from '../vue'

let registry = null
if (isVue3) {
  registry = new WeakMap()
}

export const registerElementToInstance = (element, instance) => {
  if (!isVue3) {
    return
  }

  registry.set(element, instance)
}

export const removeElementToInstance = element => {
  if (!isVue3) {
    return
  }

  registry.delete(element)
}

export const getInstanceFromElement = element => {
  if (!isVue3) {
    return element.__vue__
  }

  let currentElement = element

  while (currentElement) {
    if (registry.has(currentElement)) {
      /* istanbul ignore next */
      return registry.get(currentElement)
    }
    currentElement = currentElement.parentNode
  }

  return null
}