import { isFunction, isObject } from 'lodash';
import { useCallback } from 'react';
function setRef(ref: any, value: any): void {
if (isFunction(ref)) {
ref(value);
} else if (isObject(ref) && 'current' in ref) {
ref['current'] = value;
}
}
export function useForkRef<T>(...refs: (React.ForwardedRef<T> | undefined)[]): React.RefCallback<T> {
return useCallback(
(refValue) => {
refs.forEach((ref) => {
setRef(ref, refValue);
});
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[...refs]
);
}