/** * GeChiUI dependencies */ import { useRef, useEffect } from '@gechiui/element'; /** * External dependencies */ // eslint-disable-next-line no-restricted-imports import type { MutableRefObject, RefCallback } from 'react'; type Ref< T > = MutableRefObject< T | null > | RefCallback< T | null >; export function useCombinedRef< T extends HTMLElement >( ...refs: Ref< T >[] ) { const targetRef = useRef( null ); useEffect( () => { refs.forEach( ( ref ) => { if ( ! ref ) return; if ( typeof ref === 'function' ) { ref( targetRef.current ); } else { ref.current = targetRef.current; } } ); }, [ refs ] ); return targetRef; }