| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | var nestRE = /^(attrs|props|on|nativeOn|class|style|hook)$/module.exports = function mergeJSXProps (objs) {  return objs.reduce(function (a, b) {    var aa, bb, key, nestedKey, temp    for (key in b) {      aa = a[key]      bb = b[key]      if (aa && nestRE.test(key)) {        // normalize class        if (key === 'class') {          if (typeof aa === 'string') {            temp = aa            a[key] = aa = {}            aa[temp] = true          }          if (typeof bb === 'string') {            temp = bb            b[key] = bb = {}            bb[temp] = true          }        }        if (key === 'on' || key === 'nativeOn' || key === 'hook') {          // merge functions          for (nestedKey in bb) {            aa[nestedKey] = mergeFn(aa[nestedKey], bb[nestedKey])          }        } else if (Array.isArray(aa)) {          a[key] = aa.concat(bb)        } else if (Array.isArray(bb)) {          a[key] = [aa].concat(bb)        } else {          for (nestedKey in bb) {            aa[nestedKey] = bb[nestedKey]          }        }      } else {        a[key] = b[key]      }    }    return a  }, {})}function mergeFn (a, b) {  return function () {    a && a.apply(this, arguments)    b && b.apply(this, arguments)  }}
 |