{"version":3,"file":"root2.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/root.vue"],"sourcesContent":["<template>\n  <slot :open=\"open\" />\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 { isClient, useTimeoutFn } from '@vueuse/core'\nimport { useId, useNamespace } from '@bigin/hooks'\nimport { isNumber, isPropAbsent } from '@bigin/utils'\nimport { TOOLTIP_V2_OPEN, tooltipV2RootKey } from '@bigin/tokens'\nimport { tooltipV2RootProps } from './root'\n\ndefineOptions({\n  name: 'BTooltipV2Root',\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    immediate: false,\n  }\n)\n\nconst ns = useNamespace('tooltip-v2')\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  if (open) {\n    if (isClient) {\n      document.dispatchEvent(new CustomEvent(TOOLTIP_V2_OPEN))\n    }\n    onOpen()\n  }\n\n  props.onOpenChange?.(open)\n}\n\nwatch(open, onChange)\n\nonMounted(() => {\n  if (!isClient) return\n  // Keeps only 1 tooltip open at a time\n  document.addEventListener(TOOLTIP_V2_OPEN, onClose)\n})\n\nonBeforeUnmount(() => {\n  clearTimer()\n  if (isClient) {\n    document.removeEventListener(TOOLTIP_V2_OPEN, onClose)\n  }\n})\n\nprovide(tooltipV2RootKey, {\n  contentId,\n  triggerRef,\n  ns,\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":["open"],"mappings":"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"}