{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/popover/src/directive.ts"],"sourcesContent":["import { on } from '@element-plus/utils/dom'\n\nimport type { DirectiveBinding, VNode, ObjectDirective } from 'vue'\n\ninterface PopoverInstance {\n  events: Record<string, EventListenerOrEventListenerObject>\n  triggerRef: HTMLElement\n  tabindex: string | number\n}\n\nconst attachEvents = (\n  el: HTMLElement,\n  binding: DirectiveBinding,\n  vnode: VNode\n) => {\n  const _ref = binding.arg || binding.value\n  const popover = vnode.dirs[0].instance.$refs[_ref] as PopoverInstance\n  if (popover) {\n    popover.triggerRef = el\n    el.setAttribute('tabindex', popover.tabindex as string)\n    // because v-popover cannot modify the vnode itself due to it has already been\n    Object.entries(popover.events).forEach(([eventName, e]) => {\n      on(el, eventName.toLowerCase().slice(2), e)\n    })\n  }\n}\n\nexport default {\n  mounted(el, binding, vnode) {\n    attachEvents(el, binding, vnode)\n  },\n  updated(el, binding, vnode) {\n    attachEvents(el, binding, vnode)\n  },\n} as ObjectDirective\n\nexport const VPopover = 'popover'\n"],"names":[],"mappings":";;AAUA,MAAM,eAAe,CACnB,IACA,SACA,UACG;AACH,QAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,QAAM,UAAU,MAAM,KAAK,GAAG,SAAS,MAAM;AAC7C,MAAI,SAAS;AACX,YAAQ,aAAa;AACrB,OAAG,aAAa,YAAY,QAAQ;AAEpC,WAAO,QAAQ,QAAQ,QAAQ,QAAQ,CAAC,CAAC,WAAW,OAAO;AACzD,SAAG,IAAI,UAAU,cAAc,MAAM,IAAI;AAAA;AAAA;AAAA;AAK/C,uBAAe;AAAA,EACb,QAAQ,IAAI,SAAS,OAAO;AAC1B,iBAAa,IAAI,SAAS;AAAA;AAAA,EAE5B,QAAQ,IAAI,SAAS,OAAO;AAC1B,iBAAa,IAAI,SAAS;AAAA;AAAA;MAIjB,WAAW;;;;"}