import type { MutableRefObject } from 'react'; export type TargetValue = T | undefined | null; export type TargetType = HTMLElement | Element | Window | Document; export type BasicTarget = | (() => TargetValue) | TargetValue | MutableRefObject>; export const getTargetElement = ( target: BasicTarget, defaultElement?: T, ): TargetValue => { if (!target) { return defaultElement; } let targetElement: TargetValue; if (typeof target === 'function') { targetElement = target(); } else if ('current' in target) { targetElement = target.current; } else { targetElement = target; } return targetElement; };