UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

21 lines (20 loc) 668 B
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, }); };