@@ -323,7 +323,6 @@ function reconcile(array, state, anchor, render_fn, flags, get_key) {
323
323
if ( matched . length < stashed . length ) {
324
324
// more efficient to move later items to the front
325
325
var start = stashed [ 0 ] ;
326
- var local_anchor = start . o ;
327
326
var j ;
328
327
329
328
prev = start . prev ;
@@ -332,7 +331,7 @@ function reconcile(array, state, anchor, render_fn, flags, get_key) {
332
331
var b = matched [ matched . length - 1 ] ;
333
332
334
333
for ( j = 0 ; j < matched . length ; j += 1 ) {
335
- move ( matched [ j ] , local_anchor ) ;
334
+ move ( matched [ j ] , start , anchor ) ;
336
335
}
337
336
338
337
for ( j = 0 ; j < stashed . length ; j += 1 ) {
@@ -352,7 +351,7 @@ function reconcile(array, state, anchor, render_fn, flags, get_key) {
352
351
} else {
353
352
// more efficient to move earlier items to the back
354
353
seen . delete ( item ) ;
355
- move ( item , current ? current . o : anchor ) ;
354
+ move ( item , current , anchor ) ;
356
355
357
356
link ( item . prev , item . next ) ;
358
357
link ( item , prev . next ) ;
@@ -492,21 +491,19 @@ function create_item(open, anchor, prev, next, value, key, index, render_fn, fla
492
491
493
492
/**
494
493
* @param {import('#client').EachItem } item
494
+ * @param {import('#client').EachItem | null } next
495
495
* @param {Text | Element | Comment } anchor
496
496
*/
497
- function move ( item , anchor ) {
498
- anchor . before ( item . o ) ;
497
+ function move ( item , next , anchor ) {
498
+ var end = item . next ? item . next . o : anchor ;
499
+ var dest = next ? next . o : anchor ;
499
500
500
- var dom = item . e . dom ;
501
+ var node = /** @type { import('#client').TemplateNode } */ ( item . o ) ;
501
502
502
- if ( dom !== null ) {
503
- if ( is_array ( dom ) ) {
504
- for ( var i = 0 ; i < dom . length ; i ++ ) {
505
- anchor . before ( dom [ i ] ) ;
506
- }
507
- } else {
508
- anchor . before ( dom ) ;
509
- }
503
+ while ( node !== end ) {
504
+ var next_node = /** @type {import('#client').TemplateNode } */ ( node . nextSibling ) ;
505
+ dest . before ( node ) ;
506
+ node = next_node ;
510
507
}
511
508
}
512
509
0 commit comments