{"version":3,"file":"trigger.mjs","sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\r\n  <sg-only-child\r\n    v-if=\"!virtualTriggering\"\r\n    v-bind=\"$attrs\"\r\n    :aria-describedby=\"open ? id : undefined\"\r\n  >\r\n    <slot />\r\n  </sg-only-child>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, inject, watch } from 'vue'\r\nimport { SgOnlyChild } from '@sgui-plus/components/slot'\r\nimport { useForwardRef } from '@sgui-plus/hooks'\r\nimport { usePopperTriggerProps } from './popper'\r\nimport { POPPER_INJECTION_KEY } from './tokens'\r\nimport { unwrapMeasurableEl } from './utils'\r\n\r\nexport default defineComponent({\r\n  name: 'SgPopperTrigger',\r\n  components: { SgOnlyChild },\r\n  inheritAttrs: false,\r\n  props: {\r\n    ...usePopperTriggerProps,\r\n    onMouseenter: Function,\r\n    onMouseleave: Function,\r\n    onClick: Function,\r\n    onKeydown: Function,\r\n    onFocus: Function,\r\n    onBlur: Function,\r\n    onContextmenu: Function,\r\n    id: String,\r\n    open: Boolean,\r\n  },\r\n  setup(props) {\r\n    const { triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\r\n    useForwardRef(triggerRef)\r\n\r\n    watch(\r\n      () => props.virtualRef,\r\n      (val) => {\r\n        if (val) {\r\n          triggerRef.value = unwrapMeasurableEl(val)\r\n        }\r\n      },\r\n      {\r\n        immediate: true,\r\n      }\r\n    )\r\n\r\n    watch(\r\n      () => triggerRef.value,\r\n      (sg, prevEl) => {\r\n        if (sg && sg instanceof HTMLElement) {\r\n          ;[\r\n            'onMouseenter',\r\n            'onMouseleave',\r\n            'onClick',\r\n            'onKeydown',\r\n            'onFocus',\r\n            'onBlur',\r\n            'onContextmenu',\r\n          ].forEach((eventName) => {\r\n            const handler = props[eventName]\r\n            if (handler) {\r\n              ;(sg as HTMLElement).addEventListener(\r\n                eventName.slice(2).toLowerCase(),\r\n                handler\r\n              )\r\n              ;(prevEl as HTMLElement)?.removeEventListener(\r\n                eventName.slice(2).toLowerCase(),\r\n                handler\r\n              )\r\n            }\r\n          })\r\n        }\r\n      },\r\n      {\r\n        immediate: true,\r\n      }\r\n    )\r\n\r\n    return {\r\n      triggerRef,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock","_mergeProps","_withCtx"],"mappings":";;;;;AAE4B,EAAA,MAAA,wBAAA,GAAAA,gBAAA,CAAA,eAAA,CAAA,CAAA;AAEvB,EAAA,OAAA,CAAA,IAAA,CAAA,iBAAA,IAAAC,SAAA,EAAA,EAAAC,WAAA,CAAA,wBAAA,EAAAC,UAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,EAAA,IAAA,CAAA,MAAA,EAAA;AAEO,IAAA,kBAAA,EAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA,EAAA,GAAA,KAAA,CAAA;AAAA,GAAR,CAAA,EAAA;AAAA,IAAA,OAAA,EAAAC,OAAA,CAAA,MAAA;;;;;;;;;;"}