{"version":3,"sources":["abstract_change_detector.js"],"names":[],"mappings":"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","file":"angular2/src/change_detection/abstract_change_detector.js","sourcesContent":["import {isPresent} from 'angular2/src/facade/lang';\nimport {List, ListWrapper} from 'angular2/src/facade/collection';\nimport {ChangeDetectorRef} from './change_detector_ref';\nimport {ChangeDetector} from './interfaces';\nimport {CHECK_ALWAYS, CHECK_ONCE, CHECKED, DETACHED, ON_PUSH} from './constants';\n\nexport class AbstractChangeDetector extends ChangeDetector {\n  lightDomChildren:List;\n  shadowDomChildren:List;\n  parent:ChangeDetector;\n  mode:string;\n  ref:ChangeDetectorRef;\n\n  constructor() {\n    super();\n    this.lightDomChildren = [];\n    this.shadowDomChildren = [];\n    this.ref = new ChangeDetectorRef(this);\n    this.mode = null;\n  }\n\n  addChild(cd:ChangeDetector) {\n    ListWrapper.push(this.lightDomChildren, cd);\n    cd.parent = this;\n  }\n\n  removeChild(cd:ChangeDetector) {\n    ListWrapper.remove(this.lightDomChildren, cd);\n  }\n\n  addShadowDomChild(cd:ChangeDetector) {\n    ListWrapper.push(this.shadowDomChildren, cd);\n    cd.parent = this;\n  }\n\n  removeShadowDomChild(cd:ChangeDetector) {\n    ListWrapper.remove(this.shadowDomChildren, cd);\n  }\n\n  remove() {\n    this.parent.removeChild(this);\n  }\n\n  detectChanges() {\n    this._detectChanges(false);\n  }\n\n  checkNoChanges() {\n    this._detectChanges(true);\n  }\n\n  _detectChanges(throwOnChange:boolean) {\n    if (this.mode === DETACHED || this.mode === CHECKED) return;\n\n    this.detectChangesInRecords(throwOnChange);\n\n    this._detectChangesInLightDomChildren(throwOnChange);\n\n    this.callOnAllChangesDone();\n\n    this._detectChangesInShadowDomChildren(throwOnChange);\n\n    if (this.mode === CHECK_ONCE) this.mode = CHECKED;\n  }\n\n  detectChangesInRecords(throwOnChange:boolean){}\n  callOnAllChangesDone(){}\n\n  _detectChangesInLightDomChildren(throwOnChange:boolean) {\n    var c = this.lightDomChildren;\n    for(var i = 0; i < c.length; ++i) {\n      c[i]._detectChanges(throwOnChange);\n    }\n  }\n\n  _detectChangesInShadowDomChildren(throwOnChange:boolean) {\n    var c = this.shadowDomChildren;\n    for(var i = 0; i < c.length; ++i) {\n      c[i]._detectChanges(throwOnChange);\n    }\n  }\n\n  markAsCheckOnce() {\n    this.mode = CHECK_ONCE;\n  }\n\n  markPathToRootAsCheckOnce() {\n    var c = this;\n    while(isPresent(c) && c.mode != DETACHED) {\n      if (c.mode === CHECKED) c.mode = CHECK_ONCE;\n      c = c.parent;\n    }\n  }\n}\n"]}