(vnode, props, children)
| 12 | * @returns {import('./internal').VNode} |
| 13 | */ |
| 14 | export function cloneElement(vnode, props, children) { |
| 15 | let normalizedProps = assign({}, vnode.props), |
| 16 | key, |
| 17 | ref, |
| 18 | i; |
| 19 | |
| 20 | let defaultProps; |
| 21 | |
| 22 | if (vnode.type && vnode.type.defaultProps) { |
| 23 | defaultProps = vnode.type.defaultProps; |
| 24 | } |
| 25 | |
| 26 | for (i in props) { |
| 27 | if (i == 'key') key = props[i]; |
| 28 | else if (i == 'ref') ref = props[i]; |
| 29 | else if (props[i] === UNDEFINED && defaultProps != UNDEFINED) { |
| 30 | normalizedProps[i] = defaultProps[i]; |
| 31 | } else { |
| 32 | normalizedProps[i] = props[i]; |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | if (arguments.length > 2) { |
| 37 | normalizedProps.children = |
| 38 | arguments.length > 3 ? slice.call(arguments, 2) : children; |
| 39 | } |
| 40 | |
| 41 | return createVNode( |
| 42 | vnode.type, |
| 43 | normalizedProps, |
| 44 | key || vnode.key, |
| 45 | ref || vnode.ref, |
| 46 | NULL |
| 47 | ); |
| 48 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…