{"version":3,"file":"trigger2.mjs","sources":["../../../../../../packages/components/tooltip/src/trigger.vue"],"sourcesContent":["<template>\r\n  <sg-popper-trigger\r\n    :id=\"id\"\r\n    :virtual-ref=\"virtualRef\"\r\n    :open=\"open\"\r\n    :virtual-triggering=\"virtualTriggering\"\r\n    class=\"sg-tooltip__trigger\"\r\n    @blur=\"onBlur\"\r\n    @click=\"onClick\"\r\n    @contextmenu=\"onContextMenu\"\r\n    @focus=\"onFocus\"\r\n    @mouseenter=\"onMouseenter\"\r\n    @mouseleave=\"onMouseleave\"\r\n    @keydown=\"onKeydown\"\r\n  >\r\n    <slot />\r\n  </sg-popper-trigger>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, inject, ref, unref, toRef } from 'vue'\r\nimport { SgPopperTrigger } from '@sgui-plus/components/popper'\r\nimport { EVENT_CODE } from '@sgui-plus/utils/aria'\r\nimport { composeEventHandlers } from '@sgui-plus/utils/dom'\r\nimport { TOOLTIP_INJECTION_KEY } from './constants'\r\nimport { useTooltipTriggerProps } from './trigger'\r\nimport { whenTrigger } from './utils'\r\n\r\nimport type { SgOnlyChildExpose } from '@sgui-plus/components/slot'\r\n\r\nexport default defineComponent({\r\n  name: 'SgTooltipTrigger',\r\n  components: {\r\n    SgPopperTrigger,\r\n  },\r\n  props: useTooltipTriggerProps,\r\n  setup(props) {\r\n    const { controlled, id, open, onOpen, onClose, onToggle } = inject(\r\n      TOOLTIP_INJECTION_KEY,\r\n      undefined\r\n    )!\r\n    const triggerRef = ref<SgOnlyChildExpose | null>(null)\r\n\r\n    const stopWhenControlledOrDisabled = () => {\r\n      if (unref(controlled) || props.disabled) {\r\n        return true\r\n      }\r\n    }\r\n    const trigger = toRef(props, 'trigger')\r\n    const onMouseenter = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'hover', onOpen)\r\n    )\r\n    const onMouseleave = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'hover', onClose)\r\n    )\r\n    const onClick = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'click', (e) => {\r\n        // distinguish left click\r\n        if ((e as MouseEvent).button === 0) {\r\n          onToggle(e)\r\n        }\r\n      })\r\n    )\r\n\r\n    const onFocus = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'focus', onOpen)\r\n    )\r\n\r\n    const onBlur = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'focus', onClose)\r\n    )\r\n\r\n    const onContextMenu = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      whenTrigger(trigger, 'contextmenu', (e: Event) => {\r\n        e.preventDefault()\r\n        onToggle(e)\r\n      })\r\n    )\r\n\r\n    const onKeydown = composeEventHandlers(\r\n      stopWhenControlledOrDisabled,\r\n      (e: KeyboardEvent) => {\r\n        const { code } = e\r\n        if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {\r\n          onToggle(e)\r\n        }\r\n      }\r\n    )\r\n\r\n    return {\r\n      onBlur,\r\n      onContextMenu,\r\n      onFocus,\r\n      onMouseenter,\r\n      onMouseleave,\r\n      onClick,\r\n      onKeydown,\r\n      open,\r\n      id,\r\n      triggerRef,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock"],"mappings":";;;;;AAgBsB,EAAA,MAAA,4BAAA,GAAAA,gBAAA,CAAA,mBAAA,CAAA,CAAA;AAbjB,EAAA,OAAAC,SAAA,EAAuB,EAAAC,WAAA,CAAA,4BAAA,EAAA;AAAA,IACvB,IAAI,IAAE,CAAA,EAAA;AAAA,IACN,aAAkB,EAAA,IAAA,CAAA,UAAA;AAAA,IACnB,MAAK,IAAC,CAAA,IAAA;AAAA,IACL,oBAAY,EAAA,IAAA,CAAA,iBAAA;AAAA,IACZ,KAAK,EAAA,qBAAA;AAAA,IACL,MAAW,EAAA,IAAA,CAAA,MAAA;AAAA,IACX,OAAO,EAAA,IAAA,CAAA,OAAA;AAAA,IACP,aAAY,EAAA,IAAA,CAAA,aAAA;AAAA,IACZ,OAAY,EAAA,IAAA,CAAA,OAAA;AAAA,IACZ,YAAS,EAAA,IAAA,CAAA,YAAA;AAAA,IAAA,YAAA,EAAA,IAAA,CAAA,YAAA;;;;;;;;;;;;;"}