@angular/core 4.4.0 → 4.4.4

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.
package/@angular/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v4.4.0
2
+ * @license Angular v4.4.4
3
3
  * (c) 2010-2017 Google, Inc. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -755,7 +755,7 @@ class Version {
755
755
  /**
756
756
  * \@stable
757
757
  */
758
- const VERSION = new Version('4.4.0');
758
+ const VERSION = new Version('4.4.4');
759
759
 
760
760
  /**
761
761
  * @license
@@ -11518,33 +11518,19 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11518
11518
  let /** @type {?} */ viewRootNodeFlags = 0;
11519
11519
  let /** @type {?} */ viewMatchedQueries = 0;
11520
11520
  let /** @type {?} */ currentParent = null;
11521
+ let /** @type {?} */ currentRenderParent = null;
11521
11522
  let /** @type {?} */ currentElementHasPublicProviders = false;
11522
11523
  let /** @type {?} */ currentElementHasPrivateProviders = false;
11523
11524
  let /** @type {?} */ lastRenderRootNode = null;
11524
11525
  for (let /** @type {?} */ i = 0; i < nodes.length; i++) {
11525
- while (currentParent && i > currentParent.index + currentParent.childCount) {
11526
- const /** @type {?} */ newParent = currentParent.parent;
11527
- if (newParent) {
11528
- newParent.childFlags |= ((currentParent.childFlags));
11529
- newParent.childMatchedQueries |= currentParent.childMatchedQueries;
11530
- }
11531
- currentParent = newParent;
11532
- }
11533
11526
  const /** @type {?} */ node = nodes[i];
11534
11527
  node.index = i;
11535
11528
  node.parent = currentParent;
11536
11529
  node.bindingIndex = viewBindingCount;
11537
11530
  node.outputIndex = viewDisposableCount;
11538
- // renderParent needs to account for ng-container!
11539
- let /** @type {?} */ currentRenderParent;
11540
- if (currentParent && currentParent.flags & 1 /* TypeElement */ &&
11541
- !((currentParent.element)).name) {
11542
- currentRenderParent = currentParent.renderParent;
11543
- }
11544
- else {
11545
- currentRenderParent = currentParent;
11546
- }
11547
11531
  node.renderParent = currentRenderParent;
11532
+ viewNodeFlags |= node.flags;
11533
+ viewMatchedQueries |= node.matchedQueryIds;
11548
11534
  if (node.element) {
11549
11535
  const /** @type {?} */ elDef = node.element;
11550
11536
  elDef.publicProviders =
@@ -11553,24 +11539,11 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11553
11539
  // Note: We assume that all providers of an element are before any child element!
11554
11540
  currentElementHasPublicProviders = false;
11555
11541
  currentElementHasPrivateProviders = false;
11556
- }
11557
- validateNode(currentParent, node, nodes.length);
11558
- viewNodeFlags |= node.flags;
11559
- viewMatchedQueries |= node.matchedQueryIds;
11560
- if (node.element && node.element.template) {
11561
- viewMatchedQueries |= node.element.template.nodeMatchedQueries;
11562
- }
11563
- if (currentParent) {
11564
- currentParent.childFlags |= node.flags;
11565
- currentParent.directChildFlags |= node.flags;
11566
- currentParent.childMatchedQueries |= node.matchedQueryIds;
11567
- if (node.element && node.element.template) {
11568
- currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;
11542
+ if (node.element.template) {
11543
+ viewMatchedQueries |= node.element.template.nodeMatchedQueries;
11569
11544
  }
11570
11545
  }
11571
- else {
11572
- viewRootNodeFlags |= node.flags;
11573
- }
11546
+ validateNode(currentParent, node, nodes.length);
11574
11547
  viewBindingCount += node.bindings.length;
11575
11548
  viewDisposableCount += node.outputs.length;
11576
11549
  if (!currentRenderParent && (node.flags & 3 /* CatRenderNode */)) {
@@ -11594,7 +11567,7 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11594
11567
  if (!currentElementHasPrivateProviders) {
11595
11568
  currentElementHasPrivateProviders = true; /** @type {?} */
11596
11569
  ((((
11597
- // Use protoyypical inheritance to not get O(n^2) complexity...
11570
+ // Use prototypical inheritance to not get O(n^2) complexity...
11598
11571
  currentParent)).element)).allProviders =
11599
11572
  Object.create(/** @type {?} */ ((((currentParent)).element)).publicProviders);
11600
11573
  } /** @type {?} */
@@ -11604,17 +11577,45 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11604
11577
  ((((currentParent)).element)).componentProvider = node;
11605
11578
  }
11606
11579
  }
11607
- if (node.childCount) {
11580
+ if (currentParent) {
11581
+ currentParent.childFlags |= node.flags;
11582
+ currentParent.directChildFlags |= node.flags;
11583
+ currentParent.childMatchedQueries |= node.matchedQueryIds;
11584
+ if (node.element && node.element.template) {
11585
+ currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;
11586
+ }
11587
+ }
11588
+ else {
11589
+ viewRootNodeFlags |= node.flags;
11590
+ }
11591
+ if (node.childCount > 0) {
11608
11592
  currentParent = node;
11593
+ if (!isNgContainer(node)) {
11594
+ currentRenderParent = node;
11595
+ }
11609
11596
  }
11610
- }
11611
- while (currentParent) {
11612
- const /** @type {?} */ newParent = currentParent.parent;
11613
- if (newParent) {
11614
- newParent.childFlags |= currentParent.childFlags;
11615
- newParent.childMatchedQueries |= currentParent.childMatchedQueries;
11597
+ else {
11598
+ // When the current node has no children, check if it is the last children of its parent.
11599
+ // When it is, propagate the flags up.
11600
+ // The loop is required because an element could be the last transitive children of several
11601
+ // elements. We loop to either the root or the highest opened element (= with remaining
11602
+ // children)
11603
+ while (currentParent && i === currentParent.index + currentParent.childCount) {
11604
+ const /** @type {?} */ newParent = currentParent.parent;
11605
+ if (newParent) {
11606
+ newParent.childFlags |= currentParent.childFlags;
11607
+ newParent.childMatchedQueries |= currentParent.childMatchedQueries;
11608
+ }
11609
+ currentParent = newParent;
11610
+ // We also need to update the render parent & account for ng-container
11611
+ if (currentParent && isNgContainer(currentParent)) {
11612
+ currentRenderParent = currentParent.renderParent;
11613
+ }
11614
+ else {
11615
+ currentRenderParent = currentParent;
11616
+ }
11617
+ }
11616
11618
  }
11617
- currentParent = newParent;
11618
11619
  }
11619
11620
  const /** @type {?} */ handleEvent = (view, nodeIndex, eventName, event) => ((((nodes[nodeIndex].element)).handleEvent))(view, eventName, event);
11620
11621
  return {
@@ -11625,12 +11626,18 @@ function viewDef(flags, nodes, updateDirectives, updateRenderer) {
11625
11626
  nodeMatchedQueries: viewMatchedQueries, flags,
11626
11627
  nodes: nodes,
11627
11628
  updateDirectives: updateDirectives || NOOP,
11628
- updateRenderer: updateRenderer || NOOP,
11629
- handleEvent: handleEvent || NOOP,
11629
+ updateRenderer: updateRenderer || NOOP, handleEvent,
11630
11630
  bindingCount: viewBindingCount,
11631
11631
  outputCount: viewDisposableCount, lastRenderRootNode
11632
11632
  };
11633
11633
  }
11634
+ /**
11635
+ * @param {?} node
11636
+ * @return {?}
11637
+ */
11638
+ function isNgContainer(node) {
11639
+ return (node.flags & 1 /* TypeElement */) !== 0 && ((node.element)).name === null;
11640
+ }
11634
11641
  /**
11635
11642
  * @param {?} parent
11636
11643
  * @param {?} node