{"version":3,"file":"content.mjs","sources":["../../../../../../packages/components/popper/src/content.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"popperContentRef\"\n    :style=\"contentStyle\"\n    :class=\"contentClass\"\n    role=\"tooltip\"\n    @mouseenter=\"(e) => $emit('mouseenter', e)\"\n    @mouseleave=\"(e) => $emit('mouseleave', e)\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  ref,\n  inject,\n  provide,\n  unref,\n  onMounted,\n  watch,\n} from 'vue'\nimport { createPopper } from '@popperjs/core'\nimport { useZIndex, useNamespace } from '@element-plus/hooks'\nimport { POPPER_INJECTION_KEY, POPPER_CONTENT_INJECTION_KEY } from './tokens'\nimport { usePopperContentProps } from './popper'\nimport { buildPopperOptions, unwrapMeasurableEl } from './utils'\n\nexport default defineComponent({\n  name: 'ElPopperContent',\n  props: usePopperContentProps,\n  emits: ['mouseenter', 'mouseleave'],\n  setup(props) {\n    const { triggerRef, popperInstanceRef, contentRef } = inject(\n      POPPER_INJECTION_KEY,\n      undefined\n    )!\n    const { nextZIndex } = useZIndex()\n    const ns = useNamespace('popper')\n    const popperContentRef = ref<HTMLElement | null>(null)\n    const arrowRef = ref<HTMLElement | null>(null)\n    const arrowOffset = ref<number>()\n    provide(POPPER_CONTENT_INJECTION_KEY, {\n      arrowRef,\n      arrowOffset,\n    })\n    const contentZIndex = ref(props.zIndex || nextZIndex())\n\n    const contentStyle = computed(\n      () => [{ zIndex: unref(contentZIndex) }, props.popperStyle] as any\n    )\n\n    const contentClass = computed(() => [\n      ns.b(),\n      ns.is('pure', props.pure),\n      ns.is(props.effect),\n      props.popperClass,\n    ])\n\n    const createPopperInstance = ({\n      referenceEl,\n      popperContentEl,\n      arrowEl,\n    }) => {\n      const options = buildPopperOptions(props, {\n        arrowEl,\n        arrowOffset: unref(arrowOffset),\n      })\n\n      return createPopper(referenceEl, popperContentEl, options)\n    }\n\n    const updatePopper = () => {\n      unref(popperInstanceRef)?.update()\n      contentZIndex.value = props.zIndex || nextZIndex()\n    }\n\n    const togglePopoerAlive = () => {\n      const monitorable = { name: 'eventListeners', enabled: props.visible }\n      unref(popperInstanceRef)?.setOptions((options) => ({\n        ...options,\n        modifiers: [...options.modifiers, monitorable],\n      }))\n    }\n\n    onMounted(() => {\n      let updateHandle: ReturnType<typeof watch>\n      watch(\n        () => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef),\n        (val) => {\n          updateHandle?.()\n          if (val) {\n            popperInstanceRef.value?.destroy()\n            const popperContentEl = unref(popperContentRef)!\n            contentRef.value = popperContentEl\n            const arrowEl = unref(arrowRef)\n\n            const newInstance = createPopperInstance({\n              referenceEl: val,\n              popperContentEl: unref(popperContentRef)!,\n              arrowEl,\n            })\n            popperInstanceRef.value = newInstance\n\n            updateHandle = watch(\n              () => val!.getBoundingClientRect(),\n              () => {\n                updatePopper()\n              },\n              {\n                immediate: true,\n              }\n            )\n          } else {\n            popperInstanceRef.value = null\n          }\n        },\n        {\n          immediate: true,\n        }\n      )\n\n      watch(() => props.visible, togglePopoerAlive, { immediate: true })\n\n      watch(\n        () =>\n          buildPopperOptions(props, {\n            arrowEl: unref(arrowRef),\n            arrowOffset: unref(arrowOffset),\n          }),\n        (option) => popperInstanceRef.value?.setOptions(option)\n      )\n    })\n\n    return {\n      ns,\n      popperContentRef,\n      popperInstanceRef,\n      contentStyle,\n      contentClass,\n      updatePopper,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeStyle","_normalizeClass"],"mappings":"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"}