@@ -12,7 +12,7 @@ import {Observable} from 'rxjs';
12
12
13
13
import { EventEmitter } from '../event_emitter' ;
14
14
import { ElementRef as ViewEngine_ElementRef } from '../linker/element_ref' ;
15
- import { QueryList as viewEngine_QueryList } from '../linker/query_list' ;
15
+ import { QueryList } from '../linker/query_list' ;
16
16
import { TemplateRef as ViewEngine_TemplateRef } from '../linker/template_ref' ;
17
17
import { Type } from '../type' ;
18
18
import { getSymbolIterator } from '../util' ;
@@ -27,7 +27,7 @@ import {TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeType, u
27
27
import { LQueries , unusedValueExportToPlacateAjd as unused4 } from './interfaces/query' ;
28
28
import { LView , TVIEW } from './interfaces/view' ;
29
29
import { getIsParent , getLView , getOrCreateCurrentQueries } from './state' ;
30
- import { flatten , isContentQueryHost } from './util' ;
30
+ import { isContentQueryHost } from './util' ;
31
31
import { createElementRef , createTemplateRef } from './view_engine_compatibility' ;
32
32
33
33
const unusedValueToPlacateAjd = unused1 + unused2 + unused3 + unused4 ;
@@ -95,9 +95,8 @@ export class LQueries_ implements LQueries {
95
95
public parent : LQueries_ | null , private shallow : LQuery < any > | null ,
96
96
private deep : LQuery < any > | null ) { }
97
97
98
- track < T > (
99
- queryList : viewEngine_QueryList < T > , predicate : Type < T > | string [ ] , descend ?: boolean ,
100
- read ?: Type < T > ) : void {
98
+ track < T > ( queryList : QueryList < T > , predicate : Type < T > | string [ ] , descend ?: boolean , read ?: Type < T > ) :
99
+ void {
101
100
if ( descend ) {
102
101
this . deep = createQuery ( this . deep , queryList , predicate , read != null ? read : null ) ;
103
102
} else {
@@ -355,92 +354,7 @@ function createQuery<T>(
355
354
} ;
356
355
}
357
356
358
- class QueryList_ < T > /* implements viewEngine_QueryList<T> */ {
359
- readonly dirty = true ;
360
- readonly changes : Observable < T > = new EventEmitter ( ) ;
361
- private _values : T [ ] = [ ] ;
362
- /** @internal */
363
- _valuesTree : any [ ] = [ ] ;
364
-
365
- get length ( ) : number { return this . _values . length ; }
366
-
367
- get first ( ) : T | null {
368
- let values = this . _values ;
369
- return values . length ? values [ 0 ] : null ;
370
- }
371
-
372
- get last ( ) : T | null {
373
- let values = this . _values ;
374
- return values . length ? values [ values . length - 1 ] : null ;
375
- }
376
-
377
- /**
378
- * See
379
- * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
380
- */
381
- map < U > ( fn : ( item : T , index : number , array : T [ ] ) => U ) : U [ ] { return this . _values . map ( fn ) ; }
382
-
383
- /**
384
- * See
385
- * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
386
- */
387
- filter ( fn : ( item : T , index : number , array : T [ ] ) => boolean ) : T [ ] {
388
- return this . _values . filter ( fn ) ;
389
- }
390
-
391
- /**
392
- * See
393
- * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
394
- */
395
- find ( fn : ( item : T , index : number , array : T [ ] ) => boolean ) : T | undefined {
396
- return this . _values . find ( fn ) ;
397
- }
398
-
399
- /**
400
- * See
401
- * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
402
- */
403
- reduce < U > ( fn : ( prevValue : U , curValue : T , curIndex : number , array : T [ ] ) => U , init : U ) : U {
404
- return this . _values . reduce ( fn , init ) ;
405
- }
406
-
407
- /**
408
- * See
409
- * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
410
- */
411
- forEach ( fn : ( item : T , index : number , array : T [ ] ) => void ) : void { this . _values . forEach ( fn ) ; }
412
-
413
- /**
414
- * See
415
- * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
416
- */
417
- some ( fn : ( value : T , index : number , array : T [ ] ) => boolean ) : boolean {
418
- return this . _values . some ( fn ) ;
419
- }
420
-
421
- toArray ( ) : T [ ] { return this . _values . slice ( 0 ) ; }
422
-
423
- [ getSymbolIterator ( ) ] ( ) : Iterator < T > { return ( this . _values as any ) [ getSymbolIterator ( ) ] ( ) ; }
424
-
425
- toString ( ) : string { return this . _values . toString ( ) ; }
426
-
427
- reset ( res : ( any [ ] | T ) [ ] ) : void {
428
- this . _values = flatten ( res ) ;
429
- ( this as { dirty : boolean } ) . dirty = false ;
430
- }
431
-
432
- notifyOnChanges ( ) : void { ( this . changes as EventEmitter < any > ) . emit ( this ) ; }
433
- setDirty ( ) : void { ( this as { dirty : boolean } ) . dirty = true ; }
434
- destroy ( ) : void {
435
- ( this . changes as EventEmitter < any > ) . complete ( ) ;
436
- ( this . changes as EventEmitter < any > ) . unsubscribe ( ) ;
437
- }
438
- }
439
-
440
- // NOTE: this hack is here because IQueryList has private members and therefore
441
- // it can't be implemented only extended.
442
- export type QueryList < T > = viewEngine_QueryList < T > ;
443
- export const QueryList : typeof viewEngine_QueryList = QueryList_ as any ;
357
+ type QueryList_ < T > = QueryList < T > & { _valuesTree : any [ ] } ;
444
358
445
359
/**
446
360
* Creates and returns a QueryList.
@@ -459,6 +373,7 @@ export function query<T>(
459
373
ngDevMode && assertPreviousIsParent ( getIsParent ( ) ) ;
460
374
const queryList = new QueryList < T > ( ) ;
461
375
const queries = getOrCreateCurrentQueries ( LQueries_ ) ;
376
+ ( queryList as QueryList_ < T > ) . _valuesTree = [ ] ;
462
377
queries . track ( queryList , predicate , descend , read ) ;
463
378
storeCleanupWithContext ( getLView ( ) , queryList , queryList . destroy ) ;
464
379
if ( memoryIndex != null ) {
@@ -475,7 +390,7 @@ export function query<T>(
475
390
export function queryRefresh ( queryList : QueryList < any > ) : boolean {
476
391
const queryListImpl = ( queryList as any as QueryList_ < any > ) ;
477
392
if ( queryList . dirty ) {
478
- queryList . reset ( queryListImpl . _valuesTree ) ;
393
+ queryList . reset ( queryListImpl . _valuesTree || [ ] ) ;
479
394
queryList . notifyOnChanges ( ) ;
480
395
return true ;
481
396
}
0 commit comments