@angular/core 4.4.3 → 4.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v4.4.3
2
+ * @license Angular v4.4.7
3
3
  * (c) 2010-2017 Google, Inc. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -36,7 +36,7 @@ function __extends(d, b) {
36
36
  }
37
37
 
38
38
  /**
39
- * @license Angular v4.4.3
39
+ * @license Angular v4.4.7
40
40
  * (c) 2010-2017 Google, Inc. https://angular.io/
41
41
  * License: MIT
42
42
  */
@@ -828,7 +828,7 @@ var Version = (function () {
828
828
  /**
829
829
  * \@stable
830
830
  */
831
- var VERSION = new Version('4.4.3');
831
+ var VERSION = new Version('4.4.7');
832
832
  /**
833
833
  * @license
834
834
  * Copyright Google Inc. All Rights Reserved.
@@ -6248,7 +6248,6 @@ var EventListener = (function () {
6248
6248
  this.name = name;
6249
6249
  this.callback = callback;
6250
6250
  }
6251
-
6252
6251
  return EventListener;
6253
6252
  }());
6254
6253
  /**
@@ -8605,7 +8604,7 @@ function checkAndUpdateBinding(view, def, bindingIdx, value) {
8605
8604
  function checkBindingNoChanges(view, def, bindingIdx, value) {
8606
8605
  var /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];
8607
8606
  if ((view.state & 1 /* BeforeFirstCheck */) || !devModeEqual(oldValue, value)) {
8608
- throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, def.index), oldValue, value, (view.state & 1 /* BeforeFirstCheck */) !== 0);
8607
+ throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, def.nodeIndex), oldValue, value, (view.state & 1 /* BeforeFirstCheck */) !== 0);
8609
8608
  }
8610
8609
  }
8611
8610
  /**
@@ -8653,7 +8652,7 @@ function dispatchEvent(view, nodeIndex, eventName, event) {
8653
8652
  function declaredViewContainer(view) {
8654
8653
  if (view.parent) {
8655
8654
  var /** @type {?} */ parentView = view.parent;
8656
- return asElementData(parentView, /** @type {?} */ ((view.parentNodeDef)).index);
8655
+ return asElementData(parentView, /** @type {?} */ ((view.parentNodeDef)).nodeIndex);
8657
8656
  }
8658
8657
  return null;
8659
8658
  }
@@ -8681,9 +8680,9 @@ function viewParentEl(view) {
8681
8680
  function renderNode(view, def) {
8682
8681
  switch (def.flags & 201347067 /* Types */) {
8683
8682
  case 1 /* TypeElement */:
8684
- return asElementData(view, def.index).renderElement;
8683
+ return asElementData(view, def.nodeIndex).renderElement;
8685
8684
  case 2 /* TypeText */:
8686
- return asTextData(view, def.index).renderText;
8685
+ return asTextData(view, def.nodeIndex).renderText;
8687
8686
  }
8688
8687
  }
8689
8688
  /**
@@ -8770,7 +8769,7 @@ function getParentRenderElement(view, renderHost, def) {
8770
8769
  ViewEncapsulation.Native)) {
8771
8770
  // only children of non components, or children of components with native encapsulation should
8772
8771
  // be attached.
8773
- return asElementData(view, /** @type {?} */ ((def.renderParent)).index).renderElement;
8772
+ return asElementData(view, /** @type {?} */ ((def.renderParent)).nodeIndex).renderElement;
8774
8773
  }
8775
8774
  }
8776
8775
  else {
@@ -8852,8 +8851,8 @@ function visitProjectedRenderNodes(view, ngContentIndex, action, parentNode, nex
8852
8851
  }
8853
8852
  var /** @type {?} */ hostView = ((compView)).parent;
8854
8853
  var /** @type {?} */ hostElDef = viewParentEl(/** @type {?} */ ((compView)));
8855
- var /** @type {?} */ startIndex = ((hostElDef)).index + 1;
8856
- var /** @type {?} */ endIndex = ((hostElDef)).index + ((hostElDef)).childCount;
8854
+ var /** @type {?} */ startIndex = ((hostElDef)).nodeIndex + 1;
8855
+ var /** @type {?} */ endIndex = ((hostElDef)).nodeIndex + ((hostElDef)).childCount;
8857
8856
  for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {
8858
8857
  var /** @type {?} */ nodeDef = ((hostView)).def.nodes[i];
8859
8858
  if (nodeDef.ngContentIndex === ngContentIndex) {
@@ -8894,7 +8893,7 @@ function visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target)
8894
8893
  execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);
8895
8894
  }
8896
8895
  if (nodeDef.bindingFlags & (32 /* SyntheticHostProperty */)) {
8897
- var /** @type {?} */ compView = asElementData(view, nodeDef.index).componentView;
8896
+ var /** @type {?} */ compView = asElementData(view, nodeDef.nodeIndex).componentView;
8898
8897
  execRenderNodeAction(compView, rn, action, parentNode, nextSibling, target);
8899
8898
  }
8900
8899
  }
@@ -8902,13 +8901,13 @@ function visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target)
8902
8901
  execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);
8903
8902
  }
8904
8903
  if (nodeDef.flags & 16777216 /* EmbeddedViews */) {
8905
- var /** @type {?} */ embeddedViews = ((asElementData(view, nodeDef.index).viewContainer))._embeddedViews;
8904
+ var /** @type {?} */ embeddedViews = ((asElementData(view, nodeDef.nodeIndex).viewContainer))._embeddedViews;
8906
8905
  for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {
8907
8906
  visitRootRenderNodes(embeddedViews[k], action, parentNode, nextSibling, target);
8908
8907
  }
8909
8908
  }
8910
8909
  if (nodeDef.flags & 1 /* TypeElement */ && !((nodeDef.element)).name) {
8911
- visitSiblingRenderNodes(view, action, nodeDef.index + 1, nodeDef.index + nodeDef.childCount, parentNode, nextSibling, target);
8910
+ visitSiblingRenderNodes(view, action, nodeDef.nodeIndex + 1, nodeDef.nodeIndex + nodeDef.childCount, parentNode, nextSibling, target);
8912
8911
  }
8913
8912
  }
8914
8913
  }
@@ -9061,13 +9060,14 @@ function anchorDef(flags, matchedQueriesDsl, ngContentIndex, childCount, handleE
9061
9060
  var /** @type {?} */ template = templateFactory ? resolveDefinition(templateFactory) : null;
9062
9061
  return {
9063
9062
  // will bet set by the view definition
9064
- index: -1,
9063
+ nodeIndex: -1,
9065
9064
  parent: null,
9066
9065
  renderParent: null,
9067
9066
  bindingIndex: -1,
9068
9067
  outputIndex: -1,
9069
9068
  // regular values
9070
9069
  flags: flags,
9070
+ checkIndex: -1,
9071
9071
  childFlags: 0,
9072
9072
  directChildFlags: 0,
9073
9073
  childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references, ngContentIndex: ngContentIndex, childCount: childCount,
@@ -9092,6 +9092,7 @@ function anchorDef(flags, matchedQueriesDsl, ngContentIndex, childCount, handleE
9092
9092
  };
9093
9093
  }
9094
9094
  /**
9095
+ * @param {?} checkIndex
9095
9096
  * @param {?} flags
9096
9097
  * @param {?} matchedQueriesDsl
9097
9098
  * @param {?} ngContentIndex
@@ -9105,7 +9106,7 @@ function anchorDef(flags, matchedQueriesDsl, ngContentIndex, childCount, handleE
9105
9106
  * @param {?=} componentRendererType
9106
9107
  * @return {?}
9107
9108
  */
9108
- function elementDef(flags, matchedQueriesDsl, ngContentIndex, childCount, namespaceAndName, fixedAttrs, bindings, outputs, handleEvent, componentView, componentRendererType) {
9109
+ function elementDef(checkIndex, flags, matchedQueriesDsl, ngContentIndex, childCount, namespaceAndName, fixedAttrs, bindings, outputs, handleEvent, componentView, componentRendererType) {
9109
9110
  if (fixedAttrs === void 0) { fixedAttrs = []; }
9110
9111
  if (!handleEvent) {
9111
9112
  handleEvent = NOOP;
@@ -9158,12 +9159,13 @@ function elementDef(flags, matchedQueriesDsl, ngContentIndex, childCount, namesp
9158
9159
  flags |= 1 /* TypeElement */;
9159
9160
  return {
9160
9161
  // will bet set by the view definition
9161
- index: -1,
9162
+ nodeIndex: -1,
9162
9163
  parent: null,
9163
9164
  renderParent: null,
9164
9165
  bindingIndex: -1,
9165
9166
  outputIndex: -1,
9166
9167
  // regular values
9168
+ checkIndex: checkIndex,
9167
9169
  flags: flags,
9168
9170
  childFlags: 0,
9169
9171
  directChildFlags: 0,
@@ -9235,7 +9237,7 @@ function createElement(view, renderHost, def) {
9235
9237
  function listenToElementOutputs(view, compView, def, el) {
9236
9238
  for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {
9237
9239
  var /** @type {?} */ output = def.outputs[i];
9238
- var /** @type {?} */ handleEventClosure = renderEventHandlerClosure(view, def.index, elementEventFullName(output.target, output.eventName));
9240
+ var /** @type {?} */ handleEventClosure = renderEventHandlerClosure(view, def.nodeIndex, elementEventFullName(output.target, output.eventName));
9239
9241
  var /** @type {?} */ listenTarget = output.target;
9240
9242
  var /** @type {?} */ listenerView = view;
9241
9243
  if (output.target === 'component') {
@@ -9329,7 +9331,7 @@ function checkAndUpdateElementValue(view, def, bindingIdx, value) {
9329
9331
  return false;
9330
9332
  }
9331
9333
  var /** @type {?} */ binding = def.bindings[bindingIdx];
9332
- var /** @type {?} */ elData = asElementData(view, def.index);
9334
+ var /** @type {?} */ elData = asElementData(view, def.nodeIndex);
9333
9335
  var /** @type {?} */ renderNode$$1 = elData.renderElement;
9334
9336
  var /** @type {?} */ name = ((binding.name));
9335
9337
  switch (binding.flags & 15 /* Types */) {
@@ -9437,7 +9439,7 @@ function setElementProperty(view, binding, renderNode$$1, name, value) {
9437
9439
  * Use of this source code is governed by an MIT-style license that can be
9438
9440
  * found in the LICENSE file at https://angular.io/license
9439
9441
  */
9440
- var NOT_CREATED$1 = new Object();
9442
+ var UNDEFINED_VALUE = new Object();
9441
9443
  var InjectorRefTokenKey$1 = tokenKey(Injector);
9442
9444
  var NgModuleRefTokenKey = tokenKey(NgModuleRef);
9443
9445
  /**
@@ -9482,8 +9484,9 @@ function initNgModule(data) {
9482
9484
  var /** @type {?} */ providers = data._providers = new Array(def.providers.length);
9483
9485
  for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {
9484
9486
  var /** @type {?} */ provDef = def.providers[i];
9485
- providers[i] = provDef.flags & 4096 /* LazyProvider */ ? NOT_CREATED$1 :
9486
- _createProviderInstance$1(data, provDef);
9487
+ if (!(provDef.flags & 4096 /* LazyProvider */)) {
9488
+ providers[i] = _createProviderInstance$1(data, provDef);
9489
+ }
9487
9490
  }
9488
9491
  }
9489
9492
  /**
@@ -9512,11 +9515,11 @@ function resolveNgModuleDep(data, depDef, notFoundValue) {
9512
9515
  var /** @type {?} */ providerDef = data._def.providersByKey[tokenKey$$1];
9513
9516
  if (providerDef) {
9514
9517
  var /** @type {?} */ providerInstance = data._providers[providerDef.index];
9515
- if (providerInstance === NOT_CREATED$1) {
9518
+ if (providerInstance === undefined) {
9516
9519
  providerInstance = data._providers[providerDef.index] =
9517
9520
  _createProviderInstance$1(data, providerDef);
9518
9521
  }
9519
- return providerInstance;
9522
+ return providerInstance === UNDEFINED_VALUE ? undefined : providerInstance;
9520
9523
  }
9521
9524
  return data._parent.get(depDef.token, notFoundValue);
9522
9525
  }
@@ -9541,7 +9544,7 @@ function _createProviderInstance$1(ngModule, providerDef) {
9541
9544
  injectable = providerDef.value;
9542
9545
  break;
9543
9546
  }
9544
- return injectable;
9547
+ return injectable === undefined ? UNDEFINED_VALUE : injectable;
9545
9548
  }
9546
9549
  /**
9547
9550
  * @param {?} ngModule
@@ -9551,29 +9554,22 @@ function _createProviderInstance$1(ngModule, providerDef) {
9551
9554
  */
9552
9555
  function _createClass(ngModule, ctor, deps) {
9553
9556
  var /** @type {?} */ len = deps.length;
9554
- var /** @type {?} */ injectable;
9555
9557
  switch (len) {
9556
9558
  case 0:
9557
- injectable = new ctor();
9558
- break;
9559
+ return new ctor();
9559
9560
  case 1:
9560
- injectable = new ctor(resolveNgModuleDep(ngModule, deps[0]));
9561
- break;
9561
+ return new ctor(resolveNgModuleDep(ngModule, deps[0]));
9562
9562
  case 2:
9563
- injectable =
9564
- new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));
9565
- break;
9563
+ return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));
9566
9564
  case 3:
9567
- injectable = new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));
9568
- break;
9565
+ return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));
9569
9566
  default:
9570
9567
  var /** @type {?} */ depValues = new Array(len);
9571
9568
  for (var /** @type {?} */ i = 0; i < len; i++) {
9572
9569
  depValues[i] = resolveNgModuleDep(ngModule, deps[i]);
9573
9570
  }
9574
- injectable = new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();
9571
+ return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();
9575
9572
  }
9576
- return injectable;
9577
9573
  }
9578
9574
  /**
9579
9575
  * @param {?} ngModule
@@ -9583,29 +9579,22 @@ function _createClass(ngModule, ctor, deps) {
9583
9579
  */
9584
9580
  function _callFactory(ngModule, factory, deps) {
9585
9581
  var /** @type {?} */ len = deps.length;
9586
- var /** @type {?} */ injectable;
9587
9582
  switch (len) {
9588
9583
  case 0:
9589
- injectable = factory();
9590
- break;
9584
+ return factory();
9591
9585
  case 1:
9592
- injectable = factory(resolveNgModuleDep(ngModule, deps[0]));
9593
- break;
9586
+ return factory(resolveNgModuleDep(ngModule, deps[0]));
9594
9587
  case 2:
9595
- injectable =
9596
- factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));
9597
- break;
9588
+ return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));
9598
9589
  case 3:
9599
- injectable = factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));
9600
- break;
9590
+ return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));
9601
9591
  default:
9602
9592
  var /** @type {?} */ depValues = Array(len);
9603
9593
  for (var /** @type {?} */ i = 0; i < len; i++) {
9604
9594
  depValues[i] = resolveNgModuleDep(ngModule, deps[i]);
9605
9595
  }
9606
- injectable = factory.apply(void 0, depValues);
9596
+ return factory.apply(void 0, depValues);
9607
9597
  }
9608
- return injectable;
9609
9598
  }
9610
9599
  /**
9611
9600
  * @param {?} ngModule
@@ -9618,7 +9607,7 @@ function callNgModuleLifecycle(ngModule, lifecycles) {
9618
9607
  var /** @type {?} */ provDef = def.providers[i];
9619
9608
  if (provDef.flags & 131072 /* OnDestroy */) {
9620
9609
  var /** @type {?} */ instance = ngModule._providers[i];
9621
- if (instance && instance !== NOT_CREATED$1) {
9610
+ if (instance && instance !== UNDEFINED_VALUE) {
9622
9611
  instance.ngOnDestroy();
9623
9612
  }
9624
9613
  }
@@ -9900,7 +9889,7 @@ var ComponentFactory_ = (function (_super) {
9900
9889
  throw new Error('ngModule should be provided');
9901
9890
  }
9902
9891
  var /** @type {?} */ viewDef = resolveDefinition(this.viewDefFactory);
9903
- var /** @type {?} */ componentNodeIndex = ((((viewDef.nodes[0].element)).componentProvider)).index;
9892
+ var /** @type {?} */ componentNodeIndex = ((((viewDef.nodes[0].element)).componentProvider)).nodeIndex;
9904
9893
  var /** @type {?} */ view = Services.createRootView(injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);
9905
9894
  var /** @type {?} */ component = asProviderData(view, componentNodeIndex).instance;
9906
9895
  if (rootSelectorOrNode) {
@@ -9930,7 +9919,7 @@ var ComponentRef_ = (function (_super) {
9930
9919
  * @return {?}
9931
9920
  */
9932
9921
  get: function () {
9933
- return new ElementRef(asElementData(this._view, this._elDef.index).renderElement);
9922
+ return new ElementRef(asElementData(this._view, this._elDef.nodeIndex).renderElement);
9934
9923
  },
9935
9924
  enumerable: true,
9936
9925
  configurable: true
@@ -9951,7 +9940,6 @@ var ComponentRef_ = (function (_super) {
9951
9940
  enumerable: true,
9952
9941
  configurable: true
9953
9942
  });
9954
-
9955
9943
  Object.defineProperty(ComponentRef_.prototype, "hostView", {
9956
9944
  /**
9957
9945
  * @return {?}
@@ -9960,7 +9948,6 @@ var ComponentRef_ = (function (_super) {
9960
9948
  enumerable: true,
9961
9949
  configurable: true
9962
9950
  });
9963
-
9964
9951
  Object.defineProperty(ComponentRef_.prototype, "changeDetectorRef", {
9965
9952
  /**
9966
9953
  * @return {?}
@@ -9969,7 +9956,6 @@ var ComponentRef_ = (function (_super) {
9969
9956
  enumerable: true,
9970
9957
  configurable: true
9971
9958
  });
9972
-
9973
9959
  Object.defineProperty(ComponentRef_.prototype, "componentType", {
9974
9960
  /**
9975
9961
  * @return {?}
@@ -10076,7 +10062,6 @@ var ViewContainerRef_ = (function () {
10076
10062
  enumerable: true,
10077
10063
  configurable: true
10078
10064
  });
10079
-
10080
10065
  /**
10081
10066
  * @template C
10082
10067
  * @param {?} templateRef
@@ -10315,7 +10300,7 @@ var TemplateRef_ = (function (_super) {
10315
10300
  * @return {?}
10316
10301
  */
10317
10302
  get: function () {
10318
- return new ElementRef(asElementData(this._parentView, this._def.index).renderElement);
10303
+ return new ElementRef(asElementData(this._parentView, this._def.nodeIndex).renderElement);
10319
10304
  },
10320
10305
  enumerable: true,
10321
10306
  configurable: true
@@ -10359,14 +10344,14 @@ var Injector_ = (function () {
10359
10344
  function nodeValue(view, index) {
10360
10345
  var /** @type {?} */ def = view.def.nodes[index];
10361
10346
  if (def.flags & 1 /* TypeElement */) {
10362
- var /** @type {?} */ elData = asElementData(view, def.index);
10347
+ var /** @type {?} */ elData = asElementData(view, def.nodeIndex);
10363
10348
  return ((def.element)).template ? elData.template : elData.renderElement;
10364
10349
  }
10365
10350
  else if (def.flags & 2 /* TypeText */) {
10366
- return asTextData(view, def.index).renderText;
10351
+ return asTextData(view, def.nodeIndex).renderText;
10367
10352
  }
10368
10353
  else if (def.flags & (20224 /* CatProvider */ | 16 /* TypePipe */)) {
10369
- return asProviderData(view, def.index).instance;
10354
+ return asProviderData(view, def.nodeIndex).instance;
10370
10355
  }
10371
10356
  throw new Error("Illegal state: read nodeValue for node index " + index);
10372
10357
  }
@@ -10664,8 +10649,8 @@ var ViewContainerRefTokenKey = tokenKey(ViewContainerRef);
10664
10649
  var TemplateRefTokenKey = tokenKey(TemplateRef);
10665
10650
  var ChangeDetectorRefTokenKey = tokenKey(ChangeDetectorRef);
10666
10651
  var InjectorRefTokenKey = tokenKey(Injector);
10667
- var NOT_CREATED = new Object();
10668
10652
  /**
10653
+ * @param {?} checkIndex
10669
10654
  * @param {?} flags
10670
10655
  * @param {?} matchedQueries
10671
10656
  * @param {?} childCount
@@ -10675,7 +10660,7 @@ var NOT_CREATED = new Object();
10675
10660
  * @param {?=} outputs
10676
10661
  * @return {?}
10677
10662
  */
10678
- function directiveDef(flags, matchedQueries, childCount, ctor, deps, props, outputs) {
10663
+ function directiveDef(checkIndex, flags, matchedQueries, childCount, ctor, deps, props, outputs) {
10679
10664
  var /** @type {?} */ bindings = [];
10680
10665
  if (props) {
10681
10666
  for (var /** @type {?} */ prop in props) {
@@ -10696,7 +10681,7 @@ function directiveDef(flags, matchedQueries, childCount, ctor, deps, props, outp
10696
10681
  }
10697
10682
  }
10698
10683
  flags |= 16384 /* TypeDirective */;
10699
- return _def(flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);
10684
+ return _def(checkIndex, flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);
10700
10685
  }
10701
10686
  /**
10702
10687
  * @param {?} flags
@@ -10706,7 +10691,7 @@ function directiveDef(flags, matchedQueries, childCount, ctor, deps, props, outp
10706
10691
  */
10707
10692
  function pipeDef(flags, ctor, deps) {
10708
10693
  flags |= 16 /* TypePipe */;
10709
- return _def(flags, null, 0, ctor, ctor, deps);
10694
+ return _def(-1, flags, null, 0, ctor, ctor, deps);
10710
10695
  }
10711
10696
  /**
10712
10697
  * @param {?} flags
@@ -10717,9 +10702,10 @@ function pipeDef(flags, ctor, deps) {
10717
10702
  * @return {?}
10718
10703
  */
10719
10704
  function providerDef(flags, matchedQueries, token, value, deps) {
10720
- return _def(flags, matchedQueries, 0, token, value, deps);
10705
+ return _def(-1, flags, matchedQueries, 0, token, value, deps);
10721
10706
  }
10722
10707
  /**
10708
+ * @param {?} checkIndex
10723
10709
  * @param {?} flags
10724
10710
  * @param {?} matchedQueriesDsl
10725
10711
  * @param {?} childCount
@@ -10730,7 +10716,7 @@ function providerDef(flags, matchedQueries, token, value, deps) {
10730
10716
  * @param {?=} outputs
10731
10717
  * @return {?}
10732
10718
  */
10733
- function _def(flags, matchedQueriesDsl, childCount, token, value, deps, bindings, outputs) {
10719
+ function _def(checkIndex, flags, matchedQueriesDsl, childCount, token, value, deps, bindings, outputs) {
10734
10720
  var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;
10735
10721
  if (!outputs) {
10736
10722
  outputs = [];
@@ -10741,12 +10727,13 @@ function _def(flags, matchedQueriesDsl, childCount, token, value, deps, bindings
10741
10727
  var /** @type {?} */ depDefs = splitDepsDsl(deps);
10742
10728
  return {
10743
10729
  // will bet set by the view definition
10744
- index: -1,
10730
+ nodeIndex: -1,
10745
10731
  parent: null,
10746
10732
  renderParent: null,
10747
10733
  bindingIndex: -1,
10748
10734
  outputIndex: -1,
10749
10735
  // regular values
10736
+ checkIndex: checkIndex,
10750
10737
  flags: flags,
10751
10738
  childFlags: 0,
10752
10739
  directChildFlags: 0,
@@ -10766,7 +10753,7 @@ function _def(flags, matchedQueriesDsl, childCount, token, value, deps, bindings
10766
10753
  * @return {?}
10767
10754
  */
10768
10755
  function createProviderInstance(view, def) {
10769
- return def.flags & 4096 /* LazyProvider */ ? NOT_CREATED : _createProviderInstance(view, def);
10756
+ return _createProviderInstance(view, def);
10770
10757
  }
10771
10758
  /**
10772
10759
  * @param {?} view
@@ -10797,7 +10784,7 @@ function createDirectiveInstance(view, def) {
10797
10784
  if (def.outputs.length) {
10798
10785
  for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {
10799
10786
  var /** @type {?} */ output = def.outputs[i];
10800
- var /** @type {?} */ subscription = instance[((output.propName))].subscribe(eventHandlerClosure(view, /** @type {?} */ ((def.parent)).index, output.eventName)); /** @type {?} */
10787
+ var /** @type {?} */ subscription = instance[((output.propName))].subscribe(eventHandlerClosure(view, /** @type {?} */ ((def.parent)).nodeIndex, output.eventName)); /** @type {?} */
10801
10788
  ((view.disposables))[def.outputIndex + i] = subscription.unsubscribe.bind(subscription);
10802
10789
  }
10803
10790
  }
@@ -10836,7 +10823,7 @@ function eventHandlerClosure(view, index, eventName) {
10836
10823
  * @return {?}
10837
10824
  */
10838
10825
  function checkAndUpdateDirectiveInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
10839
- var /** @type {?} */ providerData = asProviderData(view, def.index);
10826
+ var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);
10840
10827
  var /** @type {?} */ directive = providerData.instance;
10841
10828
  var /** @type {?} */ changed = false;
10842
10829
  var /** @type {?} */ changes = ((undefined));
@@ -10899,7 +10886,7 @@ function checkAndUpdateDirectiveInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7
10899
10886
  * @return {?}
10900
10887
  */
10901
10888
  function checkAndUpdateDirectiveDynamic(view, def, values) {
10902
- var /** @type {?} */ providerData = asProviderData(view, def.index);
10889
+ var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);
10903
10890
  var /** @type {?} */ directive = providerData.instance;
10904
10891
  var /** @type {?} */ changed = false;
10905
10892
  var /** @type {?} */ changes = ((undefined));
@@ -10929,22 +10916,16 @@ function _createProviderInstance(view, def) {
10929
10916
  // private services can see other private services
10930
10917
  var /** @type {?} */ allowPrivateServices = (def.flags & 8192 /* PrivateProvider */) > 0;
10931
10918
  var /** @type {?} */ providerDef = def.provider;
10932
- var /** @type {?} */ injectable;
10933
10919
  switch (def.flags & 201347067 /* Types */) {
10934
10920
  case 512 /* TypeClassProvider */:
10935
- injectable = createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);
10936
- break;
10921
+ return createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);
10937
10922
  case 1024 /* TypeFactoryProvider */:
10938
- injectable = callFactory(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);
10939
- break;
10923
+ return callFactory(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);
10940
10924
  case 2048 /* TypeUseExistingProvider */:
10941
- injectable = resolveDep(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).deps[0]);
10942
- break;
10925
+ return resolveDep(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).deps[0]);
10943
10926
  case 256 /* TypeValueProvider */:
10944
- injectable = ((providerDef)).value;
10945
- break;
10927
+ return ((providerDef)).value;
10946
10928
  }
10947
- return injectable;
10948
10929
  }
10949
10930
  /**
10950
10931
  * @param {?} view
@@ -10956,28 +10937,22 @@ function _createProviderInstance(view, def) {
10956
10937
  */
10957
10938
  function createClass(view, elDef, allowPrivateServices, ctor, deps) {
10958
10939
  var /** @type {?} */ len = deps.length;
10959
- var /** @type {?} */ injectable;
10960
10940
  switch (len) {
10961
10941
  case 0:
10962
- injectable = new ctor();
10963
- break;
10942
+ return new ctor();
10964
10943
  case 1:
10965
- injectable = new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));
10966
- break;
10944
+ return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));
10967
10945
  case 2:
10968
- injectable = new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));
10969
- break;
10946
+ return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));
10970
10947
  case 3:
10971
- injectable = new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));
10972
- break;
10948
+ return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));
10973
10949
  default:
10974
10950
  var /** @type {?} */ depValues = new Array(len);
10975
10951
  for (var /** @type {?} */ i = 0; i < len; i++) {
10976
10952
  depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);
10977
10953
  }
10978
- injectable = new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();
10954
+ return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();
10979
10955
  }
10980
- return injectable;
10981
10956
  }
10982
10957
  /**
10983
10958
  * @param {?} view
@@ -10989,28 +10964,22 @@ function createClass(view, elDef, allowPrivateServices, ctor, deps) {
10989
10964
  */
10990
10965
  function callFactory(view, elDef, allowPrivateServices, factory, deps) {
10991
10966
  var /** @type {?} */ len = deps.length;
10992
- var /** @type {?} */ injectable;
10993
10967
  switch (len) {
10994
10968
  case 0:
10995
- injectable = factory();
10996
- break;
10969
+ return factory();
10997
10970
  case 1:
10998
- injectable = factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));
10999
- break;
10971
+ return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));
11000
10972
  case 2:
11001
- injectable = factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));
11002
- break;
10973
+ return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));
11003
10974
  case 3:
11004
- injectable = factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));
11005
- break;
10975
+ return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));
11006
10976
  default:
11007
10977
  var /** @type {?} */ depValues = Array(len);
11008
10978
  for (var /** @type {?} */ i = 0; i < len; i++) {
11009
10979
  depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);
11010
10980
  }
11011
- injectable = factory.apply(void 0, depValues);
10981
+ return factory.apply(void 0, depValues);
11012
10982
  }
11013
- return injectable;
11014
10983
  }
11015
10984
  // This default value is when checking the hierarchy for a token.
11016
10985
  //
@@ -11069,12 +11038,12 @@ function resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {
11069
11038
  return compView.renderer;
11070
11039
  }
11071
11040
  case ElementRefTokenKey:
11072
- return new ElementRef(asElementData(view, elDef.index).renderElement);
11041
+ return new ElementRef(asElementData(view, elDef.nodeIndex).renderElement);
11073
11042
  case ViewContainerRefTokenKey:
11074
- return asElementData(view, elDef.index).viewContainer;
11043
+ return asElementData(view, elDef.nodeIndex).viewContainer;
11075
11044
  case TemplateRefTokenKey: {
11076
11045
  if (((elDef.element)).template) {
11077
- return asElementData(view, elDef.index).template;
11046
+ return asElementData(view, elDef.nodeIndex).template;
11078
11047
  }
11079
11048
  break;
11080
11049
  }
@@ -11087,9 +11056,10 @@ function resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {
11087
11056
  default:
11088
11057
  var /** @type {?} */ providerDef_1 = (((allowPrivateServices ? ((elDef.element)).allProviders : ((elDef.element)).publicProviders)))[tokenKey$$1];
11089
11058
  if (providerDef_1) {
11090
- var /** @type {?} */ providerData = asProviderData(view, providerDef_1.index);
11091
- if (providerData.instance === NOT_CREATED) {
11092
- providerData.instance = _createProviderInstance(view, providerDef_1);
11059
+ var /** @type {?} */ providerData = asProviderData(view, providerDef_1.nodeIndex);
11060
+ if (!providerData) {
11061
+ providerData = { instance: _createProviderInstance(view, providerDef_1) };
11062
+ view.nodes[providerDef_1.nodeIndex] = (providerData);
11093
11063
  }
11094
11064
  return providerData.instance;
11095
11065
  }
@@ -11120,7 +11090,7 @@ function resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {
11120
11090
  function findCompView(view, elDef, allowPrivateServices) {
11121
11091
  var /** @type {?} */ compView;
11122
11092
  if (allowPrivateServices) {
11123
- compView = asElementData(view, elDef.index).componentView;
11093
+ compView = asElementData(view, elDef.nodeIndex).componentView;
11124
11094
  }
11125
11095
  else {
11126
11096
  compView = view;
@@ -11141,7 +11111,7 @@ function findCompView(view, elDef, allowPrivateServices) {
11141
11111
  */
11142
11112
  function updateProp(view, providerData, def, bindingIdx, value, changes) {
11143
11113
  if (def.flags & 32768 /* Component */) {
11144
- var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((def.parent)).index).componentView;
11114
+ var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((def.parent)).nodeIndex).componentView;
11145
11115
  if (compView.def.flags & 2 /* OnPush */) {
11146
11116
  compView.state |= 8 /* ChecksEnabled */;
11147
11117
  }
@@ -11187,7 +11157,7 @@ function callLifecycleHooksChildrenFirst(view, lifecycles) {
11187
11157
  i += nodeDef.childCount;
11188
11158
  }
11189
11159
  while (parent && (parent.flags & 1 /* TypeElement */) &&
11190
- i === parent.index + parent.childCount) {
11160
+ i === parent.nodeIndex + parent.childCount) {
11191
11161
  // last child of an element
11192
11162
  if (parent.directChildFlags & lifecycles) {
11193
11163
  callElementProvidersLifecycles(view, parent, lifecycles);
@@ -11203,7 +11173,7 @@ function callLifecycleHooksChildrenFirst(view, lifecycles) {
11203
11173
  * @return {?}
11204
11174
  */
11205
11175
  function callElementProvidersLifecycles(view, elDef, lifecycles) {
11206
- for (var /** @type {?} */ i = elDef.index + 1; i <= elDef.index + elDef.childCount; i++) {
11176
+ for (var /** @type {?} */ i = elDef.nodeIndex + 1; i <= elDef.nodeIndex + elDef.childCount; i++) {
11207
11177
  var /** @type {?} */ nodeDef = view.def.nodes[i];
11208
11178
  if (nodeDef.flags & lifecycles) {
11209
11179
  callProviderLifecycles(view, i, nodeDef.flags & lifecycles);
@@ -11219,8 +11189,12 @@ function callElementProvidersLifecycles(view, elDef, lifecycles) {
11219
11189
  * @return {?}
11220
11190
  */
11221
11191
  function callProviderLifecycles(view, index, lifecycles) {
11222
- var /** @type {?} */ provider = asProviderData(view, index).instance;
11223
- if (provider === NOT_CREATED) {
11192
+ var /** @type {?} */ providerData = asProviderData(view, index);
11193
+ if (!providerData) {
11194
+ return;
11195
+ }
11196
+ var /** @type {?} */ provider = providerData.instance;
11197
+ if (!provider) {
11224
11198
  return;
11225
11199
  }
11226
11200
  Services.setCurrentNode(view, index);
@@ -11261,13 +11235,14 @@ function queryDef(flags, id, bindings) {
11261
11235
  }
11262
11236
  return {
11263
11237
  // will bet set by the view definition
11264
- index: -1,
11238
+ nodeIndex: -1,
11265
11239
  parent: null,
11266
11240
  renderParent: null,
11267
11241
  bindingIndex: -1,
11268
11242
  outputIndex: -1,
11269
11243
  // regular values
11270
- flags: flags,
11244
+ // TODO(vicb): check
11245
+ checkIndex: -1, flags: flags,
11271
11246
  childFlags: 0,
11272
11247
  directChildFlags: 0,
11273
11248
  childMatchedQueries: 0,
@@ -11302,7 +11277,7 @@ function dirtyParentQueries(view) {
11302
11277
  var /** @type {?} */ tplDef = ((view.parentNodeDef));
11303
11278
  view = view.parent;
11304
11279
  // content queries
11305
- var /** @type {?} */ end = tplDef.index + tplDef.childCount;
11280
+ var /** @type {?} */ end = tplDef.nodeIndex + tplDef.childCount;
11306
11281
  for (var /** @type {?} */ i = 0; i <= end; i++) {
11307
11282
  var /** @type {?} */ nodeDef = view.def.nodes[i];
11308
11283
  if ((nodeDef.flags & 67108864 /* TypeContentQuery */) &&
@@ -11310,7 +11285,7 @@ function dirtyParentQueries(view) {
11310
11285
  (((nodeDef.query)).filterId & queryIds) === ((nodeDef.query)).filterId) {
11311
11286
  asQueryList(view, i).setDirty();
11312
11287
  }
11313
- if ((nodeDef.flags & 1 /* TypeElement */ && i + nodeDef.childCount < tplDef.index) ||
11288
+ if ((nodeDef.flags & 1 /* TypeElement */ && i + nodeDef.childCount < tplDef.nodeIndex) ||
11314
11289
  !(nodeDef.childFlags & 67108864 /* TypeContentQuery */) ||
11315
11290
  !(nodeDef.childFlags & 536870912 /* DynamicQuery */)) {
11316
11291
  // skip elements that don't contain the template element or no query.
@@ -11336,7 +11311,7 @@ function dirtyParentQueries(view) {
11336
11311
  * @return {?}
11337
11312
  */
11338
11313
  function checkAndUpdateQuery(view, nodeDef) {
11339
- var /** @type {?} */ queryList = asQueryList(view, nodeDef.index);
11314
+ var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);
11340
11315
  if (!queryList.dirty) {
11341
11316
  return;
11342
11317
  }
@@ -11344,8 +11319,8 @@ function checkAndUpdateQuery(view, nodeDef) {
11344
11319
  var /** @type {?} */ newValues = ((undefined));
11345
11320
  if (nodeDef.flags & 67108864 /* TypeContentQuery */) {
11346
11321
  var /** @type {?} */ elementDef_1 = ((((nodeDef.parent)).parent));
11347
- newValues = calcQueryValues(view, elementDef_1.index, elementDef_1.index + elementDef_1.childCount, /** @type {?} */ ((nodeDef.query)), []);
11348
- directiveInstance = asProviderData(view, /** @type {?} */ ((nodeDef.parent)).index).instance;
11322
+ newValues = calcQueryValues(view, elementDef_1.nodeIndex, elementDef_1.nodeIndex + elementDef_1.childCount, /** @type {?} */ ((nodeDef.query)), []);
11323
+ directiveInstance = asProviderData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).instance;
11349
11324
  }
11350
11325
  else if (nodeDef.flags & 134217728 /* TypeViewQuery */) {
11351
11326
  newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, /** @type {?} */ ((nodeDef.query)), []);
@@ -11431,25 +11406,18 @@ function calcQueryValues(view, startIndex, endIndex, queryDef, values) {
11431
11406
  function getQueryValue(view, nodeDef, queryValueType) {
11432
11407
  if (queryValueType != null) {
11433
11408
  // a match
11434
- var /** @type {?} */ value = void 0;
11435
11409
  switch (queryValueType) {
11436
11410
  case 1 /* RenderElement */:
11437
- value = asElementData(view, nodeDef.index).renderElement;
11438
- break;
11411
+ return asElementData(view, nodeDef.nodeIndex).renderElement;
11439
11412
  case 0 /* ElementRef */:
11440
- value = new ElementRef(asElementData(view, nodeDef.index).renderElement);
11441
- break;
11413
+ return new ElementRef(asElementData(view, nodeDef.nodeIndex).renderElement);
11442
11414
  case 2 /* TemplateRef */:
11443
- value = asElementData(view, nodeDef.index).template;
11444
- break;
11415
+ return asElementData(view, nodeDef.nodeIndex).template;
11445
11416
  case 3 /* ViewContainerRef */:
11446
- value = asElementData(view, nodeDef.index).viewContainer;
11447
- break;
11417
+ return asElementData(view, nodeDef.nodeIndex).viewContainer;
11448
11418
  case 4 /* Provider */:
11449
- value = asProviderData(view, nodeDef.index).instance;
11450
- break;
11419
+ return asProviderData(view, nodeDef.nodeIndex).instance;
11451
11420
  }
11452
- return value;
11453
11421
  }
11454
11422
  }
11455
11423
  /**
@@ -11467,12 +11435,13 @@ function getQueryValue(view, nodeDef, queryValueType) {
11467
11435
  function ngContentDef(ngContentIndex, index) {
11468
11436
  return {
11469
11437
  // will bet set by the view definition
11470
- index: -1,
11438
+ nodeIndex: -1,
11471
11439
  parent: null,
11472
11440
  renderParent: null,
11473
11441
  bindingIndex: -1,
11474
11442
  outputIndex: -1,
11475
11443
  // regular values
11444
+ checkIndex: -1,
11476
11445
  flags: 8 /* TypeNgContent */,
11477
11446
  childFlags: 0,
11478
11447
  directChildFlags: 0,
@@ -11514,25 +11483,28 @@ function appendNgContent(view, renderHost, def) {
11514
11483
  * found in the LICENSE file at https://angular.io/license
11515
11484
  */
11516
11485
  /**
11486
+ * @param {?} checkIndex
11517
11487
  * @param {?} argCount
11518
11488
  * @return {?}
11519
11489
  */
11520
- function purePipeDef(argCount) {
11490
+ function purePipeDef(checkIndex, argCount) {
11521
11491
  // argCount + 1 to include the pipe as first arg
11522
- return _pureExpressionDef(128 /* TypePurePipe */, new Array(argCount + 1));
11492
+ return _pureExpressionDef(128 /* TypePurePipe */, checkIndex, new Array(argCount + 1));
11523
11493
  }
11524
11494
  /**
11495
+ * @param {?} checkIndex
11525
11496
  * @param {?} argCount
11526
11497
  * @return {?}
11527
11498
  */
11528
- function pureArrayDef(argCount) {
11529
- return _pureExpressionDef(32 /* TypePureArray */, new Array(argCount));
11499
+ function pureArrayDef(checkIndex, argCount) {
11500
+ return _pureExpressionDef(32 /* TypePureArray */, checkIndex, new Array(argCount));
11530
11501
  }
11531
11502
  /**
11503
+ * @param {?} checkIndex
11532
11504
  * @param {?} propToIndex
11533
11505
  * @return {?}
11534
11506
  */
11535
- function pureObjectDef(propToIndex) {
11507
+ function pureObjectDef(checkIndex, propToIndex) {
11536
11508
  var /** @type {?} */ keys = Object.keys(propToIndex);
11537
11509
  var /** @type {?} */ nbKeys = keys.length;
11538
11510
  var /** @type {?} */ propertyNames = new Array(nbKeys);
@@ -11541,14 +11513,15 @@ function pureObjectDef(propToIndex) {
11541
11513
  var /** @type {?} */ index = propToIndex[key];
11542
11514
  propertyNames[index] = key;
11543
11515
  }
11544
- return _pureExpressionDef(64 /* TypePureObject */, propertyNames);
11516
+ return _pureExpressionDef(64 /* TypePureObject */, checkIndex, propertyNames);
11545
11517
  }
11546
11518
  /**
11547
11519
  * @param {?} flags
11520
+ * @param {?} checkIndex
11548
11521
  * @param {?} propertyNames
11549
11522
  * @return {?}
11550
11523
  */
11551
- function _pureExpressionDef(flags, propertyNames) {
11524
+ function _pureExpressionDef(flags, checkIndex, propertyNames) {
11552
11525
  var /** @type {?} */ bindings = new Array(propertyNames.length);
11553
11526
  for (var /** @type {?} */ i = 0; i < propertyNames.length; i++) {
11554
11527
  var /** @type {?} */ prop = propertyNames[i];
@@ -11563,12 +11536,13 @@ function _pureExpressionDef(flags, propertyNames) {
11563
11536
  }
11564
11537
  return {
11565
11538
  // will bet set by the view definition
11566
- index: -1,
11539
+ nodeIndex: -1,
11567
11540
  parent: null,
11568
11541
  renderParent: null,
11569
11542
  bindingIndex: -1,
11570
11543
  outputIndex: -1,
11571
11544
  // regular values
11545
+ checkIndex: checkIndex,
11572
11546
  flags: flags,
11573
11547
  childFlags: 0,
11574
11548
  directChildFlags: 0,
@@ -11635,7 +11609,7 @@ function checkAndUpdatePureExpressionInline(view, def, v0, v1, v2, v3, v4, v5, v
11635
11609
  if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9))
11636
11610
  changed = true;
11637
11611
  if (changed) {
11638
- var /** @type {?} */ data = asPureExpressionData(view, def.index);
11612
+ var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);
11639
11613
  var /** @type {?} */ value = void 0;
11640
11614
  switch (def.flags & 201347067 /* Types */) {
11641
11615
  case 32 /* TypePureArray */:
@@ -11741,7 +11715,7 @@ function checkAndUpdatePureExpressionDynamic(view, def, values) {
11741
11715
  }
11742
11716
  }
11743
11717
  if (changed) {
11744
- var /** @type {?} */ data = asPureExpressionData(view, def.index);
11718
+ var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);
11745
11719
  var /** @type {?} */ value = void 0;
11746
11720
  switch (def.flags & 201347067 /* Types */) {
11747
11721
  case 32 /* TypePureArray */:
@@ -11771,32 +11745,33 @@ function checkAndUpdatePureExpressionDynamic(view, def, values) {
11771
11745
  * found in the LICENSE file at https://angular.io/license
11772
11746
  */
11773
11747
  /**
11748
+ * @param {?} checkIndex
11774
11749
  * @param {?} ngContentIndex
11775
- * @param {?} constants
11750
+ * @param {?} staticText
11776
11751
  * @return {?}
11777
11752
  */
11778
- function textDef(ngContentIndex, constants) {
11779
- var /** @type {?} */ bindings = new Array(constants.length - 1);
11780
- for (var /** @type {?} */ i = 1; i < constants.length; i++) {
11753
+ function textDef(checkIndex, ngContentIndex, staticText) {
11754
+ var /** @type {?} */ bindings = new Array(staticText.length - 1);
11755
+ for (var /** @type {?} */ i = 1; i < staticText.length; i++) {
11781
11756
  bindings[i - 1] = {
11782
11757
  flags: 8 /* TypeProperty */,
11783
11758
  name: null,
11784
11759
  ns: null,
11785
11760
  nonMinifiedName: null,
11786
11761
  securityContext: null,
11787
- suffix: constants[i]
11762
+ suffix: staticText[i],
11788
11763
  };
11789
11764
  }
11790
- var /** @type {?} */ flags = 2;
11791
11765
  return {
11792
11766
  // will bet set by the view definition
11793
- index: -1,
11767
+ nodeIndex: -1,
11794
11768
  parent: null,
11795
11769
  renderParent: null,
11796
11770
  bindingIndex: -1,
11797
11771
  outputIndex: -1,
11798
11772
  // regular values
11799
- flags: flags,
11773
+ checkIndex: checkIndex,
11774
+ flags: 2 /* TypeText */,
11800
11775
  childFlags: 0,
11801
11776
  directChildFlags: 0,
11802
11777
  childMatchedQueries: 0,
@@ -11804,13 +11779,13 @@ function textDef(ngContentIndex, constants) {
11804
11779
  matchedQueryIds: 0,
11805
11780
  references: {}, ngContentIndex: ngContentIndex,
11806
11781
  childCount: 0, bindings: bindings,
11807
- bindingFlags: calcBindingFlags(bindings),
11782
+ bindingFlags: 8 /* TypeProperty */,
11808
11783
  outputs: [],
11809
11784
  element: null,
11810
11785
  provider: null,
11811
- text: { prefix: constants[0] },
11786
+ text: { prefix: staticText[0] },
11812
11787
  query: null,
11813
- ngContent: null
11788
+ ngContent: null,
11814
11789
  };
11815
11790
  }
11816
11791
  /**
@@ -11890,7 +11865,7 @@ function checkAndUpdateTextInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8,
11890
11865
  value += _addInterpolationPart(v8, bindings[8]);
11891
11866
  if (bindLen > 9)
11892
11867
  value += _addInterpolationPart(v9, bindings[9]);
11893
- var /** @type {?} */ renderNode$$1 = asTextData(view, def.index).renderText;
11868
+ var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;
11894
11869
  view.renderer.setValue(renderNode$$1, value);
11895
11870
  }
11896
11871
  return changed;
@@ -11917,7 +11892,7 @@ function checkAndUpdateTextDynamic(view, def, values) {
11917
11892
  value = value + _addInterpolationPart(values[i], bindings[i]);
11918
11893
  }
11919
11894
  value = ((def.text)).prefix + value;
11920
- var /** @type {?} */ renderNode$$1 = asTextData(view, def.index).renderText;
11895
+ var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;
11921
11896
  view.renderer.setValue(renderNode$$1, value);
11922
11897
  }
11923
11898
  return changed;
@@ -11953,33 +11928,19 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11953
11928
  var /** @type {?} */ viewRootNodeFlags = 0;
11954
11929
  var /** @type {?} */ viewMatchedQueries = 0;
11955
11930
  var /** @type {?} */ currentParent = null;
11931
+ var /** @type {?} */ currentRenderParent = null;
11956
11932
  var /** @type {?} */ currentElementHasPublicProviders = false;
11957
11933
  var /** @type {?} */ currentElementHasPrivateProviders = false;
11958
11934
  var /** @type {?} */ lastRenderRootNode = null;
11959
11935
  for (var /** @type {?} */ i = 0; i < nodes.length; i++) {
11960
- while (currentParent && i > currentParent.index + currentParent.childCount) {
11961
- var /** @type {?} */ newParent = currentParent.parent;
11962
- if (newParent) {
11963
- newParent.childFlags |= ((currentParent.childFlags));
11964
- newParent.childMatchedQueries |= currentParent.childMatchedQueries;
11965
- }
11966
- currentParent = newParent;
11967
- }
11968
11936
  var /** @type {?} */ node = nodes[i];
11969
- node.index = i;
11937
+ node.nodeIndex = i;
11970
11938
  node.parent = currentParent;
11971
11939
  node.bindingIndex = viewBindingCount;
11972
11940
  node.outputIndex = viewDisposableCount;
11973
- // renderParent needs to account for ng-container!
11974
- var /** @type {?} */ currentRenderParent = void 0;
11975
- if (currentParent && currentParent.flags & 1 /* TypeElement */ &&
11976
- !((currentParent.element)).name) {
11977
- currentRenderParent = currentParent.renderParent;
11978
- }
11979
- else {
11980
- currentRenderParent = currentParent;
11981
- }
11982
11941
  node.renderParent = currentRenderParent;
11942
+ viewNodeFlags |= node.flags;
11943
+ viewMatchedQueries |= node.matchedQueryIds;
11983
11944
  if (node.element) {
11984
11945
  var /** @type {?} */ elDef = node.element;
11985
11946
  elDef.publicProviders =
@@ -11988,24 +11949,11 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11988
11949
  // Note: We assume that all providers of an element are before any child element!
11989
11950
  currentElementHasPublicProviders = false;
11990
11951
  currentElementHasPrivateProviders = false;
11991
- }
11992
- validateNode(currentParent, node, nodes.length);
11993
- viewNodeFlags |= node.flags;
11994
- viewMatchedQueries |= node.matchedQueryIds;
11995
- if (node.element && node.element.template) {
11996
- viewMatchedQueries |= node.element.template.nodeMatchedQueries;
11997
- }
11998
- if (currentParent) {
11999
- currentParent.childFlags |= node.flags;
12000
- currentParent.directChildFlags |= node.flags;
12001
- currentParent.childMatchedQueries |= node.matchedQueryIds;
12002
- if (node.element && node.element.template) {
12003
- currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;
11952
+ if (node.element.template) {
11953
+ viewMatchedQueries |= node.element.template.nodeMatchedQueries;
12004
11954
  }
12005
11955
  }
12006
- else {
12007
- viewRootNodeFlags |= node.flags;
12008
- }
11956
+ validateNode(currentParent, node, nodes.length);
12009
11957
  viewBindingCount += node.bindings.length;
12010
11958
  viewDisposableCount += node.outputs.length;
12011
11959
  if (!currentRenderParent && (node.flags & 3 /* CatRenderNode */)) {
@@ -12029,7 +11977,7 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
12029
11977
  if (!currentElementHasPrivateProviders) {
12030
11978
  currentElementHasPrivateProviders = true; /** @type {?} */
12031
11979
  ((((
12032
- // Use protoyypical inheritance to not get O(n^2) complexity...
11980
+ // Use prototypical inheritance to not get O(n^2) complexity...
12033
11981
  currentParent)).element)).allProviders =
12034
11982
  Object.create(/** @type {?} */ ((((currentParent)).element)).publicProviders);
12035
11983
  } /** @type {?} */
@@ -12039,17 +11987,45 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
12039
11987
  ((((currentParent)).element)).componentProvider = node;
12040
11988
  }
12041
11989
  }
12042
- if (node.childCount) {
11990
+ if (currentParent) {
11991
+ currentParent.childFlags |= node.flags;
11992
+ currentParent.directChildFlags |= node.flags;
11993
+ currentParent.childMatchedQueries |= node.matchedQueryIds;
11994
+ if (node.element && node.element.template) {
11995
+ currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;
11996
+ }
11997
+ }
11998
+ else {
11999
+ viewRootNodeFlags |= node.flags;
12000
+ }
12001
+ if (node.childCount > 0) {
12043
12002
  currentParent = node;
12003
+ if (!isNgContainer(node)) {
12004
+ currentRenderParent = node;
12005
+ }
12044
12006
  }
12045
- }
12046
- while (currentParent) {
12047
- var /** @type {?} */ newParent = currentParent.parent;
12048
- if (newParent) {
12049
- newParent.childFlags |= currentParent.childFlags;
12050
- newParent.childMatchedQueries |= currentParent.childMatchedQueries;
12007
+ else {
12008
+ // When the current node has no children, check if it is the last children of its parent.
12009
+ // When it is, propagate the flags up.
12010
+ // The loop is required because an element could be the last transitive children of several
12011
+ // elements. We loop to either the root or the highest opened element (= with remaining
12012
+ // children)
12013
+ while (currentParent && i === currentParent.nodeIndex + currentParent.childCount) {
12014
+ var /** @type {?} */ newParent = currentParent.parent;
12015
+ if (newParent) {
12016
+ newParent.childFlags |= currentParent.childFlags;
12017
+ newParent.childMatchedQueries |= currentParent.childMatchedQueries;
12018
+ }
12019
+ currentParent = newParent;
12020
+ // We also need to update the render parent & account for ng-container
12021
+ if (currentParent && isNgContainer(currentParent)) {
12022
+ currentRenderParent = currentParent.renderParent;
12023
+ }
12024
+ else {
12025
+ currentRenderParent = currentParent;
12026
+ }
12027
+ }
12051
12028
  }
12052
- currentParent = newParent;
12053
12029
  }
12054
12030
  var /** @type {?} */ handleEvent = function (view, nodeIndex, eventName, event) { return ((((nodes[nodeIndex].element)).handleEvent))(view, eventName, event); };
12055
12031
  return {
@@ -12060,12 +12036,18 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
12060
12036
  nodeMatchedQueries: viewMatchedQueries, flags: flags,
12061
12037
  nodes: nodes,
12062
12038
  updateDirectives: updateDirectives || NOOP,
12063
- updateRenderer: updateRenderer || NOOP,
12064
- handleEvent: handleEvent || NOOP,
12039
+ updateRenderer: updateRenderer || NOOP, handleEvent: handleEvent,
12065
12040
  bindingCount: viewBindingCount,
12066
12041
  outputCount: viewDisposableCount, lastRenderRootNode: lastRenderRootNode
12067
12042
  };
12068
12043
  }
12044
+ /**
12045
+ * @param {?} node
12046
+ * @return {?}
12047
+ */
12048
+ function isNgContainer(node) {
12049
+ return (node.flags & 1 /* TypeElement */) !== 0 && ((node.element)).name === null;
12050
+ }
12069
12051
  /**
12070
12052
  * @param {?} parent
12071
12053
  * @param {?} node
@@ -12080,28 +12062,28 @@ function validateNode(parent, node, nodeCount) {
12080
12062
  }
12081
12063
  if (template.lastRenderRootNode &&
12082
12064
  template.lastRenderRootNode.flags & 16777216 /* EmbeddedViews */) {
12083
- throw new Error("Illegal State: Last root node of a template can't have embedded views, at index " + node.index + "!");
12065
+ throw new Error("Illegal State: Last root node of a template can't have embedded views, at index " + node.nodeIndex + "!");
12084
12066
  }
12085
12067
  }
12086
12068
  if (node.flags & 20224 /* CatProvider */) {
12087
12069
  var /** @type {?} */ parentFlags = parent ? parent.flags : 0;
12088
12070
  if ((parentFlags & 1 /* TypeElement */) === 0) {
12089
- throw new Error("Illegal State: Provider/Directive nodes need to be children of elements or anchors, at index " + node.index + "!");
12071
+ throw new Error("Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index " + node.nodeIndex + "!");
12090
12072
  }
12091
12073
  }
12092
12074
  if (node.query) {
12093
12075
  if (node.flags & 67108864 /* TypeContentQuery */ &&
12094
12076
  (!parent || (parent.flags & 16384 /* TypeDirective */) === 0)) {
12095
- throw new Error("Illegal State: Content Query nodes need to be children of directives, at index " + node.index + "!");
12077
+ throw new Error("Illegal State: Content Query nodes need to be children of directives, at index " + node.nodeIndex + "!");
12096
12078
  }
12097
12079
  if (node.flags & 134217728 /* TypeViewQuery */ && parent) {
12098
- throw new Error("Illegal State: View Query nodes have to be top level nodes, at index " + node.index + "!");
12080
+ throw new Error("Illegal State: View Query nodes have to be top level nodes, at index " + node.nodeIndex + "!");
12099
12081
  }
12100
12082
  }
12101
12083
  if (node.childCount) {
12102
- var /** @type {?} */ parentEnd = parent ? parent.index + parent.childCount : nodeCount - 1;
12103
- if (node.index <= parentEnd && node.index + node.childCount > parentEnd) {
12104
- throw new Error("Illegal State: childCount of node leads outside of parent, at index " + node.index + "!");
12084
+ var /** @type {?} */ parentEnd = parent ? parent.nodeIndex + parent.childCount : nodeCount - 1;
12085
+ if (node.nodeIndex <= parentEnd && node.nodeIndex + node.childCount > parentEnd) {
12086
+ throw new Error("Illegal State: childCount of node leads outside of parent, at index " + node.nodeIndex + "!");
12105
12087
  }
12106
12088
  }
12107
12089
  }
@@ -12190,7 +12172,7 @@ function createViewNodes(view) {
12190
12172
  var /** @type {?} */ renderHost;
12191
12173
  if (isComponentView(view)) {
12192
12174
  var /** @type {?} */ hostDef = view.parentNodeDef;
12193
- renderHost = asElementData(/** @type {?} */ ((view.parent)), /** @type {?} */ ((((hostDef)).parent)).index).renderElement;
12175
+ renderHost = asElementData(/** @type {?} */ ((view.parent)), /** @type {?} */ ((((hostDef)).parent)).nodeIndex).renderElement;
12194
12176
  }
12195
12177
  var /** @type {?} */ def = view.def;
12196
12178
  var /** @type {?} */ nodes = view.nodes;
@@ -12224,8 +12206,11 @@ function createViewNodes(view) {
12224
12206
  case 1024 /* TypeFactoryProvider */:
12225
12207
  case 2048 /* TypeUseExistingProvider */:
12226
12208
  case 256 /* TypeValueProvider */: {
12227
- var /** @type {?} */ instance = createProviderInstance(view, nodeDef);
12228
- nodeData = ({ instance: instance });
12209
+ nodeData = nodes[i];
12210
+ if (!nodeData && !(nodeDef.flags & 4096 /* LazyProvider */)) {
12211
+ var /** @type {?} */ instance = createProviderInstance(view, nodeDef);
12212
+ nodeData = ({ instance: instance });
12213
+ }
12229
12214
  break;
12230
12215
  }
12231
12216
  case 16 /* TypePipe */: {
@@ -12234,11 +12219,14 @@ function createViewNodes(view) {
12234
12219
  break;
12235
12220
  }
12236
12221
  case 16384 /* TypeDirective */: {
12237
- var /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);
12238
- nodeData = ({ instance: instance });
12222
+ nodeData = nodes[i];
12223
+ if (!nodeData) {
12224
+ var /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);
12225
+ nodeData = ({ instance: instance });
12226
+ }
12239
12227
  if (nodeDef.flags & 32768 /* Component */) {
12240
- var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((nodeDef.parent)).index).componentView;
12241
- initView(compView, instance, instance);
12228
+ var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).componentView;
12229
+ initView(compView, nodeData.instance, nodeData.instance);
12242
12230
  }
12243
12231
  break;
12244
12232
  }
@@ -12376,26 +12364,20 @@ function markProjectedViewsForCheck(view) {
12376
12364
  * @return {?}
12377
12365
  */
12378
12366
  function checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
12379
- var /** @type {?} */ changed = false;
12380
12367
  switch (nodeDef.flags & 201347067 /* Types */) {
12381
12368
  case 1 /* TypeElement */:
12382
- changed = checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12383
- break;
12369
+ return checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12384
12370
  case 2 /* TypeText */:
12385
- changed = checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12386
- break;
12371
+ return checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12387
12372
  case 16384 /* TypeDirective */:
12388
- changed =
12389
- checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12390
- break;
12373
+ return checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12391
12374
  case 32 /* TypePureArray */:
12392
12375
  case 64 /* TypePureObject */:
12393
12376
  case 128 /* TypePurePipe */:
12394
- changed =
12395
- checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12396
- break;
12377
+ return checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
12378
+ default:
12379
+ throw 'unreachable';
12397
12380
  }
12398
- return changed;
12399
12381
  }
12400
12382
  /**
12401
12383
  * @param {?} view
@@ -12404,34 +12386,20 @@ function checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7,
12404
12386
  * @return {?}
12405
12387
  */
12406
12388
  function checkAndUpdateNodeDynamic(view, nodeDef, values) {
12407
- var /** @type {?} */ changed = false;
12408
12389
  switch (nodeDef.flags & 201347067 /* Types */) {
12409
12390
  case 1 /* TypeElement */:
12410
- changed = checkAndUpdateElementDynamic(view, nodeDef, values);
12411
- break;
12391
+ return checkAndUpdateElementDynamic(view, nodeDef, values);
12412
12392
  case 2 /* TypeText */:
12413
- changed = checkAndUpdateTextDynamic(view, nodeDef, values);
12414
- break;
12393
+ return checkAndUpdateTextDynamic(view, nodeDef, values);
12415
12394
  case 16384 /* TypeDirective */:
12416
- changed = checkAndUpdateDirectiveDynamic(view, nodeDef, values);
12417
- break;
12395
+ return checkAndUpdateDirectiveDynamic(view, nodeDef, values);
12418
12396
  case 32 /* TypePureArray */:
12419
12397
  case 64 /* TypePureObject */:
12420
12398
  case 128 /* TypePurePipe */:
12421
- changed = checkAndUpdatePureExpressionDynamic(view, nodeDef, values);
12422
- break;
12423
- }
12424
- if (changed) {
12425
- // Update oldValues after all bindings have been updated,
12426
- // as a setter for a property might update other properties.
12427
- var /** @type {?} */ bindLen = nodeDef.bindings.length;
12428
- var /** @type {?} */ bindingStart = nodeDef.bindingIndex;
12429
- var /** @type {?} */ oldValues = view.oldValues;
12430
- for (var /** @type {?} */ i = 0; i < bindLen; i++) {
12431
- oldValues[bindingStart + i] = values[i];
12432
- }
12399
+ return checkAndUpdatePureExpressionDynamic(view, nodeDef, values);
12400
+ default:
12401
+ throw 'unreachable';
12433
12402
  }
12434
- return changed;
12435
12403
  }
12436
12404
  /**
12437
12405
  * @param {?} view
@@ -12516,9 +12484,9 @@ function checkNoChangesNodeDynamic(view, nodeDef, values) {
12516
12484
  * @return {?}
12517
12485
  */
12518
12486
  function checkNoChangesQuery(view, nodeDef) {
12519
- var /** @type {?} */ queryList = asQueryList(view, nodeDef.index);
12487
+ var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);
12520
12488
  if (queryList.dirty) {
12521
- throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, nodeDef.index), "Query " + ((nodeDef.query)).id + " not dirty", "Query " + ((nodeDef.query)).id + " dirty", (view.state & 1 /* BeforeFirstCheck */) !== 0);
12489
+ throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, nodeDef.nodeIndex), "Query " + ((nodeDef.query)).id + " not dirty", "Query " + ((nodeDef.query)).id + " dirty", (view.state & 1 /* BeforeFirstCheck */) !== 0);
12522
12490
  }
12523
12491
  }
12524
12492
  /**
@@ -12711,7 +12679,7 @@ function execQueriesAction(view, queryFlags, staticDynamicQueryFlag, checkType)
12711
12679
  for (var /** @type {?} */ i = 0; i < nodeCount; i++) {
12712
12680
  var /** @type {?} */ nodeDef = view.def.nodes[i];
12713
12681
  if ((nodeDef.flags & queryFlags) && (nodeDef.flags & staticDynamicQueryFlag)) {
12714
- Services.setCurrentNode(view, nodeDef.index);
12682
+ Services.setCurrentNode(view, nodeDef.nodeIndex);
12715
12683
  switch (checkType) {
12716
12684
  case 0 /* CheckAndUpdate */:
12717
12685
  checkAndUpdateQuery(view, nodeDef);
@@ -12932,7 +12900,7 @@ function applyProviderOverridesToView(def) {
12932
12900
  }
12933
12901
  if (lastElementDef && nodeDef.flags & 3840 /* CatProviderNoDirective */ &&
12934
12902
  providerOverrides.has(/** @type {?} */ ((nodeDef.provider)).token)) {
12935
- elIndicesWithOverwrittenProviders.push(/** @type {?} */ ((lastElementDef)).index);
12903
+ elIndicesWithOverwrittenProviders.push(/** @type {?} */ ((lastElementDef)).nodeIndex);
12936
12904
  lastElementDef = null;
12937
12905
  }
12938
12906
  }
@@ -12951,9 +12919,6 @@ function applyProviderOverridesToView(def) {
12951
12919
  return;
12952
12920
  }
12953
12921
  if (nodeDef.flags & 3840 /* CatProviderNoDirective */) {
12954
- // Make all providers lazy, so that we don't get into trouble
12955
- // with ordering problems of providers on the same element
12956
- nodeDef.flags |= 4096 /* LazyProvider */;
12957
12922
  var /** @type {?} */ provider = ((nodeDef.provider));
12958
12923
  var /** @type {?} */ override = providerOverrides.get(provider.token);
12959
12924
  if (override) {
@@ -12970,7 +12935,8 @@ function applyProviderOverridesToView(def) {
12970
12935
  * @return {?}
12971
12936
  */
12972
12937
  function applyProviderOverridesToNgModule(def) {
12973
- if (providerOverrides.size === 0 || !hasOverrrides(def)) {
12938
+ var _a = calcHasOverrides(def), hasOverrides = _a.hasOverrides, hasDeprecatedOverrides = _a.hasDeprecatedOverrides;
12939
+ if (!hasOverrides) {
12974
12940
  return def;
12975
12941
  }
12976
12942
  // clone the whole view definition,
@@ -12982,8 +12948,20 @@ function applyProviderOverridesToNgModule(def) {
12982
12948
  * @param {?} def
12983
12949
  * @return {?}
12984
12950
  */
12985
- function hasOverrrides(def) {
12986
- return def.providers.some(function (node) { return !!(node.flags & 3840 /* CatProviderNoDirective */) && providerOverrides.has(node.token); });
12951
+ function calcHasOverrides(def) {
12952
+ var /** @type {?} */ hasOverrides = false;
12953
+ var /** @type {?} */ hasDeprecatedOverrides = false;
12954
+ if (providerOverrides.size === 0) {
12955
+ return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };
12956
+ }
12957
+ def.providers.forEach(function (node) {
12958
+ var /** @type {?} */ override = providerOverrides.get(node.token);
12959
+ if ((node.flags & 3840 /* CatProviderNoDirective */) && override) {
12960
+ hasOverrides = true;
12961
+ hasDeprecatedOverrides = hasDeprecatedOverrides || override.deprecatedBehavior;
12962
+ }
12963
+ });
12964
+ return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };
12987
12965
  }
12988
12966
  /**
12989
12967
  * @param {?} def
@@ -12992,9 +12970,12 @@ function applyProviderOverridesToNgModule(def) {
12992
12970
  function applyProviderOverrides(def) {
12993
12971
  for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {
12994
12972
  var /** @type {?} */ provider = def.providers[i];
12995
- // Make all providers lazy, so that we don't get into trouble
12996
- // with ordering problems of providers on the same element
12997
- provider.flags |= 4096 /* LazyProvider */;
12973
+ if (hasDeprecatedOverrides) {
12974
+ // We had a bug where me made
12975
+ // all providers lazy. Keep this logic behind a flag
12976
+ // for migrating existing users.
12977
+ provider.flags |= 4096 /* LazyProvider */;
12978
+ }
12998
12979
  var /** @type {?} */ override = providerOverrides.get(provider.token);
12999
12980
  if (override) {
13000
12981
  provider.flags = (provider.flags & ~3840 /* CatProviderNoDirective */) | override.flags;
@@ -13006,7 +12987,7 @@ function applyProviderOverridesToNgModule(def) {
13006
12987
  }
13007
12988
  /**
13008
12989
  * @param {?} view
13009
- * @param {?} nodeIndex
12990
+ * @param {?} checkIndex
13010
12991
  * @param {?} argStyle
13011
12992
  * @param {?=} v0
13012
12993
  * @param {?=} v1
@@ -13020,16 +13001,16 @@ function applyProviderOverridesToNgModule(def) {
13020
13001
  * @param {?=} v9
13021
13002
  * @return {?}
13022
13003
  */
13023
- function prodCheckAndUpdateNode(view, nodeIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
13024
- var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];
13004
+ function prodCheckAndUpdateNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
13005
+ var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];
13025
13006
  checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
13026
13007
  return (nodeDef.flags & 224 /* CatPureExpression */) ?
13027
- asPureExpressionData(view, nodeIndex).value :
13008
+ asPureExpressionData(view, checkIndex).value :
13028
13009
  undefined;
13029
13010
  }
13030
13011
  /**
13031
13012
  * @param {?} view
13032
- * @param {?} nodeIndex
13013
+ * @param {?} checkIndex
13033
13014
  * @param {?} argStyle
13034
13015
  * @param {?=} v0
13035
13016
  * @param {?=} v1
@@ -13043,11 +13024,11 @@ function prodCheckAndUpdateNode(view, nodeIndex, argStyle, v0, v1, v2, v3, v4, v
13043
13024
  * @param {?=} v9
13044
13025
  * @return {?}
13045
13026
  */
13046
- function prodCheckNoChangesNode(view, nodeIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
13047
- var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];
13027
+ function prodCheckNoChangesNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {
13028
+ var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];
13048
13029
  checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);
13049
13030
  return (nodeDef.flags & 224 /* CatPureExpression */) ?
13050
- asPureExpressionData(view, nodeIndex).value :
13031
+ asPureExpressionData(view, checkIndex).value :
13051
13032
  undefined;
13052
13033
  }
13053
13034
  /**
@@ -13139,7 +13120,7 @@ function debugUpdateDirectives(view, checkType) {
13139
13120
  debugSetCurrentNode(view, nextDirectiveWithBinding(view, nodeIndex));
13140
13121
  }
13141
13122
  return (nodeDef.flags & 224 /* CatPureExpression */) ?
13142
- asPureExpressionData(view, nodeDef.index).value :
13123
+ asPureExpressionData(view, nodeDef.nodeIndex).value :
13143
13124
  undefined;
13144
13125
  }
13145
13126
  }
@@ -13177,7 +13158,7 @@ function debugUpdateRenderer(view, checkType) {
13177
13158
  debugSetCurrentNode(view, nextRenderNodeWithBinding(view, nodeIndex));
13178
13159
  }
13179
13160
  return (nodeDef.flags & 224 /* CatPureExpression */) ?
13180
- asPureExpressionData(view, nodeDef.index).value :
13161
+ asPureExpressionData(view, nodeDef.nodeIndex).value :
13181
13162
  undefined;
13182
13163
  }
13183
13164
  }
@@ -13203,7 +13184,7 @@ function debugCheckAndUpdateNode(view, nodeDef, argStyle, givenValues) {
13203
13184
  }
13204
13185
  }
13205
13186
  var /** @type {?} */ elDef = ((nodeDef.parent));
13206
- var /** @type {?} */ el = asElementData(view, elDef.index).renderElement;
13187
+ var /** @type {?} */ el = asElementData(view, elDef.nodeIndex).renderElement;
13207
13188
  if (!((elDef.element)).name) {
13208
13189
  // a comment.
13209
13190
  view.renderer.setValue(el, "bindings=" + JSON.stringify(bindingValues, null, 2));
@@ -13329,7 +13310,7 @@ var DebugContext_ = (function () {
13329
13310
  */
13330
13311
  get: function () {
13331
13312
  // Has to be done lazily as we use the DebugContext also during creation of elements...
13332
- return asElementData(this.elView, this.elDef.index).componentView || this.view;
13313
+ return asElementData(this.elView, this.elDef.nodeIndex).componentView || this.view;
13333
13314
  },
13334
13315
  enumerable: true,
13335
13316
  configurable: true
@@ -13365,7 +13346,7 @@ var DebugContext_ = (function () {
13365
13346
  get: function () {
13366
13347
  var /** @type {?} */ tokens = [];
13367
13348
  if (this.elDef) {
13368
- for (var /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {
13349
+ for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {
13369
13350
  var /** @type {?} */ childDef = this.elView.def.nodes[i];
13370
13351
  if (childDef.flags & 20224 /* CatProvider */) {
13371
13352
  tokens.push(/** @type {?} */ ((childDef.provider)).token);
@@ -13386,7 +13367,7 @@ var DebugContext_ = (function () {
13386
13367
  var /** @type {?} */ references = {};
13387
13368
  if (this.elDef) {
13388
13369
  collectReferences(this.elView, this.elDef, references);
13389
- for (var /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {
13370
+ for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {
13390
13371
  var /** @type {?} */ childDef = this.elView.def.nodes[i];
13391
13372
  if (childDef.flags & 20224 /* CatProvider */) {
13392
13373
  collectReferences(this.elView, childDef, references);
@@ -13435,11 +13416,11 @@ var DebugContext_ = (function () {
13435
13416
  var /** @type {?} */ logNodeIndex;
13436
13417
  if (this.nodeDef.flags & 2 /* TypeText */) {
13437
13418
  logViewDef = this.view.def;
13438
- logNodeIndex = this.nodeDef.index;
13419
+ logNodeIndex = this.nodeDef.nodeIndex;
13439
13420
  }
13440
13421
  else {
13441
13422
  logViewDef = this.elView.def;
13442
- logNodeIndex = this.elDef.index;
13423
+ logNodeIndex = this.elDef.nodeIndex;
13443
13424
  }
13444
13425
  // Note: we only generate a log function for text and element nodes
13445
13426
  // to make the generated code as small as possible.
@@ -13487,7 +13468,7 @@ function findHostElement(view) {
13487
13468
  view = ((view.parent));
13488
13469
  }
13489
13470
  if (view.parent) {
13490
- return asElementData(view.parent, /** @type {?} */ ((viewParentEl(view))).index);
13471
+ return asElementData(view.parent, /** @type {?} */ ((viewParentEl(view))).nodeIndex);
13491
13472
  }
13492
13473
  return null;
13493
13474
  }
@@ -13922,6 +13903,11 @@ var NgModuleFactory_ = (function (_super) {
13922
13903
  * the
13923
13904
  * trigger is bound to (in the form of `[\@triggerName]="expression"`.
13924
13905
  *
13906
+ * Animation trigger bindings strigify values and then match the previous and current values against
13907
+ * any linked transitions. If a boolean value is provided into the trigger binding then it will both
13908
+ * be represented as `1` or `true` and `0` or `false` for a true and false boolean values
13909
+ * respectively.
13910
+ *
13925
13911
  * ### Usage
13926
13912
  *
13927
13913
  * `trigger` will create an animation trigger reference based on the provided `name` value. The
@@ -14407,6 +14393,21 @@ function keyframes$1(steps) {
14407
14393
  * ])
14408
14394
  * ```
14409
14395
  *
14396
+ * ### Boolean values
14397
+ * if a trigger binding value is a boolean value then it can be matched using a transition
14398
+ * expression that compares `true` and `false` or `1` and `0`.
14399
+ *
14400
+ * ```
14401
+ * // in the template
14402
+ * <div [\@openClose]="open ? true : false">...</div>
14403
+ *
14404
+ * // in the component metadata
14405
+ * trigger('openClose', [
14406
+ * state('true', style({ height: '*' })),
14407
+ * state('false', style({ height: '0px' })),
14408
+ * transition('false <=> true', animate(500))
14409
+ * ])
14410
+ * ```
14410
14411
  * {\@example core/animation/ts/dsl/animation_example.ts region='Component'}
14411
14412
  *
14412
14413
  * \@experimental Animation support is experimental.
@@ -14431,7 +14432,7 @@ function transition$1(stateChangeExpr, steps, options) {
14431
14432
  * var fadeAnimation = animation([
14432
14433
  * style({ opacity: '{{ start }}' }),
14433
14434
  * animate('{{ time }}',
14434
- * style({ opacity: '{{ end }}'))
14435
+ * style({ opacity: '{{ end }}'}))
14435
14436
  * ], { params: { time: '1000ms', start: 0, end: 1 }});
14436
14437
  * ```
14437
14438
  *