import type { ComputedRef, InjectionKey, Ref } from 'vue' import type { Instance } from '@popperjs/core' export type Measurable = { getBoundingClientRect: () => DOMRect } /** * triggerRef indicates the element that triggers popper * contentRef indicates the element of popper content * referenceRef indicates the element that popper content relative with */ export type ElPopperInjectionContext = { triggerRef: Ref contentRef: Ref popperInstanceRef: Ref referenceRef: Ref role: ComputedRef } export type ElPopperContentInjectionContext = { arrowRef: Ref arrowOffset: Ref } export const POPPER_INJECTION_KEY: InjectionKey = Symbol('popper') export const POPPER_CONTENT_INJECTION_KEY: InjectionKey = Symbol('popperContent')