import { isRef } from "vue"; import type { Ref } from "vue"; type TargetValue = T | undefined | null; export type BasicTarget = | TargetValue | (() => T) | Ref; export type TargetElement = HTMLElement | Element | Window | Document; export function getTargetElement( target: BasicTarget, defaultTarget?: T ): TargetValue { if (!target) return defaultTarget; let targetElement: TargetValue; if (typeof target === "function") { targetElement = target(); } else if (isRef(target)) { targetElement = target.value; } else { targetElement = target; } return targetElement; }