{"version":3,"file":"tooltip.mjs","sources":["../../../components/tooltip/tooltip.tsx"],"sourcesContent":["import { Popper } from '@/components/popper'\n\nimport {\n  Fragment,\n  computed,\n  createTextVNode,\n  defineComponent,\n  mergeProps,\n  ref,\n  renderSlot,\n  shallowReadonly,\n  toRef,\n  watch\n} from 'vue'\n\nimport { emitEvent, useHoverDelay, useNameHelper, useProps } from '@vexip-ui/config'\nimport {\n  placementWhileList,\n  useClickOutside,\n  useListener,\n  usePopper,\n  useSetTimeout\n} from '@vexip-ui/hooks'\nimport { getGlobalCount, isElement } from '@vexip-ui/utils'\nimport { tooltipProps } from './props'\n\nimport type { PopperExposed } from '@/components/popper'\nimport type { VirtualElement } from '@vexip-ui/hooks'\n\nconst TEXT_VNODE = createTextVNode('').type\n\nexport default defineComponent({\n  name: 'Tooltip',\n  inheritAttrs: true,\n  props: tooltipProps,\n  emits: ['clickoutside', 'update:visible'],\n  setup(_props, { attrs, slots, emit, expose }) {\n    const nh = useNameHelper('tooltip')\n    const props = useProps('tooltip', _props, {\n      trigger: {\n        default: 'hover',\n        validator: value => {\n          return ['hover', 'click', 'focus', 'hover-focus', 'custom'].includes(value)\n        }\n      },\n      wrapper: false,\n      noArrow: false,\n      transitionName: () => nh.ns('fade'),\n      visible: false,\n      placement: {\n        default: 'top',\n        validator: value => placementWhileList.includes(value)\n      },\n      outsideClose: true,\n      noHover: false,\n      tipClass: null,\n      tipStyle: null,\n      transfer: false,\n      disabled: false,\n      raw: false,\n      delay: 250,\n      tipAlive: false,\n      reverse: false,\n      width: 'auto',\n      virtual: null,\n      shift: false\n    })\n\n    const idIndex = `${getGlobalCount()}`\n    const tooltipId = computed(() => nh.bs(idIndex))\n\n    const hoverDelay = useHoverDelay()\n    const { timer } = useSetTimeout()\n\n    const placement = toRef(props, 'placement')\n    const currentVisible = ref(props.visible)\n    const rendering = ref(props.visible)\n    const transfer = toRef(props, 'transfer')\n    const triggerWidth = ref(100)\n\n    let hovered = false\n    let focused = false\n\n    const useHover = computed(() => props.trigger === 'hover' || props.trigger === 'hover-focus')\n    const useFocus = computed(() => props.trigger === 'focus' || props.trigger === 'hover-focus')\n\n    const originalTrigger = ref<HTMLElement>()\n\n    const reference = computed(() => {\n      const virtual = (props.virtual as any)?.$el ?? props.virtual\n\n      if (virtual) {\n        if ('getBoundingClientRect' in virtual) {\n          return virtual as VirtualElement\n        }\n\n        if ('x' in virtual && 'y' in virtual) {\n          return {\n            getBoundingClientRect: () => ({\n              x: virtual.x,\n              y: virtual.y,\n              left: virtual.x,\n              top: virtual.y,\n              width: 0,\n              height: 0\n            })\n          } as VirtualElement\n        }\n      }\n\n      return originalTrigger.value\n    })\n    const triggerEl = computed(() => (isElement(reference.value) ? reference.value : null))\n    const delay = computed(() => {\n      return typeof props.delay === 'number'\n        ? new Array<number>(2).fill(Math.max(props.delay, 0))\n        : props.delay.map(delay => Math.max(delay, 0))\n    })\n\n    const popper = ref<PopperExposed>()\n    const popperEl = computed(() => popper.value?.wrapper)\n    const arrow = ref<HTMLElement>()\n    const shift = computed<{ mainAxis?: boolean, crossAxis?: boolean }>(() => {\n      if (!props.shift) {\n        return { mainAxis: false }\n      }\n\n      if (props.shift === true || props.shift === 'both') {\n        return { crossAxis: true }\n      }\n\n      return props.shift === 'horizontal' ? { mainAxis: false, crossAxis: true } : {}\n    })\n    const { transferTo, updatePopper } = usePopper({\n      placement,\n      transfer,\n      arrow,\n      reference,\n      shift,\n      wrapper: originalTrigger,\n      popper: popperEl\n    })\n\n    useClickOutside(handleClickOutside, originalTrigger)\n    useClickOutside(() => {\n      if (currentVisible.value && !originalTrigger.value) {\n        handleClickOutside()\n      }\n    }, popperEl)\n\n    const tipStyle = computed(() => {\n      if (props.width === 'auto') {\n        return props.tipStyle\n      }\n\n      if (props.width === 'trigger') {\n        return [{ width: `${triggerWidth.value}px` }, props.tipStyle]\n      }\n\n      return [{ width: `${props.width}px` }, props.tipStyle]\n    })\n\n    const slotParams = shallowReadonly({ toggleVisible, updatePopper })\n\n    useListener(triggerEl, 'mouseenter', handleTriggerEnter)\n    useListener(triggerEl, 'mouseleave', handleTriggerLeave)\n    useListener(triggerEl, 'click', handleTriggerClick)\n    useListener(triggerEl, 'focus', handleTriggerFocus)\n    useListener(triggerEl, 'blur', handleTriggerBlur)\n    useListener(popperEl, 'mouseenter', handleTriggerEnter)\n    useListener(popperEl, 'mouseleave', handleTriggerLeave)\n\n    watch(\n      () => props.visible,\n      value => {\n        currentVisible.value = value\n\n        if (value) {\n          rendering.value = true\n          updatePopper()\n        }\n      }\n    )\n    watch(\n      () => props.disabled,\n      value => {\n        if (value) {\n          toggleVisible(false)\n        }\n      }\n    )\n\n    expose({ rendering, trigger: triggerEl, toggleVisible, updatePopper })\n\n    function toggleVisible(visible = !currentVisible.value) {\n      if (currentVisible.value === visible) return\n\n      currentVisible.value = visible\n\n      if (visible) {\n        computeTriggerWidth()\n        rendering.value = true\n        updatePopper()\n      }\n\n      emit('update:visible', visible)\n      emitEvent(props.onToggle, visible)\n    }\n\n    function computeTriggerWidth() {\n      if (!triggerEl.value) return\n\n      triggerWidth.value = triggerEl.value.offsetWidth\n    }\n\n    function getActiveState() {\n      return (useHover.value && hovered) || (useFocus.value && focused)\n    }\n\n    function handleTriggerEnter() {\n      if (props.disabled) return\n\n      if (useHover.value) {\n        clearTimeout(timer.hover)\n\n        timer.hover = setTimeout(() => {\n          hovered = true\n          toggleVisible(getActiveState())\n        }, delay.value[0] ?? hoverDelay.value)\n      }\n\n      emitEvent(props.onTipEnter)\n    }\n\n    function handleTriggerLeave() {\n      if (props.disabled) return\n\n      if (useHover.value) {\n        clearTimeout(timer.hover)\n\n        timer.hover = setTimeout(() => {\n          hovered = false\n          toggleVisible(getActiveState())\n        }, delay.value[1] ?? hoverDelay.value)\n      }\n\n      emitEvent(props.onTipLeave)\n    }\n\n    function handleTriggerClick() {\n      if (props.disabled) return\n\n      if (props.trigger === 'click') {\n        toggleVisible()\n      }\n    }\n\n    function handleTriggerFocus() {\n      if (props.disabled) return\n\n      if (useFocus.value) {\n        focused = true\n        toggleVisible(getActiveState())\n      }\n    }\n\n    function handleTriggerBlur() {\n      if (props.disabled) return\n\n      if (useFocus.value) {\n        focused = false\n        toggleVisible(getActiveState())\n      }\n    }\n\n    function handleClickOutside() {\n      if (props.disabled) return\n\n      emitEvent(props.onClickOutside)\n\n      if (props.outsideClose && props.trigger !== 'custom' && currentVisible.value) {\n        toggleVisible(false)\n        emitEvent(props.onOutsideClose)\n      }\n    }\n\n    function syncTriggerRef(el?: HTMLElement | null) {\n      if (el) {\n        originalTrigger.value = el.nextElementSibling as HTMLElement | undefined\n      } else {\n        originalTrigger.value = undefined\n      }\n    }\n\n    function syncRendering() {\n      rendering.value = currentVisible.value\n    }\n\n    function stopPropagation(event: MouseEvent) {\n      event.stopPropagation()\n    }\n\n    return () => {\n      const Wrapper = props.wrapper\n        ? ((props.wrapper === true ? 'span' : props.wrapper) as any)\n        : null\n      const triggers = slots.trigger?.(slotParams)\n      const triggerVNode = triggers ? triggers[0] : null\n\n      const renderTrigger = () => {\n        if (!triggerVNode) return null\n\n        if (triggerVNode.type === TEXT_VNODE) {\n          return Wrapper ? <span>{triggerVNode}</span> : <span {...attrs}>{triggerVNode}</span>\n        }\n\n        if (!Wrapper) {\n          triggerVNode.props = mergeProps(triggerVNode.props || {}, attrs, {\n            'aria-describedby': tooltipId.value\n          })\n        }\n\n        return triggerVNode\n      }\n\n      return [\n        triggerVNode &&\n          (Wrapper ? (\n            <Wrapper\n              {...attrs}\n              ref={originalTrigger}\n              class={[nh.b(), nh.bs('vars'), props.inherit && nh.bm('inherit')]}\n              aria-describedby={tooltipId.value}\n            >\n              {triggers}\n            </Wrapper>\n          ) : (\n            <Fragment ref={syncTriggerRef as any}>{renderTrigger()}</Fragment>\n          )),\n        !props.disabled && (props.tipAlive || rendering.value) && (\n          <Popper\n            ref={popper}\n            id={tooltipId.value}\n            class={{\n              [nh.be('popper')]: true,\n              [nh.bs('vars')]: true,\n              [nh.bem('popper', props.reverse ? 'dark' : 'light')]: true,\n              [nh.bem('popper', 'no-hover')]: props.noHover,\n              [nh.bem('popper', 'no-arrow')]: props.noArrow\n            }}\n            appear\n            visible={currentVisible.value}\n            alive={props.tipAlive}\n            to={transferTo.value}\n            transition={props.transitionName}\n            role={'tooltip'}\n            tabindex={-1}\n            onClick={stopPropagation}\n            onAnimationend={syncRendering}\n            onTransitionend={syncRendering}\n          >\n            <div class={[!props.raw && nh.be('tip'), props.tipClass]} style={tipStyle.value}>\n              {renderSlot(slots, 'default', slotParams)}\n            </div>\n            {!props.raw && !props.noArrow && <div ref={arrow} class={nh.be('arrow')}></div>}\n          </Popper>\n        )\n      ]\n    }\n  }\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","TEXT_VNODE","createTextVNode","type","defineComponent","name","inheritAttrs","props","tooltipProps","emits","setup","_props","attrs","slots","emit","expose","nh","useNameHelper","useProps","trigger","default","validator","value","includes","wrapper","noArrow","transitionName","ns","visible","placement","placementWhileList","outsideClose","noHover","tipClass","tipStyle","transfer","disabled","raw","delay","tipAlive","reverse","width","virtual","shift","idIndex","getGlobalCount","tooltipId","computed","bs","hoverDelay","useHoverDelay","timer","useSetTimeout","toRef","currentVisible","ref","rendering","triggerWidth","hovered","focused","useHover","useFocus","originalTrigger","reference","$el","getBoundingClientRect","x","y","left","top","height","triggerEl","isElement","Array","fill","Math","max","map","popper","popperEl","arrow","crossAxis","mainAxis","transferTo","updatePopper","usePopper","useClickOutside","handleClickOutside","slotParams","shallowReadonly","toggleVisible","useListener","handleTriggerEnter","handleTriggerLeave","handleTriggerClick","handleTriggerFocus","handleTriggerBlur","watch","computeTriggerWidth","emitEvent","onToggle","offsetWidth","getActiveState","clearTimeout","hover","setTimeout","onTipEnter","onTipLeave","onClickOutside","onOutsideClose","syncTriggerRef","el","nextElementSibling","undefined","syncRendering","stopPropagation","event","Wrapper","triggers","triggerVNode","_createVNode","_mergeProps","b","inherit","bm","_Fragment","renderTrigger","mergeProps","Popper","be","bem","renderSlot"],"mappings":"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"}