1 | import { assign } from './util';
|
2 | import { EMPTY_ARR } from './constants';
|
3 | import { createVNode } from './create-element';
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | export function cloneElement(vnode, props) {
|
13 | props = assign(assign({}, vnode.props), props);
|
14 | if (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);
|
15 | let normalizedProps = {};
|
16 | for (const i in props) {
|
17 | if (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];
|
18 | }
|
19 |
|
20 | return createVNode(
|
21 | vnode.type,
|
22 | normalizedProps,
|
23 | props.key || vnode.key,
|
24 | props.ref || vnode.ref,
|
25 | null
|
26 | );
|
27 | }
|