@angular/core 9.1.3 → 9.1.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.
Files changed (68) hide show
  1. package/bundles/core-testing.umd.js +1 -1
  2. package/bundles/core-testing.umd.min.js +1 -1
  3. package/bundles/core-testing.umd.min.js.map +1 -1
  4. package/bundles/core.umd.js +251 -360
  5. package/bundles/core.umd.js.map +1 -1
  6. package/bundles/core.umd.min.js +109 -117
  7. package/bundles/core.umd.min.js.map +1 -1
  8. package/core.d.ts +37 -70
  9. package/core.metadata.json +1 -1
  10. package/esm2015/index.js +2 -2
  11. package/esm2015/public_api.js +2 -2
  12. package/esm2015/src/core.js +2 -2
  13. package/esm2015/src/core_render3_private_export.js +2 -2
  14. package/esm2015/src/i18n/localization.js +7 -16
  15. package/esm2015/src/render3/assert.js +1 -8
  16. package/esm2015/src/render3/component_ref.js +15 -13
  17. package/esm2015/src/render3/hooks.js +3 -3
  18. package/esm2015/src/render3/index.js +2 -2
  19. package/esm2015/src/render3/instructions/all.js +3 -4
  20. package/esm2015/src/render3/instructions/host_property.js +6 -4
  21. package/esm2015/src/render3/instructions/listener.js +7 -5
  22. package/esm2015/src/render3/instructions/lview_debug.js +7 -3
  23. package/esm2015/src/render3/instructions/shared.js +166 -76
  24. package/esm2015/src/render3/instructions/styling.js +3 -15
  25. package/esm2015/src/render3/instructions/template.js +100 -0
  26. package/esm2015/src/render3/interfaces/container.js +8 -11
  27. package/esm2015/src/render3/interfaces/view.js +22 -7
  28. package/esm2015/src/render3/jit/environment.js +1 -6
  29. package/esm2015/src/render3/node_manipulation.js +20 -16
  30. package/esm2015/src/render3/state.js +23 -2
  31. package/esm2015/src/render3/util/view_utils.js +26 -2
  32. package/esm2015/src/render3/view_ref.js +15 -5
  33. package/esm2015/src/version.js +1 -1
  34. package/esm5/src/core_render3_private_export.js +2 -2
  35. package/esm5/src/i18n/localization.js +5 -16
  36. package/esm5/src/render3/assert.js +1 -4
  37. package/esm5/src/render3/component_ref.js +13 -9
  38. package/esm5/src/render3/hooks.js +3 -3
  39. package/esm5/src/render3/index.js +2 -2
  40. package/esm5/src/render3/instructions/all.js +2 -3
  41. package/esm5/src/render3/instructions/host_property.js +5 -4
  42. package/esm5/src/render3/instructions/listener.js +5 -4
  43. package/esm5/src/render3/instructions/lview_debug.js +6 -3
  44. package/esm5/src/render3/instructions/shared.js +148 -67
  45. package/esm5/src/render3/instructions/styling.js +3 -13
  46. package/esm5/src/render3/instructions/template.js +73 -0
  47. package/esm5/src/render3/interfaces/container.js +5 -5
  48. package/esm5/src/render3/interfaces/view.js +4 -3
  49. package/esm5/src/render3/jit/environment.js +1 -6
  50. package/esm5/src/render3/node_manipulation.js +19 -15
  51. package/esm5/src/render3/state.js +20 -2
  52. package/esm5/src/render3/util/view_utils.js +21 -2
  53. package/esm5/src/render3/view_ref.js +15 -6
  54. package/esm5/src/version.js +1 -1
  55. package/fesm2015/core.js +309 -431
  56. package/fesm2015/core.js.map +1 -1
  57. package/fesm2015/testing.js +1 -1
  58. package/fesm5/core.js +252 -356
  59. package/fesm5/core.js.map +1 -1
  60. package/fesm5/testing.js +1 -1
  61. package/package.json +1 -1
  62. package/src/r3_symbols.d.ts +1 -1
  63. package/testing/testing.d.ts +1 -1
  64. package/testing.d.ts +1 -1
  65. package/esm2015/src/render3/instructions/container.js +0 -227
  66. package/esm2015/src/render3/instructions/embedded_view.js +0 -151
  67. package/esm5/src/render3/instructions/container.js +0 -173
  68. package/esm5/src/render3/instructions/embedded_view.js +0 -127
package/fesm5/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v9.1.3
2
+ * @license Angular v9.1.7
3
3
  * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1902,7 +1902,7 @@ var TVIEW = 1;
1902
1902
  var FLAGS = 2;
1903
1903
  var PARENT = 3;
1904
1904
  var NEXT = 4;
1905
- var QUERIES = 5;
1905
+ var TRANSPLANTED_VIEWS_TO_REFRESH = 5;
1906
1906
  var T_HOST = 6;
1907
1907
  var CLEANUP = 7;
1908
1908
  var CONTEXT = 8;
@@ -1916,8 +1916,9 @@ var DECLARATION_VIEW = 15;
1916
1916
  var DECLARATION_COMPONENT_VIEW = 16;
1917
1917
  var DECLARATION_LCONTAINER = 17;
1918
1918
  var PREORDER_HOOK_FLAGS = 18;
1919
+ var QUERIES = 19;
1919
1920
  /** Size of LView's header. Necessary to adjust for it when setting slots. */
1920
- var HEADER_OFFSET = 19;
1921
+ var HEADER_OFFSET = 20;
1921
1922
  // Note: This hack is necessary so we don't erroneously get a circular dependency
1922
1923
  // failure based on types.
1923
1924
  var unusedValueExportToPlacateAjd = 1;
@@ -1941,20 +1942,20 @@ var TYPE = 1;
1941
1942
  * Uglify will inline these when minifying so there shouldn't be a cost.
1942
1943
  */
1943
1944
  var ACTIVE_INDEX = 2;
1944
- // PARENT and NEXT are indices 3 and 4
1945
+ // PARENT, NEXT, TRANSPLANTED_VIEWS_TO_REFRESH are indices 3, 4, and 5
1945
1946
  // As we already have these constants in LView, we don't need to re-create them.
1946
- var MOVED_VIEWS = 5;
1947
1947
  // T_HOST is index 6
1948
1948
  // We already have this constants in LView, we don't need to re-create it.
1949
1949
  var NATIVE = 7;
1950
1950
  var VIEW_REFS = 8;
1951
+ var MOVED_VIEWS = 9;
1951
1952
  /**
1952
1953
  * Size of LContainer's header. Represents the index after which all views in the
1953
1954
  * container will be inserted. We need to keep a record of current views so we know
1954
1955
  * which views are already in the DOM (and don't need to be re-added) and so we can
1955
1956
  * remove views from the DOM when they are no longer required.
1956
1957
  */
1957
- var CONTAINER_HEADER_OFFSET = 9;
1958
+ var CONTAINER_HEADER_OFFSET = 10;
1958
1959
  // Note: This hack is necessary so we don't erroneously get a circular dependency
1959
1960
  // failure based on types.
1960
1961
  var unusedValueExportToPlacateAjd$1 = 1;
@@ -2033,9 +2034,6 @@ function assertDataNext(lView, index, arr) {
2033
2034
  arr = lView;
2034
2035
  assertEqual(arr.length, index, "index " + index + " expected to be at the end of arr (length " + arr.length + ")");
2035
2036
  }
2036
- function assertLContainerOrUndefined(value) {
2037
- value && assertEqual(isLContainer(value), true, 'Expecting LContainer or undefined or null');
2038
- }
2039
2037
  function assertLContainer(value) {
2040
2038
  assertDefined(value, 'LContainer must be defined');
2041
2039
  assertEqual(isLContainer(value), true, 'Expecting LContainer');
@@ -2334,6 +2332,25 @@ function getLContainerActiveIndex(lContainer) {
2334
2332
  function setLContainerActiveIndex(lContainer, index) {
2335
2333
  lContainer[ACTIVE_INDEX] = index << 1 /* SHIFT */;
2336
2334
  }
2335
+ /**
2336
+ * Updates the `TRANSPLANTED_VIEWS_TO_REFRESH` counter on the `LContainer` as well as the parents
2337
+ * whose
2338
+ * 1. counter goes from 0 to 1, indicating that there is a new child that has a view to refresh
2339
+ * or
2340
+ * 2. counter goes from 1 to 0, indicating there are no more descendant views to refresh
2341
+ */
2342
+ function updateTransplantedViewCount(lContainer, amount) {
2343
+ lContainer[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;
2344
+ var viewOrContainer = lContainer;
2345
+ var parent = lContainer[PARENT];
2346
+ while (parent !== null &&
2347
+ ((amount === 1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 1) ||
2348
+ (amount === -1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 0))) {
2349
+ parent[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;
2350
+ viewOrContainer = parent;
2351
+ parent = parent[PARENT];
2352
+ }
2353
+ }
2337
2354
 
2338
2355
  /**
2339
2356
  * @license
@@ -2493,7 +2510,7 @@ function incrementBindingIndex(count) {
2493
2510
  function setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) {
2494
2511
  var lFrame = instructionState.lFrame;
2495
2512
  lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex;
2496
- lFrame.currentDirectiveIndex = currentDirectiveIndex;
2513
+ setCurrentDirectiveIndex(currentDirectiveIndex);
2497
2514
  }
2498
2515
  /**
2499
2516
  * When host binding is executing this points to the directive index.
@@ -2503,6 +2520,24 @@ function setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex)
2503
2520
  function getCurrentDirectiveIndex() {
2504
2521
  return instructionState.lFrame.currentDirectiveIndex;
2505
2522
  }
2523
+ /**
2524
+ * Sets an index of a directive whose `hostBindings` are being processed.
2525
+ *
2526
+ * @param currentDirectiveIndex `TData` index where current directive instance can be found.
2527
+ */
2528
+ function setCurrentDirectiveIndex(currentDirectiveIndex) {
2529
+ instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex;
2530
+ }
2531
+ /**
2532
+ * Retrieve the current `DirectiveDef` which is active when `hostBindings` instruction is being
2533
+ * executed.
2534
+ *
2535
+ * @param tData Current `TData` where the `DirectiveDef` will be looked up at.
2536
+ */
2537
+ function getCurrentDirectiveDef(tData) {
2538
+ var currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex;
2539
+ return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex];
2540
+ }
2506
2541
  function getCurrentQueryIndex() {
2507
2542
  return instructionState.lFrame.currentQueryIndex;
2508
2543
  }
@@ -2860,7 +2895,7 @@ function incrementInitPhaseFlags(lView, initPhase) {
2860
2895
  assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
2861
2896
  var flags = lView[FLAGS];
2862
2897
  if ((flags & 3 /* InitPhaseStateMask */) === initPhase) {
2863
- flags &= 1023 /* IndexWithinInitPhaseReset */;
2898
+ flags &= 2047 /* IndexWithinInitPhaseReset */;
2864
2899
  flags += 1 /* InitPhaseStateIncrementer */;
2865
2900
  lView[FLAGS] = flags;
2866
2901
  }
@@ -2923,13 +2958,13 @@ function callHook(currentView, initPhase, arr, i) {
2923
2958
  var directiveIndex = isInitHook ? -arr[i] : arr[i];
2924
2959
  var directive = currentView[directiveIndex];
2925
2960
  if (isInitHook) {
2926
- var indexWithintInitPhase = currentView[FLAGS] >> 10 /* IndexWithinInitPhaseShift */;
2961
+ var indexWithintInitPhase = currentView[FLAGS] >> 11 /* IndexWithinInitPhaseShift */;
2927
2962
  // The init phase state must be always checked here as it may have been recursively
2928
2963
  // updated
2929
2964
  if (indexWithintInitPhase <
2930
2965
  (currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&
2931
2966
  (currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
2932
- currentView[FLAGS] += 1024 /* IndexWithinInitPhaseIncrementer */;
2967
+ currentView[FLAGS] += 2048 /* IndexWithinInitPhaseIncrementer */;
2933
2968
  hook.call(directive);
2934
2969
  }
2935
2970
  }
@@ -6485,7 +6520,9 @@ var TViewConstructor = /** @class */ (function () {
6485
6520
  pipeRegistry, //
6486
6521
  firstChild, //
6487
6522
  schemas, //
6488
- consts) {
6523
+ consts, //
6524
+ incompleteFirstPass //
6525
+ ) {
6489
6526
  this.type = type;
6490
6527
  this.id = id;
6491
6528
  this.blueprint = blueprint;
@@ -6516,6 +6553,7 @@ var TViewConstructor = /** @class */ (function () {
6516
6553
  this.firstChild = firstChild;
6517
6554
  this.schemas = schemas;
6518
6555
  this.consts = consts;
6556
+ this.incompleteFirstPass = incompleteFirstPass;
6519
6557
  }
6520
6558
  Object.defineProperty(TView.prototype, "template_", {
6521
6559
  get: function () {
@@ -6792,7 +6830,7 @@ var LViewDebug = /** @class */ (function () {
6792
6830
  attached: !!(flags & 128 /* Attached */),
6793
6831
  destroyed: !!(flags & 256 /* Destroyed */),
6794
6832
  isRoot: !!(flags & 512 /* IsRoot */),
6795
- indexWithinInitPhase: flags >> 10 /* IndexWithinInitPhaseShift */,
6833
+ indexWithinInitPhase: flags >> 11 /* IndexWithinInitPhaseShift */,
6796
6834
  };
6797
6835
  },
6798
6836
  enumerable: true,
@@ -7527,6 +7565,14 @@ function renderView(tView, lView, context) {
7527
7565
  renderChildComponents(lView, components);
7528
7566
  }
7529
7567
  }
7568
+ catch (error) {
7569
+ // If we didn't manage to get past the first template pass due to
7570
+ // an error, mark the view as corrupted so we can try to recover.
7571
+ if (tView.firstCreatePass) {
7572
+ tView.incompleteFirstPass = true;
7573
+ }
7574
+ throw error;
7575
+ }
7530
7576
  finally {
7531
7577
  lView[FLAGS] &= ~4 /* CreationMode */;
7532
7578
  leaveView();
@@ -7571,6 +7617,10 @@ function refreshView(tView, lView, templateFn, context) {
7571
7617
  incrementInitPhaseFlags(lView, 0 /* OnInitHooksToBeRun */);
7572
7618
  }
7573
7619
  }
7620
+ // First mark transplanted views that are declared in this lView as needing a refresh at their
7621
+ // insertion points. This is needed to avoid the situation where the template is defined in this
7622
+ // `LView` but its declaration appears after the insertion component.
7623
+ markTransplantedViewsForRefresh(lView);
7574
7624
  refreshDynamicEmbeddedViews(lView);
7575
7625
  // Content query results must be refreshed before content hooks are called.
7576
7626
  if (tView.contentQueries !== null) {
@@ -7641,6 +7691,10 @@ function refreshView(tView, lView, templateFn, context) {
7641
7691
  if (!checkNoChangesMode) {
7642
7692
  lView[FLAGS] &= ~(64 /* Dirty */ | 8 /* FirstLViewPass */);
7643
7693
  }
7694
+ if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
7695
+ lView[FLAGS] &= ~1024 /* RefreshTransplantedView */;
7696
+ updateTransplantedViewCount(lView[PARENT], -1);
7697
+ }
7644
7698
  }
7645
7699
  finally {
7646
7700
  leaveView();
@@ -7732,8 +7786,13 @@ function saveResolvedLocalsInData(viewData, tNode, localRefExtractor) {
7732
7786
  * @returns TView
7733
7787
  */
7734
7788
  function getOrCreateTComponentView(def) {
7735
- return def.tView ||
7736
- (def.tView = createTView(1 /* Component */, -1, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts));
7789
+ var tView = def.tView;
7790
+ // Create a TView if there isn't one, or recreate it if the first create pass didn't
7791
+ // complete successfuly since we can't know for sure whether it's in a usable shape.
7792
+ if (tView === null || tView.incompleteFirstPass) {
7793
+ return def.tView = createTView(1 /* Component */, -1, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts);
7794
+ }
7795
+ return tView;
7737
7796
  }
7738
7797
  /**
7739
7798
  * Creates a TView instance
@@ -7786,7 +7845,9 @@ function createTView(type, viewIndex, templateFn, decls, vars, directives, pipes
7786
7845
  typeof pipes === 'function' ? pipes() : pipes, // pipeRegistry: PipeDefList|null,
7787
7846
  null, // firstChild: TNode|null,
7788
7847
  schemas, // schemas: SchemaMetadata[]|null,
7789
- consts) : // consts: TConstants|null
7848
+ consts, // consts: TConstants|null
7849
+ false // incompleteFirstPass: boolean
7850
+ ) :
7790
7851
  {
7791
7852
  type: type,
7792
7853
  id: viewIndex,
@@ -7818,6 +7879,7 @@ function createTView(type, viewIndex, templateFn, decls, vars, directives, pipes
7818
7879
  firstChild: null,
7819
7880
  schemas: schemas,
7820
7881
  consts: consts,
7882
+ incompleteFirstPass: false
7821
7883
  };
7822
7884
  }
7823
7885
  function createViewBlueprint(bindingStartIndex, initialViewLength) {
@@ -8339,11 +8401,13 @@ function invokeDirectivesHostBindings(tView, lView, tNode) {
8339
8401
  var expando = tView.expandoInstructions;
8340
8402
  var firstCreatePass = tView.firstCreatePass;
8341
8403
  var elementIndex = tNode.index - HEADER_OFFSET;
8404
+ var currentDirectiveIndex = getCurrentDirectiveIndex();
8342
8405
  try {
8343
8406
  setSelectedIndex(elementIndex);
8344
- for (var i = start; i < end; i++) {
8345
- var def = tView.data[i];
8346
- var directive = lView[i];
8407
+ for (var dirIndex = start; dirIndex < end; dirIndex++) {
8408
+ var def = tView.data[dirIndex];
8409
+ var directive = lView[dirIndex];
8410
+ setCurrentDirectiveIndex(dirIndex);
8347
8411
  if (def.hostBindings !== null || def.hostVars !== 0 || def.hostAttrs !== null) {
8348
8412
  invokeHostBindingsInCreationMode(def, directive);
8349
8413
  }
@@ -8354,6 +8418,7 @@ function invokeDirectivesHostBindings(tView, lView, tNode) {
8354
8418
  }
8355
8419
  finally {
8356
8420
  setSelectedIndex(-1);
8421
+ setCurrentDirectiveIndex(currentDirectiveIndex);
8357
8422
  }
8358
8423
  }
8359
8424
  /**
@@ -8607,10 +8672,13 @@ function createLContainer(hostNative, currentView, native, tNode) {
8607
8672
  -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */ << 1 /* SHIFT */, // active index
8608
8673
  currentView, // parent
8609
8674
  null, // next
8610
- null, // queries
8675
+ 0, // transplanted views to refresh count
8611
8676
  tNode, // t_host
8612
8677
  native, // native,
8678
+ null, // view refs
8613
8679
  null);
8680
+ ngDevMode &&
8681
+ assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, 'Should allocate correct number of slots for LContainer header.');
8614
8682
  ngDevMode && attachLContainerDebug(lContainer);
8615
8683
  return lContainer;
8616
8684
  }
@@ -8619,66 +8687,70 @@ function createLContainer(hostNative, currentView, native, tNode) {
8619
8687
  * them by executing an associated template function.
8620
8688
  */
8621
8689
  function refreshDynamicEmbeddedViews(lView) {
8622
- var viewOrContainer = lView[CHILD_HEAD];
8623
- while (viewOrContainer !== null) {
8624
- // Note: viewOrContainer can be an LView or an LContainer instance, but here we are only
8625
- // interested in LContainer
8626
- var activeIndexFlag = void 0;
8627
- if (isLContainer(viewOrContainer) &&
8628
- (activeIndexFlag = viewOrContainer[ACTIVE_INDEX]) >> 1 /* SHIFT */ ===
8629
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */) {
8630
- for (var i = CONTAINER_HEADER_OFFSET; i < viewOrContainer.length; i++) {
8631
- var embeddedLView = viewOrContainer[i];
8632
- var embeddedTView = embeddedLView[TVIEW];
8633
- ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
8634
- if (viewAttachedToChangeDetector(embeddedLView)) {
8635
- refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
8636
- }
8637
- }
8638
- if ((activeIndexFlag & 1 /* HAS_TRANSPLANTED_VIEWS */) !== 0) {
8639
- // We should only CD moved views if the component where they were inserted does not match
8640
- // the component where they were declared and insertion is on-push. Moved views also
8641
- // contains intra component moves, or check-always which need to be skipped.
8642
- refreshTransplantedViews(viewOrContainer, lView[DECLARATION_COMPONENT_VIEW]);
8690
+ for (var lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
8691
+ for (var i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
8692
+ var embeddedLView = lContainer[i];
8693
+ var embeddedTView = embeddedLView[TVIEW];
8694
+ ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
8695
+ if (viewAttachedToChangeDetector(embeddedLView)) {
8696
+ refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
8643
8697
  }
8644
8698
  }
8699
+ }
8700
+ }
8701
+ /**
8702
+ * Gets the first `LContainer` in the LView or `null` if none exists.
8703
+ */
8704
+ function getFirstLContainer(lView) {
8705
+ var viewOrContainer = lView[CHILD_HEAD];
8706
+ while (viewOrContainer !== null &&
8707
+ !(isLContainer(viewOrContainer) &&
8708
+ viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
8709
+ -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
8645
8710
  viewOrContainer = viewOrContainer[NEXT];
8646
8711
  }
8712
+ return viewOrContainer;
8647
8713
  }
8648
8714
  /**
8649
- * Refresh transplanted LViews.
8715
+ * Gets the next `LContainer` that is a sibling of the given container.
8716
+ */
8717
+ function getNextLContainer(container) {
8718
+ var viewOrContainer = container[NEXT];
8719
+ while (viewOrContainer !== null &&
8720
+ !(isLContainer(viewOrContainer) &&
8721
+ viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
8722
+ -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
8723
+ viewOrContainer = viewOrContainer[NEXT];
8724
+ }
8725
+ return viewOrContainer;
8726
+ }
8727
+ /**
8728
+ * Mark transplanted views as needing to be refreshed at their insertion points.
8650
8729
  *
8651
8730
  * See: `ActiveIndexFlag.HAS_TRANSPLANTED_VIEWS` and `LView[DECLARATION_COMPONENT_VIEW]` for
8652
8731
  * explanation of transplanted views.
8653
8732
  *
8654
- * @param lContainer The `LContainer` which has transplanted views.
8655
- * @param declaredComponentLView The `lContainer` parent component `LView`.
8656
- */
8657
- function refreshTransplantedViews(lContainer, declaredComponentLView) {
8658
- var movedViews = lContainer[MOVED_VIEWS];
8659
- ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
8660
- for (var i = 0; i < movedViews.length; i++) {
8661
- var movedLView = movedViews[i];
8662
- var insertionLContainer = movedLView[PARENT];
8663
- ngDevMode && assertLContainer(insertionLContainer);
8664
- var insertedComponentLView = insertionLContainer[PARENT][DECLARATION_COMPONENT_VIEW];
8665
- ngDevMode && assertDefined(insertedComponentLView, 'Missing LView');
8666
- // Check if we have a transplanted view by compering declaration and insertion location.
8667
- if (insertedComponentLView !== declaredComponentLView) {
8668
- // Yes the `LView` is transplanted.
8669
- // Here we would like to know if the component is `OnPush`. We don't have
8670
- // explicit `OnPush` flag instead we set `CheckAlways` to false (which is `OnPush`)
8671
- // Not to be confused with `ManualOnPush` which is used with wether a DOM event
8672
- // should automatically mark a view as dirty.
8673
- var insertionComponentIsOnPush = (insertedComponentLView[FLAGS] & 16 /* CheckAlways */) === 0;
8674
- if (insertionComponentIsOnPush) {
8675
- // Here we know that the template has been transplanted across components and is
8676
- // on-push (not just moved within a component). If the insertion is marked dirty, then
8677
- // there is no need to CD here as we will do it again later when we get to insertion
8678
- // point.
8679
- var movedTView = movedLView[TVIEW];
8680
- ngDevMode && assertDefined(movedTView, 'TView must be allocated');
8681
- refreshView(movedTView, movedLView, movedTView.template, movedLView[CONTEXT]);
8733
+ * @param lView The `LView` that may have transplanted views.
8734
+ */
8735
+ function markTransplantedViewsForRefresh(lView) {
8736
+ for (var lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
8737
+ if ((lContainer[ACTIVE_INDEX] & 1 /* HAS_TRANSPLANTED_VIEWS */) !== 0) {
8738
+ var movedViews = lContainer[MOVED_VIEWS];
8739
+ ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
8740
+ for (var i = 0; i < movedViews.length; i++) {
8741
+ var movedLView = movedViews[i];
8742
+ var insertionLContainer = movedLView[PARENT];
8743
+ ngDevMode && assertLContainer(insertionLContainer);
8744
+ // We don't want to increment the counter if the moved LView was already marked for
8745
+ // refresh.
8746
+ if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
8747
+ updateTransplantedViewCount(insertionLContainer, 1);
8748
+ }
8749
+ // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
8750
+ // those that aren't (declaration component === insertion component). In the latter case,
8751
+ // it's fine to add the flag, as we will clear it immediately in
8752
+ // `refreshDynamicEmbeddedViews` for the view currently being refreshed.
8753
+ movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
8682
8754
  }
8683
8755
  }
8684
8756
  }
@@ -8693,10 +8765,49 @@ function refreshComponent(hostLView, componentHostIdx) {
8693
8765
  ngDevMode && assertEqual(isCreationMode(hostLView), false, 'Should be run in update mode');
8694
8766
  var componentView = getComponentLViewByIndex(componentHostIdx, hostLView);
8695
8767
  // Only attached components that are CheckAlways or OnPush and dirty should be refreshed
8696
- if (viewAttachedToChangeDetector(componentView) &&
8697
- componentView[FLAGS] & (16 /* CheckAlways */ | 64 /* Dirty */)) {
8698
- var componentTView = componentView[TVIEW];
8699
- refreshView(componentTView, componentView, componentTView.template, componentView[CONTEXT]);
8768
+ if (viewAttachedToChangeDetector(componentView)) {
8769
+ var tView = componentView[TVIEW];
8770
+ if (componentView[FLAGS] & (16 /* CheckAlways */ | 64 /* Dirty */)) {
8771
+ refreshView(tView, componentView, tView.template, componentView[CONTEXT]);
8772
+ }
8773
+ else if (componentView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
8774
+ // Only attached components that are CheckAlways or OnPush and dirty should be refreshed
8775
+ refreshContainsDirtyView(componentView);
8776
+ }
8777
+ }
8778
+ }
8779
+ /**
8780
+ * Refreshes all transplanted views marked with `LViewFlags.RefreshTransplantedView` that are
8781
+ * children or descendants of the given lView.
8782
+ *
8783
+ * @param lView The lView which contains descendant transplanted views that need to be refreshed.
8784
+ */
8785
+ function refreshContainsDirtyView(lView) {
8786
+ for (var lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
8787
+ for (var i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
8788
+ var embeddedLView = lContainer[i];
8789
+ if (embeddedLView[FLAGS] & 1024 /* RefreshTransplantedView */) {
8790
+ var embeddedTView = embeddedLView[TVIEW];
8791
+ ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
8792
+ refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
8793
+ }
8794
+ else if (embeddedLView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
8795
+ refreshContainsDirtyView(embeddedLView);
8796
+ }
8797
+ }
8798
+ }
8799
+ var tView = lView[TVIEW];
8800
+ // Refresh child component views.
8801
+ var components = tView.components;
8802
+ if (components !== null) {
8803
+ for (var i = 0; i < components.length; i++) {
8804
+ var componentView = getComponentLViewByIndex(components[i], lView);
8805
+ // Only attached components that are CheckAlways or OnPush and dirty should be refreshed
8806
+ if (viewAttachedToChangeDetector(componentView) &&
8807
+ componentView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
8808
+ refreshContainsDirtyView(componentView);
8809
+ }
8810
+ }
8700
8811
  }
8701
8812
  }
8702
8813
  function renderComponent(hostLView, componentHostIdx) {
@@ -8945,9 +9056,17 @@ function getTViewCleanup(tView) {
8945
9056
  * There are cases where the sub component's renderer needs to be included
8946
9057
  * instead of the current renderer (see the componentSyntheticHost* instructions).
8947
9058
  */
8948
- function loadComponentRenderer(tNode, lView) {
8949
- var componentLView = unwrapLView(lView[tNode.index]);
8950
- return componentLView[RENDERER];
9059
+ function loadComponentRenderer(currentDef, tNode, lView) {
9060
+ // TODO(FW-2043): the `currentDef` is null when host bindings are invoked while creating root
9061
+ // component (see packages/core/src/render3/component.ts). This is not consistent with the process
9062
+ // of creating inner components, when current directive index is available in the state. In order
9063
+ // to avoid relying on current def being `null` (thus special-casing root component creation), the
9064
+ // process of creating root component should be unified with the process of creating inner
9065
+ // components.
9066
+ if (currentDef === null || isComponentDef(currentDef)) {
9067
+ lView = unwrapLView(lView[tNode.index]);
9068
+ }
9069
+ return lView[RENDERER];
8951
9070
  }
8952
9071
  /** Handles an error thrown in an LView. */
8953
9072
  function handleError(lView, error) {
@@ -9197,17 +9316,13 @@ function trackMovedView(declarationContainer, lView) {
9197
9316
  ngDevMode && assertLContainer(insertedLContainer);
9198
9317
  var insertedComponentLView = insertedLContainer[PARENT][DECLARATION_COMPONENT_VIEW];
9199
9318
  ngDevMode && assertDefined(insertedComponentLView, 'Missing insertedComponentLView');
9200
- var insertedComponentIsOnPush = (insertedComponentLView[FLAGS] & 16 /* CheckAlways */) !== 16 /* CheckAlways */;
9201
- if (insertedComponentIsOnPush) {
9202
- var declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW];
9203
- ngDevMode && assertDefined(declaredComponentLView, 'Missing declaredComponentLView');
9204
- if (declaredComponentLView !== insertedComponentLView) {
9205
- // At this point the declaration-component is not same as insertion-component and we are in
9206
- // on-push mode, this means that this is a transplanted view. Mark the declared lView as
9207
- // having
9208
- // transplanted views so that those views can participate in CD.
9209
- declarationContainer[ACTIVE_INDEX] |= 1 /* HAS_TRANSPLANTED_VIEWS */;
9210
- }
9319
+ var declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW];
9320
+ ngDevMode && assertDefined(declaredComponentLView, 'Missing declaredComponentLView');
9321
+ if (declaredComponentLView !== insertedComponentLView) {
9322
+ // At this point the declaration-component is not same as insertion-component; this means that
9323
+ // this is a transplanted view. Mark the declared lView as having transplanted views so that
9324
+ // those views can participate in CD.
9325
+ declarationContainer[ACTIVE_INDEX] |= 1 /* HAS_TRANSPLANTED_VIEWS */;
9211
9326
  }
9212
9327
  if (movedViews === null) {
9213
9328
  declarationContainer[MOVED_VIEWS] = [lView];
@@ -9221,8 +9336,16 @@ function detachMovedView(declarationContainer, lView) {
9221
9336
  ngDevMode &&
9222
9337
  assertDefined(declarationContainer[MOVED_VIEWS], 'A projected view should belong to a non-empty projected views collection');
9223
9338
  var movedViews = declarationContainer[MOVED_VIEWS];
9224
- var declaredViewIndex = movedViews.indexOf(lView);
9225
- movedViews.splice(declaredViewIndex, 1);
9339
+ var declarationViewIndex = movedViews.indexOf(lView);
9340
+ var insertionLContainer = lView[PARENT];
9341
+ ngDevMode && assertLContainer(insertionLContainer);
9342
+ // If the view was marked for refresh but then detached before it was checked (where the flag
9343
+ // would be cleared and the counter decremented), we need to decrement the view counter here
9344
+ // instead.
9345
+ if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
9346
+ updateTransplantedViewCount(insertionLContainer, -1);
9347
+ }
9348
+ movedViews.splice(declarationViewIndex, 1);
9226
9349
  }
9227
9350
  /**
9228
9351
  * Detaches a view from a container.
@@ -10289,10 +10412,18 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection) {
10289
10412
  else if (tNodeType === 1 /* Projection */) {
10290
10413
  var componentView = lView[DECLARATION_COMPONENT_VIEW];
10291
10414
  var componentHost = componentView[T_HOST];
10292
- var parentView = getLViewParent(componentView);
10293
- var firstProjectedNode = componentHost.projection[tNode.projection];
10294
- if (firstProjectedNode !== null && parentView !== null) {
10295
- collectNativeNodes(parentView[TVIEW], parentView, firstProjectedNode, result, true);
10415
+ var slotIdx = tNode.projection;
10416
+ ngDevMode &&
10417
+ assertDefined(componentHost.projection, 'Components with projection nodes (<ng-content>) must have projection slots defined.');
10418
+ var nodesInSlot = componentHost.projection[slotIdx];
10419
+ if (Array.isArray(nodesInSlot)) {
10420
+ result.push.apply(result, __spread(nodesInSlot));
10421
+ }
10422
+ else {
10423
+ var parentView = getLViewParent(componentView);
10424
+ ngDevMode &&
10425
+ assertDefined(parentView, 'Component views should always have a parent view (component\'s host view)');
10426
+ collectNativeNodes(parentView[TVIEW], parentView, nodesInSlot, result, true);
10296
10427
  }
10297
10428
  }
10298
10429
  tNode = isProjection ? tNode.projectionNext : tNode.next;
@@ -14141,26 +14272,6 @@ function tick(component) {
14141
14272
  * Use of this source code is governed by an MIT-style license that can be
14142
14273
  * found in the LICENSE file at https://angular.io/license
14143
14274
  */
14144
- /**
14145
- * Creates an LContainer for inline views, e.g.
14146
- *
14147
- * % if (showing) {
14148
- * <div></div>
14149
- * % }
14150
- *
14151
- * @param index The index of the container in the data array
14152
- *
14153
- * @codeGenApi
14154
- */
14155
- function ɵɵcontainer(index) {
14156
- var lView = getLView();
14157
- var tView = getTView();
14158
- var tNode = containerInternal(tView, lView, index, null, null);
14159
- if (tView.firstCreatePass) {
14160
- tNode.tViews = [];
14161
- }
14162
- setIsNotParent();
14163
- }
14164
14275
  function templateFirstCreatePass(index, tView, lView, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex) {
14165
14276
  ngDevMode && assertFirstCreatePass(tView);
14166
14277
  ngDevMode && ngDevMode.firstCreatePass++;
@@ -14217,83 +14328,6 @@ function ɵɵtemplate(index, templateFn, decls, vars, tagName, attrsIndex, local
14217
14328
  saveResolvedLocalsInData(lView, tNode, localRefExtractor);
14218
14329
  }
14219
14330
  }
14220
- /**
14221
- * Sets a container up to receive views.
14222
- *
14223
- * @param index The index of the container in the data array
14224
- *
14225
- * @codeGenApi
14226
- */
14227
- function ɵɵcontainerRefreshStart(index) {
14228
- var lView = getLView();
14229
- var tView = getTView();
14230
- var previousOrParentTNode = load(tView.data, index);
14231
- ngDevMode && assertNodeType(previousOrParentTNode, 0 /* Container */);
14232
- setPreviousOrParentTNode(previousOrParentTNode, true);
14233
- lView[index + HEADER_OFFSET][ACTIVE_INDEX] = 0;
14234
- // We need to execute init hooks here so ngOnInit hooks are called in top level views
14235
- // before they are called in embedded views (for backwards compatibility).
14236
- if (!getCheckNoChangesMode()) {
14237
- var hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* InitPhaseStateMask */) === 3 /* InitPhaseCompleted */;
14238
- if (hooksInitPhaseCompleted) {
14239
- var preOrderCheckHooks = tView.preOrderCheckHooks;
14240
- if (preOrderCheckHooks !== null) {
14241
- executeCheckHooks(lView, preOrderCheckHooks, null);
14242
- }
14243
- }
14244
- else {
14245
- var preOrderHooks = tView.preOrderHooks;
14246
- if (preOrderHooks !== null) {
14247
- executeInitAndCheckHooks(lView, preOrderHooks, 0 /* OnInitHooksToBeRun */, null);
14248
- }
14249
- incrementInitPhaseFlags(lView, 0 /* OnInitHooksToBeRun */);
14250
- }
14251
- }
14252
- }
14253
- /**
14254
- * Marks the end of the LContainer.
14255
- *
14256
- * Marking the end of LContainer is the time when to child views get inserted or removed.
14257
- *
14258
- * @codeGenApi
14259
- */
14260
- function ɵɵcontainerRefreshEnd() {
14261
- var previousOrParentTNode = getPreviousOrParentTNode();
14262
- if (getIsParent()) {
14263
- setIsNotParent();
14264
- }
14265
- else {
14266
- ngDevMode && assertNodeType(previousOrParentTNode, 2 /* View */);
14267
- ngDevMode && assertHasParent(previousOrParentTNode);
14268
- previousOrParentTNode = previousOrParentTNode.parent;
14269
- setPreviousOrParentTNode(previousOrParentTNode, false);
14270
- }
14271
- ngDevMode && assertNodeType(previousOrParentTNode, 0 /* Container */);
14272
- var lContainer = getLView()[previousOrParentTNode.index];
14273
- var nextIndex = getLContainerActiveIndex(lContainer);
14274
- // remove extra views at the end of the container
14275
- while (nextIndex < lContainer.length - CONTAINER_HEADER_OFFSET) {
14276
- removeView(lContainer, nextIndex);
14277
- }
14278
- }
14279
- function containerInternal(tView, lView, nodeIndex, tagName, attrs) {
14280
- ngDevMode &&
14281
- assertEqual(getBindingIndex(), tView.bindingStartIndex, 'container nodes should be created before any bindings');
14282
- var adjustedIndex = nodeIndex + HEADER_OFFSET;
14283
- ngDevMode && assertDataInRange(lView, nodeIndex + HEADER_OFFSET);
14284
- ngDevMode && ngDevMode.rendererCreateComment++;
14285
- var comment = lView[adjustedIndex] =
14286
- lView[RENDERER].createComment(ngDevMode ? 'container' : '');
14287
- var tNode = getOrCreateTNode(tView, lView[T_HOST], nodeIndex, 0 /* Container */, tagName, attrs);
14288
- var lContainer = lView[adjustedIndex] = createLContainer(comment, lView, comment, tNode);
14289
- appendChild(tView, lView, comment, tNode);
14290
- attachPatchData(comment, lView);
14291
- // Containers are added to the current view tree instead of their embedded views
14292
- // because views can be removed and re-inserted.
14293
- addToViewTree(lView, lContainer);
14294
- ngDevMode && assertNodeType(getPreviousOrParentTNode(), 0 /* Container */);
14295
- return tNode;
14296
- }
14297
14331
 
14298
14332
  /**
14299
14333
  * @license
@@ -14680,124 +14714,6 @@ function ɵɵelementContainer(index, attrsIndex, localRefsIndex) {
14680
14714
  ɵɵelementContainerEnd();
14681
14715
  }
14682
14716
 
14683
- /**
14684
- * @license
14685
- * Copyright Google Inc. All Rights Reserved.
14686
- *
14687
- * Use of this source code is governed by an MIT-style license that can be
14688
- * found in the LICENSE file at https://angular.io/license
14689
- */
14690
- /**
14691
- * Marks the start of an embedded view.
14692
- *
14693
- * @param viewBlockId The ID of this view
14694
- * @return boolean Whether or not this view is in creation mode
14695
- *
14696
- * @codeGenApi
14697
- */
14698
- function ɵɵembeddedViewStart(viewBlockId, decls, vars) {
14699
- var lView = getLView();
14700
- var previousOrParentTNode = getPreviousOrParentTNode();
14701
- // The previous node can be a view node if we are processing an inline for loop
14702
- var containerTNode = previousOrParentTNode.type === 2 /* View */ ?
14703
- previousOrParentTNode.parent :
14704
- previousOrParentTNode;
14705
- var lContainer = lView[containerTNode.index];
14706
- ngDevMode && assertNodeType(containerTNode, 0 /* Container */);
14707
- var viewToRender = scanForView(lContainer, getLContainerActiveIndex(lContainer), viewBlockId);
14708
- if (viewToRender) {
14709
- setIsParent();
14710
- enterView(viewToRender, viewToRender[TVIEW].node);
14711
- }
14712
- else {
14713
- // When we create a new LView, we always reset the state of the instructions.
14714
- viewToRender = createLView(lView, getOrCreateEmbeddedTView(viewBlockId, decls, vars, containerTNode), null, 16 /* CheckAlways */, null, null);
14715
- var tParentNode = getIsParent() ? previousOrParentTNode :
14716
- previousOrParentTNode && previousOrParentTNode.parent;
14717
- assignTViewNodeToLView(viewToRender[TVIEW], tParentNode, viewBlockId, viewToRender);
14718
- enterView(viewToRender, viewToRender[TVIEW].node);
14719
- }
14720
- if (lContainer) {
14721
- if (isCreationMode(viewToRender)) {
14722
- // it is a new view, insert it into collection of views for a given container
14723
- insertView(viewToRender[TVIEW], viewToRender, lContainer, getLContainerActiveIndex(lContainer));
14724
- }
14725
- lContainer[ACTIVE_INDEX] += 2 /* INCREMENT */;
14726
- }
14727
- return isCreationMode(viewToRender) ? 1 /* Create */ | 2 /* Update */ :
14728
- 2 /* Update */;
14729
- }
14730
- /**
14731
- * Initialize the TView (e.g. static data) for the active embedded view.
14732
- *
14733
- * Each embedded view block must create or retrieve its own TView. Otherwise, the embedded view's
14734
- * static data for a particular node would overwrite the static data for a node in the view above
14735
- * it with the same index (since it's in the same template).
14736
- *
14737
- * @param viewIndex The index of the TView in TNode.tViews
14738
- * @param decls The number of nodes, local refs, and pipes in this template
14739
- * @param vars The number of bindings and pure function bindings in this template
14740
- * @param container The parent container in which to look for the view's static data
14741
- * @returns TView
14742
- */
14743
- function getOrCreateEmbeddedTView(viewIndex, decls, vars, parent) {
14744
- var tView = getLView()[TVIEW];
14745
- ngDevMode && assertNodeType(parent, 0 /* Container */);
14746
- var containerTViews = parent.tViews;
14747
- ngDevMode && assertDefined(containerTViews, 'TView expected');
14748
- ngDevMode && assertEqual(Array.isArray(containerTViews), true, 'TViews should be in an array');
14749
- if (viewIndex >= containerTViews.length || containerTViews[viewIndex] == null) {
14750
- containerTViews[viewIndex] = createTView(2 /* Embedded */, viewIndex, null, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, null, tView.consts);
14751
- }
14752
- return containerTViews[viewIndex];
14753
- }
14754
- /**
14755
- * Looks for a view with a given view block id inside a provided LContainer.
14756
- * Removes views that need to be deleted in the process.
14757
- *
14758
- * @param lContainer to search for views
14759
- * @param startIdx starting index in the views array to search from
14760
- * @param viewBlockId exact view block id to look for
14761
- */
14762
- function scanForView(lContainer, startIdx, viewBlockId) {
14763
- for (var i = startIdx + CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
14764
- var viewAtPositionId = lContainer[i][TVIEW].id;
14765
- if (viewAtPositionId === viewBlockId) {
14766
- return lContainer[i];
14767
- }
14768
- else if (viewAtPositionId < viewBlockId) {
14769
- // found a view that should not be at this position - remove
14770
- removeView(lContainer, i - CONTAINER_HEADER_OFFSET);
14771
- }
14772
- else {
14773
- // found a view with id greater than the one we are searching for
14774
- // which means that required view doesn't exist and can't be found at
14775
- // later positions in the views array - stop the searchdef.cont here
14776
- break;
14777
- }
14778
- }
14779
- return null;
14780
- }
14781
- /**
14782
- * Marks the end of an embedded view.
14783
- *
14784
- * @codeGenApi
14785
- */
14786
- function ɵɵembeddedViewEnd() {
14787
- var lView = getLView();
14788
- var tView = getTView();
14789
- var viewHost = lView[T_HOST];
14790
- var context = lView[CONTEXT];
14791
- if (isCreationMode(lView)) {
14792
- renderView(tView, lView, context); // creation mode pass
14793
- }
14794
- refreshView(tView, lView, tView.template, context); // update mode pass
14795
- var lContainer = lView[PARENT];
14796
- ngDevMode && assertLContainerOrUndefined(lContainer);
14797
- leaveView();
14798
- setPreviousOrParentTNode(viewHost, false);
14799
- }
14800
-
14801
14717
  /**
14802
14718
  * Returns the current OpaqueViewState instance.
14803
14719
  *
@@ -14865,7 +14781,7 @@ function ɵɵlistener(eventName, listenerFn, useCapture, eventTargetResolver) {
14865
14781
  return ɵɵlistener;
14866
14782
  }
14867
14783
  /**
14868
- * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component.
14784
+ * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
14869
14785
  *
14870
14786
  * This instruction is for compatibility purposes and is designed to ensure that a
14871
14787
  * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
@@ -14889,8 +14805,9 @@ function ɵɵcomponentHostSyntheticListener(eventName, listenerFn, useCapture, e
14889
14805
  if (useCapture === void 0) { useCapture = false; }
14890
14806
  var tNode = getPreviousOrParentTNode();
14891
14807
  var lView = getLView();
14892
- var renderer = loadComponentRenderer(tNode, lView);
14893
14808
  var tView = getTView();
14809
+ var currentDef = getCurrentDirectiveDef(tView.data);
14810
+ var renderer = loadComponentRenderer(currentDef, tNode, lView);
14894
14811
  listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, useCapture, eventTargetResolver);
14895
14812
  return ɵɵcomponentHostSyntheticListener;
14896
14813
  }
@@ -16666,7 +16583,7 @@ function stylingFirstUpdatePass(tView, tStylingKey, bindingIndex, isClassBased)
16666
16583
  * @param isClassBased `true` if `class` (`false` if `style`)
16667
16584
  */
16668
16585
  function wrapInStaticStylingKey(tData, tNode, stylingKey, isClassBased) {
16669
- var hostDirectiveDef = getHostDirectiveDef(tData);
16586
+ var hostDirectiveDef = getCurrentDirectiveDef(tData);
16670
16587
  var residual = isClassBased ? tNode.residualClasses : tNode.residualStyles;
16671
16588
  if (hostDirectiveDef === null) {
16672
16589
  // We are in template node.
@@ -16895,16 +16812,6 @@ function collectStylingFromTAttrs(stylingKey, attrs, isClassBased) {
16895
16812
  }
16896
16813
  return stylingKey === undefined ? null : stylingKey;
16897
16814
  }
16898
- /**
16899
- * Retrieve the current `DirectiveDef` which is active when `hostBindings` style instruction is
16900
- * being executed (or `null` if we are in `template`.)
16901
- *
16902
- * @param tData Current `TData` where the `DirectiveDef` will be looked up at.
16903
- */
16904
- function getHostDirectiveDef(tData) {
16905
- var currentDirectiveIndex = getCurrentDirectiveIndex();
16906
- return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex];
16907
- }
16908
16815
  /**
16909
16816
  * Convert user input to `KeyValueArray`.
16910
16817
  *
@@ -18542,7 +18449,7 @@ function ɵɵhostProperty(propName, value, sanitizer) {
18542
18449
  return ɵɵhostProperty;
18543
18450
  }
18544
18451
  /**
18545
- * Updates a synthetic host binding (e.g. `[@foo]`) on a component.
18452
+ * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.
18546
18453
  *
18547
18454
  * This instruction is for compatibility purposes and is designed to ensure that a
18548
18455
  * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in
@@ -18568,7 +18475,8 @@ function ɵɵupdateSyntheticHostBinding(propName, value, sanitizer) {
18568
18475
  if (bindingUpdated(lView, bindingIndex, value)) {
18569
18476
  var tView = getTView();
18570
18477
  var tNode = getSelectedTNode();
18571
- var renderer = loadComponentRenderer(tNode, lView);
18478
+ var currentDef = getCurrentDirectiveDef(tView.data);
18479
+ var renderer = loadComponentRenderer(currentDef, tNode, lView);
18572
18480
  elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, true);
18573
18481
  ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);
18574
18482
  }
@@ -20149,7 +20057,7 @@ var Version = /** @class */ (function () {
20149
20057
  /**
20150
20058
  * @publicApi
20151
20059
  */
20152
- var VERSION = new Version('9.1.3');
20060
+ var VERSION = new Version('9.1.7');
20153
20061
 
20154
20062
  /**
20155
20063
  * @license
@@ -23249,14 +23157,18 @@ var ComponentFactory$1 = /** @class */ (function (_super) {
23249
23157
  }
23250
23158
  }
23251
23159
  }
23252
- tElementNode = getTNode(rootLView[TVIEW], 0);
23253
- if (projectableNodes) {
23254
- // projectable nodes can be passed as array of arrays or an array of iterables (ngUpgrade
23255
- // case). Here we do normalize passed data structure to be an array of arrays to avoid
23256
- // complex checks down the line.
23257
- tElementNode.projection = projectableNodes.map(function (nodesforSlot) {
23258
- return Array.from(nodesforSlot);
23259
- });
23160
+ tElementNode = getTNode(rootTView, 0);
23161
+ if (projectableNodes !== undefined) {
23162
+ var projection = tElementNode.projection = [];
23163
+ for (var i = 0; i < this.ngContentSelectors.length; i++) {
23164
+ var nodesforSlot = projectableNodes[i];
23165
+ // Projectable nodes can be passed as array of arrays or an array of iterables (ngUpgrade
23166
+ // case). Here we do normalize passed data structure to be an array of arrays to avoid
23167
+ // complex checks down the line.
23168
+ // We also normalize the length of the passed in projectable nodes (to match the number of
23169
+ // <ng-container> slots defined by a component).
23170
+ projection.push(nodesforSlot != null ? Array.from(nodesforSlot) : null);
23171
+ }
23260
23172
  }
23261
23173
  // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
23262
23174
  // executed here?
@@ -23543,25 +23455,14 @@ function normalizeLocale(locale) {
23543
23455
  * Use of this source code is governed by an MIT-style license that can be
23544
23456
  * found in the LICENSE file at https://angular.io/license
23545
23457
  */
23458
+ var pluralMapping = ['zero', 'one', 'two', 'few', 'many'];
23546
23459
  /**
23547
23460
  * Returns the plural case based on the locale
23548
23461
  */
23549
23462
  function getPluralCase(value, locale) {
23550
- var plural = getLocalePluralCase(locale)(value);
23551
- switch (plural) {
23552
- case 0:
23553
- return 'zero';
23554
- case 1:
23555
- return 'one';
23556
- case 2:
23557
- return 'two';
23558
- case 3:
23559
- return 'few';
23560
- case 4:
23561
- return 'many';
23562
- default:
23563
- return 'other';
23564
- }
23463
+ var plural = getLocalePluralCase(locale)(parseInt(value, 10));
23464
+ var result = pluralMapping[plural];
23465
+ return (result !== undefined) ? result : 'other';
23565
23466
  }
23566
23467
  /**
23567
23468
  * The locale id that the application is using by default (for translations and ICU expressions).
@@ -26392,10 +26293,7 @@ var ɵ0$d = function () { return ({
26392
26293
  'ɵɵProvidersFeature': ɵɵProvidersFeature,
26393
26294
  'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,
26394
26295
  'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
26395
- 'ɵɵcontainer': ɵɵcontainer,
26396
26296
  'ɵɵnextContext': ɵɵnextContext,
26397
- 'ɵɵcontainerRefreshStart': ɵɵcontainerRefreshStart,
26398
- 'ɵɵcontainerRefreshEnd': ɵɵcontainerRefreshEnd,
26399
26297
  'ɵɵnamespaceHTML': ɵɵnamespaceHTML,
26400
26298
  'ɵɵnamespaceMathML': ɵɵnamespaceMathML,
26401
26299
  'ɵɵnamespaceSVG': ɵɵnamespaceSVG,
@@ -26495,8 +26393,6 @@ var ɵ0$d = function () { return ({
26495
26393
  'ɵɵtextInterpolate7': ɵɵtextInterpolate7,
26496
26394
  'ɵɵtextInterpolate8': ɵɵtextInterpolate8,
26497
26395
  'ɵɵtextInterpolateV': ɵɵtextInterpolateV,
26498
- 'ɵɵembeddedViewStart': ɵɵembeddedViewStart,
26499
- 'ɵɵembeddedViewEnd': ɵɵembeddedViewEnd,
26500
26396
  'ɵɵi18n': ɵɵi18n,
26501
26397
  'ɵɵi18nAttributes': ɵɵi18nAttributes,
26502
26398
  'ɵɵi18nExp': ɵɵi18nExp,
@@ -32770,5 +32666,5 @@ if (ngDevMode) {
32770
32666
  * Generated bundle index. Do not edit.
32771
32667
  */
32772
32668
 
32773
- export { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID$1 as LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleFactoryLoader, NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef$1 as ViewRef, WrappedValue, asNativeElements, assertPlatform, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode$1 as getDebugNode, getModuleFactory, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ɵ0, ɵ1, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, Compiler_compileModuleAndAllComponentsAsync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__, Compiler_compileModuleAndAllComponentsSync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__, Compiler_compileModuleAsync__POST_R3__ as ɵCompiler_compileModuleAsync__POST_R3__, Compiler_compileModuleSync__POST_R3__ as ɵCompiler_compileModuleSync__POST_R3__, ComponentFactory as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, EMPTY_ARRAY$4 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, INJECTOR_IMPL__POST_R3__ as ɵINJECTOR_IMPL__POST_R3__, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory$1 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory$1 as ɵRender3ComponentFactory, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef$1 as ɵRender3NgModuleRef, SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__ as ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__, SWITCH_COMPILE_COMPONENT__POST_R3__ as ɵSWITCH_COMPILE_COMPONENT__POST_R3__, SWITCH_COMPILE_DIRECTIVE__POST_R3__ as ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__, SWITCH_COMPILE_INJECTABLE__POST_R3__ as ɵSWITCH_COMPILE_INJECTABLE__POST_R3__, SWITCH_COMPILE_NGMODULE__POST_R3__ as ɵSWITCH_COMPILE_NGMODULE__POST_R3__, SWITCH_COMPILE_PIPE__POST_R3__ as ɵSWITCH_COMPILE_PIPE__POST_R3__, SWITCH_ELEMENT_REF_FACTORY__POST_R3__ as ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__, SWITCH_IVY_ENABLED__POST_R3__ as ɵSWITCH_IVY_ENABLED__POST_R3__, SWITCH_RENDERER2_FACTORY__POST_R3__ as ɵSWITCH_RENDERER2_FACTORY__POST_R3__, SWITCH_TEMPLATE_REF_FACTORY__POST_R3__ as ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__, SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__ as ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeStyle as ɵ_sanitizeStyle, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, anchorDef as ɵand, isForwardRef as ɵangular_packages_core_core_a, injectInjectorOnly as ɵangular_packages_core_core_b, getLView as ɵangular_packages_core_core_ba, getPreviousOrParentTNode as ɵangular_packages_core_core_bb, getBindingRoot as ɵangular_packages_core_core_bc, nextContextImpl as ɵangular_packages_core_core_bd, pureFunction1Internal as ɵangular_packages_core_core_bf, pureFunction2Internal as ɵangular_packages_core_core_bg, pureFunction3Internal as ɵangular_packages_core_core_bh, pureFunction4Internal as ɵangular_packages_core_core_bi, pureFunctionVInternal as ɵangular_packages_core_core_bj, getUrlSanitizer as ɵangular_packages_core_core_bk, makeParamDecorator as ɵangular_packages_core_core_bl, makePropDecorator as ɵangular_packages_core_core_bm, getClosureSafeProperty as ɵangular_packages_core_core_bn, noSideEffects as ɵangular_packages_core_core_bp, getRootContext as ɵangular_packages_core_core_bq, NullInjector as ɵangular_packages_core_core_c, ReflectiveInjector_ as ɵangular_packages_core_core_d, ReflectiveDependency as ɵangular_packages_core_core_e, resolveReflectiveProviders as ɵangular_packages_core_core_f, _appIdRandomProviderFactory as ɵangular_packages_core_core_g, createElementRef as ɵangular_packages_core_core_h, createTemplateRef as ɵangular_packages_core_core_i, getModuleFactory__PRE_R3__ as ɵangular_packages_core_core_j, DebugNode__PRE_R3__ as ɵangular_packages_core_core_k, DebugElement__PRE_R3__ as ɵangular_packages_core_core_l, getDebugNodeR2__PRE_R3__ as ɵangular_packages_core_core_m, DefaultIterableDifferFactory as ɵangular_packages_core_core_n, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_o, _iterableDiffersFactory as ɵangular_packages_core_core_p, _keyValueDiffersFactory as ɵangular_packages_core_core_q, _localeFactory as ɵangular_packages_core_core_r, APPLICATION_MODULE_PROVIDERS as ɵangular_packages_core_core_s, zoneSchedulerFactory as ɵangular_packages_core_core_t, USD_CURRENCY_CODE as ɵangular_packages_core_core_u, _def as ɵangular_packages_core_core_v, DebugContext as ɵangular_packages_core_core_w, SCHEDULER as ɵangular_packages_core_core_x, injectAttributeImpl as ɵangular_packages_core_core_y, instructionState as ɵangular_packages_core_core_z, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, createComponentFactory as ɵccf, clearOverrides as ɵclearOverrides, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, createNgModuleFactory as ɵcmf, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory__POST_R3__ as ɵcompileNgModuleFactory__POST_R3__, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, createRendererType2 as ɵcrt, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual$1 as ɵdevModeEqual, directiveDef as ɵdid, elementDef as ɵeld, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, getDebugNodeR2 as ɵgetDebugNodeR2, getDebugNode__POST_R3__ as ɵgetDebugNode__POST_R3__, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getModuleFactory__POST_R3__ as ɵgetModuleFactory__POST_R3__, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, initServicesIfNeeded as ɵinitServicesIfNeeded, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, isBoundToModule__POST_R3__ as ɵisBoundToModule__POST_R3__, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable$1 as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, ivyEnabled as ɵivyEnabled, looseIdentical as ɵlooseIdentical, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, nodeValue as ɵnov, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, pureArrayDef as ɵpad, patchComponentDefWithScope as ɵpatchComponentDefWithScope, pipeDef as ɵpid, pureObjectDef as ɵpod, purePipeDef as ɵppd, providerDef as ɵprd, publishDefaultGlobalUtils as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, queryDef as ɵqud, registerLocaleData as ɵregisterLocaleData, registerModuleFactory as ɵregisterModuleFactory, registerNgModuleType as ɵregisterNgModuleType, renderComponent$1 as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, textDef as ɵted, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapValue as ɵunv, unwrapSafeValue as ɵunwrapSafeValue, viewDef as ɵvid, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentHostSyntheticListener, ɵɵcontainer, ɵɵcontainerRefreshEnd, ɵɵcontainerRefreshStart, ɵɵcontentQuery, ɵɵdefaultStyleSanitizer, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵembeddedViewEnd, ɵɵembeddedViewStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetFactoryOf, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinjectPipeChangeDetectorRef, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵselect, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstaticContentQuery, ɵɵstaticViewQuery, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵstyleSanitizer, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵupdateSyntheticHostBinding, ɵɵviewQuery };
32669
+ export { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID$1 as LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleFactoryLoader, NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef$1 as ViewRef, WrappedValue, asNativeElements, assertPlatform, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode$1 as getDebugNode, getModuleFactory, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ɵ0, ɵ1, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, Compiler_compileModuleAndAllComponentsAsync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__, Compiler_compileModuleAndAllComponentsSync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__, Compiler_compileModuleAsync__POST_R3__ as ɵCompiler_compileModuleAsync__POST_R3__, Compiler_compileModuleSync__POST_R3__ as ɵCompiler_compileModuleSync__POST_R3__, ComponentFactory as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, EMPTY_ARRAY$4 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, INJECTOR_IMPL__POST_R3__ as ɵINJECTOR_IMPL__POST_R3__, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory$1 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory$1 as ɵRender3ComponentFactory, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef$1 as ɵRender3NgModuleRef, SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__ as ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__, SWITCH_COMPILE_COMPONENT__POST_R3__ as ɵSWITCH_COMPILE_COMPONENT__POST_R3__, SWITCH_COMPILE_DIRECTIVE__POST_R3__ as ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__, SWITCH_COMPILE_INJECTABLE__POST_R3__ as ɵSWITCH_COMPILE_INJECTABLE__POST_R3__, SWITCH_COMPILE_NGMODULE__POST_R3__ as ɵSWITCH_COMPILE_NGMODULE__POST_R3__, SWITCH_COMPILE_PIPE__POST_R3__ as ɵSWITCH_COMPILE_PIPE__POST_R3__, SWITCH_ELEMENT_REF_FACTORY__POST_R3__ as ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__, SWITCH_IVY_ENABLED__POST_R3__ as ɵSWITCH_IVY_ENABLED__POST_R3__, SWITCH_RENDERER2_FACTORY__POST_R3__ as ɵSWITCH_RENDERER2_FACTORY__POST_R3__, SWITCH_TEMPLATE_REF_FACTORY__POST_R3__ as ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__, SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__ as ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeStyle as ɵ_sanitizeStyle, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, anchorDef as ɵand, isForwardRef as ɵangular_packages_core_core_a, injectInjectorOnly as ɵangular_packages_core_core_b, getLView as ɵangular_packages_core_core_ba, getPreviousOrParentTNode as ɵangular_packages_core_core_bb, getBindingRoot as ɵangular_packages_core_core_bc, nextContextImpl as ɵangular_packages_core_core_bd, pureFunction1Internal as ɵangular_packages_core_core_bf, pureFunction2Internal as ɵangular_packages_core_core_bg, pureFunction3Internal as ɵangular_packages_core_core_bh, pureFunction4Internal as ɵangular_packages_core_core_bi, pureFunctionVInternal as ɵangular_packages_core_core_bj, getUrlSanitizer as ɵangular_packages_core_core_bk, makeParamDecorator as ɵangular_packages_core_core_bl, makePropDecorator as ɵangular_packages_core_core_bm, getClosureSafeProperty as ɵangular_packages_core_core_bn, noSideEffects as ɵangular_packages_core_core_bp, getRootContext as ɵangular_packages_core_core_bq, NullInjector as ɵangular_packages_core_core_c, ReflectiveInjector_ as ɵangular_packages_core_core_d, ReflectiveDependency as ɵangular_packages_core_core_e, resolveReflectiveProviders as ɵangular_packages_core_core_f, _appIdRandomProviderFactory as ɵangular_packages_core_core_g, createElementRef as ɵangular_packages_core_core_h, createTemplateRef as ɵangular_packages_core_core_i, getModuleFactory__PRE_R3__ as ɵangular_packages_core_core_j, DebugNode__PRE_R3__ as ɵangular_packages_core_core_k, DebugElement__PRE_R3__ as ɵangular_packages_core_core_l, getDebugNodeR2__PRE_R3__ as ɵangular_packages_core_core_m, DefaultIterableDifferFactory as ɵangular_packages_core_core_n, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_o, _iterableDiffersFactory as ɵangular_packages_core_core_p, _keyValueDiffersFactory as ɵangular_packages_core_core_q, _localeFactory as ɵangular_packages_core_core_r, APPLICATION_MODULE_PROVIDERS as ɵangular_packages_core_core_s, zoneSchedulerFactory as ɵangular_packages_core_core_t, USD_CURRENCY_CODE as ɵangular_packages_core_core_u, _def as ɵangular_packages_core_core_v, DebugContext as ɵangular_packages_core_core_w, SCHEDULER as ɵangular_packages_core_core_x, injectAttributeImpl as ɵangular_packages_core_core_y, instructionState as ɵangular_packages_core_core_z, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, createComponentFactory as ɵccf, clearOverrides as ɵclearOverrides, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, createNgModuleFactory as ɵcmf, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory__POST_R3__ as ɵcompileNgModuleFactory__POST_R3__, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, createRendererType2 as ɵcrt, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual$1 as ɵdevModeEqual, directiveDef as ɵdid, elementDef as ɵeld, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, getDebugNodeR2 as ɵgetDebugNodeR2, getDebugNode__POST_R3__ as ɵgetDebugNode__POST_R3__, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getModuleFactory__POST_R3__ as ɵgetModuleFactory__POST_R3__, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, initServicesIfNeeded as ɵinitServicesIfNeeded, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, isBoundToModule__POST_R3__ as ɵisBoundToModule__POST_R3__, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable$1 as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, ivyEnabled as ɵivyEnabled, looseIdentical as ɵlooseIdentical, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, nodeValue as ɵnov, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, pureArrayDef as ɵpad, patchComponentDefWithScope as ɵpatchComponentDefWithScope, pipeDef as ɵpid, pureObjectDef as ɵpod, purePipeDef as ɵppd, providerDef as ɵprd, publishDefaultGlobalUtils as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, queryDef as ɵqud, registerLocaleData as ɵregisterLocaleData, registerModuleFactory as ɵregisterModuleFactory, registerNgModuleType as ɵregisterNgModuleType, renderComponent$1 as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, textDef as ɵted, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapValue as ɵunv, unwrapSafeValue as ɵunwrapSafeValue, viewDef as ɵvid, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentHostSyntheticListener, ɵɵcontentQuery, ɵɵdefaultStyleSanitizer, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetFactoryOf, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinjectPipeChangeDetectorRef, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵselect, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstaticContentQuery, ɵɵstaticViewQuery, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵstyleSanitizer, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵupdateSyntheticHostBinding, ɵɵviewQuery };
32774
32670
  //# sourceMappingURL=core.js.map