@@ -267,21 +267,29 @@ export function requestCallback(fn: () => void, options?: { timeout: number }):
267
267
export function cancelCallback ( task : Task ) { }
268
268
269
269
export function mapArray < T , U > (
270
- list : ( ) => T [ ] ,
271
- mapFn : ( v : T , i : ( ) => number ) => U ,
272
- options : { fallback ?: ( ) => any } = { }
270
+ list : Accessor < readonly T [ ] | undefined | null | false > ,
271
+ mapFn : ( v : T , i : Accessor < number > ) => U ,
272
+ options : { fallback ?: Accessor < any > } = { }
273
273
) : ( ) => U [ ] {
274
- const items = list ( ) ;
274
+ const items = list ( ) || [ ] ;
275
275
let s : U [ ] = [ ] ;
276
276
if ( items . length ) {
277
277
for ( let i = 0 , len = items . length ; i < len ; i ++ ) s . push ( mapFn ( items [ i ] , ( ) => i ) ) ;
278
278
} else if ( options . fallback ) s = [ options . fallback ( ) ] ;
279
279
return ( ) => s ;
280
280
}
281
281
282
- function getSymbol ( ) {
283
- const SymbolCopy = Symbol as any ;
284
- return SymbolCopy . observable || "@@observable" ;
282
+ export function indexArray < T , U > (
283
+ list : Accessor < readonly T [ ] | undefined | null | false > ,
284
+ mapFn : ( v : Accessor < T > , i : number ) => U ,
285
+ options : { fallback ?: Accessor < any > } = { }
286
+ ) : ( ) => U [ ] {
287
+ const items = list ( ) || [ ] ;
288
+ let s : U [ ] = [ ] ;
289
+ if ( items . length ) {
290
+ for ( let i = 0 , len = items . length ; i < len ; i ++ ) s . push ( mapFn ( ( ) => items [ i ] , i ) ) ;
291
+ } else if ( options . fallback ) s = [ options . fallback ( ) ] ;
292
+ return ( ) => s ;
285
293
}
286
294
287
295
export type ObservableObserver < T > =
0 commit comments