Jesus sucks
This commit is contained in:
33
backend/frontend/node_modules/@restart/hooks/esm/useMergedRefs.js
generated
vendored
Normal file
33
backend/frontend/node_modules/@restart/hooks/esm/useMergedRefs.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import { useMemo } from 'react';
|
||||
const toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {
|
||||
ref.current = value;
|
||||
};
|
||||
export function mergeRefs(refA, refB) {
|
||||
const a = toFnRef(refA);
|
||||
const b = toFnRef(refB);
|
||||
return value => {
|
||||
if (a) a(value);
|
||||
if (b) b(value);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and returns a single callback ref composed from two other Refs.
|
||||
*
|
||||
* ```tsx
|
||||
* const Button = React.forwardRef((props, ref) => {
|
||||
* const [element, attachRef] = useCallbackRef<HTMLButtonElement>();
|
||||
* const mergedRef = useMergedRefs(ref, attachRef);
|
||||
*
|
||||
* return <button ref={mergedRef} {...props}/>
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
* @param refA A Callback or mutable Ref
|
||||
* @param refB A Callback or mutable Ref
|
||||
* @category refs
|
||||
*/
|
||||
function useMergedRefs(refA, refB) {
|
||||
return useMemo(() => mergeRefs(refA, refB), [refA, refB]);
|
||||
}
|
||||
export default useMergedRefs;
|
||||
Reference in New Issue
Block a user