{"version":3,"file":"content.mjs","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n  <teleport v-if=\"isClient\" :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      <b-popper-content\n        v-if=\"shouldRender\"\n        v-show=\"shouldShow\"\n        :id=\"id\"\n        ref=\"contentRef\"\n        v-bind=\"$attrs\"\n        :aria-label=\"ariaLabel\"\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        :trigger-target-el=\"triggerTargetEl\"\n        :visible=\"shouldShow\"\n        :z-index=\"zIndex\"\n        @mouseenter=\"onContentEnter\"\n        @mouseleave=\"onContentLeave\"\n        @blur=\"onBlur\"\n        @close=\"onClose\"\n      >\n        <!-- Workaround bug #6378 -->\n        <template v-if=\"!destroyed\">\n          <slot />\n        </template>\n      </b-popper-content>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, unref, watch } from 'vue'\nimport { onClickOutside, useMounted } from '@vueuse/core'\nimport { composeEventHandlers } from '@bigin/utils'\nimport { BPopperContent } from '@bigin/components/popper'\nimport { TOOLTIP_INJECTION_KEY } from '@bigin/tokens'\nimport { useTooltipContentProps } from './content'\n\ndefineOptions({\n  name: 'BTooltipContent',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(useTooltipContentProps)\nconst contentRef = ref<any>(null)\nconst destroyed = ref(false)\nconst isClient = useMounted()\nconst {\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)!\nconst 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\nonBeforeUnmount(() => {\n  destroyed.value = true\n})\n\nconst shouldRender = computed(() => {\n  return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n  return props.disabled ? false : unref(open)\n})\n\nconst contentStyle = computed(() => (props.style ?? {}) as any)\n\nconst ariaHidden = computed(() => !unref(open))\n\nconst onTransitionLeave = () => {\n  onHide()\n}\n\nconst stopWhenControlled = () => {\n  if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n  if (props.enterable && unref(trigger) === 'hover') {\n    onOpen()\n  }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n  if (unref(trigger) === 'hover') {\n    onClose()\n  }\n})\n\nconst onBeforeEnter = () => {\n  contentRef.value?.updatePopper?.()\n  onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n  onBeforeHide?.()\n}\n\nconst onAfterShow = () => {\n  onShow()\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}\n\nconst onBlur = () => {\n  if (!props.virtualTriggering) {\n    onClose()\n  }\n}\n\nlet stopHandle: ReturnType<typeof onClickOutside>\n\nwatch(\n  () => unref(open),\n  (val) => {\n    if (!val) {\n      stopHandle?.()\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n\nwatch(\n  () => props.content,\n  () => {\n    contentRef.value?.updatePopper?.()\n  }\n)\n\ndefineExpose({\n  /**\n   * @description el-popper-content component instance\n   */\n  contentRef,\n})\n</script>\n"],"names":[],"mappings":"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"}