From 8bc88692ad6da55cb948709b961b254014a450c5 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 19 Mar 2024 13:06:21 -0400 Subject: [PATCH] simplify --- .../src/internal/client/dom/blocks/each.js | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/packages/svelte/src/internal/client/dom/blocks/each.js b/packages/svelte/src/internal/client/dom/blocks/each.js index b3a223936a..c468d67587 100644 --- a/packages/svelte/src/internal/client/dom/blocks/each.js +++ b/packages/svelte/src/internal/client/dom/blocks/each.js @@ -382,8 +382,6 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f return; } - var a_end = a; - var b_end = b; var is_animated = (flags & EACH_IS_ANIMATED) !== 0; var should_update_block = is_animated || (flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0; @@ -393,22 +391,22 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f var sibling = null; // Step 1 — trim from the end - while (a_end > 0 && b_end > 0 && a_blocks[a_end - 1].k === keys[b_end - 1]) { - a_end -= 1; - b_end -= 1; + while (a > 0 && b > 0 && a_blocks[a - 1].k === keys[b - 1]) { + a -= 1; + b -= 1; - block = a_blocks[a_end]; + block = a_blocks[a]; if (should_update_block) { - update_each_item_block(block, array[b_end], b_end, flags); + update_each_item_block(block, array[b], b, flags); } sibling = get_first_child(block); - b_blocks[b_end] = block; + b_blocks[b] = block; } // Step 2 — trim from the start - while (start < a_end && start < b_end && a_blocks[start].k === keys[start]) { + while (start < a && start < b && a_blocks[start].k === keys[start]) { block = a_blocks[start]; if (should_update_block) { @@ -420,14 +418,14 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f } // Step 3 - if (start >= a_end) { - while (--b_end >= start) { - block = create_each_item_block(array[b_end], keys[b_end], b_end, render_fn, flags); - b_blocks[b_end] = block; + if (start >= a) { + while (--b >= start) { + block = create_each_item_block(array[b], keys[b], b, render_fn, flags); + b_blocks[b] = block; sibling = insert_each_item_block(block, dom, is_controlled, sibling); } - } else if (start >= b_end) { - while (start < a_end) { + } else if (start >= b) { + while (start < a) { if ((block = a_blocks[start++]) !== null) { destroy_each_item_block(block); } @@ -435,18 +433,18 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f } else { // Step 4 var moved = false; - var b_length = b_end - start; + var b_length = b - start; var sources = new Int32Array(b_length); var item_index = new Map(); - for (i = start; i < b_end; i += 1) { + for (i = start; i < b; i += 1) { sources[i - start] = NEW_BLOCK; map_set(item_index, keys[i], i); } // If keys are animated, we need to do updates before actual moves if (is_animated) { - for (i = start; i < a_end; i += 1) { + for (i = start; i < a; i += 1) { var index = map_get(item_index, /** @type {V} */ (a_blocks[i].k)); if (index !== undefined) { update_each_item_block(a_blocks[i], array[index], index, flags); @@ -454,7 +452,7 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f } } - for (i = start; i < a_end; i += 1) { + for (i = start; i < a; i += 1) { var index = map_get(item_index, /** @type {V} */ (a_blocks[i].k)); block = a_blocks[i]; if (index !== undefined) {