{"version":3,"file":"root2.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/root.vue"],"sourcesContent":["<template>\n  <slot />\n</template>\n\n<script setup lang=\"ts\">\nimport {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { useId } from '@element-plus/hooks'\nimport { isNumber, isPropAbsent } from '@element-plus/utils'\nimport { TOOLTIP_V2_OPEN, tooltipV2RootKey } from '@element-plus/tokens'\nimport { tooltipV2RootProps } from './root'\n\ndefineOptions({\n  name: 'ElTooltipV2Root',\n})\n\nconst props = defineProps(tooltipV2RootProps)\n\n/**\n * internal open state, when no model value was provided, use this as indicator instead\n */\nconst _open = ref(props.defaultOpen)\nconst triggerRef = ref<HTMLElement | null>(null)\n\nconst open = computed<boolean>({\n  get: () => (isPropAbsent(props.open) ? _open.value : props.open),\n  set: (open) => {\n    _open.value = open\n    props['onUpdate:open']?.(open)\n  },\n})\n\nconst isOpenDelayed = computed(\n  () => isNumber(props.delayDuration) && props.delayDuration > 0\n)\n\nconst { start: onDelayedOpen, stop: clearTimer } = useTimeoutFn(\n  () => {\n    open.value = true\n  },\n  computed(() => props.delayDuration)\n)\n\nconst contentId = useId()\n\nconst onNormalOpen = () => {\n  clearTimer()\n  open.value = true\n}\n\nconst onDelayOpen = () => {\n  unref(isOpenDelayed) ? onDelayedOpen() : onNormalOpen()\n}\n\nconst onOpen = onNormalOpen\n\nconst onClose = () => {\n  clearTimer()\n  open.value = false\n}\n\nconst onChange = (open: boolean) => {\n  //\n\n  if (open) {\n    document.dispatchEvent(new CustomEvent(TOOLTIP_V2_OPEN))\n    onOpen()\n  }\n\n  props.onOpenChange?.(open)\n}\n\nwatch(open, onChange)\n\nonMounted(() => {\n  // Keeps only 1 tooltip open at a time\n  document.addEventListener(TOOLTIP_V2_OPEN, onClose)\n})\n\nonBeforeUnmount(() => {\n  clearTimer()\n  document.removeEventListener(TOOLTIP_V2_OPEN, onClose)\n})\n\nprovide(tooltipV2RootKey, {\n  contentId,\n  triggerRef,\n\n  onClose,\n  onDelayOpen,\n  onOpen,\n})\n\ndefineExpose({\n  /**\n   * @description open tooltip programmatically\n   */\n  onOpen,\n\n  /**\n   * @description close tooltip programmatically\n   */\n  onClose,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAA,KAAA,GAAA,IAAA,KAAA,CAAA,WAAA,CAAA,CAAA;AACA,IAAA,MAAA,aAAA,GAAA,CAAA,IAAA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,QAAA,CAAA;AAAA,MACA,KAAA,MAAA,YAAA,CAAA,MAAA,IAAA,CAAA,GAAA,KAAA,CAAA,QAAA,KAAA,CAAA,IAAA;AAAA,MACA,GAAA,EAAA,CAAA,KAAA,KAAA;AACA,QAAA,IAAA,EAAA,CAAA;AACA,QAAA,KAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,QAAA,CAAA,EAAA,GAAA,KAAA,CAAA,eAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAAA,OAAA;AAIA,KAAA,CAAA,CAAA;AAIA,IAAA,MAAA,aAAA,GAAA,QAAA,CAAA,MAAA,QAAA,CAAA,KAAA,cACA,CAAA,IAAA,KAAA,CAAA,aAAA,GAAA,CAAA,CAAA,CAAA;AACA,IAAA,MAAA,EAAA,KAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,EAAA,GAAA,YAAA,CAAA,MAAA;AAAA,MAEA,IAAA,CAAA,KAAA,OAAA,CAAA;AAGA,KAAA,EAAA,QAAA,CAAA,MAAA,KAAA,CAAA,aAAA,CAAA,CAAA,CAAA;AAEA,IAAA,MAAA,iBAAA,EAAA,CAAA;AACA,IAAA,MAAA,YAAA,GAAA,MAAA;AACA,MAAA,UAAA,EAAA,CAAA;AAAA,MAAA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAGA,KAAA,CAAA;AACA,IAAA,MAAA,oBAAA;AAAA,MAAA,KAAA,CAAA,aAAA,CAAA,GAAA,aAAA,EAAA,GAAA,YAAA,EAAA,CAAA;AAGA,KAAA,CAAA;AAEA,IAAA,MAAA,qBAAA,CAAA;AACA,IAAA,MAAA,OAAA,GAAA,MAAA;AACA,MAAA,UAAA,EAAA,CAAA;AAAA,MAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAGA,KAAA,CAAA;AAGA,IAAA,MAAA,QAAA,GAAA,CAAA,KAAA,KAAA;AACA,MAAA,IAAA,EAAA,CAAA;AACA,MAAA,IAAA,KAAA,EAAA;AAAA,QAAA,QAAA,CAAA,aAAA,CAAA,IAAA,WAAA,CAAA,eAAA,CAAA,CAAA,CAAA;AAGA,QAAA,MAAA,EAAA,CAAA;AAAA,OAAA;AAGA,MAAA,CAAA,EAAA,GAAA,KAAA,CAAA,YAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AAEA,IAAA,KAAA,CAAA,IAAA;AAAA,IAAA,SAAA,CAAA,MAAA;AAGA,MAAA,QAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AACA,KAAA,CAAA,CAAA;AACA,IAAA;AAAA,MAAA,UAAA,EAAA,CAAA;AAGA,MAAA,QAAA,CAAA,mBAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAAA,IACA,OAAA,CAAA,gBAAA,EAAA;AAAA,MAEA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MAAA,WAAA;AAGA,MAAA,MAAA;AAAA,KAIA,CAAA,CAAA;AAAA,IAKA,MAAA,CAAA;AAAA,MAAA,MAAA;;;;;;;;;;;"}