@itwin/itwinui-react
Version:
A react component library for iTwinUI
21 lines (20 loc) • 668 B
JavaScript
import * as React from 'react';
import { mergeRefs } from '../hooks/useMergedRefs.js';
let _React = React;
export const isReact17or18 = (() => {
let version = _React.version?.split('.')?.[0];
return ['17', '18'].includes(version);
})();
export const cloneElementWithRef = (children, getProps) => {
if (!children) return null;
if (!React.isValidElement(children)) return children;
let childrenRef = isReact17or18 ? children?.ref : children.props?.ref;
let props = getProps(children);
let ref = mergeRefs(
...[childrenRef, 'ref' in props ? props.ref : null].filter(Boolean),
);
return React.cloneElement(children, {
...props,
ref,
});
};