{"version":3,"file":"tooltip.mjs","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<template>\n  <b-popper\n    ref=\"popperRef\"\n    :role=\"role\"\n    data-test-name=\"tooltip\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n  >\n    <b-tooltip-trigger\n      :disabled=\"disabled\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :virtual-ref=\"virtualRef\"\n      :virtual-triggering=\"virtualTriggering\"\n    >\n      <slot v-if=\"$slots.default\" />\n    </b-tooltip-trigger>\n    <b-tooltip-content\n      ref=\"contentRef\"\n      :aria-label=\"ariaLabel\"\n      :boundaries-padding=\"boundariesPadding\"\n      :content=\"content\"\n      :disabled=\"disabled\"\n      :effect=\"effect\"\n      :enterable=\"enterable\"\n      :fallback-placements=\"fallbackPlacements\"\n      :hide-after=\"hideAfter\"\n      :gpu-acceleration=\"gpuAcceleration\"\n      :offset=\"offset\"\n      :persistent=\"persistent\"\n      :popper-class=\"popperClass || ns.b()\"\n      :popper-style=\"popperStyle\"\n      :placement=\"placement\"\n      :popper-options=\"popperOptions\"\n      :pure=\"pure\"\n      :raw-content=\"rawContent\"\n      :reference-el=\"referenceEl\"\n      :trigger-target-el=\"triggerTargetEl\"\n      :show-after=\"compatShowAfter\"\n      :strategy=\"strategy\"\n      :teleported=\"teleported\"\n      :transition=\"transition\"\n      :virtual-triggering=\"virtualTriggering\"\n      :z-index=\"zIndex\"\n      :append-to=\"appendTo\"\n    >\n      <slot name=\"content\">\n        <span v-if=\"rawContent\" v-html=\"content\" />\n        <span v-else>{{ content }}</span>\n      </slot>\n      <b-popper-arrow v-if=\"compatShowArrow\" :arrow-offset=\"arrowOffset\" />\n    </b-tooltip-content>\n  </b-popper>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onDeactivated,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport { BPopper, BPopperArrow } from '@bigin/components/popper'\n\nimport { debugWarn, isBoolean, isUndefined } from '@bigin/utils'\nimport {\n  useDelayedToggle,\n  useId,\n  useNamespace,\n  usePopperContainer,\n} from '@bigin/hooks'\nimport { TOOLTIP_INJECTION_KEY } from '@bigin/tokens'\nimport { tooltipEmits, useTooltipModelToggle, useTooltipProps } from './tooltip'\nimport BTooltipTrigger from './trigger.vue'\nimport BTooltipContent from './content.vue'\n\ndefineOptions({\n  name: 'BTooltip',\n})\n\nconst props = defineProps(useTooltipProps)\nconst emit = defineEmits(tooltipEmits)\nconst ns = useNamespace('tooltip')\n\nusePopperContainer()\nconst compatShowAfter = computed(() => {\n  // if (!isUndefined(props.openDelay)) {\n  //   debugWarn(\n  //     'BTooltip',\n  //     'open-delay is about to be deprecated in the next major version, please use `show-after` instead'\n  //   )\n  // }\n  return props.showAfter as number\n})\nconst compatShowArrow = computed(() => {\n  if (!isUndefined(props.visibleArrow)) {\n    debugWarn(\n      'BTooltip',\n      '`visible-arrow` is about to be deprecated in the next major version, please use `show-arrow` instead'\n    )\n  }\n  return isBoolean(props.visibleArrow) ? props.visibleArrow : props.showArrow\n})\n\nconst id = useId()\nconst popperRef = ref<any>()\nconst contentRef = ref<any>()\n\nconst updatePopper = () => {\n  const popperComponent = unref(popperRef)\n  if (popperComponent) {\n    popperComponent.popperInstanceRef?.update()\n  }\n}\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = useTooltipModelToggle({\n  indicator: open,\n  toggleReason,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n  showAfter: compatShowAfter,\n  hideAfter: toRef(props, 'hideAfter'),\n  open: show,\n  close: hide,\n})\n\nconst controlled = computed(\n  () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nprovide(TOOLTIP_INJECTION_KEY, {\n  controlled,\n  id,\n  open: readonly(open),\n  trigger: toRef(props, 'trigger'),\n  onOpen: (event?: Event) => {\n    onOpen(event)\n  },\n  onClose: (event?: Event) => {\n    onClose(event)\n  },\n  onToggle: (event?: Event) => {\n    if (unref(open)) {\n      onClose(event)\n    } else {\n      onOpen(event)\n    }\n  },\n  onShow: () => {\n    emit('show', toggleReason.value)\n  },\n  onHide: () => {\n    emit('hide', toggleReason.value)\n  },\n  onBeforeShow: () => {\n    emit('before-show', toggleReason.value)\n  },\n  onBeforeHide: () => {\n    emit('before-hide', toggleReason.value)\n  },\n  updatePopper,\n})\n\nwatch(\n  () => props.disabled,\n  (disabled) => {\n    if (disabled && open.value) {\n      open.value = false\n    }\n  }\n)\n\nconst isFocusInsideContent = () => {\n  const popperContent: HTMLElement | undefined =\n    contentRef.value?.contentRef?.popperContentRef\n  return popperContent && popperContent.contains(document.activeElement)\n}\n\nonDeactivated(() => open.value && hide())\n\ndefineExpose({\n  /**\n   * @description el-popper component instance\n   */\n  popperRef,\n  /**\n   * @description el-tooltip-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-tooltip-content\n   */\n  isFocusInsideContent,\n  /**\n   * @description update el-popper component instance\n   */\n  updatePopper,\n  /**\n   * @description expose onOpen function to mange el-tooltip open state\n   */\n  onOpen,\n  /**\n   * @description expose onOpen function to mange el-tooltip open state\n   */\n  onClose,\n  /**\n   * @description expose hide function\n   */\n  hide,\n})\n</script>\n"],"names":[],"mappings":"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"}