@@ -333,19 +333,15 @@ var pipe = function pipe(fn1, fn2) {
333333} ;
334334
335335var flattenChildren = function flattenChildren ( list , iteratee , a , b ) {
336- return flat ( list , iteratee , 0 , a , b ) ;
337- } ;
338-
339- var flat = function flat ( list , iteratee , index , a , b ) {
340336 var len = list . length ;
341337 var i = - 1 ;
342338
343339 while ( len -- ) {
344340 var item = list [ ++ i ] ;
345341 if ( isArr ( item ) ) {
346- index = flat ( item , iteratee , index , a , b ) ;
342+ flattenChildren ( item , iteratee , a , b ) ;
347343 } else {
348- iteratee ( item , index ++ , a , b ) ;
344+ iteratee ( item , a , b ) ;
349345 }
350346 }
351347} ;
@@ -650,14 +646,16 @@ var initVnode = function initVnode(vnode, parentContext, namespaceURI) {
650646} ;
651647
652648var updateVnode = function updateVnode ( vnode , newVnode , node , parentContext ) {
653- var vtype = vnode . vtype ;
649+ if ( vnode === newVnode ) {
650+ return node ;
651+ }
654652
655653 var newNode = node ;
654+ var vtype = vnode . vtype ;
656655
657656 if ( ! vtype ) {
658- if ( vnode !== newVnode ) {
659- node . nodeValue = newVnode ;
660- }
657+ // textNode
658+ node . nodeValue = newVnode ;
661659 } else if ( vtype === VELEMENT ) {
662660 newNode = updateVelem ( vnode , newVnode , node , parentContext ) ;
663661 } else if ( vtype === VCOMPONENT ) {
@@ -710,7 +708,7 @@ var initChildren = function initChildren(node, children, parentContext) {
710708 if ( isArr ( children ) ) {
711709 flattenChildren ( children , collectVchild , node , parentContext ) ;
712710 } else {
713- collectVchild ( children , 0 , node , parentContext ) ;
711+ collectVchild ( children , node , parentContext ) ;
714712 }
715713} ;
716714
@@ -723,18 +721,15 @@ var updateChildren = function updateChildren(node, newChildren, parentContext) {
723721 if ( isArr ( newChildren ) ) {
724722 flattenChildren ( newChildren , collectNewVchild , newVchildren , vchildren ) ;
725723 } else {
726- collectNewVchild ( newChildren , 0 , newVchildren , vchildren ) ;
724+ collectNewVchild ( newChildren , newVchildren , vchildren ) ;
727725 }
728- node . vchildren = newVchildren ;
729726
730727 var item = null ;
731728 while ( item = vchildren . pop ( ) ) {
732729 destroyVnode ( item . vnode , item . node ) ;
733730 node . removeChild ( item . node ) ;
734731 }
735732
736- var indexOffset = 0 ;
737- var currentNode = null ;
738733 for ( var i = 0 , len = newVchildren . length ; i < len ; i ++ ) {
739734 var newItem = newVchildren [ i ] ;
740735 var oldItem = newItem . prev ;
@@ -761,7 +756,7 @@ var attachNode = function attachNode(node, newNode, existNode) {
761756 }
762757} ;
763758
764- var collectVchild = function collectVchild ( vchild , index , node , parentContext ) {
759+ var collectVchild = function collectVchild ( vchild , node , parentContext ) {
765760 if ( vchild == null || isBln ( vchild ) ) {
766761 return false ;
767762 }
@@ -776,7 +771,7 @@ var collectVchild = function collectVchild(vchild, index, node, parentContext) {
776771 } ) ;
777772} ;
778773
779- var collectNewVchild = function collectNewVchild ( newVchild , __ , newVchildren , vchildren ) {
774+ var collectNewVchild = function collectNewVchild ( newVchild , newVchildren , vchildren ) {
780775 if ( newVchild == null || isBln ( newVchild ) ) {
781776 return false ;
782777 }
@@ -812,9 +807,8 @@ var updateVelem = function updateVelem(velem, newVelem, node, parentContext) {
812807 var newProps = newVelem . props ;
813808 var oldHtml = props . dangerouslySetInnerHTML && props . dangerouslySetInnerHTML . __html ;
814809 var newChildren = newProps . children ;
815- var vchildren = node . vchildren ;
816810
817- if ( oldHtml == null && vchildren . length ) {
811+ if ( oldHtml == null && node . vchildren . length ) {
818812 updateChildren ( node , newChildren , parentContext ) ;
819813 patchProps ( node , props , newProps ) ;
820814 } else {
@@ -836,7 +830,6 @@ var updateVelem = function updateVelem(velem, newVelem, node, parentContext) {
836830
837831var destroyVelem = function destroyVelem ( velem , node ) {
838832 var props = velem . props ;
839- var children = props . children ;
840833 var vchildren = node . vchildren ;
841834
842835 var item = null ;
@@ -1645,12 +1638,13 @@ var forEach = function forEach(children, iteratee, context) {
16451638 if ( children == null ) {
16461639 return children ;
16471640 }
1641+ var index = 0 ;
16481642 if ( isArr ( children ) ) {
1649- flattenChildren ( children , function ( child , index ) {
1650- iteratee . call ( context , child , index ) ;
1643+ flattenChildren ( children , function ( child ) {
1644+ iteratee . call ( context , child , index ++ ) ;
16511645 } ) ;
16521646 } else {
1653- iteratee . call ( context , children , 0 ) ;
1647+ iteratee . call ( context , children , index ) ;
16541648 }
16551649} ;
16561650
0 commit comments