@itwin/itwinui-react
Version:
A react component library for iTwinUI
16 lines (15 loc) • 499 B
JavaScript
import * as React from 'react';
import { mergeRefs } from '../hooks/useMergedRefs.js';
export const cloneElementWithRef = (children, getProps) => {
if (!children) return null;
if (!React.isValidElement(children)) return children;
let childrenRef = children.props?.ref || children?.ref;
let props = getProps(children);
let ref = mergeRefs(
...[childrenRef, 'ref' in props ? props.ref : null].filter(Boolean),
);
return React.cloneElement(children, {
...props,
ref,
});
};