style(ChangeDetection): idiomatic TS
This commit is contained in:
		
							parent
							
								
									cdfb635737
								
							
						
					
					
						commit
						598a75ec1c
					
				| @ -5,41 +5,38 @@ import {ChangeDetector} from './interfaces'; | |||||||
| import {CHECK_ALWAYS, CHECK_ONCE, CHECKED, DETACHED, ON_PUSH} from './constants'; | import {CHECK_ALWAYS, CHECK_ONCE, CHECKED, DETACHED, ON_PUSH} from './constants'; | ||||||
| 
 | 
 | ||||||
| export class AbstractChangeDetector extends ChangeDetector { | export class AbstractChangeDetector extends ChangeDetector { | ||||||
|   lightDomChildren: List<any>; |   lightDomChildren: List<any> = []; | ||||||
|   shadowDomChildren: List<any>; |   shadowDomChildren: List<any> = []; | ||||||
|   parent: ChangeDetector; |   parent: ChangeDetector; | ||||||
|   mode: string; |   mode: string = null; | ||||||
|   ref: ChangeDetectorRef; |   ref: ChangeDetectorRef; | ||||||
| 
 | 
 | ||||||
|   constructor() { |   constructor() { | ||||||
|     super(); |     super(); | ||||||
|     this.lightDomChildren = []; |  | ||||||
|     this.shadowDomChildren = []; |  | ||||||
|     this.ref = new ChangeDetectorRef(this); |     this.ref = new ChangeDetectorRef(this); | ||||||
|     this.mode = null; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   addChild(cd: ChangeDetector) { |   addChild(cd: ChangeDetector): void { | ||||||
|     ListWrapper.push(this.lightDomChildren, cd); |     ListWrapper.push(this.lightDomChildren, cd); | ||||||
|     cd.parent = this; |     cd.parent = this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   removeChild(cd: ChangeDetector) { ListWrapper.remove(this.lightDomChildren, cd); } |   removeChild(cd: ChangeDetector): void { ListWrapper.remove(this.lightDomChildren, cd); } | ||||||
| 
 | 
 | ||||||
|   addShadowDomChild(cd: ChangeDetector) { |   addShadowDomChild(cd: ChangeDetector): void { | ||||||
|     ListWrapper.push(this.shadowDomChildren, cd); |     ListWrapper.push(this.shadowDomChildren, cd); | ||||||
|     cd.parent = this; |     cd.parent = this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   removeShadowDomChild(cd: ChangeDetector) { ListWrapper.remove(this.shadowDomChildren, cd); } |   removeShadowDomChild(cd: ChangeDetector): void { ListWrapper.remove(this.shadowDomChildren, cd); } | ||||||
| 
 | 
 | ||||||
|   remove() { this.parent.removeChild(this); } |   remove(): void { this.parent.removeChild(this); } | ||||||
| 
 | 
 | ||||||
|   detectChanges() { this._detectChanges(false); } |   detectChanges(): void { this._detectChanges(false); } | ||||||
| 
 | 
 | ||||||
|   checkNoChanges() { this._detectChanges(true); } |   checkNoChanges(): void { this._detectChanges(true); } | ||||||
| 
 | 
 | ||||||
|   _detectChanges(throwOnChange: boolean) { |   _detectChanges(throwOnChange: boolean): void { | ||||||
|     if (this.mode === DETACHED || this.mode === CHECKED) return; |     if (this.mode === DETACHED || this.mode === CHECKED) return; | ||||||
| 
 | 
 | ||||||
|     this.detectChangesInRecords(throwOnChange); |     this.detectChangesInRecords(throwOnChange); | ||||||
| @ -53,26 +50,26 @@ export class AbstractChangeDetector extends ChangeDetector { | |||||||
|     if (this.mode === CHECK_ONCE) this.mode = CHECKED; |     if (this.mode === CHECK_ONCE) this.mode = CHECKED; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   detectChangesInRecords(throwOnChange: boolean) {} |   detectChangesInRecords(throwOnChange: boolean): void {} | ||||||
|   callOnAllChangesDone() {} |   callOnAllChangesDone(): void {} | ||||||
| 
 | 
 | ||||||
|   _detectChangesInLightDomChildren(throwOnChange: boolean) { |   _detectChangesInLightDomChildren(throwOnChange: boolean): void { | ||||||
|     var c = this.lightDomChildren; |     var c = this.lightDomChildren; | ||||||
|     for (var i = 0; i < c.length; ++i) { |     for (var i = 0; i < c.length; ++i) { | ||||||
|       c[i]._detectChanges(throwOnChange); |       c[i]._detectChanges(throwOnChange); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   _detectChangesInShadowDomChildren(throwOnChange: boolean) { |   _detectChangesInShadowDomChildren(throwOnChange: boolean): void { | ||||||
|     var c = this.shadowDomChildren; |     var c = this.shadowDomChildren; | ||||||
|     for (var i = 0; i < c.length; ++i) { |     for (var i = 0; i < c.length; ++i) { | ||||||
|       c[i]._detectChanges(throwOnChange); |       c[i]._detectChanges(throwOnChange); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   markAsCheckOnce() { this.mode = CHECK_ONCE; } |   markAsCheckOnce(): void { this.mode = CHECK_ONCE; } | ||||||
| 
 | 
 | ||||||
|   markPathToRootAsCheckOnce() { |   markPathToRootAsCheckOnce(): void { | ||||||
|     var c: ChangeDetector = this; |     var c: ChangeDetector = this; | ||||||
|     while (isPresent(c) && c.mode != DETACHED) { |     while (isPresent(c) && c.mode != DETACHED) { | ||||||
|       if (c.mode === CHECKED) c.mode = CHECK_ONCE; |       if (c.mode === CHECKED) c.mode = CHECK_ONCE; | ||||||
|  | |||||||
| @ -13,50 +13,53 @@ export class BindingRecord { | |||||||
|               public elementIndex: number, public propertyName: string, public setter: SetterFn, |               public elementIndex: number, public propertyName: string, public setter: SetterFn, | ||||||
|               public lifecycleEvent: string, public directiveRecord: DirectiveRecord) {} |               public lifecycleEvent: string, public directiveRecord: DirectiveRecord) {} | ||||||
| 
 | 
 | ||||||
|   callOnChange() { return isPresent(this.directiveRecord) && this.directiveRecord.callOnChange; } |   callOnChange(): boolean { | ||||||
|  |     return isPresent(this.directiveRecord) && this.directiveRecord.callOnChange; | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   isOnPushChangeDetection() { |   isOnPushChangeDetection(): boolean { | ||||||
|     return isPresent(this.directiveRecord) && this.directiveRecord.isOnPushChangeDetection(); |     return isPresent(this.directiveRecord) && this.directiveRecord.isOnPushChangeDetection(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   isDirective() { return this.mode === DIRECTIVE; } |   isDirective(): boolean { return this.mode === DIRECTIVE; } | ||||||
| 
 | 
 | ||||||
|   isDirectiveLifecycle() { return this.mode === DIRECTIVE_LIFECYCLE; } |   isDirectiveLifecycle(): boolean { return this.mode === DIRECTIVE_LIFECYCLE; } | ||||||
| 
 | 
 | ||||||
|   isElement() { return this.mode === ELEMENT; } |   isElement(): boolean { return this.mode === ELEMENT; } | ||||||
| 
 | 
 | ||||||
|   isTextNode() { return this.mode === TEXT_NODE; } |   isTextNode(): boolean { return this.mode === TEXT_NODE; } | ||||||
| 
 | 
 | ||||||
|   static createForDirective(ast: AST, propertyName: string, setter: SetterFn, |   static createForDirective(ast: AST, propertyName: string, setter: SetterFn, | ||||||
|                             directiveRecord: DirectiveRecord) { |                             directiveRecord: DirectiveRecord): BindingRecord { | ||||||
|     return new BindingRecord(DIRECTIVE, 0, ast, 0, propertyName, setter, null, directiveRecord); |     return new BindingRecord(DIRECTIVE, 0, ast, 0, propertyName, setter, null, directiveRecord); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createDirectiveOnCheck(directiveRecord: DirectiveRecord) { |   static createDirectiveOnCheck(directiveRecord: DirectiveRecord): BindingRecord { | ||||||
|     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onCheck", |     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onCheck", | ||||||
|                              directiveRecord); |                              directiveRecord); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createDirectiveOnInit(directiveRecord: DirectiveRecord) { |   static createDirectiveOnInit(directiveRecord: DirectiveRecord): BindingRecord { | ||||||
|     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onInit", |     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onInit", | ||||||
|                              directiveRecord); |                              directiveRecord); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createDirectiveOnChange(directiveRecord: DirectiveRecord) { |   static createDirectiveOnChange(directiveRecord: DirectiveRecord): BindingRecord { | ||||||
|     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onChange", |     return new BindingRecord(DIRECTIVE_LIFECYCLE, 0, null, 0, null, null, "onChange", | ||||||
|                              directiveRecord); |                              directiveRecord); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createForElement(ast: AST, elementIndex: number, propertyName: string) { |   static createForElement(ast: AST, elementIndex: number, propertyName: string): BindingRecord { | ||||||
|     return new BindingRecord(ELEMENT, 0, ast, elementIndex, propertyName, null, null, null); |     return new BindingRecord(ELEMENT, 0, ast, elementIndex, propertyName, null, null, null); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createForHostProperty(directiveIndex: DirectiveIndex, ast: AST, propertyName: string) { |   static createForHostProperty(directiveIndex: DirectiveIndex, ast: AST, | ||||||
|  |                                propertyName: string): BindingRecord { | ||||||
|     return new BindingRecord(ELEMENT, directiveIndex, ast, directiveIndex.elementIndex, |     return new BindingRecord(ELEMENT, directiveIndex, ast, directiveIndex.elementIndex, | ||||||
|                              propertyName, null, null, null); |                              propertyName, null, null, null); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static createForTextNode(ast: AST, elementIndex: number) { |   static createForTextNode(ast: AST, elementIndex: number): BindingRecord { | ||||||
|     return new BindingRecord(TEXT_NODE, 0, ast, elementIndex, null, null, null, null); |     return new BindingRecord(TEXT_NODE, 0, ast, elementIndex, null, null, null, null); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -16,14 +16,14 @@ export class ChangeDetectorRef { | |||||||
|   /** |   /** | ||||||
|    * Request to check all ON_PUSH ancestors. |    * Request to check all ON_PUSH ancestors. | ||||||
|    */ |    */ | ||||||
|   requestCheck() { this._cd.markPathToRootAsCheckOnce(); } |   requestCheck(): void { this._cd.markPathToRootAsCheckOnce(); } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * Detaches the change detector from the change detector tree. |    * Detaches the change detector from the change detector tree. | ||||||
|    * |    * | ||||||
|    * The detached change detector will not be checked until it is reattached. |    * The detached change detector will not be checked until it is reattached. | ||||||
|    */ |    */ | ||||||
|   detach() { this._cd.mode = DETACHED; } |   detach(): void { this._cd.mode = DETACHED; } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * Reattach the change detector to the change detector tree. |    * Reattach the change detector to the change detector tree. | ||||||
| @ -32,7 +32,7 @@ export class ChangeDetectorRef { | |||||||
|    *checked during the |    *checked during the | ||||||
|    * next change detection run. |    * next change detection run. | ||||||
|    */ |    */ | ||||||
|   reattach() { |   reattach(): void { | ||||||
|     this._cd.mode = CHECK_ALWAYS; |     this._cd.mode = CHECK_ALWAYS; | ||||||
|     this.requestCheck(); |     this.requestCheck(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ import {RecordType, ProtoRecord} from './proto_record'; | |||||||
|  * replaced with very cheap SELF records. |  * replaced with very cheap SELF records. | ||||||
|  */ |  */ | ||||||
| export function coalesce(records: List<ProtoRecord>): List<ProtoRecord> { | export function coalesce(records: List<ProtoRecord>): List<ProtoRecord> { | ||||||
|   var res = ListWrapper.create(); |   var res: List<ProtoRecord> = ListWrapper.create(); | ||||||
|   var indexMap = MapWrapper.create(); |   var indexMap: Map<number, number> = MapWrapper.create(); | ||||||
| 
 | 
 | ||||||
|   for (var i = 0; i < records.length; ++i) { |   for (var i = 0; i < records.length; ++i) { | ||||||
|     var r = records[i]; |     var r = records[i]; | ||||||
|  | |||||||
| @ -16,12 +16,10 @@ export class ExpressionChangedAfterItHasBeenChecked extends BaseException { | |||||||
| 
 | 
 | ||||||
| export class ChangeDetectionError extends BaseException { | export class ChangeDetectionError extends BaseException { | ||||||
|   message: string; |   message: string; | ||||||
|   originalException: any; |  | ||||||
|   location: string; |   location: string; | ||||||
| 
 | 
 | ||||||
|   constructor(proto: ProtoRecord, originalException: any) { |   constructor(proto: ProtoRecord, public originalException: any) { | ||||||
|     super(); |     super(); | ||||||
|     this.originalException = originalException; |  | ||||||
|     this.location = proto.expressionAsString; |     this.location = proto.expressionAsString; | ||||||
|     this.message = `${this.originalException} in [${this.location}]`; |     this.message = `${this.originalException} in [${this.location}]`; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -47,17 +47,17 @@ export class ChangeDetector { | |||||||
|   parent: ChangeDetector; |   parent: ChangeDetector; | ||||||
|   mode: string; |   mode: string; | ||||||
| 
 | 
 | ||||||
|   addChild(cd: ChangeDetector) {} |   addChild(cd: ChangeDetector): void {} | ||||||
|   addShadowDomChild(cd: ChangeDetector) {} |   addShadowDomChild(cd: ChangeDetector): void {} | ||||||
|   removeChild(cd: ChangeDetector) {} |   removeChild(cd: ChangeDetector): void {} | ||||||
|   removeShadowDomChild(cd: ChangeDetector) {} |   removeShadowDomChild(cd: ChangeDetector): void {} | ||||||
|   remove() {} |   remove(): void {} | ||||||
|   hydrate(context: any, locals: Locals, directives: any) {} |   hydrate(context: any, locals: Locals, directives: any): void {} | ||||||
|   dehydrate() {} |   dehydrate(): void {} | ||||||
|   markPathToRootAsCheckOnce() {} |   markPathToRootAsCheckOnce(): void {} | ||||||
| 
 | 
 | ||||||
|   detectChanges() {} |   detectChanges(): void {} | ||||||
|   checkNoChanges() {} |   checkNoChanges(): void {} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class ChangeDetectorDefinition { | export class ChangeDetectorDefinition { | ||||||
|  | |||||||
| @ -8,12 +8,12 @@ import { | |||||||
|   isPresent |   isPresent | ||||||
| } from "angular2/src/facade/lang"; | } from "angular2/src/facade/lang"; | ||||||
| 
 | 
 | ||||||
| export const TOKEN_TYPE_CHARACTER = 1; | const TOKEN_TYPE_CHARACTER = 1; | ||||||
| export const TOKEN_TYPE_IDENTIFIER = 2; | const TOKEN_TYPE_IDENTIFIER = 2; | ||||||
| export const TOKEN_TYPE_KEYWORD = 3; | const TOKEN_TYPE_KEYWORD = 3; | ||||||
| export const TOKEN_TYPE_STRING = 4; | const TOKEN_TYPE_STRING = 4; | ||||||
| export const TOKEN_TYPE_OPERATOR = 5; | const TOKEN_TYPE_OPERATOR = 5; | ||||||
| export const TOKEN_TYPE_NUMBER = 6; | const TOKEN_TYPE_NUMBER = 6; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class Lexer { | export class Lexer { | ||||||
| @ -160,24 +160,18 @@ const $NBSP = 160; | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| export class ScannerError extends BaseException { | export class ScannerError extends BaseException { | ||||||
|   message: string; |   constructor(public message) { super(); } | ||||||
|   constructor(message) { |  | ||||||
|     super(); |  | ||||||
|     this.message = message; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   toString() { return this.message; } |   toString(): string { return this.message; } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class _Scanner { | class _Scanner { | ||||||
|   length: number; |   length: number; | ||||||
|   peek: number; |   peek: number = 0; | ||||||
|   index: number; |   index: number = -1; | ||||||
| 
 | 
 | ||||||
|   constructor(public input: string) { |   constructor(public input: string) { | ||||||
|     this.length = input.length; |     this.length = input.length; | ||||||
|     this.peek = 0; |  | ||||||
|     this.index = -1; |  | ||||||
|     this.advance(); |     this.advance(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -55,10 +55,9 @@ var INTERPOLATION_REGEXP = RegExpWrapper.create('\\{\\{(.*?)\\}\\}'); | |||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class Parser { | export class Parser { | ||||||
|   _lexer: Lexer; |  | ||||||
|   _reflector: Reflector; |   _reflector: Reflector; | ||||||
|   constructor(lexer: Lexer, providedReflector: Reflector = null) { | 
 | ||||||
|     this._lexer = lexer; |   constructor(public _lexer: Lexer, providedReflector: Reflector = null) { | ||||||
|     this._reflector = isPresent(providedReflector) ? providedReflector : reflector; |     this._reflector = isPresent(providedReflector) ? providedReflector : reflector; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -116,11 +115,9 @@ export class Parser { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class _ParseAST { | class _ParseAST { | ||||||
|   index: int; |   index: int = 0; | ||||||
|   constructor(public input: string, public location: any, public tokens: List<any>, |   constructor(public input: string, public location: any, public tokens: List<any>, | ||||||
|               public reflector: Reflector, public parseAction: boolean) { |               public reflector: Reflector, public parseAction: boolean) {} | ||||||
|     this.index = 0; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   peek(offset: int): Token { |   peek(offset: int): Token { | ||||||
|     var i = this.index + offset; |     var i = this.index + offset; | ||||||
|  | |||||||
| @ -30,39 +30,23 @@ export class IterableChangesFactory extends PipeFactory { | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class IterableChanges extends Pipe { | export class IterableChanges extends Pipe { | ||||||
|   private _collection; |   private _collection = null; | ||||||
|   private _length: int; |   private _length: int = null; | ||||||
|   private _linkedRecords: _DuplicateMap; |   // Keeps track of the used records at any point in time (during & across `_check()` calls)
 | ||||||
|   private _unlinkedRecords: _DuplicateMap; |   private _linkedRecords: _DuplicateMap = null; | ||||||
|   private _previousItHead: CollectionChangeRecord; |   // Keeps track of the removed records at any point in time during `_check()` calls.
 | ||||||
|   private _itHead: CollectionChangeRecord; |   private _unlinkedRecords: _DuplicateMap = null; | ||||||
|   private _itTail: CollectionChangeRecord; |   private _previousItHead: CollectionChangeRecord = null; | ||||||
|   private _additionsHead: CollectionChangeRecord; |   private _itHead: CollectionChangeRecord = null; | ||||||
|   private _additionsTail: CollectionChangeRecord; |   private _itTail: CollectionChangeRecord = null; | ||||||
|   private _movesHead: CollectionChangeRecord; |   private _additionsHead: CollectionChangeRecord = null; | ||||||
|   private _movesTail: CollectionChangeRecord; |   private _additionsTail: CollectionChangeRecord = null; | ||||||
|   private _removalsHead: CollectionChangeRecord; |   private _movesHead: CollectionChangeRecord = null; | ||||||
|   private _removalsTail: CollectionChangeRecord; |   private _movesTail: CollectionChangeRecord = null; | ||||||
|  |   private _removalsHead: CollectionChangeRecord = null; | ||||||
|  |   private _removalsTail: CollectionChangeRecord = null; | ||||||
| 
 | 
 | ||||||
|   constructor() { |   constructor() { super(); } | ||||||
|     super(); |  | ||||||
|     this._collection = null; |  | ||||||
|     this._length = null; |  | ||||||
|     /// Keeps track of the used records at any point in time (during & across `_check()` calls)
 |  | ||||||
|     this._linkedRecords = null; |  | ||||||
|     /// Keeps track of the removed records at any point in time during `_check()` calls.
 |  | ||||||
|     this._unlinkedRecords = null; |  | ||||||
| 
 |  | ||||||
|     this._previousItHead = null; |  | ||||||
|     this._itHead = null; |  | ||||||
|     this._itTail = null; |  | ||||||
|     this._additionsHead = null; |  | ||||||
|     this._additionsTail = null; |  | ||||||
|     this._movesHead = null; |  | ||||||
|     this._movesTail = null; |  | ||||||
|     this._removalsHead = null; |  | ||||||
|     this._removalsTail = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   static supportsObj(obj): boolean { return isListLikeIterable(obj); } |   static supportsObj(obj): boolean { return isListLikeIterable(obj); } | ||||||
| 
 | 
 | ||||||
| @ -496,35 +480,20 @@ export class IterableChanges extends Pipe { | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class CollectionChangeRecord { | export class CollectionChangeRecord { | ||||||
|   currentIndex: int; |   currentIndex: int = null; | ||||||
|   previousIndex: int; |   previousIndex: int = null; | ||||||
|   item; |  | ||||||
| 
 | 
 | ||||||
|   _nextPrevious: CollectionChangeRecord; |   _nextPrevious: CollectionChangeRecord = null; | ||||||
|   _prev: CollectionChangeRecord; |   _prev: CollectionChangeRecord = null; | ||||||
|   _next: CollectionChangeRecord; |   _next: CollectionChangeRecord = null; | ||||||
|   _prevDup: CollectionChangeRecord; |   _prevDup: CollectionChangeRecord = null; | ||||||
|   _nextDup: CollectionChangeRecord; |   _nextDup: CollectionChangeRecord = null; | ||||||
|   _prevRemoved: CollectionChangeRecord; |   _prevRemoved: CollectionChangeRecord = null; | ||||||
|   _nextRemoved: CollectionChangeRecord; |   _nextRemoved: CollectionChangeRecord = null; | ||||||
|   _nextAdded: CollectionChangeRecord; |   _nextAdded: CollectionChangeRecord = null; | ||||||
|   _nextMoved: CollectionChangeRecord; |   _nextMoved: CollectionChangeRecord = null; | ||||||
| 
 | 
 | ||||||
|   constructor(item) { |   constructor(public item: any) {} | ||||||
|     this.currentIndex = null; |  | ||||||
|     this.previousIndex = null; |  | ||||||
|     this.item = item; |  | ||||||
| 
 |  | ||||||
|     this._nextPrevious = null; |  | ||||||
|     this._prev = null; |  | ||||||
|     this._next = null; |  | ||||||
|     this._prevDup = null; |  | ||||||
|     this._nextDup = null; |  | ||||||
|     this._prevRemoved = null; |  | ||||||
|     this._nextRemoved = null; |  | ||||||
|     this._nextAdded = null; |  | ||||||
|     this._nextMoved = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   toString(): string { |   toString(): string { | ||||||
|     return this.previousIndex === this.currentIndex ? |     return this.previousIndex === this.currentIndex ? | ||||||
| @ -536,20 +505,15 @@ export class CollectionChangeRecord { | |||||||
| 
 | 
 | ||||||
| // A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item
 | // A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item
 | ||||||
| class _DuplicateItemRecordList { | class _DuplicateItemRecordList { | ||||||
|   _head: CollectionChangeRecord; |   _head: CollectionChangeRecord = null; | ||||||
|   _tail: CollectionChangeRecord; |   _tail: CollectionChangeRecord = null; | ||||||
| 
 |  | ||||||
|   constructor() { |  | ||||||
|     this._head = null; |  | ||||||
|     this._tail = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * Append the record to the list of duplicates. |    * Append the record to the list of duplicates. | ||||||
|    * |    * | ||||||
|    * Note: by design all records in the list of duplicates hold the same value in record.item. |    * Note: by design all records in the list of duplicates hold the same value in record.item. | ||||||
|    */ |    */ | ||||||
|   add(record: CollectionChangeRecord) { |   add(record: CollectionChangeRecord): void { | ||||||
|     if (this._head === null) { |     if (this._head === null) { | ||||||
|       this._head = this._tail = record; |       this._head = this._tail = record; | ||||||
|       record._nextDup = null; |       record._nextDup = null; | ||||||
| @ -610,8 +574,7 @@ class _DuplicateItemRecordList { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class _DuplicateMap { | class _DuplicateMap { | ||||||
|   map: Map<any, _DuplicateItemRecordList>; |   map: Map<any, _DuplicateItemRecordList> = MapWrapper.create(); | ||||||
|   constructor() { this.map = MapWrapper.create(); } |  | ||||||
| 
 | 
 | ||||||
|   put(record: CollectionChangeRecord) { |   put(record: CollectionChangeRecord) { | ||||||
|     // todo(vicb) handle corner cases
 |     // todo(vicb) handle corner cases
 | ||||||
|  | |||||||
| @ -19,28 +19,15 @@ export class KeyValueChangesFactory extends PipeFactory { | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class KeyValueChanges extends Pipe { | export class KeyValueChanges extends Pipe { | ||||||
|   private _records: Map<any, any>; |   private _records: Map<any, any> = MapWrapper.create(); | ||||||
|   private _mapHead: KVChangeRecord; |   private _mapHead: KVChangeRecord = null; | ||||||
|   private _previousMapHead: KVChangeRecord; |   private _previousMapHead: KVChangeRecord = null; | ||||||
|   private _changesHead: KVChangeRecord; |   private _changesHead: KVChangeRecord = null; | ||||||
|   private _changesTail: KVChangeRecord; |   private _changesTail: KVChangeRecord = null; | ||||||
|   private _additionsHead: KVChangeRecord; |   private _additionsHead: KVChangeRecord = null; | ||||||
|   private _additionsTail: KVChangeRecord; |   private _additionsTail: KVChangeRecord = null; | ||||||
|   private _removalsHead: KVChangeRecord; |   private _removalsHead: KVChangeRecord = null; | ||||||
|   private _removalsTail: KVChangeRecord; |   private _removalsTail: KVChangeRecord = null; | ||||||
| 
 |  | ||||||
|   constructor() { |  | ||||||
|     super(); |  | ||||||
|     this._records = MapWrapper.create(); |  | ||||||
|     this._mapHead = null; |  | ||||||
|     this._previousMapHead = null; |  | ||||||
|     this._changesHead = null; |  | ||||||
|     this._changesTail = null; |  | ||||||
|     this._additionsHead = null; |  | ||||||
|     this._additionsTail = null; |  | ||||||
|     this._removalsHead = null; |  | ||||||
|     this._removalsTail = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   static supportsObj(obj): boolean { return obj instanceof Map || isJsObject(obj); } |   static supportsObj(obj): boolean { return obj instanceof Map || isJsObject(obj); } | ||||||
| 
 | 
 | ||||||
| @ -347,29 +334,17 @@ export class KeyValueChanges extends Pipe { | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class KVChangeRecord { | export class KVChangeRecord { | ||||||
|   key; |   previousValue: any = null; | ||||||
|   previousValue; |   currentValue: any = null; | ||||||
|   currentValue; |  | ||||||
| 
 | 
 | ||||||
|   _nextPrevious: KVChangeRecord; |   _nextPrevious: KVChangeRecord = null; | ||||||
|   _next: KVChangeRecord; |   _next: KVChangeRecord = null; | ||||||
|   _nextAdded: KVChangeRecord; |   _nextAdded: KVChangeRecord = null; | ||||||
|   _nextRemoved: KVChangeRecord; |   _nextRemoved: KVChangeRecord = null; | ||||||
|   _prevRemoved: KVChangeRecord; |   _prevRemoved: KVChangeRecord = null; | ||||||
|   _nextChanged: KVChangeRecord; |   _nextChanged: KVChangeRecord = null; | ||||||
| 
 | 
 | ||||||
|   constructor(key) { |   constructor(public key: any) {} | ||||||
|     this.key = key; |  | ||||||
|     this.previousValue = null; |  | ||||||
|     this.currentValue = null; |  | ||||||
| 
 |  | ||||||
|     this._nextPrevious = null; |  | ||||||
|     this._next = null; |  | ||||||
|     this._nextAdded = null; |  | ||||||
|     this._nextRemoved = null; |  | ||||||
|     this._prevRemoved = null; |  | ||||||
|     this._nextChanged = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   toString(): string { |   toString(): string { | ||||||
|     return looseIdentical(this.previousValue, this.currentValue) ? |     return looseIdentical(this.previousValue, this.currentValue) ? | ||||||
|  | |||||||
| @ -24,11 +24,8 @@ import {Pipe} from './pipe'; | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class LowerCasePipe extends Pipe { | export class LowerCasePipe extends Pipe { | ||||||
|   _latestValue: string; |   _latestValue: string = null; | ||||||
|   constructor() { | 
 | ||||||
|     super(); |  | ||||||
|     this._latestValue = null; |  | ||||||
|   } |  | ||||||
|   supports(str): boolean { return isString(str); } |   supports(str): boolean { return isString(str); } | ||||||
| 
 | 
 | ||||||
|   onDestroy(): void { this._latestValue = null; } |   onDestroy(): void { this._latestValue = null; } | ||||||
|  | |||||||
| @ -17,11 +17,7 @@ export class NullPipeFactory extends PipeFactory { | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class NullPipe extends Pipe { | export class NullPipe extends Pipe { | ||||||
|   called: boolean; |   called: boolean = false; | ||||||
|   constructor() { |  | ||||||
|     super(); |  | ||||||
|     this.called = false; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   static supportsObj(obj): boolean { return isBlank(obj); } |   static supportsObj(obj): boolean { return isBlank(obj); } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -30,22 +30,13 @@ import {ChangeDetectorRef} from '../change_detector_ref'; | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class ObservablePipe extends Pipe { | export class ObservablePipe extends Pipe { | ||||||
|   _ref: ChangeDetectorRef; |   _latestValue: Object = null; | ||||||
|  |   _latestReturnedValue: Object = null; | ||||||
| 
 | 
 | ||||||
|   _latestValue: Object; |   _subscription: Object = null; | ||||||
|   _latestReturnedValue: Object; |   _observable: Observable = null; | ||||||
| 
 | 
 | ||||||
|   _subscription: Object; |   constructor(public _ref: ChangeDetectorRef) { super(); } | ||||||
|   _observable: Observable; |  | ||||||
| 
 |  | ||||||
|   constructor(ref: ChangeDetectorRef) { |  | ||||||
|     super(); |  | ||||||
|     this._ref = ref; |  | ||||||
|     this._latestValue = null; |  | ||||||
|     this._latestReturnedValue = null; |  | ||||||
|     this._subscription = null; |  | ||||||
|     this._observable = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   supports(obs): boolean { return ObservableWrapper.isObservable(obs); } |   supports(obs): boolean { return ObservableWrapper.isObservable(obs); } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -29,17 +29,11 @@ import {ChangeDetectorRef} from '../change_detector_ref'; | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class PromisePipe extends Pipe { | export class PromisePipe extends Pipe { | ||||||
|   _ref: ChangeDetectorRef; |   _latestValue: Object = null; | ||||||
|   _latestValue: Object; |   _latestReturnedValue: Object = null; | ||||||
|   _latestReturnedValue: Object; |  | ||||||
|   _sourcePromise: Promise<any>; |   _sourcePromise: Promise<any>; | ||||||
| 
 | 
 | ||||||
|   constructor(ref: ChangeDetectorRef) { |   constructor(public _ref: ChangeDetectorRef) { super(); } | ||||||
|     super(); |  | ||||||
|     this._ref = ref; |  | ||||||
|     this._latestValue = null; |  | ||||||
|     this._latestReturnedValue = null; |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   supports(promise): boolean { return isPromise(promise); } |   supports(promise): boolean { return isPromise(promise); } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -24,11 +24,8 @@ import {Pipe} from './pipe'; | |||||||
|  * @exportedAs angular2/pipes |  * @exportedAs angular2/pipes | ||||||
|  */ |  */ | ||||||
| export class UpperCasePipe extends Pipe { | export class UpperCasePipe extends Pipe { | ||||||
|   _latestValue: string; |   _latestValue: string = null; | ||||||
|   constructor() { | 
 | ||||||
|     super(); |  | ||||||
|     this._latestValue = null; |  | ||||||
|   } |  | ||||||
|   supports(str): boolean { return isString(str); } |   supports(str): boolean { return isString(str); } | ||||||
| 
 | 
 | ||||||
|   onDestroy(): void { this._latestValue = null; } |   onDestroy(): void { this._latestValue = null; } | ||||||
|  | |||||||
| @ -6,8 +6,6 @@ import {coalesce} from './coalesce'; | |||||||
| export {Function as PregenProtoChangeDetectorFactory}; | export {Function as PregenProtoChangeDetectorFactory}; | ||||||
| 
 | 
 | ||||||
| export class PregenProtoChangeDetector extends ProtoChangeDetector { | export class PregenProtoChangeDetector extends ProtoChangeDetector { | ||||||
|   constructor() { super(); } |  | ||||||
| 
 |  | ||||||
|   static isSupported(): boolean { return false; } |   static isSupported(): boolean { return false; } | ||||||
| 
 | 
 | ||||||
|   instantiate(dispatcher: any): ChangeDetector { |   instantiate(dispatcher: any): ChangeDetector { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user