{"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\">\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 } = inject(tooltipV2RootKey)!\n\nlet isMousedown = false\n\nconst setTriggerRef = (el: HTMLElement | null) => {\n  triggerRef.value = el\n}\n\nconst onMouseenter = composeEventHandlers(props.onMouseEnter, onDelayOpen)\n\nconst onMouseleave = composeEventHandlers(props.onMouseLeave, onClose)\n\nconst onMouseup = () => {\n  isMousedown = false\n}\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\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,WAAA,EAAA,eAAA,MAAA,CAAA,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,KAAA,CAAA;AAGA,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,YAAA,MAAA;AACA,MAAA,WAAA,GAAA,KAAA,CAAA;AAAA,KAAA,CAAA;AAGA,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,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,MAAA;AACA,MAAA,IAAA,CAAA,WAAA;AAAA,QAAA,MAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,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,KAAA,CAAA,CAAA;AAGA,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,KAAA,CAAA;AAGA,IAAA,MAAA,SAAA,GAAA,CACA,EACA,EAAA,OAAA,EACA,IACA,KAAA;AACA,MAAA,IAAA,EAAA,EAAA;AACA,QAAA,MAAA,CAAA,QAAA,OAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,MAAA,OAAA,CAAA,KAAA;AACA,UAAA,EAAA,CAAA,MAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAKA,IAAA,KAAA,CAAA,UAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,KAAA;AACA,MAAA,SAAA,CAAA,WAAA,MAAA,EAAA,kBAAA,CAAA,CAAA;AACA,MAAA,SAAA,CAAA,mBAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,eAAA,CAAA,MAAA;AACA,MAAA,SAAA,CAAA,UAAA,CAAA,OAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AACA,MAAA,QAAA,CAAA,oBAAA,SAAA,EAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}