function cloneVNodeElement (vnode, { props, attrs, children, ...rest }, h) {
  const cloned = cloneVNode(vnode, h)
  return h(cloned.componentOptions.Ctor, {
    ...cloned.data,
    ...(cloned.componentOptions.listeners || {}),
    props: {
      ...(cloned.data.props || {}),
      ...cloned.componentOptions.propsData,
      ...props
    },
    attrs: {
      ...(cloned.data.attrs || {}),
      ...attrs
    },
    ...rest
  }, cloned.componentOptions.children || children)
}
Clones VNode with merged data
@param {Vue.VNode} vnode VNode
@param {Object} data VNode data
@param {Function} h Render function