{"version":3,"sources":["element_injector.js"],"names":[],"mappings":"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","file":"angular2/src/core/compiler/element_injector.js","sourcesContent":["import {isPresent, isBlank, Type, int, BaseException} from 'angular2/src/facade/lang';\nimport {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';\nimport {Math} from 'angular2/src/facade/math';\nimport {List, ListWrapper, MapWrapper} from 'angular2/src/facade/collection';\nimport {Injector, Key, Dependency, bind, Binding, ResolvedBinding, NoBindingError,\n  AbstractBindingError, CyclicDependencyError} from 'angular2/di';\nimport {Parent, Ancestor} from 'angular2/src/core/annotations/visibility';\nimport {PropertySetter, Attribute, Query} from 'angular2/src/core/annotations/di';\nimport * as viewModule from 'angular2/src/core/compiler/view';\nimport {ViewContainer} from 'angular2/src/core/compiler/view_container';\nimport {NgElement} from 'angular2/src/core/compiler/ng_element';\nimport {Directive, Component, onChange, onDestroy, onAllChangesDone} from 'angular2/src/core/annotations/annotations';\nimport {ChangeDetector, ChangeDetectorRef} from 'angular2/change_detection';\nimport {QueryList} from './query_list';\nimport {reflector} from 'angular2/src/reflection/reflection';\n\nvar _MAX_DIRECTIVE_CONSTRUCTION_COUNTER = 10;\n\nvar MAX_DEPTH = Math.pow(2, 30) - 1;\n\nvar _undefined = new Object();\n\nvar _staticKeys;\n\n/**\n * @exportedAs angular2/view\n */\nexport class ElementRef {\n  hostView:viewModule.AppView;\n  boundElementIndex:number;\n  injector:Injector;\n  elementInjector:ElementInjector;\n\n  constructor(elementInjector, hostView, boundElementIndex, injector){\n    this.elementInjector = elementInjector;\n    this.hostView = hostView;\n    this.boundElementIndex = boundElementIndex;\n    this.injector = injector;\n  }\n\n  get viewContainer() {\n    return this.hostView.getOrCreateViewContainer(this.boundElementIndex);\n  }\n}\n\nclass StaticKeys {\n  viewId:number;\n  ngElementId:number;\n  viewContainerId:number;\n  changeDetectorRefId:number;\n  elementRefId:number;\n\n  constructor() {\n    //TODO: vsavkin Key.annotate(Key.get(AppView), 'static')\n    this.viewId = Key.get(viewModule.AppView).id;\n    this.ngElementId = Key.get(NgElement).id;\n    this.viewContainerId = Key.get(ViewContainer).id;\n    this.changeDetectorRefId = Key.get(ChangeDetectorRef).id;\n    this.elementRefId = Key.get(ElementRef).id;\n  }\n\n  static instance() {\n    if (isBlank(_staticKeys)) _staticKeys = new StaticKeys();\n    return _staticKeys;\n  }\n}\n\nexport class TreeNode {\n  _parent:TreeNode;\n  _head:TreeNode;\n  _tail:TreeNode;\n  _next:TreeNode;\n  constructor(parent:TreeNode) {\n    this._head = null;\n    this._tail = null;\n    this._next = null;\n    if (isPresent(parent)) parent.addChild(this);\n  }\n\n  _assertConsistency() {\n    this._assertHeadBeforeTail();\n    this._assertTailReachable();\n    this._assertPresentInParentList();\n  }\n\n  _assertHeadBeforeTail() {\n    if (isBlank(this._tail) && isPresent(this._head)) throw new BaseException('null tail but non-null head');\n  }\n\n  _assertTailReachable() {\n    if (isBlank(this._tail)) return;\n    if (isPresent(this._tail._next)) throw new BaseException('node after tail');\n    var p = this._head;\n    while (isPresent(p) && p != this._tail) p = p._next;\n    if (isBlank(p) && isPresent(this._tail)) throw new BaseException('tail not reachable.')\n  }\n\n  _assertPresentInParentList() {\n    var p = this._parent;\n    if (isBlank(p)) {\n      return;\n    }\n    var cur = p._head;\n    while (isPresent(cur) && cur != this) cur = cur._next;\n    if (isBlank(cur)) throw new BaseException('node not reachable through parent.')\n  }\n\n  /**\n   * Adds a child to the parent node. The child MUST NOT be a part of a tree.\n   */\n  addChild(child:TreeNode) {\n    if (isPresent(this._tail)) {\n      this._tail._next = child;\n      this._tail = child;\n    } else {\n      this._tail = this._head = child;\n    }\n    child._next = null;\n    child._parent = this;\n    this._assertConsistency();\n  }\n\n  /**\n   * Adds a child to the parent node after a given sibling.\n   * The child MUST NOT be a part of a tree and the sibling must be present.\n   */\n  addChildAfter(child:TreeNode, prevSibling:TreeNode) {\n    this._assertConsistency();\n    if (isBlank(prevSibling)) {\n      var prevHead = this._head;\n      this._head = child;\n      child._next = prevHead;\n      if (isBlank(this._tail)) this._tail = child;\n    } else if (isBlank(prevSibling._next)) {\n       this.addChild(child);\n       return;\n     } else {\n      prevSibling._assertPresentInParentList();\n      child._next = prevSibling._next;\n      prevSibling._next = child;\n    }\n    child._parent = this;\n    this._assertConsistency();\n  }\n\n  /**\n   * Detaches a node from the parent's tree.\n   */\n  remove() {\n    this._assertConsistency();\n    if (isBlank(this.parent)) return;\n    var nextSibling = this._next;\n    var prevSibling = this._findPrev();\n    if (isBlank(prevSibling)) {\n      this.parent._head = this._next;\n    } else {\n      prevSibling._next = this._next;\n    }\n    if (isBlank(nextSibling)) {\n      this._parent._tail = prevSibling;\n    }\n    this._parent._assertConsistency();\n    this._parent = null;\n    this._next = null;\n    this._assertConsistency();\n  }\n\n  /**\n   * Finds a previous sibling or returns null if first child.\n   * Assumes the node has a parent.\n   * TODO(rado): replace with DoublyLinkedList to avoid O(n) here.\n   */\n  _findPrev() {\n    var node = this.parent._head;\n    if (node == this) return null;\n    while (node._next !== this) node = node._next;\n    return node;\n  }\n\n  get parent() {\n    return this._parent;\n  }\n\n  // TODO(rado): replace with a function call, does too much work for a getter.\n  get children() {\n    var res = [];\n    var child = this._head;\n    while (child != null) {\n      ListWrapper.push(res, child);\n      child = child._next;\n    }\n    return res;\n  }\n}\n\nexport class DirectiveDependency extends Dependency {\n  depth:int;\n  propSetterName:string;\n  attributeName:string;\n  queryDirective;\n\n  constructor(key:Key, asPromise:boolean, lazy:boolean, optional:boolean, properties:List,\n              depth:int, propSetterName: string, attributeName:string, queryDirective) {\n    super(key, asPromise, lazy, optional, properties);\n    this.depth = depth;\n    this.propSetterName = propSetterName;\n    this.attributeName = attributeName;\n    this.queryDirective = queryDirective;\n    this._verify();\n  }\n\n  _verify() {\n    var count = 0;\n    if (isPresent(this.propSetterName)) count++;\n    if (isPresent(this.queryDirective)) count++;\n    if (isPresent(this.attributeName)) count++;\n    if (count > 1) throw new BaseException(\n      'A directive injectable can contain only one of the following @PropertySetter, @Attribute or @Query.');\n  }\n\n  static createFrom(d:Dependency):Dependency {\n    return new DirectiveDependency(d.key, d.asPromise, d.lazy, d.optional,\n      d.properties, DirectiveDependency._depth(d.properties),\n      DirectiveDependency._propSetterName(d.properties),\n      DirectiveDependency._attributeName(d.properties),\n      DirectiveDependency._query(d.properties)\n    );\n  }\n\n  static _depth(properties):int {\n    if (properties.length == 0) return 0;\n    if (ListWrapper.any(properties, p => p instanceof Parent)) return 1;\n    if (ListWrapper.any(properties, p => p instanceof Ancestor)) return MAX_DEPTH;\n    return 0;\n  }\n\n  static _propSetterName(properties):string {\n    var p = ListWrapper.find(properties, (p) => p instanceof PropertySetter);\n    return isPresent(p) ? p.propName : null;\n  }\n\n  static _attributeName(properties):string {\n    var p = ListWrapper.find(properties, (p) => p instanceof Attribute);\n    return isPresent(p) ? p.attributeName : null;\n  }\n\n  static _query(properties) {\n    var p = ListWrapper.find(properties, (p) => p instanceof Query);\n    return isPresent(p) ? p.directive : null;\n  }\n}\n\nexport class DirectiveBinding extends ResolvedBinding {\n  callOnDestroy:boolean;\n  callOnChange:boolean;\n  callOnAllChangesDone:boolean;\n  annotation:Directive;\n  resolvedInjectables:List<ResolvedBinding>;\n\n  constructor(key:Key, factory:Function, dependencies:List, providedAsPromise:boolean, annotation:Directive) {\n    super(key, factory, dependencies, providedAsPromise);\n    this.callOnDestroy = isPresent(annotation) && annotation.hasLifecycleHook(onDestroy);\n    this.callOnChange = isPresent(annotation) && annotation.hasLifecycleHook(onChange);\n    this.callOnAllChangesDone = isPresent(annotation) && annotation.hasLifecycleHook(onAllChangesDone);\n    this.annotation = annotation;\n    if (annotation instanceof Component && isPresent(annotation.injectables)) {\n      this.resolvedInjectables = Injector.resolve(annotation.injectables);\n    }\n  }\n\n  get eventEmitters():List<string> {\n    return isPresent(this.annotation) && isPresent(this.annotation.events) ? this.annotation.events : [];\n  }\n\n  get changeDetection() {\n    if (this.annotation instanceof Component) {\n      var c:Component = this.annotation;\n      return c.changeDetection;\n    } else {\n      return null;\n    }\n  }\n\n  static createFromBinding(b:Binding, annotation:Directive):DirectiveBinding {\n    var rb = b.resolve();\n    var deps = ListWrapper.map(rb.dependencies, DirectiveDependency.createFrom);\n    return new DirectiveBinding(rb.key, rb.factory, deps, rb.providedAsPromise, annotation);\n  }\n\n  static createFromType(type:Type, annotation:Directive):DirectiveBinding {\n    var binding = new Binding(type, {toClass: type});\n    return DirectiveBinding.createFromBinding(binding, annotation);\n  }\n}\n\n// TODO(rado): benchmark and consider rolling in as ElementInjector fields.\nexport class PreBuiltObjects {\n  view:viewModule.AppView;\n  element:NgElement;\n  changeDetector:ChangeDetector;\n  constructor(view, element:NgElement, changeDetector:ChangeDetector) {\n    this.view = view;\n    this.element = element;\n    this.changeDetector = changeDetector;\n  }\n}\n\nclass EventEmitterAccessor {\n  eventName:string;\n  getter:Function;\n\n  constructor(eventName:string, getter:Function) {\n    this.eventName = eventName;\n    this.getter = getter;\n  }\n\n  subscribe(view:viewModule.AppView, boundElementIndex:number, directive:Object) {\n    var eventEmitter = this.getter(directive);\n    return ObservableWrapper.subscribe(eventEmitter,\n        eventObj => view.triggerEventHandlers(this.eventName, eventObj, boundElementIndex));\n  }\n}\n\n/**\n\nDifference between di.Injector and ElementInjector\n\ndi.Injector:\n - imperative based (can create child injectors imperativly)\n - Lazy loading of code\n - Component/App Level services which are usually not DOM Related.\n\n\nElementInjector:\n  - ProtoBased (Injector structure fixed at compile time)\n  - understands @Ancestor, @Parent, @Child, @Descendent\n  - Fast\n  - Query mechanism for children\n  - 1:1 to DOM structure.\n\n PERF BENCHMARK: http://www.williambrownstreet.net/blog/2014/04/faster-angularjs-rendering-angularjs-and-reactjs/\n */\n\n\nexport class ProtoElementInjector  {\n  _binding0:DirectiveBinding;\n  _binding1:DirectiveBinding;\n  _binding2:DirectiveBinding;\n  _binding3:DirectiveBinding;\n  _binding4:DirectiveBinding;\n  _binding5:DirectiveBinding;\n  _binding6:DirectiveBinding;\n  _binding7:DirectiveBinding;\n  _binding8:DirectiveBinding;\n  _binding9:DirectiveBinding;\n  _binding0IsComponent:boolean;\n  _keyId0:int;\n  _keyId1:int;\n  _keyId2:int;\n  _keyId3:int;\n  _keyId4:int;\n  _keyId5:int;\n  _keyId6:int;\n  _keyId7:int;\n  _keyId8:int;\n  _keyId9:int;\n  parent:ProtoElementInjector;\n  index:int;\n  view:viewModule.AppView;\n  distanceToParent:number;\n  attributes:Map;\n  eventEmitterAccessors:List<List<EventEmitterAccessor>>;\n\n  numberOfDirectives:number;\n\n  /** Whether the element is exported as $implicit. */\n  exportElement:boolean;\n\n  /** Whether the component instance is exported as $implicit. */\n  exportComponent:boolean;\n\n  /** The variable name that will be set to $implicit for the element. */\n  exportImplicitName:string;\n\n  constructor(parent:ProtoElementInjector, index:int, bindings:List, firstBindingIsComponent:boolean = false, distanceToParent:number = 0) {\n    this.parent = parent;\n    this.index = index;\n    this.distanceToParent = distanceToParent;\n    this.exportComponent = false;\n    this.exportElement = false;\n\n    this._binding0IsComponent = firstBindingIsComponent;\n    this._binding0 = null; this._keyId0 = null;\n    this._binding1 = null; this._keyId1 = null;\n    this._binding2 = null; this._keyId2 = null;\n    this._binding3 = null; this._keyId3 = null;\n    this._binding4 = null; this._keyId4 = null;\n    this._binding5 = null; this._keyId5 = null;\n    this._binding6 = null; this._keyId6 = null;\n    this._binding7 = null; this._keyId7 = null;\n    this._binding8 = null; this._keyId8 = null;\n    this._binding9 = null; this._keyId9 = null;\n\n    this.numberOfDirectives = bindings.length;\n    var length = bindings.length;\n    this.eventEmitterAccessors = ListWrapper.createFixedSize(length);\n\n    if (length > 0) {\n      this._binding0 = this._createBinding(bindings[0]);\n      this._keyId0 = this._binding0.key.id;\n      this.eventEmitterAccessors[0] = this._createEventEmitterAccessors(this._binding0);\n    }\n    if (length > 1) {\n      this._binding1 = this._createBinding(bindings[1]);\n      this._keyId1 = this._binding1.key.id;\n      this.eventEmitterAccessors[1] = this._createEventEmitterAccessors(this._binding1);\n    }\n    if (length > 2) {\n      this._binding2 = this._createBinding(bindings[2]);\n      this._keyId2 = this._binding2.key.id;\n      this.eventEmitterAccessors[2] = this._createEventEmitterAccessors(this._binding2);\n    }\n    if (length > 3) {\n      this._binding3 = this._createBinding(bindings[3]);\n      this._keyId3 = this._binding3.key.id;\n      this.eventEmitterAccessors[3] = this._createEventEmitterAccessors(this._binding3);\n    }\n    if (length > 4) {\n      this._binding4 = this._createBinding(bindings[4]);\n      this._keyId4 = this._binding4.key.id;\n      this.eventEmitterAccessors[4] = this._createEventEmitterAccessors(this._binding4);\n    }\n    if (length > 5) {\n      this._binding5 = this._createBinding(bindings[5]);\n      this._keyId5 = this._binding5.key.id;\n      this.eventEmitterAccessors[5] = this._createEventEmitterAccessors(this._binding5);\n    }\n    if (length > 6) {\n      this._binding6 = this._createBinding(bindings[6]);\n      this._keyId6 = this._binding6.key.id;\n      this.eventEmitterAccessors[6] = this._createEventEmitterAccessors(this._binding6);\n    }\n    if (length > 7) {\n      this._binding7 = this._createBinding(bindings[7]);\n      this._keyId7 = this._binding7.key.id;\n      this.eventEmitterAccessors[7] = this._createEventEmitterAccessors(this._binding7);\n    }\n    if (length > 8) {\n      this._binding8 = this._createBinding(bindings[8]);\n      this._keyId8 = this._binding8.key.id;\n      this.eventEmitterAccessors[8] = this._createEventEmitterAccessors(this._binding8);\n    }\n    if (length > 9) {\n      this._binding9 = this._createBinding(bindings[9]);\n      this._keyId9 = this._binding9.key.id;\n      this.eventEmitterAccessors[9] = this._createEventEmitterAccessors(this._binding9);\n    }\n    if (length > 10) {\n      throw 'Maximum number of directives per element has been reached.';\n    }\n  }\n\n  _createEventEmitterAccessors(b:DirectiveBinding) {\n    return ListWrapper.map(b.eventEmitters, eventName =>\n      new EventEmitterAccessor(eventName, reflector.getter(eventName))\n    );\n  }\n\n  instantiate(parent:ElementInjector):ElementInjector {\n    return new ElementInjector(this, parent);\n  }\n\n  directParent(): ProtoElementInjector {\n    return this.distanceToParent < 2 ? this.parent : null;\n  }\n\n  _createBinding(bindingOrType) {\n    if (bindingOrType instanceof DirectiveBinding) {\n      return bindingOrType;\n    } else {\n      var b = bind(bindingOrType).toClass(bindingOrType);\n      return DirectiveBinding.createFromBinding(b, null);\n    }\n  }\n\n  get hasBindings():boolean {\n    return isPresent(this._binding0);\n  }\n\n  getDirectiveBindingAtIndex(index:int) {\n    if (index == 0) return this._binding0;\n    if (index == 1) return this._binding1;\n    if (index == 2) return this._binding2;\n    if (index == 3) return this._binding3;\n    if (index == 4) return this._binding4;\n    if (index == 5) return this._binding5;\n    if (index == 6) return this._binding6;\n    if (index == 7) return this._binding7;\n    if (index == 8) return this._binding8;\n    if (index == 9) return this._binding9;\n    throw new OutOfBoundsAccess(index);\n  }\n}\n\nexport class ElementInjector extends TreeNode {\n  _proto:ProtoElementInjector;\n  _lightDomAppInjector:Injector;\n  _shadowDomAppInjector:Injector;\n  _host:ElementInjector;\n\n  // If this element injector has a component, the component instance will be stored in _obj0\n  _obj0:any;\n  _obj1:any;\n  _obj2:any;\n  _obj3:any;\n  _obj4:any;\n  _obj5:any;\n  _obj6:any;\n  _obj7:any;\n  _obj8:any;\n  _obj9:any;\n  _preBuiltObjects;\n  _constructionCounter;\n\n  _dynamicallyCreatedComponent:any;\n  _dynamicallyCreatedComponentBinding:DirectiveBinding;\n\n  // Queries are added during construction or linking with a new parent.\n  // They are never removed.\n  _query0: QueryRef;\n  _query1: QueryRef;\n  _query2: QueryRef;\n  constructor(proto:ProtoElementInjector, parent:ElementInjector) {\n    super(parent);\n    this._proto = proto;\n\n    //we cannot call clearDirectives because fields won't be detected\n    this._preBuiltObjects = null;\n    this._lightDomAppInjector = null;\n    this._shadowDomAppInjector = null;\n    this._obj0 = null;\n    this._obj1 = null;\n    this._obj2 = null;\n    this._obj3 = null;\n    this._obj4 = null;\n    this._obj5 = null;\n    this._obj6 = null;\n    this._obj7 = null;\n    this._obj8 = null;\n    this._obj9 = null;\n    this._constructionCounter = 0;\n\n    this._inheritQueries(parent);\n    this._buildQueries();\n  }\n\n  clearDirectives() {\n    this._host = null;\n    this._preBuiltObjects = null;\n    this._lightDomAppInjector = null;\n    this._shadowDomAppInjector = null;\n\n    var p = this._proto;\n\n    if (isPresent(p._binding0) && p._binding0.callOnDestroy) {this._obj0.onDestroy();}\n    if (isPresent(p._binding1) && p._binding1.callOnDestroy) {this._obj1.onDestroy();}\n    if (isPresent(p._binding2) && p._binding2.callOnDestroy) {this._obj2.onDestroy();}\n    if (isPresent(p._binding3) && p._binding3.callOnDestroy) {this._obj3.onDestroy();}\n    if (isPresent(p._binding4) && p._binding4.callOnDestroy) {this._obj4.onDestroy();}\n    if (isPresent(p._binding5) && p._binding5.callOnDestroy) {this._obj5.onDestroy();}\n    if (isPresent(p._binding6) && p._binding6.callOnDestroy) {this._obj6.onDestroy();}\n    if (isPresent(p._binding7) && p._binding7.callOnDestroy) {this._obj7.onDestroy();}\n    if (isPresent(p._binding8) && p._binding8.callOnDestroy) {this._obj8.onDestroy();}\n    if (isPresent(p._binding9) && p._binding9.callOnDestroy) {this._obj9.onDestroy();}\n    if (isPresent(this._dynamicallyCreatedComponentBinding) && this._dynamicallyCreatedComponentBinding.callOnDestroy) {\n      this._dynamicallyCreatedComponent.onDestroy();\n    }\n\n    this._obj0 = null;\n    this._obj1 = null;\n    this._obj2 = null;\n    this._obj3 = null;\n    this._obj4 = null;\n    this._obj5 = null;\n    this._obj6 = null;\n    this._obj7 = null;\n    this._obj8 = null;\n    this._obj9 = null;\n    this._dynamicallyCreatedComponent = null;\n    this._dynamicallyCreatedComponentBinding = null;\n\n    this._constructionCounter = 0;\n  }\n\n  instantiateDirectives(lightDomAppInjector:Injector, host:ElementInjector, shadowDomAppInjector:Injector, preBuiltObjects:PreBuiltObjects) {\n    this._host = host;\n    this._checkShadowDomAppInjector(shadowDomAppInjector);\n\n    this._preBuiltObjects = preBuiltObjects;\n    this._lightDomAppInjector = lightDomAppInjector;\n    this._shadowDomAppInjector = shadowDomAppInjector;\n\n    var p = this._proto;\n    if (isPresent(p._keyId0)) this._getDirectiveByKeyId(p._keyId0);\n    if (isPresent(p._keyId1)) this._getDirectiveByKeyId(p._keyId1);\n    if (isPresent(p._keyId2)) this._getDirectiveByKeyId(p._keyId2);\n    if (isPresent(p._keyId3)) this._getDirectiveByKeyId(p._keyId3);\n    if (isPresent(p._keyId4)) this._getDirectiveByKeyId(p._keyId4);\n    if (isPresent(p._keyId5)) this._getDirectiveByKeyId(p._keyId5);\n    if (isPresent(p._keyId6)) this._getDirectiveByKeyId(p._keyId6);\n    if (isPresent(p._keyId7)) this._getDirectiveByKeyId(p._keyId7);\n    if (isPresent(p._keyId8)) this._getDirectiveByKeyId(p._keyId8);\n    if (isPresent(p._keyId9)) this._getDirectiveByKeyId(p._keyId9);\n  }\n\n  dynamicallyCreateComponent(directiveBinding, injector:Injector) {\n    this._shadowDomAppInjector = injector;\n    this._dynamicallyCreatedComponentBinding = directiveBinding;\n    this._dynamicallyCreatedComponent = this._new(this._dynamicallyCreatedComponentBinding);\n    return this._dynamicallyCreatedComponent;\n  }\n\n  _checkShadowDomAppInjector(shadowDomAppInjector:Injector) {\n    if (this._proto._binding0IsComponent && isBlank(shadowDomAppInjector)) {\n      throw new BaseException('A shadowDomAppInjector is required as this ElementInjector contains a component');\n    } else if (!this._proto._binding0IsComponent && isPresent(shadowDomAppInjector)) {\n      throw new BaseException('No shadowDomAppInjector allowed as there is not component stored in this ElementInjector');\n    }\n  }\n\n  get(token) {\n    if (this._isDynamicallyLoadedComponent(token)) {\n      return this._dynamicallyCreatedComponent;\n    }\n\n    return this._getByKey(Key.get(token), 0, false, null);\n  }\n\n  _isDynamicallyLoadedComponent(token) {\n    return isPresent(this._dynamicallyCreatedComponentBinding) &&\n      Key.get(token) === this._dynamicallyCreatedComponentBinding.key;\n  }\n\n  hasDirective(type:Type):boolean {\n    return this._getDirectiveByKeyId(Key.get(type).id) !== _undefined;\n  }\n\n  getEventEmitterAccessors() {\n    return this._proto.eventEmitterAccessors;\n  }\n\n  /** Gets the NgElement associated with this ElementInjector */\n  getNgElement() {\n    return this._preBuiltObjects.element;\n  }\n\n  getChangeDetector() {\n    return this._preBuiltObjects.changeDetector;\n  }\n\n  getComponent() {\n    if (this._proto._binding0IsComponent) {\n      return this._obj0;\n    } else {\n      throw new BaseException('There is no component stored in this ElementInjector');\n    }\n  }\n\n  getElementRef() {\n    return new ElementRef(this, this._preBuiltObjects.view, this._proto.index, this._lightDomAppInjector);\n  }\n\n  getDynamicallyLoadedComponent() {\n    return this._dynamicallyCreatedComponent;\n  }\n\n  directParent(): ElementInjector {\n    return this._proto.distanceToParent < 2 ? this.parent : null;\n  }\n\n  _isComponentKey(key:Key) {\n    return this._proto._binding0IsComponent && key.id === this._proto._keyId0;\n  }\n\n  _isDynamicallyLoadedComponentKey(key:Key) {\n    return isPresent(this._dynamicallyCreatedComponentBinding) && key.id ===\n      this._dynamicallyCreatedComponentBinding.key.id;\n  }\n\n  _new(binding:ResolvedBinding) {\n    if (this._constructionCounter++ > _MAX_DIRECTIVE_CONSTRUCTION_COUNTER) {\n      throw new CyclicDependencyError(binding.key);\n    }\n\n    var factory = binding.factory;\n    var deps = binding.dependencies;\n    var length = deps.length;\n\n    var d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;\n    try {\n      d0 = length > 0 ? this._getByDependency(deps[0], binding.key) : null;\n      d1 = length > 1 ? this._getByDependency(deps[1], binding.key) : null;\n      d2 = length > 2 ? this._getByDependency(deps[2], binding.key) : null;\n      d3 = length > 3 ? this._getByDependency(deps[3], binding.key) : null;\n      d4 = length > 4 ? this._getByDependency(deps[4], binding.key) : null;\n      d5 = length > 5 ? this._getByDependency(deps[5], binding.key) : null;\n      d6 = length > 6 ? this._getByDependency(deps[6], binding.key) : null;\n      d7 = length > 7 ? this._getByDependency(deps[7], binding.key) : null;\n      d8 = length > 8 ? this._getByDependency(deps[8], binding.key) : null;\n      d9 = length > 9 ? this._getByDependency(deps[9], binding.key) : null;\n    } catch(e) {\n      if (e instanceof AbstractBindingError) e.addKey(binding.key);\n      throw e;\n    }\n\n    var obj;\n    switch(length) {\n      case 0: obj = factory(); break;\n      case 1: obj = factory(d0); break;\n      case 2: obj = factory(d0, d1); break;\n      case 3: obj = factory(d0, d1, d2); break;\n      case 4: obj = factory(d0, d1, d2, d3); break;\n      case 5: obj = factory(d0, d1, d2, d3, d4); break;\n      case 6: obj = factory(d0, d1, d2, d3, d4, d5); break;\n      case 7: obj = factory(d0, d1, d2, d3, d4, d5, d6); break;\n      case 8: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7); break;\n      case 9: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8); break;\n      case 10: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9); break;\n      default: throw `Directive ${binding.key.token} can only have up to 10 dependencies.`;\n    }\n\n    this._addToQueries(obj, binding.key.token);\n\n    return obj;\n  }\n\n  _getByDependency(dep:DirectiveDependency, requestor:Key) {\n    if (isPresent(dep.propSetterName)) return this._buildPropSetter(dep);\n    if (isPresent(dep.attributeName)) return this._buildAttribute(dep);\n    if (isPresent(dep.queryDirective)) return this._findQuery(dep.queryDirective).list;\n    if (dep.key.id === StaticKeys.instance().elementRefId) {\n      return this.getElementRef();\n    }\n    return this._getByKey(dep.key, dep.depth, dep.optional, requestor);\n  }\n\n  _buildPropSetter(dep) {\n    var view = this._getPreBuiltObjectByKeyId(StaticKeys.instance().viewId);\n    var renderer = view.renderer;\n    var index = this._proto.index;\n    return function(v) {\n      renderer.setElementProperty(view.render, index, dep.propSetterName, v);\n    };\n  }\n\n  _buildAttribute(dep): string {\n    var attributes = this._proto.attributes;\n    if (isPresent(attributes) && MapWrapper.contains(attributes, dep.attributeName)) {\n      return MapWrapper.get(attributes, dep.attributeName);\n    } else {\n      return null;\n    }\n  }\n\n  _buildQueriesForDeps(deps: List<DirectiveDependency>) {\n    for (var i = 0; i < deps.length; i++) {\n      var dep = deps[i];\n      if (isPresent(dep.queryDirective)) {\n        this._createQueryRef(dep.queryDirective);\n      }\n    }\n  }\n\n  _createQueryRef(directive) {\n    var queryList = new QueryList();\n    if (isBlank(this._query0)) {this._query0 = new QueryRef(directive, queryList, this);}\n    else if (isBlank(this._query1)) {this._query1 = new QueryRef(directive, queryList, this);}\n    else if (isBlank(this._query2)) {this._query2 = new QueryRef(directive, queryList, this);}\n    else throw new QueryError();\n  }\n\n  _addToQueries(obj, token) {\n    if (isPresent(this._query0) && (this._query0.directive === token)) {this._query0.list.add(obj);}\n    if (isPresent(this._query1) && (this._query1.directive === token)) {this._query1.list.add(obj);}\n    if (isPresent(this._query2) && (this._query2.directive === token)) {this._query2.list.add(obj);}\n  }\n\n  // TODO(rado): unify with _addParentQueries.\n  _inheritQueries(parent: ElementInjector) {\n    if (isBlank(parent)) return;\n    if (isPresent(parent._query0)) {this._query0 = parent._query0;}\n    if (isPresent(parent._query1)) {this._query1 = parent._query1;}\n    if (isPresent(parent._query2)) {this._query2 = parent._query2;}\n  }\n\n  _buildQueries() {\n    if (isBlank(this._proto)) return;\n    var p = this._proto;\n    if (isPresent(p._binding0)) {this._buildQueriesForDeps(p._binding0.dependencies);}\n    if (isPresent(p._binding1)) {this._buildQueriesForDeps(p._binding1.dependencies);}\n    if (isPresent(p._binding2)) {this._buildQueriesForDeps(p._binding2.dependencies);}\n    if (isPresent(p._binding3)) {this._buildQueriesForDeps(p._binding3.dependencies);}\n    if (isPresent(p._binding4)) {this._buildQueriesForDeps(p._binding4.dependencies);}\n    if (isPresent(p._binding5)) {this._buildQueriesForDeps(p._binding5.dependencies);}\n    if (isPresent(p._binding6)) {this._buildQueriesForDeps(p._binding6.dependencies);}\n    if (isPresent(p._binding7)) {this._buildQueriesForDeps(p._binding7.dependencies);}\n    if (isPresent(p._binding8)) {this._buildQueriesForDeps(p._binding8.dependencies);}\n    if (isPresent(p._binding9)) {this._buildQueriesForDeps(p._binding9.dependencies);}\n  }\n\n  _findQuery(token) {\n    if (isPresent(this._query0) && this._query0.directive === token) {return this._query0;}\n    if (isPresent(this._query1) && this._query1.directive === token) {return this._query1;}\n    if (isPresent(this._query2) && this._query2.directive === token) {return this._query2;}\n    throw new BaseException(`Cannot find query for directive ${token}.`);\n  }\n\n  link(parent: ElementInjector) {\n    parent.addChild(this);\n    this._addParentQueries();\n  }\n\n  linkAfter(parent: ElementInjector, prevSibling: ElementInjector) {\n    parent.addChildAfter(this, prevSibling);\n    this._addParentQueries();\n  }\n\n  _addParentQueries() {\n    if (isPresent(this.parent._query0)) {this._addQueryToTree(this.parent._query0); this.parent._query0.update();}\n    if (isPresent(this.parent._query1)) {this._addQueryToTree(this.parent._query1); this.parent._query1.update();}\n    if (isPresent(this.parent._query2)) {this._addQueryToTree(this.parent._query2); this.parent._query2.update();}\n  }\n\n  unlink() {\n    var queriesToUpDate = [];\n    if (isPresent(this.parent._query0)) {this._pruneQueryFromTree(this.parent._query0); ListWrapper.push(queriesToUpDate, this.parent._query0);}\n    if (isPresent(this.parent._query1)) {this._pruneQueryFromTree(this.parent._query1); ListWrapper.push(queriesToUpDate, this.parent._query1);}\n    if (isPresent(this.parent._query2)) {this._pruneQueryFromTree(this.parent._query2); ListWrapper.push(queriesToUpDate, this.parent._query2);}\n\n    this.remove();\n\n    ListWrapper.forEach(queriesToUpDate, (q) => q.update());\n  }\n\n\n  _pruneQueryFromTree(query: QueryRef) {\n    this._removeQueryRef(query);\n\n    var child = this._head;\n    while (isPresent(child)) {\n      child._pruneQueryFromTree(query);\n      child = child._next;\n    }\n  }\n\n  _addQueryToTree(query: QueryRef) {\n    this._assignQueryRef(query);\n\n    var child = this._head;\n    while (isPresent(child)) {\n      child._addQueryToTree(query);\n      child = child._next;\n    }\n  }\n\n  _assignQueryRef(query: QueryRef) {\n    if (isBlank(this._query0)) {this._query0 = query; return;}\n    else if (isBlank(this._query1)) {this._query1 = query; return;}\n    else if (isBlank(this._query2)) {this._query2 = query; return;}\n    throw new QueryError();\n  }\n\n  _removeQueryRef(query: QueryRef) {\n    if (this._query0 == query) this._query0 = null;\n    if (this._query1 == query) this._query1 = null;\n    if (this._query2 == query) this._query2 = null;\n  }\n\n  /*\n   * It is fairly easy to annotate keys with metadata.\n   * For example, key.metadata = 'directive'.\n   *\n   * This would allows to do the lookup more efficiently.\n   *\n   * for example\n   * we would lookup pre built objects only when metadata = 'preBuilt'\n   * we would lookup directives only when metadata = 'directive'\n   *\n   * Write benchmarks before doing this optimization.\n   */\n  _getByKey(key:Key, depth:number, optional:boolean, requestor:Key) {\n    var ei = this;\n    if (! this._shouldIncludeSelf(depth)) {\n      depth -= ei._proto.distanceToParent;\n      ei = ei._parent;\n    }\n\n    while (ei != null && depth >= 0) {\n      var preBuiltObj = ei._getPreBuiltObjectByKeyId(key.id);\n      if (preBuiltObj !== _undefined) return preBuiltObj;\n\n      var dir = ei._getDirectiveByKeyId(key.id);\n      if (dir !== _undefined) return dir;\n\n      depth -= ei._proto.distanceToParent;\n      ei = ei._parent;\n    }\n\n\n    if (isPresent(this._host) && this._host._isComponentKey(key)) {\n      return this._host.getComponent();\n    } else if (isPresent(this._host) && this._host._isDynamicallyLoadedComponentKey(key)) {\n      return this._host.getDynamicallyLoadedComponent();\n    } else if (optional) {\n      return this._appInjector(requestor).getOptional(key);\n    } else {\n      return this._appInjector(requestor).get(key);\n    }\n  }\n\n  _appInjector(requestor:Key) {\n    if (isPresent(requestor) && (this._isComponentKey(requestor) || this._isDynamicallyLoadedComponentKey(requestor))) {\n      return this._shadowDomAppInjector;\n    } else {\n      return this._lightDomAppInjector;\n    }\n  }\n\n  _shouldIncludeSelf(depth:int) {\n    return depth === 0;\n  }\n\n  _getPreBuiltObjectByKeyId(keyId:int) {\n    var staticKeys = StaticKeys.instance();\n    // TODO: AppView should not be injectable. Remove it.\n    if (keyId === staticKeys.viewId) return this._preBuiltObjects.view;\n    if (keyId === staticKeys.ngElementId) return this._preBuiltObjects.element;\n    if (keyId === staticKeys.viewContainerId) return this._preBuiltObjects.view.getOrCreateViewContainer(this._proto.index);\n    if (keyId === staticKeys.changeDetectorRefId) return this._preBuiltObjects.changeDetector.ref;\n\n    //TODO add other objects as needed\n    return _undefined;\n  }\n\n  _getDirectiveByKeyId(keyId:int) {\n    var p = this._proto;\n\n    if (p._keyId0 === keyId) {if (isBlank(this._obj0)){this._obj0 = this._new(p._binding0);} return this._obj0;}\n    if (p._keyId1 === keyId) {if (isBlank(this._obj1)){this._obj1 = this._new(p._binding1);} return this._obj1;}\n    if (p._keyId2 === keyId) {if (isBlank(this._obj2)){this._obj2 = this._new(p._binding2);} return this._obj2;}\n    if (p._keyId3 === keyId) {if (isBlank(this._obj3)){this._obj3 = this._new(p._binding3);} return this._obj3;}\n    if (p._keyId4 === keyId) {if (isBlank(this._obj4)){this._obj4 = this._new(p._binding4);} return this._obj4;}\n    if (p._keyId5 === keyId) {if (isBlank(this._obj5)){this._obj5 = this._new(p._binding5);} return this._obj5;}\n    if (p._keyId6 === keyId) {if (isBlank(this._obj6)){this._obj6 = this._new(p._binding6);} return this._obj6;}\n    if (p._keyId7 === keyId) {if (isBlank(this._obj7)){this._obj7 = this._new(p._binding7);} return this._obj7;}\n    if (p._keyId8 === keyId) {if (isBlank(this._obj8)){this._obj8 = this._new(p._binding8);} return this._obj8;}\n    if (p._keyId9 === keyId) {if (isBlank(this._obj9)){this._obj9 = this._new(p._binding9);} return this._obj9;}\n    return _undefined;\n  }\n\n  getDirectiveAtIndex(index:int) {\n    if (index == 0) return this._obj0;\n    if (index == 1) return this._obj1;\n    if (index == 2) return this._obj2;\n    if (index == 3) return this._obj3;\n    if (index == 4) return this._obj4;\n    if (index == 5) return this._obj5;\n    if (index == 6) return this._obj6;\n    if (index == 7) return this._obj7;\n    if (index == 8) return this._obj8;\n    if (index == 9) return this._obj9;\n    throw new OutOfBoundsAccess(index);\n  }\n\n  hasInstances() {\n    return this._constructionCounter > 0;\n  }\n\n  /** Gets whether this element is exporting a component instance as $implicit. */\n  isExportingComponent() {\n    return this._proto.exportComponent;\n  }\n\n  /** Gets whether this element is exporting its element as $implicit. */\n  isExportingElement() {\n    return this._proto.exportElement;\n  }\n\n  /** Get the name to which this element's $implicit is to be assigned. */\n  getExportImplicitName() {\n    return this._proto.exportImplicitName;\n  }\n\n  getLightDomAppInjector() {\n    return this._lightDomAppInjector;\n  }\n\n  getHost() {\n    return this._host;\n  }\n\n  getBoundElementIndex() {\n    return this._proto.index;\n  }\n}\n\nclass OutOfBoundsAccess extends Error {\n  message:string;\n  constructor(index) {\n    super();\n    this.message = `Index ${index} is out-of-bounds.`;\n  }\n\n  toString() {\n    return this.message;\n  }\n}\n\nclass QueryError extends Error {\n  message:string;\n  // TODO(rado): pass the names of the active directives.\n  constructor() {\n    super();\n    this.message = 'Only 3 queries can be concurrently active in a template.';\n  }\n\n  toString() {\n    return this.message;\n  }\n}\n\nclass QueryRef {\n  directive;\n  list: QueryList;\n  originator: ElementInjector;\n  constructor(directive, list: QueryList, originator: ElementInjector) {\n    this.directive = directive;\n    this.list = list;\n    this.originator = originator;\n  }\n\n  update() {\n    var aggregator = [];\n    this.visit(this.originator, aggregator);\n    this.list.reset(aggregator);\n  }\n\n  visit(inj: ElementInjector, aggregator) {\n    if (isBlank(inj)) return;\n    if (inj.hasDirective(this.directive)) {\n      ListWrapper.push(aggregator, inj.get(this.directive));\n    }\n    var child = inj._head;\n    while (isPresent(child)) {\n      this.visit(child, aggregator);\n      child = child._next;\n    }\n  }\n}\n"]}