{"version":3,"file":"content.vue2.mjs","sources":["../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n  <teleport :disabled=\"!teleported\" :to=\"appendTo\">\n    <transition\n      :name=\"transition\"\n      @after-leave=\"onTransitionLeave\"\n      @before-enter=\"onBeforeEnter\"\n      @after-enter=\"onAfterShow\"\n      @before-leave=\"onBeforeLeave\"\n    >\n      <el-popper-content\n        v-if=\"shouldRender\"\n        v-show=\"shouldShow\"\n        ref=\"contentRef\"\n        v-bind=\"$attrs\"\n        :aria-hidden=\"ariaHidden\"\n        :boundaries-padding=\"boundariesPadding\"\n        :fallback-placements=\"fallbackPlacements\"\n        :gpu-acceleration=\"gpuAcceleration\"\n        :offset=\"offset\"\n        :placement=\"placement\"\n        :popper-options=\"popperOptions\"\n        :strategy=\"strategy\"\n        :effect=\"effect\"\n        :enterable=\"enterable\"\n        :pure=\"pure\"\n        :popper-class=\"popperClass\"\n        :popper-style=\"[popperStyle, contentStyle]\"\n        :reference-el=\"referenceEl\"\n        :z-index=\"zIndex\"\n        @mouseenter=\"onContentEnter\"\n        @mouseleave=\"onContentLeave\"\n      >\n        <slot />\n        <el-visually-hidden :id=\"id\" role=\"tooltip\">\n          {{ ariaLabel }}\n        </el-visually-hidden>\n      </el-popper-content>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport { onClickOutside } from '@vueuse/core'\nimport { ElPopperContent } from '@element-ultra/components/popper'\nimport { ElVisuallyHidden } from '@element-ultra/components/visual-hidden'\nimport { composeEventHandlers } from '@element-ultra/utils'\nimport { useEscapeKeydown } from '@element-ultra/hooks'\n\nimport { useTooltipContentProps } from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'ElTooltipContent',\n  components: {\n    ElPopperContent,\n    ElVisuallyHidden\n  },\n  inheritAttrs: false,\n  props: useTooltipContentProps,\n  setup(props) {\n    const contentRef = ref<InstanceType<typeof ElPopperContent> | null>(null)\n    const intermediateOpen = ref(false)\n    const entering = ref(false)\n    const leaving = ref(false)\n    const {\n      controlled,\n      id,\n      open,\n      trigger,\n      onClose,\n      onOpen,\n      onShow,\n      onHide,\n      onBeforeShow,\n      onBeforeHide\n    } = inject(TOOLTIP_INJECTION_KEY, undefined)!\n    const persistentRef = computed(() => {\n      // For testing, we would always want the content to be rendered\n      // to the DOM, so we need to return true here.\n      if (process.env.NODE_ENV === 'test') {\n        return true\n      }\n      return props.persistent\n    })\n\n    const shouldRender = computed(() => {\n      return unref(persistentRef) ? true : unref(open)\n    })\n\n    const shouldShow = computed(() => {\n      return props.disabled ? false : unref(open)\n    })\n\n    const contentStyle = computed(() => (props.style ?? {}) as any)\n\n    const ariaHidden = computed(() => !unref(open))\n\n    useEscapeKeydown(onClose)\n\n    const onTransitionLeave = () => {\n      onHide()\n    }\n\n    const stopWhenControlled = () => {\n      if (unref(controlled)) return true\n    }\n\n    const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n      if (props.enterable && unref(trigger) === 'hover') {\n        onOpen()\n      }\n    })\n\n    const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n      if (unref(trigger) === 'hover') {\n        onClose()\n      }\n    })\n\n    const onBeforeEnter = () => {\n      contentRef.value?.updatePopper?.()\n      onBeforeShow()\n    }\n\n    const onBeforeLeave = () => {\n      onBeforeHide()\n    }\n\n    const onAfterShow = () => {\n      onShow()\n    }\n\n    let stopHandle: ReturnType<typeof onClickOutside>\n\n    watch(\n      () => unref(open),\n      val => {\n        if (val) {\n          stopHandle = onClickOutside(\n            computed(() => {\n              return contentRef.value?.popperContentRef\n            }),\n            () => {\n              if (unref(controlled)) return\n              const $trigger = unref(trigger)\n              if ($trigger !== 'hover') {\n                onClose()\n              }\n            }\n          )\n        } else {\n          stopHandle?.()\n        }\n      },\n      {\n        flush: 'post'\n      }\n    )\n\n    return {\n      ariaHidden,\n      entering,\n      leaving,\n      id,\n      intermediateOpen,\n      contentStyle,\n      contentRef,\n      shouldRender,\n      shouldShow,\n      open,\n      onAfterShow,\n      onBeforeEnter,\n      onBeforeLeave,\n      onContentEnter,\n      onContentLeave,\n      onTransitionLeave\n    }\n  }\n})\n</script>\n"],"names":[],"mappings":"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"}