Sha256: a3f5bb713865e205e2fb8ad1d126539710ed84cc26151ee854ef72e56ce4425e
Contents?: true
Size: 983 Bytes
Versions: 69
Compression:
Stored size: 983 Bytes
Contents
import { assign, slice } from './util'; import { createVNode } from './create-element'; /** * Clones the given VNode, optionally adding attributes/props and replacing its children. * @param {import('./internal').VNode} vnode The virtual DOM element to clone * @param {object} props Attributes/props to add when cloning * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children. * @returns {import('./internal').VNode} */ export function cloneElement(vnode, props, children) { let normalizedProps = assign({}, vnode.props), key, ref, i; for (i in props) { if (i == 'key') key = props[i]; else if (i == 'ref') ref = props[i]; else normalizedProps[i] = props[i]; } if (arguments.length > 2) { normalizedProps.children = arguments.length > 3 ? slice.call(arguments, 2) : children; } return createVNode( vnode.type, normalizedProps, key || vnode.key, ref || vnode.ref, null ); }
Version data entries
69 entries across 69 versions & 1 rubygems