@@ -68,7 +68,7 @@ import {
68
68
hydrate_block_anchor ,
69
69
set_current_hydration_fragment
70
70
} from './hydration.js' ;
71
- import { array_from , define_property , get_descriptor , get_descriptors , is_array } from './utils.js' ;
71
+ import { array_from , define_property , get_descriptor , is_array } from './utils.js' ;
72
72
import { is_promise } from '../common.js' ;
73
73
import { bind_transition } from './transitions.js' ;
74
74
@@ -2262,9 +2262,10 @@ export function each_item_block(item, key, index, render_fn, flags) {
2262
2262
* @param {null | ((item: V) => string) } key_fn
2263
2263
* @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal<number>) => void } render_fn
2264
2264
* @param {null | ((anchor: Node) => void) } fallback_fn
2265
+ * @param {typeof reconcile_indexed_array | reconcile_tracked_array } reconcile_fn
2265
2266
* @returns {void }
2266
2267
*/
2267
- export function each ( anchor_node , collection , flags , key_fn , render_fn , fallback_fn ) {
2268
+ function each ( anchor_node , collection , flags , key_fn , render_fn , fallback_fn , reconcile_fn ) {
2268
2269
const is_controlled = ( flags & EACH_IS_CONTROLLED ) !== 0 ;
2269
2270
const block = create_each_block ( flags , anchor_node ) ;
2270
2271
@@ -2384,20 +2385,7 @@ export function each(anchor_node, collection, flags, key_fn, render_fn, fallback
2384
2385
const flags = block . flags ;
2385
2386
const is_controlled = ( flags & EACH_IS_CONTROLLED ) !== 0 ;
2386
2387
const anchor_node = block . anchor ;
2387
- if ( ( flags & EACH_KEYED ) !== 0 ) {
2388
- reconcile_tracked_array (
2389
- array ,
2390
- block ,
2391
- anchor_node ,
2392
- is_controlled ,
2393
- render_fn ,
2394
- keys ,
2395
- flags ,
2396
- true
2397
- ) ;
2398
- } else {
2399
- reconcile_indexed_array ( array , block , anchor_node , is_controlled , render_fn , flags , true ) ;
2400
- }
2388
+ reconcile_fn ( array , block , anchor_node , is_controlled , render_fn , flags , true , keys ) ;
2401
2389
} ,
2402
2390
block ,
2403
2391
true
@@ -2419,12 +2407,39 @@ export function each(anchor_node, collection, flags, key_fn, render_fn, fallback
2419
2407
fallback = fallback . prev ;
2420
2408
}
2421
2409
// Clear the array
2422
- reconcile_indexed_array ( [ ] , block , anchor_node , is_controlled , render_fn , flags , false ) ;
2410
+ reconcile_fn ( [ ] , block , anchor_node , is_controlled , render_fn , flags , false , keys ) ;
2423
2411
destroy_signal ( /** @type {import('./types.js').EffectSignal } */ ( render ) ) ;
2424
2412
} ) ;
2425
2413
block . effect = each ;
2426
2414
}
2427
2415
2416
+ /**
2417
+ * @template V
2418
+ * @param {Element | Comment } anchor_node
2419
+ * @param {() => V[] } collection
2420
+ * @param {number } flags
2421
+ * @param {null | ((item: V) => string) } key_fn
2422
+ * @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal<number>) => void } render_fn
2423
+ * @param {null | ((anchor: Node) => void) } fallback_fn
2424
+ * @returns {void }
2425
+ */
2426
+ export function each_keyed ( anchor_node , collection , flags , key_fn , render_fn , fallback_fn ) {
2427
+ each ( anchor_node , collection , flags , key_fn , render_fn , fallback_fn , reconcile_tracked_array ) ;
2428
+ }
2429
+
2430
+ /**
2431
+ * @template V
2432
+ * @param {Element | Comment } anchor_node
2433
+ * @param {() => V[] } collection
2434
+ * @param {number } flags
2435
+ * @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal<number>) => void } render_fn
2436
+ * @param {null | ((anchor: Node) => void) } fallback_fn
2437
+ * @returns {void }
2438
+ */
2439
+ export function each_indexed ( anchor_node , collection , flags , render_fn , fallback_fn ) {
2440
+ each ( anchor_node , collection , flags , null , render_fn , fallback_fn , reconcile_indexed_array ) ;
2441
+ }
2442
+
2428
2443
/**
2429
2444
* @param {Element | Text | Comment } anchor
2430
2445
* @param {boolean } is_html
0 commit comments