function dispatch (node, type) {
  // Trigger event for this element if it has a key.
  if (getKey(node)) {
    var ev = document.createEvent('Event')
    var prop = { value: node }
    ev.initEvent(type, false, false)
    Object.defineProperty(ev, 'target', prop)
    Object.defineProperty(ev, 'srcElement', prop)
    node.dispatchEvent(ev)
  }

  // Dispatch to all children.
  var child = node.firstChild
  while (child) child = dispatch(child, type).nextSibling
  return node
}
function dispatch (node, type) {
  
  if (getKey(node)) {
    var ev = document.createEvent('Event')
    var prop = { value: node }
    ev.initEvent(type, false, false)
    Object.defineProperty(ev, 'target', prop)
    Object.defineProperty(ev, 'srcElement', prop)
    node.dispatchEvent(ev)
  }

  
  var child = node.firstChild
  while (child) child = dispatch(child, type).nextSibling
  return node
}
function dispatch ( node , type ) { // Trigger event for this element if it has a key. if ( getKey ( node ) ) { var ev = document . createEvent ( 'Event' ) var prop = { value : node } ev . initEvent ( type , false , false ) Object . defineProperty ( ev , 'target' , prop ) Object . defineProperty ( ev , 'srcElement' , prop ) node . dispatchEvent ( ev ) } // Dispatch to all children. var child = node . firstChild while ( child ) child = dispatch ( child , type ) . nextSibling return node }
Recursively trigger an event for a node and it's children.
Only emits events for keyed nodes.

@param {Node} node - the initial node.
@return {Node}
Recursively trigger an event for a node and it s children . Only emits events for keyed nodes .