/** * * @author Ray * * @date 2023-10-03 * * @workspace ray-template * * @remark 今天也是元气满满撸代码的一天 */ import type { BasicTarget, TargetType, TargetValue } from '@/types/modules/vue' import type { ComponentPublicInstance } from 'vue' /** * * @param target 获取 ref dom, vue instance 的 dom * @param defaultTarget 默认值 * * @example * * * const refDom = ref(null) * const computedDom = computed(() => refDom.value) * * unrefElement(refDom) => div * unrefElement(computedDom) => div */ function unrefElement( target: BasicTarget, defaultElement?: T, ) { if (!target) { return defaultElement } let targetElement: TargetValue if (typeof target === 'function') { targetElement = target() } else if (isRef(target)) { targetElement = (target.value as ComponentPublicInstance)?.$el ?? target.value } else { targetElement = target } return targetElement } export { unrefElement }