{"version":3,"file":"content.vue.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":["_resolveComponent","_openBlock","_createBlock","_Teleport","_Transition","_mergeProps","_withCtx","_renderSlot","_createVNode"],"mappings":";;;;;;AAsCa,EAAA,MAAA,4BAAA,GAAAA,iBAAA,mBAAA,CAAA,CAAA;EArC4B,OAAAC,SAAA,EAAQ,EAAAC,WAAA,CAAAC,QAAA,EAAA;AAAA,IAAA,QAAA,EAAA,CAAA,IAAA,CAAA,UAAA;AAAA,IAC7C,IAAA,IAAA,CAAA,QAAA;AAAA,GAAA,EAAA;AAAA,gBAEGC,UAAa,EAAA;AAAA,MACb,MAAA,IAAA,CAAA,UAAA;AAAA,MACA,cAAa,IAAA,CAAA,iBAAA;AAAA,MACb,eAAc,IAAA,CAAA,aAAA;AAAA,MAAA,cAAA,IAAA,CAAA,WAAA;AAAA,MA6BK,eAAA,IAAA,CAAA,aAAA;AAAA,KAAA,EAAA;AAAA;4CAxBdH,WAAY,EAAAC,WAAA,CAAA,8BAAAG,UAAA,CAAA;AAAA,UACR,GAAA,EAAA,CAAA;AAAA,UACP,GAAA,EAAA,YAAA;AAAA,SACA,EAAA,KAAA,MAAA,EAAA;AAAA,UACA,eAAA,IAAA,CAAA,UAAA;AAAA,UACA,sBAAkB,IAAA,CAAA,iBAAA;AAAA,UAClB,uBAAc,IAAA,CAAA,kBAAA;AAAA,UACd,oBAAW,IAAS,CAAA,eAAA;AAAA,UACpB,QAAA,IAAA,CAAA,MAAA;AAAA,UACA,WAAU,IAAA,CAAA,SAAA;AAAA,UACV,kBAAQ,IAAM,CAAA,aAAA;AAAA,UACd,UAAS,IAAE,CAAA,QAAA;AAAA,UACX,QAAM,IAAA,CAAA,MAAA;AAAA,UACN,WAAc,IAAA,CAAA,SAAA;AAAA,UACd,MAAA,IAAA,CAAA,IAAA;AAAA,UACA,gBAAc,IAAA,CAAA,WAAA;AAAA,UACd,cAAS,EAAA,CAAM,IAAA,CAAA,WAAA,EAAA,KAAA,YAAA,CAAA;AAAA,UACf,gBAAY,IAAA,CAAA,WAAA;AAAA,UACZ,WAAY,IAAA,CAAA,MAAA;AAAA,UAAA,cAAA,IAAA,CAAA,cAAA;AAAA,UAEL,cAAA,IAAA,CAAA,cAAA;AAAA,SAAR,CAAA,EAAA;AAAA,UAAA,OAAA,EACAC,QAEqB,MAAA;AAAA,YAAAC,UAAA,CAFI,IAAE,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA,YAAAC,YAAO,6BAAS,EAAA;AAAA,cAAA,IAAA,IAAA,CAAA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}