{"version":3,"file":"trigger2.mjs","sources":["../../../../../../packages/components/popper/src/trigger.vue"],"sourcesContent":["<template>\n  <b-only-child\n    v-if=\"!virtualTriggering\"\n    v-bind=\"$attrs\"\n    :aria-controls=\"ariaControls\"\n    :aria-describedby=\"ariaDescribedby\"\n    :aria-expanded=\"ariaExpanded\"\n    :aria-haspopup=\"ariaHaspopup\"\n  >\n    <slot />\n  </b-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { BOnlyChild } from '@bigin/components/slot'\nimport { useForwardRef } from '@bigin/hooks'\nimport { POPPER_INJECTION_KEY } from '@bigin/tokens'\nimport { isElement } from '@bigin/utils'\nimport { popperTriggerProps } from './trigger'\n\nimport type { WatchStopHandle } from 'vue'\n\ndefineOptions({\n  name: 'BPopperTrigger',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(popperTriggerProps)\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n  if (role && role.value === 'tooltip') {\n    return props.open && props.id ? props.id : undefined\n  }\n  return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n  if (role && role.value !== 'tooltip') {\n    return role.value\n  }\n  return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nonMounted(() => {\n  watch(\n    () => props.virtualRef,\n    (virtualEl) => {\n      if (virtualEl) {\n        triggerRef.value = unrefElement(virtualEl as HTMLElement) as HTMLElement\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    triggerRef,\n    (el, prevEl) => {\n      virtualTriggerAriaStopWatch?.()\n      virtualTriggerAriaStopWatch = undefined\n      if (isElement(el)) {\n        ;(\n          [\n            'onMouseenter',\n            'onMouseleave',\n            'onClick',\n            'onKeydown',\n            'onFocus',\n            'onBlur',\n            'onContextmenu',\n          ] as const\n        ).forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            ;(el as HTMLElement).addEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler\n            )\n            ;(prevEl as HTMLElement)?.removeEventListener?.(\n              eventName.slice(2).toLowerCase(),\n              handler\n            )\n          }\n        })\n        virtualTriggerAriaStopWatch = watch(\n          [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n          (watches) => {\n            ;[\n              'aria-controls',\n              'aria-describedby',\n              'aria-haspopup',\n              'aria-expanded',\n            ].forEach((key, idx) => {\n              isNil(watches[idx])\n                ? el.removeAttribute(key)\n                : el.setAttribute(key, watches[idx]!)\n            })\n          },\n          { immediate: true }\n        )\n      }\n      if (isElement(prevEl)) {\n        ;[\n          'aria-controls',\n          'aria-describedby',\n          'aria-haspopup',\n          'aria-expanded',\n        ].forEach((key) => prevEl.removeAttribute(key))\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  virtualTriggerAriaStopWatch?.()\n  virtualTriggerAriaStopWatch = undefined\n})\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;mCAyBc,CAAA;AAAA,EACZ,IAAM,EAAA,gBAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAChB,CAAA,CAAA,CAAA;;;;;;AAIA,IAAA,MAAM,EAAE,IAAM,EAAA,UAAA,EAAe,GAAA,MAAA,CAAO,sBAAsB,KAAS,CAAA,CAAA,CAAA;AAEnE,IAAA,aAAA,CAAc,UAAU,CAAA,CAAA;AAElB,IAAA,MAAA,YAAA,GAAe,SAA6B,MAAM;AAC/C,MAAA,OAAA,YAAA,CAAa,KAAQ,GAAA,KAAA,CAAM,EAAK,GAAA,KAAA,CAAA,CAAA;AAAA,KACxC,CAAA,CAAA;AAEK,IAAA,MAAA,eAAA,GAAkB,SAA6B,MAAM;AACrD,MAAA,IAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,SAAW,EAAA;AACpC,QAAA,OAAO,KAAM,CAAA,IAAA,IAAQ,KAAM,CAAA,EAAA,GAAK,MAAM,EAAK,GAAA,KAAA,CAAA,CAAA;AAAA,OAC7C;AACO,MAAA,OAAA,KAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAEK,IAAA,MAAA,YAAA,GAAe,SAA6B,MAAM;AAClD,MAAA,IAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,SAAW,EAAA;AACpC,QAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,OACd;AACO,MAAA,OAAA,KAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAEK,IAAA,MAAA,YAAA,GAAe,SAA6B,MAAM;AACtD,MAAA,OAAO,YAAa,CAAA,KAAA,GAAQ,CAAG,EAAA,KAAA,CAAM,IAAS,CAAA,CAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAED,IAAA,IAAI,2BAA2D,GAAA,KAAA,CAAA,CAAA;AAE/D,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,UAAA;AAAA,QACZ,CAAC,SAAc,KAAA;AACb,UAAA,IAAI,SAAW,EAAA;AACF,YAAA,UAAA,CAAA,KAAA,GAAQ,aAAa,SAAwB,CAAA,CAAA;AAAA,WAC1D;AAAA,SACF;AAAA,QACA;AAAA,UACE,SAAW,EAAA,IAAA;AAAA,SACb;AAAA,OACF,CAAA;AAEA,MAAA,KAAA;AAAA,QACE,UAAA;AAAA,QACA,CAAC,IAAI,MAAW,KAAA;AACgB,UAAA,2BAAA,IAAA,CAAA;AACA,UAAA,2BAAA,GAAA,KAAA,CAAA,CAAA;AAC1B,UAAA,IAAA,SAAA,CAAU,EAAE,CAAG,EAAA;AACjB,YAAA,CAAA;AACE,YAAA;AAAA,cACE,cAAA;AAAA,cACA,cAAA;AAAA,cACA,SAAA;AAAA,cACA,WAAA;AAAA,cACA,SAAA;AAAA,cACA,QAAA;AAAA,cACA,eAAA;AAAA,aACF,CACA,OAAQ,CAAA,CAAC,SAAc,KAAA;AACvB,cAAA,MAAM,UAAU,KAAM,CAAA,SAAA,CAAA,CAAA;AACtB,cAAA,IAAI,OAAS,EAAA;AACX,gBAAA,CAAA;AAAE,gBAAmB,EAAA,CAAA,gBAAA;AAAA,kBACnB,SAAU,CAAA,KAAA,CAAM,CAAC,CAAA,CAAE,WAAY,EAAA;AAAA,kBAC/B,OAAA;AAAA,iBACF,CAAA;AACE,gBAAwB,MAAA,EAAA,mBAAA;AAAA,kBACxB,SAAU,CAAA,KAAA,CAAM,CAAC,CAAA,CAAE,WAAY,EAAA;AAAA,kBAC/B,OAAA;AAAA,iBACF,CAAA;AAAA,eACF;AAAA,aACD,CAAA,CAAA;AAC6B,YAAA,2BAAA,GAAA,KAAA;AAAA,cAC5B,CAAC,YAAA,EAAc,eAAiB,EAAA,YAAA,EAAc,YAAY,CAAA;AAAA,cAC1D,CAAC,OAAY,KAAA;AACX,gBAAA,CAAA;AAAC,gBAAA;AAAA,kBACC,eAAA;AAAA,kBACA,kBAAA;AAAA,kBACA,eAAA;AAAA,kBACA,eAAA;AAAA,iBACA,CAAA,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAQ,KAAA;AAChB,kBAAA,KAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,GACd,EAAG,CAAA,eAAA,CAAgB,GAAG,CAAA,GACtB,EAAG,CAAA,YAAA,CAAa,GAAK,EAAA,OAAA,CAAQ,GAAK,CAAA,CAAA,CAAA;AAAA,iBACvC,CAAA,CAAA;AAAA,eACH;AAAA,cACA,EAAE,WAAW,IAAK,EAAA;AAAA,aACpB,CAAA;AAAA,WACF;AACI,UAAA,IAAA,SAAA,CAAU,MAAM,CAAG,EAAA;AACrB,YAAA,CAAA;AAAC,YAAA;AAAA,cACC,eAAA;AAAA,cACA,kBAAA;AAAA,cACA,eAAA;AAAA,cACA,eAAA;AAAA,cACA,OAAQ,CAAA,CAAC,QAAQ,MAAO,CAAA,eAAA,CAAgB,GAAG,CAAC,CAAA,CAAA;AAAA,WAChD;AAAA,SACF;AAAA,QACA;AAAA,UACE,SAAW,EAAA,IAAA;AAAA,SACb;AAAA,OACF,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,eAAA,CAAgB,MAAM;AACU,MAAA,2BAAA,IAAA,CAAA;AACA,MAAA,2BAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KAC/B,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA;AAAA,MAIX,UAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;"}