@@ -293,7 +293,8 @@ export function each(node, flags, get_collection, get_key, render_fn, fallback_f
293293 i ,
294294 render_fn ,
295295 flags ,
296- get_collection
296+ get_collection ,
297+ true
297298 ) ;
298299
299300 pending_items . set ( key , item ) ;
@@ -406,28 +407,34 @@ function reconcile(
406407
407408 if ( item === undefined ) {
408409 var pending = pending_items . get ( key ) ;
410+
409411 if ( pending !== undefined ) {
410412 pending_items . delete ( key ) ;
411413 items . set ( key , pending ) ;
412- item = pending ;
413- }
414- }
415414
416- if ( item === undefined ) {
417- var child_anchor = current ? /** @type {TemplateNode } */ ( current . e . nodes_start ) : anchor ;
418-
419- prev = create_item (
420- child_anchor ,
421- state ,
422- prev ,
423- prev === null ? state . first : prev . next ,
424- value ,
425- key ,
426- i ,
427- render_fn ,
428- flags ,
429- get_collection
430- ) ;
415+ var next = prev && prev . next ;
416+
417+ link ( state , prev , pending ) ;
418+ link ( state , pending , next ) ;
419+
420+ move ( pending , next , anchor ) ;
421+ prev = pending ;
422+ } else {
423+ var child_anchor = current ? /** @type {TemplateNode } */ ( current . e . nodes_start ) : anchor ;
424+
425+ prev = create_item (
426+ child_anchor ,
427+ state ,
428+ prev ,
429+ prev === null ? state . first : prev . next ,
430+ value ,
431+ key ,
432+ i ,
433+ render_fn ,
434+ flags ,
435+ get_collection
436+ ) ;
437+ }
431438
432439 items . set ( key , prev ) ;
433440
@@ -604,6 +611,7 @@ function update_item(item, value, index, type) {
604611 * @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void } render_fn
605612 * @param {number } flags
606613 * @param {() => V[] } get_collection
614+ * @param {boolean } [deferred]
607615 * @returns {EachItem }
608616 */
609617function create_item (
@@ -616,7 +624,8 @@ function create_item(
616624 index ,
617625 render_fn ,
618626 flags ,
619- get_collection
627+ get_collection ,
628+ deferred
620629) {
621630 var previous_each_item = current_each_item ;
622631 var reactive = ( flags & EACH_ITEM_REACTIVE ) !== 0 ;
@@ -661,7 +670,9 @@ function create_item(
661670 item . e . next = next && next . e ;
662671
663672 if ( prev === null ) {
664- state . first = item ;
673+ if ( ! deferred ) {
674+ state . first = item ;
675+ }
665676 } else {
666677 prev . next = item ;
667678 prev . e . next = item . e ;
0 commit comments