{"version":3,"file":"trigger2.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/trigger.vue"],"sourcesContent":["<template>\n  <forward-ref v-if=\"nowrap\" :set-ref=\"setTriggerRef\" only-child>\n    <slot />\n  </forward-ref>\n  <button v-else ref=\"triggerRef\" v-bind=\"$attrs\">\n    <slot />\n  </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, watch } from 'vue'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { tooltipV2RootKey } from '@element-plus/tokens'\nimport ForwardRef from './forward-ref'\nimport { tooltipV2TriggerProps } from './trigger'\nimport { tooltipV2CommonProps } from './common'\n\ndefineOptions({\n  name: 'ElTooltipV2Trigger',\n})\n\nconst props = defineProps({\n  ...tooltipV2CommonProps,\n  ...tooltipV2TriggerProps,\n})\n\n/**\n * onOpen opens the tooltip instantly, onTrigger acts a lil bit differently,\n * it will check if delayDuration is set to greater than 0 and based on that result,\n * if true, it opens the tooltip after delayDuration, otherwise it opens it instantly.\n */\nconst { onClose, onOpen, onDelayOpen, triggerRef, contentId } =\n  inject(tooltipV2RootKey)!\n\nlet isMousedown = false\n\nconst setTriggerRef = (el: HTMLElement | null) => {\n  triggerRef.value = el\n}\n\nconst onMouseup = () => {\n  isMousedown = false\n}\n\nconst onMouseenter = composeEventHandlers(props.onMouseEnter, onDelayOpen)\n\nconst onMouseleave = composeEventHandlers(props.onMouseLeave, onClose)\n\nconst onMousedown = composeEventHandlers(props.onMouseDown, () => {\n  onClose()\n  isMousedown = true\n  document.addEventListener('mouseup', onMouseup, { once: true })\n})\n\nconst onFocus = composeEventHandlers(props.onFocus, () => {\n  if (!isMousedown) onOpen()\n})\n\nconst onBlur = composeEventHandlers(props.onBlur, onClose)\n\nconst onClick = composeEventHandlers(props.onClick, (e) => {\n  if ((e as MouseEvent).detail === 0) onClose()\n})\n\nconst events = {\n  blur: onBlur,\n  click: onClick,\n  focus: onFocus,\n  mousedown: onMousedown,\n  mouseenter: onMouseenter,\n  mouseleave: onMouseleave,\n}\n\nconst setEvents = <T extends (e: Event) => void>(\n  el: HTMLElement | null | undefined,\n  events: Record<string, T>,\n  type: 'addEventListener' | 'removeEventListener'\n) => {\n  if (el) {\n    Object.entries(events).forEach(([name, handler]) => {\n      el[type](name, handler)\n    })\n  }\n}\n\nwatch(triggerRef, (triggerEl, previousTriggerEl) => {\n  setEvents(triggerEl, events, 'addEventListener')\n  setEvents(previousTriggerEl, events, 'removeEventListener')\n\n  if (triggerEl) {\n    triggerEl.setAttribute('aria-describedby', contentId.value)\n  }\n})\n\nonBeforeUnmount(() => {\n  setEvents(triggerRef.value, events, 'removeEventListener')\n  document.removeEventListener('mouseup', onMouseup)\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,IAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,UAAA,EAAA,SAAA,EAAA,GACA,OAAA,gBAAA,CAAA,CAAA;AAEA,IAAA,IAAA,WAAA,GAAA,KAAA,CAAA;AAEA,IAAA,MAAA,aAAA,GAAA,CAAA,EAAA,KAAA;AACA,MAAA,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,MAAA,YAAA,MAAA;AACA,MAAA,WAAA,GAAA,KAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,YAAA,EAAA,WAAA,CAAA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,YAAA,EAAA,OAAA,CAAA,CAAA;AAEA,IAAA,MAAA,WAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,WAAA,EAAA,MAAA;AACA,MAAA,OAAA,EAAA,CAAA;AACA,MAAA,WAAA,GAAA,IAAA,CAAA;AACA,MAAA,QAAA,CAAA,iBAAA,SAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,MAAA;AACA,MAAA,IAAA,CAAA,WAAA;AAAA,QAAA,MAAA,EAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,MAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,CAAA,CAAA,KAAA;AACA,MAAA,IAAA,EAAA,MAAA,KAAA,CAAA;AAAA,QAAA,OAAA,EAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,MAAA,GAAA;AAAA,MACA,IAAA,EAAA,MAAA;AAAA,MACA,KAAA,EAAA,OAAA;AAAA,MACA,KAAA,EAAA,OAAA;AAAA,MACA,SAAA,EAAA,WAAA;AAAA,MACA,UAAA,EAAA,YAAA;AAAA,MACA,UAAA,EAAA,YAAA;AAAA,KACA,CAAA;AAEA,IAAA,MAAA,SAAA,GAAA,CACA,EACA,EAAA,OAAA,EACA,IACA,KAAA;AACA,MAAA,IAAA,EAAA,EAAA;AACA,QAAA,MAAA,CAAA,QAAA,OAAA,CAAA,CAAA,QAAA,CAAA,CAAA,MAAA,OAAA,CAAA,KAAA;AACA,UAAA,EAAA,CAAA,IAAA,CAAA,CAAA,MAAA,OAAA,CAAA,CAAA;AAAA,SACA,CAAA,CAAA;AAAA,OACA;AAAA,KACA,CAAA;AAEA,IAAA,KAAA,CAAA,UAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,KAAA;AACA,MAAA,SAAA,CAAA,SAAA,EAAA,QAAA,kBAAA,CAAA,CAAA;AACA,MAAA,SAAA,CAAA,iBAAA,EAAA,QAAA,qBAAA,CAAA,CAAA;AAEA,MAAA,IAAA,SAAA,EAAA;AACA,QAAA,SAAA,CAAA,YAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OACA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,eAAA,CAAA,MAAA;AACA,MAAA,SAAA,CAAA,UAAA,CAAA,KAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AACA,MAAA,QAAA,CAAA,mBAAA,CAAA,WAAA,SAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}