import type { ForwardedRef, MutableRefObject, RefCallback } from 'react'; import { useEffect, useRef } from 'react'; export default function useCombinedRefs( refs: Array | MutableRefObject | ForwardedRef>, ) { const targetRef = useRef(); useEffect(() => { for (const ref of refs) { if (!ref) return; if (typeof ref === 'function') { ref(targetRef.current); } else { // Mutating a ref. // eslint-disable-next-line react-hooks/immutability ref.current = targetRef.current; } } }, [refs]); return targetRef; }