@angular/core 6.0.0-rc.3 → 6.0.0

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 (198) hide show
  1. package/bundles/core-testing.umd.js +95 -19
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +10 -11
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +555 -389
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +77 -77
  8. package/bundles/core.umd.min.js.map +1 -1
  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/application_ref.js +6 -6
  13. package/esm2015/src/change_detection/change_detection_util.js +3 -3
  14. package/esm2015/src/change_detection/change_detector_ref.js +2 -2
  15. package/esm2015/src/change_detection/constants.js +1 -1
  16. package/esm2015/src/change_detection/differs/default_iterable_differ.js +15 -15
  17. package/esm2015/src/change_detection/differs/default_keyvalue_differ.js +2 -2
  18. package/esm2015/src/change_detection/differs/iterable_differs.js +15 -7
  19. package/esm2015/src/change_detection/differs/keyvalue_differs.js +6 -6
  20. package/esm2015/src/change_detection/pipe_transform.js +2 -2
  21. package/esm2015/src/core.js +4 -4
  22. package/esm2015/src/core_private_export.js +2 -2
  23. package/esm2015/src/core_render3_private_export.js +2 -2
  24. package/esm2015/src/di/defs.js +36 -19
  25. package/esm2015/src/di/injectable.js +3 -3
  26. package/esm2015/src/di/injection_token.js +2 -2
  27. package/esm2015/src/di/injector.js +35 -14
  28. package/esm2015/src/di/metadata.js +11 -11
  29. package/esm2015/src/di/provider.js +9 -9
  30. package/esm2015/src/di/r3_injector.js +12 -12
  31. package/esm2015/src/di/reflective_errors.js +3 -3
  32. package/esm2015/src/di.js +1 -1
  33. package/esm2015/src/error_handler.js +2 -2
  34. package/esm2015/src/event_emitter.js +2 -2
  35. package/esm2015/src/linker/compiler.js +2 -2
  36. package/esm2015/src/linker/component_factory.js +3 -3
  37. package/esm2015/src/linker/component_factory_resolver.js +2 -2
  38. package/esm2015/src/linker/element_ref.js +3 -3
  39. package/esm2015/src/linker/ng_module_factory.js +2 -2
  40. package/esm2015/src/linker/ng_module_factory_loader.js +2 -2
  41. package/esm2015/src/linker/query_list.js +2 -2
  42. package/esm2015/src/linker/template_ref.js +2 -2
  43. package/esm2015/src/linker/view_container_ref.js +2 -2
  44. package/esm2015/src/linker/view_ref.js +2 -2
  45. package/esm2015/src/metadata/di.js +12 -12
  46. package/esm2015/src/metadata/directives.js +15 -15
  47. package/esm2015/src/metadata/lifecycle_hooks.js +10 -10
  48. package/esm2015/src/metadata/ng_module.js +5 -5
  49. package/esm2015/src/metadata/view.js +1 -1
  50. package/esm2015/src/render3/assert.js +13 -1
  51. package/esm2015/src/render3/component.js +2 -1
  52. package/esm2015/src/render3/definition.js +4 -4
  53. package/esm2015/src/render3/di.js +61 -89
  54. package/esm2015/src/render3/hooks.js +7 -7
  55. package/esm2015/src/render3/index.js +1 -1
  56. package/esm2015/src/render3/instructions.js +128 -79
  57. package/esm2015/src/render3/interfaces/definition.js +9 -1
  58. package/esm2015/src/render3/interfaces/injector.js +1 -3
  59. package/esm2015/src/render3/interfaces/node.js +7 -11
  60. package/esm2015/src/render3/interfaces/view.js +17 -3
  61. package/esm2015/src/render3/node_manipulation.js +23 -3
  62. package/esm2015/src/render3/query.js +9 -7
  63. package/esm2015/src/sanitization/security.js +2 -2
  64. package/esm2015/src/type.js +2 -2
  65. package/esm2015/src/util/decorators.js +2 -2
  66. package/esm2015/src/util/lang.js +2 -2
  67. package/esm2015/src/version.js +4 -4
  68. package/esm2015/src/view/ng_module.js +5 -2
  69. package/esm2015/src/view/refs.js +1 -1
  70. package/esm2015/testing/src/async.js +2 -2
  71. package/esm2015/testing/src/async_fallback.js +2 -2
  72. package/esm2015/testing/src/component_fixture.js +2 -2
  73. package/esm2015/testing/src/test_bed.js +3 -3
  74. package/esm5/src/application_ref.js +7 -7
  75. package/esm5/src/change_detection/change_detection_util.js +7 -7
  76. package/esm5/src/change_detection/change_detector_ref.js +4 -4
  77. package/esm5/src/change_detection/constants.js +4 -4
  78. package/esm5/src/change_detection/differs/default_iterable_differ.js +18 -18
  79. package/esm5/src/change_detection/differs/default_keyvalue_differ.js +3 -3
  80. package/esm5/src/change_detection/differs/iterable_differs.js +9 -11
  81. package/esm5/src/change_detection/differs/keyvalue_differs.js +4 -4
  82. package/esm5/src/change_detection/pipe_transform.js +1 -1
  83. package/esm5/src/core_private_export.js +2 -2
  84. package/esm5/src/core_render3_private_export.js +2 -2
  85. package/esm5/src/di/defs.js +3 -6
  86. package/esm5/src/di/injectable.js +2 -2
  87. package/esm5/src/di/injection_token.js +4 -4
  88. package/esm5/src/di/injector.js +26 -11
  89. package/esm5/src/di/metadata.js +6 -6
  90. package/esm5/src/di/provider.js +1 -1
  91. package/esm5/src/di/r3_injector.js +12 -12
  92. package/esm5/src/di/reflective_errors.js +3 -3
  93. package/esm5/src/di.js +2 -2
  94. package/esm5/src/error_handler.js +4 -4
  95. package/esm5/src/event_emitter.js +4 -4
  96. package/esm5/src/linker/compiler.js +2 -2
  97. package/esm5/src/linker/component_factory.js +7 -7
  98. package/esm5/src/linker/component_factory_resolver.js +2 -2
  99. package/esm5/src/linker/element_ref.js +4 -4
  100. package/esm5/src/linker/ng_module_factory.js +4 -4
  101. package/esm5/src/linker/ng_module_factory_loader.js +4 -4
  102. package/esm5/src/linker/query_list.js +4 -4
  103. package/esm5/src/linker/template_ref.js +4 -4
  104. package/esm5/src/linker/view_container_ref.js +4 -4
  105. package/esm5/src/linker/view_ref.js +4 -4
  106. package/esm5/src/metadata/di.js +9 -9
  107. package/esm5/src/metadata/directives.js +8 -8
  108. package/esm5/src/metadata/lifecycle_hooks.js +1 -1
  109. package/esm5/src/metadata/ng_module.js +3 -3
  110. package/esm5/src/metadata/view.js +4 -4
  111. package/esm5/src/render3/assert.js +6 -1
  112. package/esm5/src/render3/component.js +2 -1
  113. package/esm5/src/render3/definition.js +1 -1
  114. package/esm5/src/render3/di.js +51 -74
  115. package/esm5/src/render3/hooks.js +6 -6
  116. package/esm5/src/render3/index.js +1 -1
  117. package/esm5/src/render3/instructions.js +123 -76
  118. package/esm5/src/render3/interfaces/definition.js +1 -1
  119. package/esm5/src/render3/interfaces/injector.js +1 -1
  120. package/esm5/src/render3/interfaces/node.js +1 -1
  121. package/esm5/src/render3/interfaces/view.js +1 -1
  122. package/esm5/src/render3/node_manipulation.js +20 -2
  123. package/esm5/src/render3/query.js +9 -7
  124. package/esm5/src/sanitization/security.js +7 -7
  125. package/esm5/src/type.js +2 -2
  126. package/esm5/src/util/decorators.js +1 -1
  127. package/esm5/src/util/lang.js +2 -2
  128. package/esm5/src/version.js +6 -6
  129. package/esm5/src/view/ng_module.js +5 -2
  130. package/esm5/src/view/refs.js +1 -1
  131. package/esm5/testing/src/async.js +2 -2
  132. package/esm5/testing/src/async_fallback.js +2 -2
  133. package/esm5/testing/src/component_fixture.js +4 -4
  134. package/esm5/testing/src/test_bed.js +5 -5
  135. package/fesm2015/core.js +468 -372
  136. package/fesm2015/core.js.map +1 -1
  137. package/fesm2015/testing.js +6 -6
  138. package/fesm2015/testing.js.map +1 -1
  139. package/fesm5/core.js +403 -321
  140. package/fesm5/core.js.map +1 -1
  141. package/fesm5/testing.js +6 -6
  142. package/fesm5/testing.js.map +1 -1
  143. package/package.json +5 -4
  144. package/src/application_ref.d.ts +5 -5
  145. package/src/change_detection/change_detection_util.d.ts +2 -2
  146. package/src/change_detection/change_detector_ref.d.ts +1 -1
  147. package/src/change_detection/constants.d.ts +1 -1
  148. package/src/change_detection/differs/default_iterable_differ.d.ts +1 -1
  149. package/src/change_detection/differs/iterable_differs.d.ts +8 -7
  150. package/src/change_detection/differs/keyvalue_differs.d.ts +5 -5
  151. package/src/change_detection/pipe_transform.d.ts +1 -1
  152. package/src/core_private_export.d.ts +1 -1
  153. package/src/core_render3_private_export.d.ts +1 -1
  154. package/src/di/defs.d.ts +29 -10
  155. package/src/di/injectable.d.ts +3 -3
  156. package/src/di/injection_token.d.ts +3 -4
  157. package/src/di/injector.d.ts +14 -11
  158. package/src/di/metadata.d.ts +20 -20
  159. package/src/di/provider.d.ts +10 -10
  160. package/src/di/r3_injector.d.ts +3 -3
  161. package/src/di/reflective_errors.d.ts +2 -2
  162. package/src/di.d.ts +1 -1
  163. package/src/error_handler.d.ts +1 -1
  164. package/src/event_emitter.d.ts +1 -1
  165. package/src/linker/compiler.d.ts +1 -1
  166. package/src/linker/component_factory.d.ts +2 -2
  167. package/src/linker/component_factory_resolver.d.ts +1 -1
  168. package/src/linker/element_ref.d.ts +2 -2
  169. package/src/linker/ng_module_factory.d.ts +1 -1
  170. package/src/linker/ng_module_factory_loader.d.ts +1 -1
  171. package/src/linker/query_list.d.ts +1 -1
  172. package/src/linker/template_ref.d.ts +1 -1
  173. package/src/linker/view_container_ref.d.ts +1 -1
  174. package/src/linker/view_ref.d.ts +1 -1
  175. package/src/metadata/di.d.ts +21 -21
  176. package/src/metadata/directives.d.ts +28 -28
  177. package/src/metadata/lifecycle_hooks.d.ts +9 -9
  178. package/src/metadata/ng_module.d.ts +5 -5
  179. package/src/metadata/view.d.ts +1 -1
  180. package/src/render3/assert.d.ts +1 -0
  181. package/src/render3/definition.d.ts +3 -3
  182. package/src/render3/di.d.ts +4 -14
  183. package/src/render3/index.d.ts +2 -1
  184. package/src/render3/instructions.d.ts +3 -3
  185. package/src/render3/interfaces/definition.d.ts +23 -4
  186. package/src/render3/interfaces/injector.d.ts +0 -2
  187. package/src/render3/interfaces/node.d.ts +7 -13
  188. package/src/render3/interfaces/view.d.ts +16 -3
  189. package/src/render3/node_manipulation.d.ts +3 -2
  190. package/src/sanitization/security.d.ts +2 -2
  191. package/src/type.d.ts +1 -1
  192. package/src/util/decorators.d.ts +1 -1
  193. package/src/version.d.ts +2 -2
  194. package/testing/src/async.d.ts +1 -1
  195. package/testing/src/async_fallback.d.ts +1 -1
  196. package/testing/src/component_fixture.d.ts +1 -1
  197. package/testing/src/test_bed.d.ts +2 -2
  198. package/testing.d.ts +1 -1
package/fesm5/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v6.0.0-rc.3
2
+ * @license Angular v6.0.0
3
3
  * (c) 2010-2018 Google, Inc. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -33,8 +33,7 @@ import { share } from 'rxjs/operators';
33
33
  */
34
34
  function defineInjectable(opts) {
35
35
  return {
36
- providedIn: opts.providedIn || null,
37
- factory: opts.factory,
36
+ providedIn: opts.providedIn || null, factory: opts.factory, value: undefined,
38
37
  };
39
38
  }
40
39
  /**
@@ -59,9 +58,7 @@ function defineInjectable(opts) {
59
58
  */
60
59
  function defineInjector(options) {
61
60
  return {
62
- factory: options.factory,
63
- providers: options.providers || [],
64
- imports: options.imports || [],
61
+ factory: options.factory, providers: options.providers || [], imports: options.imports || [],
65
62
  };
66
63
  }
67
64
 
@@ -108,7 +105,7 @@ function defineInjector(options) {
108
105
  *
109
106
  * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
110
107
  *
111
- * @stable
108
+ *
112
109
  */
113
110
  var InjectionToken = /** @class */ (function () {
114
111
  function InjectionToken(_desc, options) {
@@ -304,7 +301,7 @@ var ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents
304
301
  /**
305
302
  * Attribute decorator and metadata.
306
303
  *
307
- * @stable
304
+ *
308
305
  * @Annotation
309
306
  */
310
307
  var Attribute = makeParamDecorator('Attribute', function (attributeName) { return ({ attributeName: attributeName }); });
@@ -314,7 +311,7 @@ var Attribute = makeParamDecorator('Attribute', function (attributeName) { retur
314
311
  * See {@link ContentChildren}, {@link ContentChild}, {@link ViewChildren}, {@link ViewChild} for
315
312
  * more information.
316
313
  *
317
- * @stable
314
+ *
318
315
  */
319
316
  var Query = /** @class */ (function () {
320
317
  function Query() {
@@ -324,7 +321,7 @@ var Query = /** @class */ (function () {
324
321
  /**
325
322
  * ContentChildren decorator and metadata.
326
323
  *
327
- * @stable
324
+ *
328
325
  * @Annotation
329
326
  */
330
327
  var ContentChildren = makePropDecorator('ContentChildren', function (selector, data) {
@@ -334,7 +331,7 @@ var ContentChildren = makePropDecorator('ContentChildren', function (selector, d
334
331
  /**
335
332
  * ContentChild decorator and metadata.
336
333
  *
337
- * @stable
334
+ *
338
335
  * @Annotation
339
336
  */
340
337
  var ContentChild = makePropDecorator('ContentChild', function (selector, data) {
@@ -344,7 +341,7 @@ var ContentChild = makePropDecorator('ContentChild', function (selector, data) {
344
341
  /**
345
342
  * ViewChildren decorator and metadata.
346
343
  *
347
- * @stable
344
+ *
348
345
  * @Annotation
349
346
  */
350
347
  var ViewChildren = makePropDecorator('ViewChildren', function (selector, data) {
@@ -354,7 +351,7 @@ var ViewChildren = makePropDecorator('ViewChildren', function (selector, data) {
354
351
  /**
355
352
  * ViewChild decorator and metadata.
356
353
  *
357
- * @stable
354
+ *
358
355
  * @Annotation
359
356
  */
360
357
  var ViewChild = makePropDecorator('ViewChild', function (selector, data) {
@@ -378,18 +375,18 @@ var ViewChild = makePropDecorator('ViewChild', function (selector, data) {
378
375
  /**
379
376
  * Describes within the change detector which strategy will be used the next time change
380
377
  * detection is triggered.
381
- * @stable
378
+ *
382
379
  */
383
380
  /**
384
381
  * Describes within the change detector which strategy will be used the next time change
385
382
  * detection is triggered.
386
- * @stable
383
+ *
387
384
  */
388
385
  var ChangeDetectionStrategy;
389
386
  /**
390
387
  * Describes within the change detector which strategy will be used the next time change
391
388
  * detection is triggered.
392
- * @stable
389
+ *
393
390
  */
394
391
  (function (ChangeDetectionStrategy) {
395
392
  /**
@@ -458,7 +455,7 @@ function isDefaultChangeDetectionStrategy(changeDetectionStrategy) {
458
455
  /**
459
456
  * Directive decorator and metadata.
460
457
  *
461
- * @stable
458
+ *
462
459
  * @Annotation
463
460
  */
464
461
  var Directive = makeDecorator('Directive', function (dir) {
@@ -468,7 +465,7 @@ var Directive = makeDecorator('Directive', function (dir) {
468
465
  /**
469
466
  * Component decorator and metadata.
470
467
  *
471
- * @stable
468
+ *
472
469
  * @Annotation
473
470
  */
474
471
  var Component = makeDecorator('Component', function (c) {
@@ -484,35 +481,35 @@ var Component = makeDecorator('Component', function (c) {
484
481
  * To use the pipe include a reference to the pipe class in
485
482
  * {@link NgModule#declarations}.
486
483
  *
487
- * @stable
484
+ *
488
485
  * @Annotation
489
486
  */
490
487
  var Pipe = makeDecorator('Pipe', function (p) { return (__assign({ pure: true }, p)); });
491
488
  /**
492
489
  * Input decorator and metadata.
493
490
  *
494
- * @stable
491
+ *
495
492
  * @Annotation
496
493
  */
497
494
  var Input = makePropDecorator('Input', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });
498
495
  /**
499
496
  * Output decorator and metadata.
500
497
  *
501
- * @stable
498
+ *
502
499
  * @Annotation
503
500
  */
504
501
  var Output = makePropDecorator('Output', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });
505
502
  /**
506
503
  * HostBinding decorator and metadata.
507
504
  *
508
- * @stable
505
+ *
509
506
  * @Annotation
510
507
  */
511
508
  var HostBinding = makePropDecorator('HostBinding', function (hostPropertyName) { return ({ hostPropertyName: hostPropertyName }); });
512
509
  /**
513
510
  * HostListener decorator and metadata.
514
511
  *
515
- * @stable
512
+ *
516
513
  * @Annotation
517
514
  */
518
515
  var HostListener = makePropDecorator('HostListener', function (eventName, args) { return ({ eventName: eventName, args: args }); });
@@ -532,7 +529,7 @@ var HostListener = makePropDecorator('HostListener', function (eventName, args)
532
529
  * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by
533
530
  * the `MyCustomComponent` constructor function.
534
531
  *
535
- * @stable
532
+ *
536
533
  */
537
534
  var Type = Function;
538
535
  function isType(v) {
@@ -921,35 +918,35 @@ function resolveForwardRef(type) {
921
918
  /**
922
919
  * Inject decorator and metadata.
923
920
  *
924
- * @stable
921
+ *
925
922
  * @Annotation
926
923
  */
927
924
  var Inject = makeParamDecorator('Inject', function (token) { return ({ token: token }); });
928
925
  /**
929
926
  * Optional decorator and metadata.
930
927
  *
931
- * @stable
928
+ *
932
929
  * @Annotation
933
930
  */
934
931
  var Optional = makeParamDecorator('Optional');
935
932
  /**
936
933
  * Self decorator and metadata.
937
934
  *
938
- * @stable
935
+ *
939
936
  * @Annotation
940
937
  */
941
938
  var Self = makeParamDecorator('Self');
942
939
  /**
943
940
  * SkipSelf decorator and metadata.
944
941
  *
945
- * @stable
942
+ *
946
943
  * @Annotation
947
944
  */
948
945
  var SkipSelf = makeParamDecorator('SkipSelf');
949
946
  /**
950
947
  * Host decorator and metadata.
951
948
  *
952
- * @stable
949
+ *
953
950
  * @Annotation
954
951
  */
955
952
  var Host = makeParamDecorator('Host');
@@ -1005,7 +1002,7 @@ var NullInjector = /** @class */ (function () {
1005
1002
  * `Injector` returns itself when given `Injector` as a token:
1006
1003
  * {@example core/di/ts/injector_spec.ts region='injectInjector'}
1007
1004
  *
1008
- * @stable
1005
+ *
1009
1006
  */
1010
1007
  var Injector = /** @class */ (function () {
1011
1008
  function Injector() {
@@ -1200,7 +1197,7 @@ function tryResolveToken(token, record, records, parent, notFoundValue, flags) {
1200
1197
  }
1201
1198
  function resolveToken(token, record, records, parent, notFoundValue, flags) {
1202
1199
  var value;
1203
- if (record && !(flags & 1 /* SkipSelf */)) {
1200
+ if (record && !(flags & 4 /* SkipSelf */)) {
1204
1201
  // If we don't have a record, this implies that we don't own the provider hence don't know how
1205
1202
  // to resolve it.
1206
1203
  value = record.value;
@@ -1308,18 +1305,34 @@ function getClosureSafeProperty$1(objWithPropertyToExtract) {
1308
1305
  }
1309
1306
  throw Error('!prop');
1310
1307
  }
1311
- var _currentInjector = null;
1308
+ /**
1309
+ * Current injector value used by `inject`.
1310
+ * - `undefined`: it is an error to call `inject`
1311
+ * - `null`: `inject` can be called but there is no injector (limp-mode).
1312
+ * - Injector instance: Use the injector for resolution.
1313
+ */
1314
+ var _currentInjector = undefined;
1312
1315
  function setCurrentInjector(injector) {
1313
1316
  var former = _currentInjector;
1314
1317
  _currentInjector = injector;
1315
1318
  return former;
1316
1319
  }
1317
- function inject(token, notFoundValue, flags) {
1320
+ function inject(token, flags) {
1318
1321
  if (flags === void 0) { flags = 0 /* Default */; }
1319
- if (_currentInjector === null) {
1322
+ if (_currentInjector === undefined) {
1320
1323
  throw new Error("inject() must be called from an injection context");
1321
1324
  }
1322
- return _currentInjector.get(token, notFoundValue, flags);
1325
+ else if (_currentInjector === null) {
1326
+ var injectableDef = token.ngInjectableDef;
1327
+ if (injectableDef && injectableDef.providedIn == 'root') {
1328
+ return injectableDef.value === undefined ? injectableDef.value = injectableDef.factory() :
1329
+ injectableDef.value;
1330
+ }
1331
+ throw new Error("Injector: NOT_FOUND [" + stringify(token) + "]");
1332
+ }
1333
+ else {
1334
+ return _currentInjector.get(token, flags & 8 /* Optional */ ? null : undefined, flags);
1335
+ }
1323
1336
  }
1324
1337
  function injectArgs(types) {
1325
1338
  var args = [];
@@ -1330,17 +1343,17 @@ function injectArgs(types) {
1330
1343
  throw new Error('Arguments array must have arguments.');
1331
1344
  }
1332
1345
  var type = undefined;
1333
- var defaultValue = undefined;
1346
+ var flags = 0;
1334
1347
  for (var j = 0; j < arg.length; j++) {
1335
1348
  var meta = arg[j];
1336
1349
  if (meta instanceof Optional || meta.__proto__.ngMetadataName === 'Optional') {
1337
- defaultValue = null;
1350
+ flags |= 8 /* Optional */;
1338
1351
  }
1339
1352
  else if (meta instanceof SkipSelf || meta.__proto__.ngMetadataName === 'SkipSelf') {
1340
-
1353
+ flags |= 4 /* SkipSelf */;
1341
1354
  }
1342
1355
  else if (meta instanceof Self || meta.__proto__.ngMetadataName === 'Self') {
1343
-
1356
+ flags |= 2 /* Self */;
1344
1357
  }
1345
1358
  else if (meta instanceof Inject) {
1346
1359
  type = meta.token;
@@ -1349,7 +1362,7 @@ function injectArgs(types) {
1349
1362
  type = meta;
1350
1363
  }
1351
1364
  }
1352
- args.push(inject((type), defaultValue, 0 /* Default */));
1365
+ args.push(inject((type), flags));
1353
1366
  }
1354
1367
  else {
1355
1368
  args.push(inject(arg));
@@ -1412,7 +1425,7 @@ function convertInjectableProviderToFactory(type, provider) {
1412
1425
  /**
1413
1426
  * Injectable decorator and metadata.
1414
1427
  *
1415
- * @stable
1428
+ *
1416
1429
  * @Annotation
1417
1430
  */
1418
1431
  var Injectable = makeDecorator('Injectable', undefined, undefined, undefined, function (injectableType, options) {
@@ -1438,7 +1451,7 @@ var Injectable = makeDecorator('Injectable', undefined, undefined, undefined, fu
1438
1451
  * - any properties on elements with a `-` in their name which is the common rule for custom
1439
1452
  * elements.
1440
1453
  *
1441
- * @stable
1454
+ *
1442
1455
  */
1443
1456
  var CUSTOM_ELEMENTS_SCHEMA = {
1444
1457
  name: 'custom-elements'
@@ -1454,7 +1467,7 @@ var NO_ERRORS_SCHEMA = {
1454
1467
  /**
1455
1468
  * NgModule decorator and metadata.
1456
1469
  *
1457
- * @stable
1470
+ *
1458
1471
  * @Annotation
1459
1472
  */
1460
1473
  var NgModule = makeDecorator('NgModule', function (ngModule) { return ngModule; }, undefined, undefined, function (moduleType, metadata) {
@@ -1487,20 +1500,20 @@ var NgModule = makeDecorator('NgModule', function (ngModule) { return ngModule;
1487
1500
  * Defines template and style encapsulation options available for Component's {@link Component}.
1488
1501
  *
1489
1502
  * See {@link Component#encapsulation encapsulation}.
1490
- * @stable
1503
+ *
1491
1504
  */
1492
1505
  /**
1493
1506
  * Defines template and style encapsulation options available for Component's {@link Component}.
1494
1507
  *
1495
1508
  * See {@link Component#encapsulation encapsulation}.
1496
- * @stable
1509
+ *
1497
1510
  */
1498
1511
  var ViewEncapsulation;
1499
1512
  /**
1500
1513
  * Defines template and style encapsulation options available for Component's {@link Component}.
1501
1514
  *
1502
1515
  * See {@link Component#encapsulation encapsulation}.
1503
- * @stable
1516
+ *
1504
1517
  */
1505
1518
  (function (ViewEncapsulation) {
1506
1519
  /**
@@ -1543,7 +1556,7 @@ var ViewEncapsulation;
1543
1556
  /**
1544
1557
  * @description Represents the version of Angular
1545
1558
  *
1546
- * @stable
1559
+ *
1547
1560
  */
1548
1561
  var Version = /** @class */ (function () {
1549
1562
  function Version(full) {
@@ -1555,9 +1568,9 @@ var Version = /** @class */ (function () {
1555
1568
  return Version;
1556
1569
  }());
1557
1570
  /**
1558
- * @stable
1571
+ *
1559
1572
  */
1560
- var VERSION = new Version('6.0.0-rc.3');
1573
+ var VERSION = new Version('6.0.0');
1561
1574
 
1562
1575
  /**
1563
1576
  * @license
@@ -1619,7 +1632,7 @@ function defaultErrorLogger(console) {
1619
1632
  * class MyModule {}
1620
1633
  * ```
1621
1634
  *
1622
- * @stable
1635
+ *
1623
1636
  */
1624
1637
  var ErrorHandler = /** @class */ (function () {
1625
1638
  function ErrorHandler() {
@@ -1827,7 +1840,7 @@ function invalidProviderError(provider) {
1827
1840
  *
1828
1841
  * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();
1829
1842
  * ```
1830
- * @stable
1843
+ *
1831
1844
  */
1832
1845
  function noAnnotationError(typeOrFunc, params) {
1833
1846
  var signature = [];
@@ -1857,7 +1870,7 @@ function noAnnotationError(typeOrFunc, params) {
1857
1870
  *
1858
1871
  * expect(() => injector.getAt(100)).toThrowError();
1859
1872
  * ```
1860
- * @stable
1873
+ *
1861
1874
  */
1862
1875
  function outOfBoundsError(index) {
1863
1876
  return Error("Index " + index + " is out-of-bounds.");
@@ -2752,7 +2765,7 @@ function getNullInjector() {
2752
2765
  return NULL_INJECTOR$1;
2753
2766
  }
2754
2767
  /**
2755
- * Create a new `Injector` which is configured using `InjectorDefType`s.
2768
+ * Create a new `Injector` which is configured using `InjectorType`s.
2756
2769
  *
2757
2770
  * @experimental
2758
2771
  */
@@ -2770,7 +2783,7 @@ var R3Injector = /** @class */ (function () {
2770
2783
  */
2771
2784
  this.records = new Map();
2772
2785
  /**
2773
- * The transitive set of `InjectorDefType`s which define this injector.
2786
+ * The transitive set of `InjectorType`s which define this injector.
2774
2787
  */
2775
2788
  this.injectorDefTypes = new Set();
2776
2789
  /**
@@ -2781,7 +2794,7 @@ var R3Injector = /** @class */ (function () {
2781
2794
  * Flag indicating that this injector was previously destroyed.
2782
2795
  */
2783
2796
  this.destroyed = false;
2784
- // Start off by creating Records for every provider declared in every InjectorDefType
2797
+ // Start off by creating Records for every provider declared in every InjectorType
2785
2798
  // included transitively in `def`.
2786
2799
  deepForEach([def], function (injectorDef) { return _this.processInjectorType(injectorDef, new Set()); });
2787
2800
  // Make sure the INJECTOR token provides this injector.
@@ -2789,7 +2802,7 @@ var R3Injector = /** @class */ (function () {
2789
2802
  // Detect whether this injector has the APP_ROOT_SCOPE token and thus should provide
2790
2803
  // any injectable scoped to APP_ROOT_SCOPE.
2791
2804
  this.isRootInjector = this.records.has(APP_ROOT);
2792
- // Eagerly instantiate the InjectorDefType classes themselves.
2805
+ // Eagerly instantiate the InjectorType classes themselves.
2793
2806
  this.injectorDefTypes.forEach(function (defType) { return _this.get(defType); });
2794
2807
  }
2795
2808
  /**
@@ -2833,7 +2846,7 @@ var R3Injector = /** @class */ (function () {
2833
2846
  var previousInjector = setCurrentInjector(this);
2834
2847
  try {
2835
2848
  // Check for the SkipSelf flag.
2836
- if (!(flags & 1 /* SkipSelf */)) {
2849
+ if (!(flags & 4 /* SkipSelf */)) {
2837
2850
  // SkipSelf isn't set, check if the record belongs to this injector.
2838
2851
  var record = this.records.get(token);
2839
2852
  if (record === undefined) {
@@ -2870,28 +2883,28 @@ var R3Injector = /** @class */ (function () {
2870
2883
  }
2871
2884
  };
2872
2885
  /**
2873
- * Add an `InjectorDefType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2886
+ * Add an `InjectorType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2874
2887
  * to this injector.
2875
2888
  */
2876
2889
  /**
2877
- * Add an `InjectorDefType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2890
+ * Add an `InjectorType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2878
2891
  * to this injector.
2879
2892
  */
2880
2893
  R3Injector.prototype.processInjectorType = /**
2881
- * Add an `InjectorDefType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2894
+ * Add an `InjectorType` or `InjectorDefTypeWithProviders` and all of its transitive providers
2882
2895
  * to this injector.
2883
2896
  */
2884
2897
  function (defOrWrappedDef, parents) {
2885
2898
  var _this = this;
2886
2899
  defOrWrappedDef = resolveForwardRef(defOrWrappedDef);
2887
- // Either the defOrWrappedDef is an InjectorDefType (with ngInjectorDef) or an
2900
+ // Either the defOrWrappedDef is an InjectorType (with ngInjectorDef) or an
2888
2901
  // InjectorDefTypeWithProviders (aka ModuleWithProviders). Detecting either is a megamorphic
2889
2902
  // read, so care is taken to only do the read once.
2890
2903
  // First attempt to read the ngInjectorDef.
2891
2904
  var def = defOrWrappedDef.ngInjectorDef;
2892
2905
  // If that's not present, then attempt to read ngModule from the InjectorDefTypeWithProviders.
2893
2906
  var ngModule = (def == null) && defOrWrappedDef.ngModule || undefined;
2894
- // Determine the InjectorDefType. In the case where `defOrWrappedDef` is an `InjectorDefType`,
2907
+ // Determine the InjectorType. In the case where `defOrWrappedDef` is an `InjectorType`,
2895
2908
  // then this is easy. In the case of an InjectorDefTypeWithProviders, then the definition type
2896
2909
  // is the `ngModule`.
2897
2910
  var defType = (ngModule === undefined) ? defOrWrappedDef : ngModule;
@@ -2912,7 +2925,7 @@ var R3Injector = /** @class */ (function () {
2912
2925
  if (parents.has(defType)) {
2913
2926
  throw new Error("Circular dependency: type " + stringify(defType) + " ends up importing itself.");
2914
2927
  }
2915
- // Track the InjectorDefType and add a provider for it.
2928
+ // Track the InjectorType and add a provider for it.
2916
2929
  this.injectorDefTypes.add(defType);
2917
2930
  this.records.set(defType, makeRecord(def.factory));
2918
2931
  // Add providers in the same way that @NgModule resolution did:
@@ -3103,7 +3116,7 @@ function isPromise(obj) {
3103
3116
  * Determine if the argument is an Observable
3104
3117
  */
3105
3118
  function isObservable(obj) {
3106
- // TODO use Symbol.observable when https://github.com/ReactiveX/rxjs/issues/2415 will be resolved
3119
+ // TODO: use Symbol.observable when https://github.com/ReactiveX/rxjs/issues/2415 will be resolved
3107
3120
  return !!obj && typeof obj.subscribe === 'function';
3108
3121
  }
3109
3122
 
@@ -3290,7 +3303,7 @@ function _throwError() {
3290
3303
  * Each `@NgModule` provides an own `Compiler` to its injector,
3291
3304
  * that will use the directives/pipes of the ng module for compilation
3292
3305
  * of components.
3293
- * @stable
3306
+ *
3294
3307
  */
3295
3308
  var Compiler = /** @class */ (function () {
3296
3309
  function Compiler() {
@@ -3399,7 +3412,7 @@ var CompilerFactory = /** @class */ (function () {
3399
3412
  * `ComponentRef` provides access to the Component Instance as well other objects related to this
3400
3413
  * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
3401
3414
  * method.
3402
- * @stable
3415
+ *
3403
3416
  */
3404
3417
  var ComponentRef = /** @class */ (function () {
3405
3418
  function ComponentRef() {
@@ -3407,7 +3420,7 @@ var ComponentRef = /** @class */ (function () {
3407
3420
  return ComponentRef;
3408
3421
  }());
3409
3422
  /**
3410
- * @stable
3423
+ *
3411
3424
  */
3412
3425
  var ComponentFactory = /** @class */ (function () {
3413
3426
  function ComponentFactory() {
@@ -3438,7 +3451,7 @@ var _NullComponentFactoryResolver = /** @class */ (function () {
3438
3451
  return _NullComponentFactoryResolver;
3439
3452
  }());
3440
3453
  /**
3441
- * @stable
3454
+ *
3442
3455
  */
3443
3456
  var ComponentFactoryResolver = /** @class */ (function () {
3444
3457
  function ComponentFactoryResolver() {
@@ -3500,7 +3513,7 @@ var ComponentFactoryBoundToModule = /** @class */ (function (_super) {
3500
3513
  * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this
3501
3514
  * NgModule Instance.
3502
3515
  *
3503
- * @stable
3516
+ *
3504
3517
  */
3505
3518
  var NgModuleRef = /** @class */ (function () {
3506
3519
  function NgModuleRef() {
@@ -3680,7 +3693,7 @@ var wtfEndTimeRange = wtfEnabled ? endTimeRange : function (r) { return null; };
3680
3693
  * https://github.com/jhusain/observable-spec
3681
3694
  *
3682
3695
  * Once a reference implementation of the spec is available, switch to it.
3683
- * @stable
3696
+ *
3684
3697
  */
3685
3698
  var EventEmitter = /** @class */ (function (_super) {
3686
3699
  __extends(EventEmitter, _super);
@@ -4507,7 +4520,7 @@ var ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
4507
4520
  * does not result in additional changes to any bindings (also known as
4508
4521
  * unidirectional data flow).
4509
4522
  *
4510
- * @stable
4523
+ *
4511
4524
  */
4512
4525
  function enableProdMode() {
4513
4526
  if (_runModeLocked) {
@@ -4621,7 +4634,7 @@ function getPlatform() {
4621
4634
  * A page's platform is initialized implicitly when a platform is created via a platform factory
4622
4635
  * (e.g. {@link platformBrowser}), or explicitly by calling the {@link createPlatform} function.
4623
4636
  *
4624
- * @stable
4637
+ *
4625
4638
  */
4626
4639
  var PlatformRef = /** @class */ (function () {
4627
4640
  /** @internal */
@@ -4745,7 +4758,7 @@ var PlatformRef = /** @class */ (function () {
4745
4758
  *
4746
4759
  * let moduleRef = platformBrowser().bootstrapModule(MyModule);
4747
4760
  * ```
4748
- * @stable
4761
+ *
4749
4762
  */
4750
4763
  /**
4751
4764
  * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
@@ -4760,7 +4773,7 @@ var PlatformRef = /** @class */ (function () {
4760
4773
  *
4761
4774
  * let moduleRef = platformBrowser().bootstrapModule(MyModule);
4762
4775
  * ```
4763
- * @stable
4776
+ *
4764
4777
  */
4765
4778
  PlatformRef.prototype.bootstrapModule = /**
4766
4779
  * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
@@ -4775,7 +4788,7 @@ var PlatformRef = /** @class */ (function () {
4775
4788
  *
4776
4789
  * let moduleRef = platformBrowser().bootstrapModule(MyModule);
4777
4790
  * ```
4778
- * @stable
4791
+ *
4779
4792
  */
4780
4793
  function (moduleType, compilerOptions) {
4781
4794
  var _this = this;
@@ -4895,7 +4908,7 @@ function optionsReducer(dst, objs) {
4895
4908
  /**
4896
4909
  * A reference to an Angular application running on a page.
4897
4910
  *
4898
- * @stable
4911
+ *
4899
4912
  */
4900
4913
  var ApplicationRef = /** @class */ (function () {
4901
4914
  /** @internal */
@@ -5301,7 +5314,7 @@ var Renderer2 = /** @class */ (function () {
5301
5314
  * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the
5302
5315
  * [Security Guide](http://g.co/ng/security).
5303
5316
  *
5304
- * @stable
5317
+ *
5305
5318
  */
5306
5319
  // Note: We don't expose things like `Injector`, `ViewContainer`, ... here,
5307
5320
  // i.e. users have to ask for what they need. With that, we can build better analysis tools
@@ -5322,7 +5335,7 @@ var ElementRef = /** @class */ (function () {
5322
5335
  */
5323
5336
  /**
5324
5337
  * Used to load ng module factories.
5325
- * @stable
5338
+ *
5326
5339
  */
5327
5340
  var NgModuleFactoryLoader = /** @class */ (function () {
5328
5341
  function NgModuleFactoryLoader() {
@@ -5384,7 +5397,7 @@ function getModuleFactory(id) {
5384
5397
  * @ViewChildren(Item) items:QueryList<Item>;
5385
5398
  * }
5386
5399
  * ```
5387
- * @stable
5400
+ *
5388
5401
  */
5389
5402
  var QueryList = /** @class */ (function () {
5390
5403
  function QueryList() {
@@ -5603,7 +5616,7 @@ function checkNotEmpty(value, modulePath, exportName) {
5603
5616
  *
5604
5617
  * To instantiate Embedded Views based on a Template, use {@link ViewContainerRef#
5605
5618
  * createEmbeddedView}, which will create the View and attach it to the View Container.
5606
- * @stable
5619
+ *
5607
5620
  */
5608
5621
  var TemplateRef = /** @class */ (function () {
5609
5622
  function TemplateRef() {
@@ -5634,7 +5647,7 @@ var TemplateRef = /** @class */ (function () {
5634
5647
  *
5635
5648
  * To access a `ViewContainerRef` of an Element, you can either place a {@link Directive} injected
5636
5649
  * with `ViewContainerRef` on the Element, or you obtain it via a {@link ViewChild} query.
5637
- * @stable
5650
+ *
5638
5651
  */
5639
5652
  var ViewContainerRef = /** @class */ (function () {
5640
5653
  function ViewContainerRef() {
@@ -5650,7 +5663,7 @@ var ViewContainerRef = /** @class */ (function () {
5650
5663
  * found in the LICENSE file at https://angular.io/license
5651
5664
  */
5652
5665
  /**
5653
- * @stable
5666
+ *
5654
5667
  */
5655
5668
  var ChangeDetectorRef = /** @class */ (function () {
5656
5669
  function ChangeDetectorRef() {
@@ -5666,7 +5679,7 @@ var ChangeDetectorRef = /** @class */ (function () {
5666
5679
  * found in the LICENSE file at https://angular.io/license
5667
5680
  */
5668
5681
  /**
5669
- * @stable
5682
+ *
5670
5683
  */
5671
5684
  var ViewRef = /** @class */ (function (_super) {
5672
5685
  __extends(ViewRef, _super);
@@ -5971,7 +5984,7 @@ function devModeEqual(a, b) {
5971
5984
  * return WrappedValue.wrap(this._latestValue); // this will force update
5972
5985
  * }
5973
5986
  * ```
5974
- * @stable
5987
+ *
5975
5988
  */
5976
5989
  var WrappedValue = /** @class */ (function () {
5977
5990
  function WrappedValue(value) {
@@ -6002,7 +6015,7 @@ var WrappedValue = /** @class */ (function () {
6002
6015
  }());
6003
6016
  /**
6004
6017
  * Represents a basic change from a previous to a new value.
6005
- * @stable
6018
+ *
6006
6019
  */
6007
6020
  var SimpleChange = /** @class */ (function () {
6008
6021
  function SimpleChange(previousValue, currentValue, firstChange) {
@@ -6312,7 +6325,7 @@ var DefaultIterableDiffer = /** @class */ (function () {
6312
6325
  this._movesHead = this._movesTail = null;
6313
6326
  this._removalsHead = this._removalsTail = null;
6314
6327
  this._identityChangesHead = this._identityChangesTail = null;
6315
- // todo(vicb) when assert gets supported
6328
+ // TODO(vicb): when assert gets supported
6316
6329
  // assert(!this.isDirty);
6317
6330
  }
6318
6331
  };
@@ -6563,12 +6576,12 @@ var DefaultIterableDiffer = /** @class */ (function () {
6563
6576
  function (record, prevRecord, index) {
6564
6577
  this._insertAfter(record, prevRecord, index);
6565
6578
  if (this._additionsTail === null) {
6566
- // todo(vicb)
6579
+ // TODO(vicb):
6567
6580
  // assert(this._additionsHead === null);
6568
6581
  this._additionsTail = this._additionsHead = record;
6569
6582
  }
6570
6583
  else {
6571
- // todo(vicb)
6584
+ // TODO(vicb):
6572
6585
  // assert(_additionsTail._nextAdded === null);
6573
6586
  // assert(record._nextAdded === null);
6574
6587
  this._additionsTail = this._additionsTail._nextAdded = record;
@@ -6579,12 +6592,12 @@ var DefaultIterableDiffer = /** @class */ (function () {
6579
6592
  /** @internal */
6580
6593
  DefaultIterableDiffer.prototype._insertAfter = /** @internal */
6581
6594
  function (record, prevRecord, index) {
6582
- // todo(vicb)
6595
+ // TODO(vicb):
6583
6596
  // assert(record != prevRecord);
6584
6597
  // assert(record._next === null);
6585
6598
  // assert(record._prev === null);
6586
6599
  var next = prevRecord === null ? this._itHead : prevRecord._next;
6587
- // todo(vicb)
6600
+ // TODO(vicb):
6588
6601
  // assert(next != record);
6589
6602
  // assert(prevRecord != record);
6590
6603
  record._next = next;
@@ -6623,7 +6636,7 @@ var DefaultIterableDiffer = /** @class */ (function () {
6623
6636
  }
6624
6637
  var prev = record._prev;
6625
6638
  var next = record._next;
6626
- // todo(vicb)
6639
+ // TODO(vicb):
6627
6640
  // assert((record._prev = null) === null);
6628
6641
  // assert((record._next = null) === null);
6629
6642
  if (prev === null) {
@@ -6644,18 +6657,18 @@ var DefaultIterableDiffer = /** @class */ (function () {
6644
6657
  /** @internal */
6645
6658
  DefaultIterableDiffer.prototype._addToMoves = /** @internal */
6646
6659
  function (record, toIndex) {
6647
- // todo(vicb)
6660
+ // TODO(vicb):
6648
6661
  // assert(record._nextMoved === null);
6649
6662
  if (record.previousIndex === toIndex) {
6650
6663
  return record;
6651
6664
  }
6652
6665
  if (this._movesTail === null) {
6653
- // todo(vicb)
6666
+ // TODO(vicb):
6654
6667
  // assert(_movesHead === null);
6655
6668
  this._movesTail = this._movesHead = record;
6656
6669
  }
6657
6670
  else {
6658
- // todo(vicb)
6671
+ // TODO(vicb):
6659
6672
  // assert(_movesTail._nextMoved === null);
6660
6673
  this._movesTail = this._movesTail._nextMoved = record;
6661
6674
  }
@@ -6669,13 +6682,13 @@ var DefaultIterableDiffer = /** @class */ (function () {
6669
6682
  record.currentIndex = null;
6670
6683
  record._nextRemoved = null;
6671
6684
  if (this._removalsTail === null) {
6672
- // todo(vicb)
6685
+ // TODO(vicb):
6673
6686
  // assert(_removalsHead === null);
6674
6687
  this._removalsTail = this._removalsHead = record;
6675
6688
  record._prevRemoved = null;
6676
6689
  }
6677
6690
  else {
6678
- // todo(vicb)
6691
+ // TODO(vicb):
6679
6692
  // assert(_removalsTail._nextRemoved === null);
6680
6693
  // assert(record._nextRemoved === null);
6681
6694
  record._prevRemoved = this._removalsTail;
@@ -6699,7 +6712,7 @@ var DefaultIterableDiffer = /** @class */ (function () {
6699
6712
  return DefaultIterableDiffer;
6700
6713
  }());
6701
6714
  /**
6702
- * @stable
6715
+ *
6703
6716
  */
6704
6717
  var IterableChangeRecord_ = /** @class */ (function () {
6705
6718
  function IterableChangeRecord_(item, trackById) {
@@ -6760,10 +6773,10 @@ var _DuplicateItemRecordList = /** @class */ (function () {
6760
6773
  record._prevDup = null;
6761
6774
  }
6762
6775
  else {
6763
- // todo(vicb)
6776
+ // TODO(vicb):
6764
6777
  // assert(record.item == _head.item ||
6765
6778
  // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);
6766
- // todo(vicb)
6779
+ // TODO(vicb):
6767
6780
  // assert(record.item == _head.item ||
6768
6781
  // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);
6769
6782
  this._tail._nextDup = record;
@@ -6805,7 +6818,7 @@ var _DuplicateItemRecordList = /** @class */ (function () {
6805
6818
  * Returns whether the list of duplicates is empty.
6806
6819
  */
6807
6820
  function (record) {
6808
- // todo(vicb)
6821
+ // TODO(vicb):
6809
6822
  // assert(() {
6810
6823
  // // verify that the record being removed is in the list.
6811
6824
  // for (IterableChangeRecord_ cursor = _head; cursor != null; cursor = cursor._nextDup) {
@@ -7180,7 +7193,7 @@ var DefaultKeyValueDiffer = /** @class */ (function () {
7180
7193
  return DefaultKeyValueDiffer;
7181
7194
  }());
7182
7195
  /**
7183
- * @stable
7196
+ *
7184
7197
  */
7185
7198
  var KeyValueChangeRecord_ = /** @class */ (function () {
7186
7199
  function KeyValueChangeRecord_(key) {
@@ -7212,7 +7225,7 @@ var KeyValueChangeRecord_ = /** @class */ (function () {
7212
7225
  */
7213
7226
  /**
7214
7227
  * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
7215
- * @stable
7228
+ *
7216
7229
  */
7217
7230
  var IterableDiffers = /** @class */ (function () {
7218
7231
  function IterableDiffers(factories) {
@@ -7307,6 +7320,10 @@ var IterableDiffers = /** @class */ (function () {
7307
7320
  throw new Error("Cannot find a differ supporting object '" + iterable + "' of type '" + getTypeNameForDebugging(iterable) + "'");
7308
7321
  }
7309
7322
  };
7323
+ IterableDiffers.ngInjectableDef = defineInjectable({
7324
+ providedIn: 'root',
7325
+ factory: function () { return new IterableDiffers([new DefaultIterableDifferFactory()]); }
7326
+ });
7310
7327
  return IterableDiffers;
7311
7328
  }());
7312
7329
  function getTypeNameForDebugging(type) {
@@ -7322,7 +7339,7 @@ function getTypeNameForDebugging(type) {
7322
7339
  */
7323
7340
  /**
7324
7341
  * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
7325
- * @stable
7342
+ *
7326
7343
  */
7327
7344
  var KeyValueDiffers = /** @class */ (function () {
7328
7345
  function KeyValueDiffers(factories) {
@@ -8282,7 +8299,7 @@ function _sanitizeStyle(value) {
8282
8299
  *
8283
8300
  * See DomSanitizer for more details on security in Angular applications.
8284
8301
  *
8285
- * @stable
8302
+ *
8286
8303
  */
8287
8304
  /**
8288
8305
  * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
@@ -8291,7 +8308,7 @@ function _sanitizeStyle(value) {
8291
8308
  *
8292
8309
  * See DomSanitizer for more details on security in Angular applications.
8293
8310
  *
8294
- * @stable
8311
+ *
8295
8312
  */
8296
8313
  var SecurityContext;
8297
8314
  /**
@@ -8301,7 +8318,7 @@ var SecurityContext;
8301
8318
  *
8302
8319
  * See DomSanitizer for more details on security in Angular applications.
8303
8320
  *
8304
- * @stable
8321
+ *
8305
8322
  */
8306
8323
  (function (SecurityContext) {
8307
8324
  SecurityContext[SecurityContext["NONE"] = 0] = "NONE";
@@ -8314,7 +8331,7 @@ var SecurityContext;
8314
8331
  /**
8315
8332
  * Sanitizer is used by the views to sanitize potentially dangerous values.
8316
8333
  *
8317
- * @stable
8334
+ *
8318
8335
  */
8319
8336
  var Sanitizer = /** @class */ (function () {
8320
8337
  function Sanitizer() {
@@ -9169,7 +9186,10 @@ function initNgModule(data) {
9169
9186
  for (var i = 0; i < def.providers.length; i++) {
9170
9187
  var provDef = def.providers[i];
9171
9188
  if (!(provDef.flags & 4096 /* LazyProvider */)) {
9172
- providers[i] = _createProviderInstance$1(data, provDef);
9189
+ // Make sure the provider has not been already initialized outside this loop.
9190
+ if (providers[i] === undefined) {
9191
+ providers[i] = _createProviderInstance$1(data, provDef);
9192
+ }
9173
9193
  }
9174
9194
  }
9175
9195
  }
@@ -9890,7 +9910,7 @@ var NgModuleRef_ = /** @class */ (function () {
9890
9910
  if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }
9891
9911
  if (injectFlags === void 0) { injectFlags = 0 /* Default */; }
9892
9912
  var flags = 0;
9893
- if (injectFlags & 1 /* SkipSelf */) {
9913
+ if (injectFlags & 4 /* SkipSelf */) {
9894
9914
  flags |= 1 /* SkipSelf */;
9895
9915
  }
9896
9916
  else if (injectFlags & 2 /* Self */) {
@@ -12458,6 +12478,11 @@ function assertLessThan(actual, expected, msg) {
12458
12478
  throwError(msg);
12459
12479
  }
12460
12480
  }
12481
+ function assertGreaterThan(actual, expected, msg) {
12482
+ if (actual <= expected) {
12483
+ throwError(msg);
12484
+ }
12485
+ }
12461
12486
  function assertNull(actual, msg) {
12462
12487
  if (actual != null) {
12463
12488
  throwError(msg);
@@ -12517,8 +12542,8 @@ function queueLifecycleHooks(flags, currentView) {
12517
12542
  var tView = currentView.tView;
12518
12543
  if (tView.firstTemplatePass === true) {
12519
12544
  var start = flags >> 13;
12520
- var size = (flags & 8190 /* SIZE_MASK */) >> 1;
12521
- var end = start + size;
12545
+ var count = flags & 4095;
12546
+ var end = start + count;
12522
12547
  // It's necessary to loop through the directives at elementEnd() (rather than processing in
12523
12548
  // directiveCreate) so we can preserve the current hook order. Content, view, and destroy
12524
12549
  // hooks for projected components and directives must be called *before* their hosts.
@@ -12562,9 +12587,9 @@ function queueDestroyHooks(def, tView, i) {
12562
12587
  * @param currentView The current view
12563
12588
  */
12564
12589
  function executeInitHooks(currentView, tView, creationMode) {
12565
- if (currentView.lifecycleStage === 1 /* INIT */) {
12590
+ if (currentView.lifecycleStage === 1 /* Init */) {
12566
12591
  executeHooks((currentView.directives), tView.initHooks, tView.checkHooks, creationMode);
12567
- currentView.lifecycleStage = 2 /* AFTER_INIT */;
12592
+ currentView.lifecycleStage = 2 /* AfterInit */;
12568
12593
  }
12569
12594
  }
12570
12595
  /**
@@ -12705,6 +12730,64 @@ var domRendererFactory3 = {
12705
12730
  // Note: This hack is necessary so we don't erroneously get a circular dependency
12706
12731
  // failure based on types.
12707
12732
 
12733
+ /**
12734
+ * @license
12735
+ * Copyright Google Inc. All Rights Reserved.
12736
+ *
12737
+ * Use of this source code is governed by an MIT-style license that can be
12738
+ * found in the LICENSE file at https://angular.io/license
12739
+ */
12740
+ /**
12741
+ * Must use this method for CD (instead of === ) since NaN !== NaN
12742
+ */
12743
+ function isDifferent(a, b) {
12744
+ // NaN is the only value that is not equal to itself so the first
12745
+ // test checks if both a and b are not NaN
12746
+ return !(a !== a && b !== b) && a !== b;
12747
+ }
12748
+ function stringify$1(value) {
12749
+ if (typeof value == 'function')
12750
+ return value.name || value;
12751
+ if (typeof value == 'string')
12752
+ return value;
12753
+ if (value == null)
12754
+ return '';
12755
+ return '' + value;
12756
+ }
12757
+ /**
12758
+ * Function that throws a "not implemented" error so it's clear certain
12759
+ * behaviors/methods aren't yet ready.
12760
+ *
12761
+ * @returns Not implemented error
12762
+ */
12763
+ function notImplemented() {
12764
+ return new Error('NotImplemented');
12765
+ }
12766
+ /**
12767
+ * Flattens an array in non-recursive way. Input arrays are not modified.
12768
+ */
12769
+ function flatten$1(list) {
12770
+ var result = [];
12771
+ var i = 0;
12772
+ while (i < list.length) {
12773
+ var item = list[i];
12774
+ if (Array.isArray(item)) {
12775
+ if (item.length > 0) {
12776
+ list = item.concat(list.slice(i + 1));
12777
+ i = 0;
12778
+ }
12779
+ else {
12780
+ i++;
12781
+ }
12782
+ }
12783
+ else {
12784
+ result.push(item);
12785
+ i++;
12786
+ }
12787
+ }
12788
+ return result;
12789
+ }
12790
+
12708
12791
  /**
12709
12792
  * @license
12710
12793
  * Copyright Google Inc. All Rights Reserved.
@@ -12835,6 +12918,10 @@ function findFirstRNode(rootNode) {
12835
12918
  }
12836
12919
  return null;
12837
12920
  }
12921
+ function createTextNode(value, renderer) {
12922
+ return isProceduralRenderer(renderer) ? renderer.createText(stringify$1(value)) :
12923
+ renderer.createTextNode(stringify$1(value));
12924
+ }
12838
12925
  function addRemoveViewFromContainer(container, rootNode, insertMode, beforeNode) {
12839
12926
  ngDevMode && assertNodeType(container, 0 /* Container */);
12840
12927
  ngDevMode && assertNodeType(rootNode, 2 /* View */);
@@ -12847,6 +12934,15 @@ function addRemoveViewFromContainer(container, rootNode, insertMode, beforeNode)
12847
12934
  var renderer = container.view.renderer;
12848
12935
  if (node.type === 3 /* Element */) {
12849
12936
  if (insertMode) {
12937
+ if (!node.native) {
12938
+ // If the native element doesn't exist, this is a bound text node that hasn't yet been
12939
+ // created because update mode has not run (occurs when a bound text node is a root
12940
+ // node of a dynamically created view). See textBinding() in instructions for ctx.
12941
+ // If the native element doesn't exist, this is a bound text node that hasn't yet been
12942
+ // created because update mode has not run (occurs when a bound text node is a root
12943
+ // node of a dynamically created view). See textBinding() in instructions for ctx.
12944
+ node.native = createTextNode('', renderer);
12945
+ }
12850
12946
  isProceduralRenderer(renderer) ?
12851
12947
  renderer.insertBefore(parent, (node.native), beforeNode) :
12852
12948
  parent.insertBefore((node.native), beforeNode, true);
@@ -12980,6 +13076,7 @@ function removeView(container, removeIndex) {
12980
13076
  setViewNext(views[removeIndex - 1], viewNode.next);
12981
13077
  }
12982
13078
  views.splice(removeIndex, 1);
13079
+ viewNode.next = null;
12983
13080
  destroyViewTree(viewNode.data);
12984
13081
  addRemoveViewFromContainer(container, viewNode, false);
12985
13082
  // Notify query that view has been removed
@@ -13135,7 +13232,7 @@ function appendProjectedNode(node, currentParent, currentView) {
13135
13232
  if (node.type !== 0 /* Container */) {
13136
13233
  appendChild(currentParent, node.native, currentView);
13137
13234
  }
13138
- else if (canInsertNativeNode(currentParent, currentView)) {
13235
+ else {
13139
13236
  // The node we are adding is a Container and we are adding it to Element which
13140
13237
  // is not a component (no more re-projection).
13141
13238
  // Alternatively a container is projected at the root of a component's template
@@ -13148,6 +13245,9 @@ function appendProjectedNode(node, currentParent, currentView) {
13148
13245
  addRemoveViewFromContainer(node, views[i], true, null);
13149
13246
  }
13150
13247
  }
13248
+ if (node.dynamicLContainerNode) {
13249
+ node.dynamicLContainerNode.data.renderParent = currentParent;
13250
+ }
13151
13251
  }
13152
13252
 
13153
13253
  /**
@@ -13284,64 +13384,6 @@ function matchingSelectorIndex(tNode, selectors, textSelectors) {
13284
13384
  return 0;
13285
13385
  }
13286
13386
 
13287
- /**
13288
- * @license
13289
- * Copyright Google Inc. All Rights Reserved.
13290
- *
13291
- * Use of this source code is governed by an MIT-style license that can be
13292
- * found in the LICENSE file at https://angular.io/license
13293
- */
13294
- /**
13295
- * Must use this method for CD (instead of === ) since NaN !== NaN
13296
- */
13297
- function isDifferent(a, b) {
13298
- // NaN is the only value that is not equal to itself so the first
13299
- // test checks if both a and b are not NaN
13300
- return !(a !== a && b !== b) && a !== b;
13301
- }
13302
- function stringify$1(value) {
13303
- if (typeof value == 'function')
13304
- return value.name || value;
13305
- if (typeof value == 'string')
13306
- return value;
13307
- if (value == null)
13308
- return '';
13309
- return '' + value;
13310
- }
13311
- /**
13312
- * Function that throws a "not implemented" error so it's clear certain
13313
- * behaviors/methods aren't yet ready.
13314
- *
13315
- * @returns Not implemented error
13316
- */
13317
- function notImplemented() {
13318
- return new Error('NotImplemented');
13319
- }
13320
- /**
13321
- * Flattens an array in non-recursive way. Input arrays are not modified.
13322
- */
13323
- function flatten$1(list) {
13324
- var result = [];
13325
- var i = 0;
13326
- while (i < list.length) {
13327
- var item = list[i];
13328
- if (Array.isArray(item)) {
13329
- if (item.length > 0) {
13330
- list = item.concat(list.slice(i + 1));
13331
- i = 0;
13332
- }
13333
- else {
13334
- i++;
13335
- }
13336
- }
13337
- else {
13338
- result.push(item);
13339
- i++;
13340
- }
13341
- }
13342
- return result;
13343
- }
13344
-
13345
13387
  /** Called when directives inject each other (creating a circular dependency) */
13346
13388
  function throwCyclicDependencyError(token) {
13347
13389
  throw new Error("Cannot instantiate cyclic dependency! " + token);
@@ -13472,10 +13514,6 @@ var data;
13472
13514
  * unknown at compile-time and thus space cannot be reserved in data[].
13473
13515
  */
13474
13516
  var directives;
13475
- /**
13476
- * Points to the next binding index to read or write to.
13477
- */
13478
- var bindingIndex;
13479
13517
  /**
13480
13518
  * When a view is destroyed, listeners need to be released and outputs need to be
13481
13519
  * unsubscribed. This cleanup array stores both listener data (in chunks of 4)
@@ -13518,12 +13556,14 @@ function enterView(newView, host) {
13518
13556
  var oldView = currentView;
13519
13557
  data = newView && newView.data;
13520
13558
  directives = newView && newView.directives;
13521
- bindingIndex = newView && newView.bindingStartIndex || 0;
13522
13559
  tData = newView && newView.tView.data;
13523
13560
  creationMode = newView && (newView.flags & 1 /* CreationMode */) === 1 /* CreationMode */;
13524
13561
  firstTemplatePass = newView && newView.tView.firstTemplatePass;
13525
13562
  cleanup = newView && newView.cleanup;
13526
13563
  renderer = newView && newView.renderer;
13564
+ if (newView && newView.bindingIndex < 0) {
13565
+ newView.bindingIndex = newView.bindingStartIndex;
13566
+ }
13527
13567
  if (host != null) {
13528
13568
  previousOrParentNode = host;
13529
13569
  isParent = true;
@@ -13542,7 +13582,8 @@ function leaveView(newView) {
13542
13582
  }
13543
13583
  // Views should be clean and in update mode after being checked, so these bits are cleared
13544
13584
  currentView.flags &= ~(1 /* CreationMode */ | 4 /* Dirty */);
13545
- currentView.lifecycleStage = 1 /* INIT */;
13585
+ currentView.lifecycleStage = 1 /* Init */;
13586
+ currentView.bindingIndex = -1;
13546
13587
  enterView(newView, null);
13547
13588
  }
13548
13589
  /** Refreshes directives in this view and triggers any init/content hooks. */
@@ -13596,12 +13637,14 @@ function createLView(viewId, renderer, tView, template, context, flags) {
13596
13637
  child: null,
13597
13638
  tail: null,
13598
13639
  next: null,
13599
- bindingStartIndex: null,
13640
+ bindingStartIndex: -1,
13641
+ bindingIndex: -1,
13600
13642
  template: template,
13601
13643
  context: context,
13602
13644
  dynamicViewCount: 0,
13603
- lifecycleStage: 1 /* INIT */,
13645
+ lifecycleStage: 1 /* Init */,
13604
13646
  queries: null,
13647
+ injector: currentView && currentView.injector,
13605
13648
  };
13606
13649
  return newView;
13607
13650
  }
@@ -13693,25 +13736,22 @@ function resetApplicationState() {
13693
13736
  * @param pipes Pipe defs that should be used for matching
13694
13737
  */
13695
13738
 
13696
- function renderEmbeddedTemplate(viewNode, template, context, renderer) {
13739
+ function renderEmbeddedTemplate(viewNode, template, context, renderer, directives, pipes) {
13697
13740
  var _isParent = isParent;
13698
13741
  var _previousOrParentNode = previousOrParentNode;
13699
13742
  var oldView;
13700
13743
  try {
13701
13744
  isParent = true;
13702
13745
  previousOrParentNode = (null);
13703
- var cm = false;
13746
+ var rf = 2;
13704
13747
  if (viewNode == null) {
13705
- // TODO: revisit setting currentView when re-writing view containers
13706
- var directives_1 = currentView && currentView.tView.directiveRegistry;
13707
- var pipes = currentView && currentView.tView.pipeRegistry;
13708
- var tView = getOrCreateTView(template, directives_1, pipes);
13748
+ var tView = getOrCreateTView(template, directives || null, pipes || null);
13709
13749
  var lView = createLView(-1, renderer, tView, template, context, 2 /* CheckAlways */);
13710
13750
  viewNode = createLNode(null, 2 /* View */, null, lView);
13711
- cm = true;
13751
+ rf = 1 /* Create */;
13712
13752
  }
13713
13753
  oldView = enterView(viewNode.data, viewNode);
13714
- template(context, cm);
13754
+ template(rf, context);
13715
13755
  refreshDirectives();
13716
13756
  refreshDynamicChildren();
13717
13757
  }
@@ -13729,7 +13769,8 @@ function renderComponentOrTemplate(node, hostView, componentOrContext, template)
13729
13769
  rendererFactory.begin();
13730
13770
  }
13731
13771
  if (template) {
13732
- template((componentOrContext), creationMode);
13772
+ template(getRenderFlags(hostView), (componentOrContext));
13773
+ refreshDynamicChildren();
13733
13774
  refreshDirectives();
13734
13775
  }
13735
13776
  else {
@@ -13747,6 +13788,19 @@ function renderComponentOrTemplate(node, hostView, componentOrContext, template)
13747
13788
  leaveView(oldView);
13748
13789
  }
13749
13790
  }
13791
+ /**
13792
+ * This function returns the default configuration of rendering flags depending on when the
13793
+ * template is in creation mode or update mode. By default, the update block is run with the
13794
+ * creation block when the view is in creation mode. Otherwise, the update block is run
13795
+ * alone.
13796
+ *
13797
+ * Dynamically created views do NOT use this configuration (update block and create block are
13798
+ * always run separately).
13799
+ */
13800
+ function getRenderFlags(view) {
13801
+ return view.flags & 1 /* CreationMode */ ? 1 /* Create */ | 2 /* Update */ :
13802
+ 2 /* Update */;
13803
+ }
13750
13804
  /**
13751
13805
  * Create DOM element. The instruction must later be followed by `elementEnd()` call.
13752
13806
  *
@@ -13761,7 +13815,7 @@ function renderComponentOrTemplate(node, hostView, componentOrContext, template)
13761
13815
  */
13762
13816
  function elementStart(index, name, attrs, localRefs) {
13763
13817
  ngDevMode &&
13764
- assertNull(currentView.bindingStartIndex, 'elements should be created before any bindings');
13818
+ assertEqual(currentView.bindingStartIndex, -1, 'elements should be created before any bindings');
13765
13819
  var native = renderer.createElement(name);
13766
13820
  var node = createLNode(index, 3 /* Element */, (native), null);
13767
13821
  if (attrs)
@@ -13788,6 +13842,7 @@ function createDirectivesAndLocals(index, name, attrs, localRefs, containerData)
13788
13842
  * (so dependencies are always created before the directives that inject them).
13789
13843
  */
13790
13844
  function cacheMatchingDirectivesForNode(tNode, tView, localRefs) {
13845
+ // Please make sure to have explicit type for `exportsMap`. Inferred type triggers bug in tsickle.
13791
13846
  var exportsMap = localRefs ? { '': -1 } : null;
13792
13847
  var matches = tView.currentMatches = findDirectiveMatches(tNode);
13793
13848
  if (matches) {
@@ -13810,9 +13865,9 @@ function findDirectiveMatches(tNode) {
13810
13865
  var def = registry[i];
13811
13866
  if (isNodeMatchingSelectorList(tNode, (def.selectors))) {
13812
13867
  if (def.template) {
13813
- if (tNode.flags & 1 /* Component */)
13868
+ if (tNode.flags & 4096 /* isComponent */)
13814
13869
  throwMultipleComponentError(tNode);
13815
- tNode.flags = 1 /* Component */;
13870
+ tNode.flags = 4096 /* isComponent */;
13816
13871
  }
13817
13872
  if (def.diPublic)
13818
13873
  def.diPublic(def);
@@ -13855,18 +13910,19 @@ function initChangeDetectorIfExisting(injector, instance, view) {
13855
13910
  }
13856
13911
  }
13857
13912
  function isComponent(tNode) {
13858
- return (tNode.flags & 1 /* Component */) === 1 /* Component */;
13913
+ return (tNode.flags & 4096 /* isComponent */) === 4096 /* isComponent */;
13859
13914
  }
13860
13915
  /**
13861
13916
  * This function instantiates the given directives.
13862
13917
  */
13863
13918
  function instantiateDirectivesDirectly() {
13864
13919
  var tNode = (previousOrParentNode.tNode);
13865
- var size = (tNode.flags & 8190 /* SIZE_MASK */) >> 1;
13866
- if (size > 0) {
13867
- var startIndex = tNode.flags >> 13;
13920
+ var count = tNode.flags & 4095;
13921
+ if (count > 0) {
13922
+ var start = tNode.flags >> 13;
13923
+ var end = start + count;
13868
13924
  var tDirectives = (currentView.tView.directives);
13869
- for (var i = startIndex; i < startIndex + size; i++) {
13925
+ for (var i = start; i < end; i++) {
13870
13926
  var def = tDirectives[i];
13871
13927
  directiveCreate(i, def.factory(), def);
13872
13928
  }
@@ -13999,7 +14055,7 @@ function hostElement(tag, rNode, def) {
13999
14055
  var node = createLNode(0, 3 /* Element */, rNode, createLView(-1, renderer, getOrCreateTView(def.template, def.directiveDefs, def.pipeDefs), null, null, def.onPush ? 4 /* Dirty */ : 2 /* CheckAlways */));
14000
14056
  if (firstTemplatePass) {
14001
14057
  node.tNode = createTNode(tag, null, null);
14002
- node.tNode.flags = 1 /* Component */;
14058
+ node.tNode.flags = 4096 /* isComponent */;
14003
14059
  if (def.diPublic)
14004
14060
  def.diPublic(def);
14005
14061
  currentView.tView.directives = [def];
@@ -14173,13 +14229,14 @@ function setInputsForProperty(inputs, value) {
14173
14229
  * @returns PropertyAliases|null aggregate of all properties if any, `null` otherwise
14174
14230
  */
14175
14231
  function generatePropertyAliases(tNodeFlags, direction) {
14176
- var size = (tNodeFlags & 8190 /* SIZE_MASK */) >> 1;
14232
+ var count = tNodeFlags & 4095;
14177
14233
  var propStore = null;
14178
- if (size > 0) {
14234
+ if (count > 0) {
14179
14235
  var start = tNodeFlags >> 13;
14236
+ var end = start + count;
14180
14237
  var isInput = direction === 0;
14181
14238
  var defs = (currentView.tView.directives);
14182
- for (var i = start, ii = start + size; i < ii; i++) {
14239
+ for (var i = start; i < end; i++) {
14183
14240
  var directiveDef = defs[i];
14184
14241
  var propertyAliasMap = isInput ? directiveDef.inputs : directiveDef.outputs;
14185
14242
  for (var publicName in propertyAliasMap) {
@@ -14299,11 +14356,8 @@ function elementStyle(index, value) {
14299
14356
  */
14300
14357
  function text(index, value) {
14301
14358
  ngDevMode &&
14302
- assertNull(currentView.bindingStartIndex, 'text nodes should be created before bindings');
14303
- var textNode = value != null ?
14304
- (isProceduralRenderer(renderer) ? renderer.createText(stringify$1(value)) :
14305
- renderer.createTextNode(stringify$1(value))) :
14306
- null;
14359
+ assertEqual(currentView.bindingStartIndex, -1, 'text nodes should be created before bindings');
14360
+ var textNode = value != null ? createTextNode(value, renderer) : null;
14307
14361
  var node = createLNode(index, 3 /* Element */, textNode);
14308
14362
  // Text nodes are self closing.
14309
14363
  isParent = false;
@@ -14328,9 +14382,7 @@ function textBinding(index, value) {
14328
14382
  }
14329
14383
  else {
14330
14384
  // Node was created but DOM node creation was delayed. Create and append now.
14331
- existingNode.native = isProceduralRenderer(renderer) ?
14332
- renderer.createText(stringify$1(value)) :
14333
- renderer.createTextNode(stringify$1(value));
14385
+ existingNode.native = createTextNode(value, renderer);
14334
14386
  insertChild(existingNode, currentView);
14335
14387
  }
14336
14388
  }
@@ -14346,7 +14398,7 @@ function textBinding(index, value) {
14346
14398
  function directiveCreate(index, directive, directiveDef) {
14347
14399
  var instance = baseDirectiveCreate(index, directive, directiveDef);
14348
14400
  ngDevMode && assertNotNull(previousOrParentNode.tNode, 'previousOrParentNode.tNode');
14349
- var tNode = (previousOrParentNode.tNode);
14401
+ var tNode = previousOrParentNode.tNode;
14350
14402
  var isComponent = directiveDef.template;
14351
14403
  if (isComponent) {
14352
14404
  addComponentLogic(index, directive, directiveDef);
@@ -14382,7 +14434,7 @@ function addComponentLogic(index, instance, def) {
14382
14434
  */
14383
14435
  function baseDirectiveCreate(index, directive, directiveDef) {
14384
14436
  ngDevMode &&
14385
- assertNull(currentView.bindingStartIndex, 'directives should be created before any bindings');
14437
+ assertEqual(currentView.bindingStartIndex, -1, 'directives should be created before any bindings');
14386
14438
  ngDevMode && assertPreviousIsParent();
14387
14439
  Object.defineProperty(directive, NG_HOST_SYMBOL, { enumerable: false, value: previousOrParentNode });
14388
14440
  if (directives == null)
@@ -14391,9 +14443,21 @@ function baseDirectiveCreate(index, directive, directiveDef) {
14391
14443
  directives[index] = directive;
14392
14444
  if (firstTemplatePass) {
14393
14445
  var flags = previousOrParentNode.tNode.flags;
14394
- previousOrParentNode.tNode.flags = (flags & 8190 /* SIZE_MASK */) === 0 ?
14395
- (index << 13 /* INDX_SHIFT */) | 2 /* SIZE_SKIP */ | flags & 1 /* Component */ :
14396
- flags + 2 /* SIZE_SKIP */;
14446
+ if ((flags & 4095 /* DirectiveCountMask */) === 0) {
14447
+ // When the first directive is created:
14448
+ // - save the index,
14449
+ // - set the number of directives to 1
14450
+ // When the first directive is created:
14451
+ // - save the index,
14452
+ // - set the number of directives to 1
14453
+ previousOrParentNode.tNode.flags =
14454
+ index << 13 /* DirectiveStartingIndexShift */ | flags & 4096 /* isComponent */ | 1;
14455
+ }
14456
+ else {
14457
+ // Only need to bump the size when subsequent directives are created
14458
+ ngDevMode && assertNotEqual(flags & 4095 /* DirectiveCountMask */, 4095 /* DirectiveCountMask */, 'Reached the max number of directives');
14459
+ previousOrParentNode.tNode.flags++;
14460
+ }
14397
14461
  }
14398
14462
  else {
14399
14463
  var diPublic = directiveDef.diPublic;
@@ -14481,8 +14545,7 @@ function createLContainer(parentLNode, currentView, template) {
14481
14545
  * @param localRefs A set of local reference bindings on the element.
14482
14546
  */
14483
14547
  function container(index, template, tagName, attrs, localRefs) {
14484
- ngDevMode &&
14485
- assertNull(currentView.bindingStartIndex, 'container nodes should be created before any bindings');
14548
+ ngDevMode && assertEqual(currentView.bindingStartIndex, -1, 'container nodes should be created before any bindings');
14486
14549
  var currentParent = isParent ? previousOrParentNode : previousOrParentNode.parent;
14487
14550
  var lContainer = createLContainer(currentParent, currentView, template);
14488
14551
  var node = createLNode(index, 0 /* Container */, undefined, lContainer);
@@ -14548,6 +14611,7 @@ function refreshDynamicChildren() {
14548
14611
  var container_1 = current;
14549
14612
  for (var i = 0; i < container_1.views.length; i++) {
14550
14613
  var view = container_1.views[i];
14614
+ // The directives and pipes are not needed here as an existing view is only being refreshed.
14551
14615
  renderEmbeddedTemplate(view, (view.data.template), (view.data.context), renderer);
14552
14616
  }
14553
14617
  }
@@ -14592,12 +14656,12 @@ function embeddedViewStart(viewBlockId) {
14592
14656
  var container = (isParent ? previousOrParentNode : previousOrParentNode.parent);
14593
14657
  ngDevMode && assertNodeType(container, 0 /* Container */);
14594
14658
  var lContainer = container.data;
14595
- var existingViewNode = scanForView(container, lContainer.nextIndex, viewBlockId);
14596
- if (existingViewNode) {
14597
- previousOrParentNode = existingViewNode;
14659
+ var viewNode = scanForView(container, lContainer.nextIndex, viewBlockId);
14660
+ if (viewNode) {
14661
+ previousOrParentNode = viewNode;
14598
14662
  ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);
14599
14663
  isParent = true;
14600
- enterView(existingViewNode.data, existingViewNode);
14664
+ enterView(viewNode.data, viewNode);
14601
14665
  }
14602
14666
  else {
14603
14667
  // When we create a new LView, we always reset the state of the instructions.
@@ -14605,9 +14669,9 @@ function embeddedViewStart(viewBlockId) {
14605
14669
  if (lContainer.queries) {
14606
14670
  newView.queries = lContainer.queries.enterView(lContainer.nextIndex);
14607
14671
  }
14608
- enterView(newView, createLNode(null, 2 /* View */, null, newView));
14672
+ enterView(newView, viewNode = createLNode(null, 2 /* View */, null, newView));
14609
14673
  }
14610
- return !existingViewNode;
14674
+ return getRenderFlags(viewNode.data);
14611
14675
  }
14612
14676
  /**
14613
14677
  * Initialize the TView (e.g. static data) for the active embedded view.
@@ -14641,6 +14705,9 @@ function embeddedViewEnd() {
14641
14705
  ngDevMode && assertNodeType(containerNode, 0 /* Container */);
14642
14706
  var lContainer = containerNode.data;
14643
14707
  if (creationMode) {
14708
+ // When projected nodes are going to be inserted, the renderParent of the dynamic container
14709
+ // used by the ViewContainerRef must be set.
14710
+ setRenderParentInProjectedNodes(lContainer.renderParent, viewNode);
14644
14711
  // it is a new view, insert it into collection of views for a given container
14645
14712
  insertView(containerNode, viewNode, lContainer.nextIndex);
14646
14713
  }
@@ -14650,6 +14717,30 @@ function embeddedViewEnd() {
14650
14717
  ngDevMode && assertEqual(isParent, false, 'isParent');
14651
14718
  ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);
14652
14719
  }
14720
+ /**
14721
+ * For nodes which are projected inside an embedded view, this function sets the renderParent
14722
+ * of their dynamic LContainerNode.
14723
+ * @param renderParent the renderParent of the LContainer which contains the embedded view.
14724
+ * @param viewNode the embedded view.
14725
+ */
14726
+ function setRenderParentInProjectedNodes(renderParent, viewNode) {
14727
+ if (renderParent != null) {
14728
+ var node = viewNode.child;
14729
+ while (node) {
14730
+ if (node.type === 1 /* Projection */) {
14731
+ var nodeToProject = node.data.head;
14732
+ var lastNodeToProject = node.data.tail;
14733
+ while (nodeToProject) {
14734
+ if (nodeToProject.dynamicLContainerNode) {
14735
+ nodeToProject.dynamicLContainerNode.data.renderParent = renderParent;
14736
+ }
14737
+ nodeToProject = nodeToProject === lastNodeToProject ? null : nodeToProject.pNextOrParent;
14738
+ }
14739
+ }
14740
+ node = node.next;
14741
+ }
14742
+ }
14743
+ }
14653
14744
  /**
14654
14745
  * Refreshes components by entering the component view and processing its bindings, queries, etc.
14655
14746
  *
@@ -14774,6 +14865,7 @@ function projection(nodeIndex, localIndex, selectorIndex, attrs) {
14774
14865
  }
14775
14866
  }
14776
14867
  if (canInsertNativeNode(currentParent, currentView)) {
14868
+ ngDevMode && assertNodeType(currentParent, 3 /* Element */);
14777
14869
  // process each node in the list of projected nodes:
14778
14870
  var nodeToProject = node.data.head;
14779
14871
  var lastNodeToProject = node.data.tail;
@@ -14837,7 +14929,7 @@ function wrapListenerWithDirtyLogic(view, listenerFn) {
14837
14929
  * whenever the event fires. Also wraps with preventDefault behavior.
14838
14930
  */
14839
14931
  function wrapListenerWithDirtyAndDefault(view, listenerFn) {
14840
- return function (e) {
14932
+ return function wrapListenerIn_markViewDirty(e) {
14841
14933
  markViewDirty(view);
14842
14934
  if (listenerFn(e) === false) {
14843
14935
  e.preventDefault();
@@ -14953,7 +15045,7 @@ function detectChangesInternal(hostView, hostNode, def, component) {
14953
15045
  var oldView = enterView(hostView, hostNode);
14954
15046
  var template = def.template;
14955
15047
  try {
14956
- template(component, creationMode);
15048
+ template(getRenderFlags(hostView), component);
14957
15049
  refreshDirectives();
14958
15050
  refreshDynamicChildren();
14959
15051
  }
@@ -14989,12 +15081,9 @@ var NO_CHANGE = {};
14989
15081
  * (ie `bind()`, `interpolationX()`, `pureFunctionX()`)
14990
15082
  */
14991
15083
  function initBindings() {
14992
- // `bindingIndex` is initialized when the view is first entered when not in creation mode
14993
- ngDevMode &&
14994
- assertEqual(creationMode, true, 'should only be called in creationMode for performance reasons');
14995
- if (currentView.bindingStartIndex == null) {
14996
- bindingIndex = currentView.bindingStartIndex = data.length;
14997
- }
15084
+ ngDevMode && assertEqual(currentView.bindingStartIndex, -1, 'Binding start index should only be set once, when null');
15085
+ ngDevMode && assertEqual(currentView.bindingIndex, -1, 'Binding index should not yet be set ' + currentView.bindingIndex);
15086
+ currentView.bindingIndex = currentView.bindingStartIndex = data.length;
14998
15087
  }
14999
15088
  /**
15000
15089
  * Creates a single value binding.
@@ -15002,16 +15091,16 @@ function initBindings() {
15002
15091
  * @param value Value to diff
15003
15092
  */
15004
15093
  function bind(value) {
15005
- if (creationMode) {
15094
+ if (currentView.bindingStartIndex < 0) {
15006
15095
  initBindings();
15007
- return data[bindingIndex++] = value;
15096
+ return data[currentView.bindingIndex++] = value;
15008
15097
  }
15009
- var changed = value !== NO_CHANGE && isDifferent(data[bindingIndex], value);
15098
+ var changed = value !== NO_CHANGE && isDifferent(data[currentView.bindingIndex], value);
15010
15099
  if (changed) {
15011
- throwErrorIfNoChangesMode(creationMode, checkNoChangesMode, data[bindingIndex], value);
15012
- data[bindingIndex] = value;
15100
+ throwErrorIfNoChangesMode(creationMode, checkNoChangesMode, data[currentView.bindingIndex], value);
15101
+ data[currentView.bindingIndex] = value;
15013
15102
  }
15014
- bindingIndex++;
15103
+ currentView.bindingIndex++;
15015
15104
  return changed ? value : NO_CHANGE;
15016
15105
  }
15017
15106
  /**
@@ -15134,25 +15223,25 @@ function loadDirective(index) {
15134
15223
  }
15135
15224
  /** Gets the current binding value and increments the binding index. */
15136
15225
  function consumeBinding() {
15137
- ngDevMode && assertDataInRange(bindingIndex);
15226
+ ngDevMode && assertDataInRange(currentView.bindingIndex);
15138
15227
  ngDevMode &&
15139
- assertNotEqual(data[bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');
15140
- return data[bindingIndex++];
15228
+ assertNotEqual(data[currentView.bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');
15229
+ return data[currentView.bindingIndex++];
15141
15230
  }
15142
15231
  /** Updates binding if changed, then returns whether it was updated. */
15143
15232
  function bindingUpdated(value) {
15144
15233
  ngDevMode && assertNotEqual(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
15145
- if (creationMode) {
15234
+ if (currentView.bindingStartIndex < 0) {
15146
15235
  initBindings();
15147
15236
  }
15148
- else if (isDifferent(data[bindingIndex], value)) {
15149
- throwErrorIfNoChangesMode(creationMode, checkNoChangesMode, data[bindingIndex], value);
15237
+ else if (isDifferent(data[currentView.bindingIndex], value)) {
15238
+ throwErrorIfNoChangesMode(creationMode, checkNoChangesMode, data[currentView.bindingIndex], value);
15150
15239
  }
15151
15240
  else {
15152
- bindingIndex++;
15241
+ currentView.bindingIndex++;
15153
15242
  return false;
15154
15243
  }
15155
- data[bindingIndex++] = value;
15244
+ data[currentView.bindingIndex++] = value;
15156
15245
  return true;
15157
15246
  }
15158
15247
  /** Updates binding if changed, then returns the latest value. */
@@ -15813,6 +15902,7 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
15813
15902
  clean: CLEAN_PROMISE,
15814
15903
  };
15815
15904
  var rootView = createLView(-1, rendererFactory.createRenderer(hostNode, componentDef.rendererType), createTView(null, null), null, rootContext, componentDef.onPush ? 4 /* Dirty */ : 2 /* CheckAlways */);
15905
+ rootView.injector = opts.injector || null;
15816
15906
  var oldView = enterView(rootView, (null));
15817
15907
  var elementNode;
15818
15908
  try {
@@ -15849,6 +15939,17 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
15849
15939
  * ```
15850
15940
  */
15851
15941
 
15942
+ /**
15943
+ * Retrieve the root context for any component by walking the parent `LView` until
15944
+ * reaching the root `LView`.
15945
+ *
15946
+ * @param component any component
15947
+ */
15948
+ function getRootContext(component) {
15949
+ var rootContext = getRootView(component).context;
15950
+ ngDevMode && assertNotNull(rootContext, 'rootContext');
15951
+ return rootContext;
15952
+ }
15852
15953
  /**
15853
15954
  * Retrieve the host element of the component.
15854
15955
  *
@@ -15885,6 +15986,9 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
15885
15986
  * @param component Component to wait upon
15886
15987
  * @returns Promise which resolves when the component is rendered.
15887
15988
  */
15989
+ function whenRendered(component) {
15990
+ return getRootContext(component).clean;
15991
+ }
15888
15992
 
15889
15993
  /**
15890
15994
  * @license
@@ -15977,23 +16081,12 @@ function getOrCreateNodeInjectorForNode(node) {
15977
16081
  cbf5: parentInjector == null ? 0 : parentInjector.cbf5 | parentInjector.bf5,
15978
16082
  cbf6: parentInjector == null ? 0 : parentInjector.cbf6 | parentInjector.bf6,
15979
16083
  cbf7: parentInjector == null ? 0 : parentInjector.cbf7 | parentInjector.bf7,
15980
- injector: null,
15981
16084
  templateRef: null,
15982
16085
  viewContainerRef: null,
15983
16086
  elementRef: null,
15984
16087
  changeDetectorRef: null
15985
16088
  };
15986
16089
  }
15987
- /**
15988
- * Constructs an injection error with the given text and token.
15989
- *
15990
- * @param text The text of the error
15991
- * @param token The token associated with the error
15992
- * @returns The error that was created
15993
- */
15994
- function createInjectionError(text$$1, token) {
15995
- return new Error("ElementInjector: " + text$$1 + " [" + stringify$1(token) + "]");
15996
- }
15997
16090
  /**
15998
16091
  * Makes a directive public to the DI system by adding it to an injector's bloom filter.
15999
16092
  *
@@ -16011,33 +16104,9 @@ function diPublicInInjector(di, def) {
16011
16104
  function diPublic(def) {
16012
16105
  diPublicInInjector(getOrCreateNodeInjector(), def);
16013
16106
  }
16014
- /**
16015
- * Searches for an instance of the given type up the injector tree and returns
16016
- * that instance if found.
16017
- *
16018
- * If not found, it will propagate up to the next parent injector until the token
16019
- * is found or the top is reached.
16020
- *
16021
- * Usage example (in factory function):
16022
- *
16023
- * class SomeDirective {
16024
- * constructor(directive: DirectiveA) {}
16025
- *
16026
- * static ngDirectiveDef = defineDirective({
16027
- * type: SomeDirective,
16028
- * factory: () => new SomeDirective(directiveInject(DirectiveA))
16029
- * });
16030
- * }
16031
- *
16032
- * NOTE: use `directiveInject` with `@Directive`, `@Component`, and `@Pipe`. For
16033
- * all other injection use `inject` which does not walk the DOM render tree.
16034
- *
16035
- * @param token The directive type to search for
16036
- * @param flags Injection flags (e.g. CheckParent)
16037
- * @returns The instance found
16038
- */
16039
- function directiveInject(token, flags, defaultValue) {
16040
- return getOrCreateInjectable(getOrCreateNodeInjector(), token, flags, defaultValue);
16107
+ function directiveInject(token, flags) {
16108
+ if (flags === void 0) { flags = 0 /* Default */; }
16109
+ return getOrCreateInjectable(getOrCreateNodeInjector(), token, flags);
16041
16110
  }
16042
16111
  /**
16043
16112
  * Creates an ElementRef and stores it on the injector.
@@ -16140,7 +16209,8 @@ function getOrCreateHostChangeDetector(currentNode) {
16140
16209
  var existingRef = hostInjector && hostInjector.changeDetectorRef;
16141
16210
  return existingRef ?
16142
16211
  existingRef :
16143
- createViewRef(hostNode.data, hostNode.view.directives[hostNode.tNode.flags >> 13 /* INDX_SHIFT */]);
16212
+ createViewRef(hostNode.data, hostNode.view
16213
+ .directives[hostNode.tNode.flags >> 13 /* DirectiveStartingIndexShift */]);
16144
16214
  }
16145
16215
  /**
16146
16216
  * If the node is an embedded view, traverses up the view tree to return the closest
@@ -16170,19 +16240,19 @@ function getClosestComponentAncestor(node) {
16170
16240
  * @param flags Injection flags (e.g. CheckParent)
16171
16241
  * @returns The instance found
16172
16242
  */
16173
- function getOrCreateInjectable(di, token, flags, defaultValue) {
16243
+ function getOrCreateInjectable(di, token, flags) {
16174
16244
  var bloomHash = bloomHashBit(token);
16175
16245
  // If the token has a bloom hash, then it is a directive that is public to the injection system
16176
16246
  // (diPublic). If there is no hash, fall back to the module injector.
16177
16247
  if (bloomHash === null) {
16178
- var moduleInjector = di.injector;
16179
- if (!moduleInjector) {
16180
- if (defaultValue != null) {
16181
- return defaultValue;
16182
- }
16183
- throw createInjectionError('NotFound', token);
16248
+ var moduleInjector = getPreviousOrParentNode().view.injector;
16249
+ var formerInjector = setCurrentInjector(moduleInjector);
16250
+ try {
16251
+ return inject(token, flags);
16252
+ }
16253
+ finally {
16254
+ setCurrentInjector(formerInjector);
16184
16255
  }
16185
- moduleInjector.get(token);
16186
16256
  }
16187
16257
  else {
16188
16258
  var injector = di;
@@ -16198,20 +16268,17 @@ function getOrCreateInjectable(di, token, flags, defaultValue) {
16198
16268
  // At this point, we have an injector which *may* contain the token, so we step through the
16199
16269
  // directives associated with the injector's corresponding node to get the directive instance.
16200
16270
  var node = injector.node;
16201
- // The size of the node's directive's list is stored in certain bits of the node's flags,
16202
- // so exact it with a mask and shift it back such that the bits reflect the real value.
16203
16271
  var flags_1 = node.tNode.flags;
16204
- var size = (flags_1 & 8190 /* SIZE_MASK */) >> 1;
16205
- if (size !== 0) {
16206
- // The start index of the directives list is also part of the node's flags, but there is
16207
- // nothing to the "left" of it so it doesn't need a mask.
16272
+ var count = flags_1 & 4095;
16273
+ if (count !== 0) {
16208
16274
  var start = flags_1 >> 13;
16275
+ var end = start + count;
16209
16276
  var defs = (node.view.tView.directives);
16210
- for (var i = start, ii = start + size; i < ii; i++) {
16277
+ for (var i = start; i < end; i++) {
16211
16278
  // Get the definition for the directive at this index and, if it is injectable (diPublic),
16212
16279
  // and matches the given token, return the directive instance.
16213
16280
  var directiveDef = defs[i];
16214
- if (directiveDef.diPublic && directiveDef.type == token) {
16281
+ if (directiveDef.type === token && directiveDef.diPublic) {
16215
16282
  return getDirectiveInstance(node.view.directives[i]);
16216
16283
  }
16217
16284
  }
@@ -16229,7 +16296,7 @@ function getOrCreateInjectable(di, token, flags, defaultValue) {
16229
16296
  }
16230
16297
  // No directive was found for the given token.
16231
16298
  // TODO: implement optional, check-self, and check-parent.
16232
- throw createInjectionError('Not found', token);
16299
+ throw new Error('Implement');
16233
16300
  }
16234
16301
  function searchMatchesQueuedForCreation(node, token) {
16235
16302
  var matches = node.view.tView.currentMatches;
@@ -16399,7 +16466,7 @@ var ViewContainerRef$1 = /** @class */ (function () {
16399
16466
  };
16400
16467
  ViewContainerRef.prototype.insert = function (viewRef, index) {
16401
16468
  var lViewNode = viewRef._lViewNode;
16402
- var adjustedIdx = this._adjustAndAssertIndex(index);
16469
+ var adjustedIdx = this._adjustIndex(index);
16403
16470
  insertView(this._lContainerNode, lViewNode, adjustedIdx);
16404
16471
  // invalidate cache of next sibling RNode (we do similar operation in the containerRefreshEnd
16405
16472
  // instruction)
@@ -16419,23 +16486,33 @@ var ViewContainerRef$1 = /** @class */ (function () {
16419
16486
  }
16420
16487
  return viewRef;
16421
16488
  };
16422
- ViewContainerRef.prototype.move = function (viewRef, currentIndex) {
16423
- throw notImplemented();
16489
+ ViewContainerRef.prototype.move = function (viewRef, newIndex) {
16490
+ var index = this.indexOf(viewRef);
16491
+ this.detach(index);
16492
+ this.insert(viewRef, this._adjustIndex(newIndex));
16493
+ return viewRef;
16424
16494
  };
16425
- ViewContainerRef.prototype.indexOf = function (viewRef) { throw notImplemented(); };
16495
+ ViewContainerRef.prototype.indexOf = function (viewRef) { return this._viewRefs.indexOf(viewRef); };
16426
16496
  ViewContainerRef.prototype.remove = function (index) {
16427
- var adjustedIdx = this._adjustAndAssertIndex(index);
16497
+ this.detach(index);
16498
+ // TODO(ml): proper destroy of the ViewRef, i.e. recursively destroy the LviewNode and its
16499
+ // children, delete DOM nodes and QueryList, trigger hooks (onDestroy), destroy the renderer,
16500
+ // detach projected nodes
16501
+ };
16502
+ ViewContainerRef.prototype.detach = function (index) {
16503
+ var adjustedIdx = this._adjustIndex(index, -1);
16428
16504
  removeView(this._lContainerNode, adjustedIdx);
16429
- this._viewRefs.splice(adjustedIdx, 1);
16505
+ return this._viewRefs.splice(adjustedIdx, 1)[0] || null;
16430
16506
  };
16431
- ViewContainerRef.prototype.detach = function (index) { throw notImplemented(); };
16432
- ViewContainerRef.prototype._adjustAndAssertIndex = function (index) {
16507
+ ViewContainerRef.prototype._adjustIndex = function (index, shift) {
16508
+ if (shift === void 0) { shift = 0; }
16433
16509
  if (index == null) {
16434
- index = this._lContainerNode.data.views.length;
16510
+ return this._lContainerNode.data.views.length + shift;
16435
16511
  }
16436
- else {
16512
+ if (ngDevMode) {
16513
+ assertGreaterThan(index, -1, 'index must be positive');
16437
16514
  // +1 because it's legal to insert at the end.
16438
- ngDevMode && assertLessThan(index, this._lContainerNode.data.views.length + 1, 'index');
16515
+ assertLessThan(index, this._lContainerNode.data.views.length + 1 + shift, 'index');
16439
16516
  }
16440
16517
  return index;
16441
16518
  };
@@ -16451,16 +16528,19 @@ var ViewContainerRef$1 = /** @class */ (function () {
16451
16528
  function getOrCreateTemplateRef(di) {
16452
16529
  ngDevMode && assertNodeType(di.node, 0 /* Container */);
16453
16530
  var data = di.node.data;
16454
- return di.templateRef || (di.templateRef = new TemplateRef$1(getOrCreateElementRef(di), (data.template), getRenderer()));
16531
+ var tView = di.node.view.tView;
16532
+ return di.templateRef || (di.templateRef = new TemplateRef$1(getOrCreateElementRef(di), (data.template), getRenderer(), tView.directiveRegistry, tView.pipeRegistry));
16455
16533
  }
16456
16534
  var TemplateRef$1 = /** @class */ (function () {
16457
- function TemplateRef(elementRef, template, _renderer) {
16535
+ function TemplateRef(elementRef, template, _renderer, _directives, _pipes) {
16458
16536
  this._renderer = _renderer;
16537
+ this._directives = _directives;
16538
+ this._pipes = _pipes;
16459
16539
  this.elementRef = elementRef;
16460
16540
  this._template = template;
16461
16541
  }
16462
16542
  TemplateRef.prototype.createEmbeddedView = function (context) {
16463
- var viewNode = renderEmbeddedTemplate(null, this._template, context, this._renderer);
16543
+ var viewNode = renderEmbeddedTemplate(null, this._template, context, this._renderer, this._directives, this._pipes);
16464
16544
  return addDestroyable(new EmbeddedViewRef$1(viewNode, this._template, context));
16465
16545
  };
16466
16546
  return TemplateRef;
@@ -17116,13 +17196,15 @@ function getIdxOfMatchingSelector(tNode, selector) {
17116
17196
  * @param type Type of a directive to look for.
17117
17197
  * @returns Index of a found directive or null when none found.
17118
17198
  */
17119
- function geIdxOfMatchingDirective(node, type) {
17199
+ function getIdxOfMatchingDirective(node, type) {
17120
17200
  var defs = (node.view.tView.directives);
17121
17201
  var flags = node.tNode.flags;
17122
- var size = (flags & 8190 /* SIZE_MASK */) >> 1;
17123
- for (var i = flags >> 13 /* INDX_SHIFT */, ii = i + size; i < ii; i++) {
17202
+ var count = flags & 4095;
17203
+ var start = flags >> 13;
17204
+ var end = start + count;
17205
+ for (var i = start; i < end; i++) {
17124
17206
  var def = defs[i];
17125
- if (def.diPublic && def.type === type) {
17207
+ if (def.type === type && def.diPublic) {
17126
17208
  return i;
17127
17209
  }
17128
17210
  }
@@ -17133,7 +17215,7 @@ function readFromNodeInjector(nodeInjector, node, read, directiveIdx) {
17133
17215
  return read.read(nodeInjector, node, directiveIdx);
17134
17216
  }
17135
17217
  else {
17136
- var matchingIdx = geIdxOfMatchingDirective(node, read);
17218
+ var matchingIdx = getIdxOfMatchingDirective(node, read);
17137
17219
  if (matchingIdx !== null) {
17138
17220
  return node.view.directives[matchingIdx];
17139
17221
  }
@@ -17146,7 +17228,7 @@ function add(query, node) {
17146
17228
  var predicate = query.predicate;
17147
17229
  var type = predicate.type;
17148
17230
  if (type) {
17149
- var directiveIdx = geIdxOfMatchingDirective(node, type);
17231
+ var directiveIdx = getIdxOfMatchingDirective(node, type);
17150
17232
  if (directiveIdx !== null) {
17151
17233
  // a node is matching a predicate - determine what to read
17152
17234
  // if read token and / or strategy is not specified, use type as read token
@@ -17575,5 +17657,5 @@ function bypassSanitizationTrustString(trustedString, mode) {
17575
17657
  * Generated bundle index. Do not edit.
17576
17658
  */
17577
17659
 
17578
- export { _iterableDiffersFactory as ɵangular_packages_core_core_j, _keyValueDiffersFactory as ɵangular_packages_core_core_k, _localeFactory as ɵangular_packages_core_core_l, _appIdRandomProviderFactory as ɵangular_packages_core_core_f, defaultKeyValueDiffers as ɵangular_packages_core_core_g, DefaultIterableDifferFactory as ɵangular_packages_core_core_h, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_i, ReflectiveInjector_ as ɵangular_packages_core_core_c, ReflectiveDependency as ɵangular_packages_core_core_d, resolveReflectiveProviders as ɵangular_packages_core_core_e, wtfEnabled as ɵangular_packages_core_core_m, createScope as ɵangular_packages_core_core_o, detectWTF as ɵangular_packages_core_core_n, endTimeRange as ɵangular_packages_core_core_r, leave as ɵangular_packages_core_core_p, startTimeRange as ɵangular_packages_core_core_q, getOrCreateChangeDetectorRef as ɵangular_packages_core_core_v, getOrCreateContainerRef as ɵangular_packages_core_core_x, getOrCreateInjectable as ɵangular_packages_core_core_w, getOrCreateNodeInjector as ɵangular_packages_core_core_u, getOrCreateTemplateRef as ɵangular_packages_core_core_y, bindingUpdated as ɵangular_packages_core_core_bb, bindingUpdated2 as ɵangular_packages_core_core_bd, bindingUpdated4 as ɵangular_packages_core_core_be, checkAndUpdateBinding$1 as ɵangular_packages_core_core_bc, consumeBinding as ɵangular_packages_core_core_ba, getCreationMode as ɵangular_packages_core_core_z, makeParamDecorator as ɵangular_packages_core_core_a, makePropDecorator as ɵangular_packages_core_core_b, _def as ɵangular_packages_core_core_s, DebugContext as ɵangular_packages_core_core_t, createPlatform, assertPlatform, destroyPlatform, getPlatform, PlatformRef, ApplicationRef, enableProdMode, isDevMode, createPlatformFactory, NgProbeToken, APP_ID, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER, PLATFORM_ID, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationInitStatus, DebugElement, DebugNode, asNativeElements, getDebugNode, Testability, TestabilityRegistry, setTestabilityGetter, TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID, MissingTranslationStrategy, ApplicationModule, wtfCreateScope, wtfLeave, wtfStartTimeRange, wtfEndTimeRange, Type, EventEmitter, ErrorHandler, Sanitizer, SecurityContext, ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, ContentChild, ContentChildren, Query, ViewChild, ViewChildren, Component, Directive, HostBinding, HostListener, Input, Output, Pipe, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule, ViewEncapsulation, Version, VERSION, forwardRef, resolveForwardRef, Injectable, inject, INJECTOR, Injector, ReflectiveInjector, createInjector, ResolvedReflectiveFactory, ReflectiveKey, InjectionToken, Inject, Optional, Self, SkipSelf, Host, defineInjectable, defineInjector, NgZone, RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RootRenderer, COMPILER_OPTIONS, Compiler, CompilerFactory, ModuleWithComponentFactories, ComponentFactory, ComponentRef, ComponentFactoryResolver, ElementRef, NgModuleFactory, NgModuleRef, NgModuleFactoryLoader, getModuleFactory, QueryList, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TemplateRef, ViewContainerRef, EmbeddedViewRef, ViewRef, ChangeDetectionStrategy, ChangeDetectorRef, DefaultIterableDiffer, IterableDiffers, KeyValueDiffers, SimpleChange, WrappedValue, platformCore, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, defaultIterableDiffers as ɵdefaultIterableDiffers, devModeEqual as ɵdevModeEqual, isListLikeIterable as ɵisListLikeIterable, ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, Console as ɵConsole, setCurrentInjector as ɵsetCurrentInjector, APP_ROOT as ɵAPP_ROOT, ComponentFactory as ɵComponentFactory, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, ReflectionCapabilities as ɵReflectionCapabilities, RenderDebugInfo as ɵRenderDebugInfo, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeStyle as ɵ_sanitizeStyle, _sanitizeUrl as ɵ_sanitizeUrl, _global as ɵglobal, looseIdentical as ɵlooseIdentical, stringify as ɵstringify, makeDecorator as ɵmakeDecorator, isObservable as ɵisObservable, isPromise as ɵisPromise, clearOverrides as ɵclearOverrides, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, defineComponent as ɵdefineComponent, defineDirective as ɵdefineDirective, definePipe as ɵdefinePipe, detectChanges as ɵdetectChanges, renderComponent as ɵrenderComponent, directiveInject as ɵdirectiveInject, injectTemplateRef as ɵinjectTemplateRef, injectViewContainerRef as ɵinjectViewContainerRef, injectChangeDetectorRef as ɵinjectChangeDetectorRef, injectAttribute as ɵinjectAttribute, PublicFeature as ɵPublicFeature, NgOnChangesFeature as ɵNgOnChangesFeature, markDirty as ɵmarkDirty, NO_CHANGE as ɵNC, container as ɵC, elementStart as ɵE, listener as ɵL, text as ɵT, embeddedViewStart as ɵV, query as ɵQ, loadDirective as ɵd, projection as ɵP, bind as ɵb, interpolation1 as ɵi1, interpolation2 as ɵi2, interpolation3 as ɵi3, interpolation4 as ɵi4, interpolation5 as ɵi5, interpolation6 as ɵi6, interpolation7 as ɵi7, interpolation8 as ɵi8, interpolationV as ɵiV, pipeBind1 as ɵpb1, pipeBind2 as ɵpb2, pipeBind3 as ɵpb3, pipeBind4 as ɵpb4, pipeBindV as ɵpbV, pureFunction0 as ɵf0, pureFunction1 as ɵf1, pureFunction2 as ɵf2, pureFunction3 as ɵf3, pureFunction4 as ɵf4, pureFunction5 as ɵf5, pureFunction6 as ɵf6, pureFunction7 as ɵf7, pureFunction8 as ɵf8, pureFunctionV as ɵfV, containerRefreshStart as ɵcR, containerRefreshEnd as ɵcr, queryRefresh as ɵqR, elementEnd as ɵe, elementProperty as ɵp, projectionDef as ɵpD, elementAttribute as ɵa, elementStyle as ɵs, elementStyleNamed as ɵsn, elementClass as ɵk, elementClassNamed as ɵkn, textBinding as ɵt, embeddedViewEnd as ɵv, store as ɵst, load as ɵld, pipe as ɵPp, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, sanitizeHtml as ɵsanitizeHtml, sanitizeStyle as ɵsanitizeStyle, sanitizeUrl as ɵsanitizeUrl, sanitizeResourceUrl as ɵsanitizeResourceUrl, registerModuleFactory as ɵregisterModuleFactory, EMPTY_ARRAY$2 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, anchorDef as ɵand, createComponentFactory as ɵccf, createNgModuleFactory as ɵcmf, createRendererType2 as ɵcrt, directiveDef as ɵdid, elementDef as ɵeld, elementEventFullName as ɵelementEventFullName, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, nodeValue as ɵnov, pipeDef as ɵpid, providerDef as ɵprd, pureArrayDef as ɵpad, pureObjectDef as ɵpod, purePipeDef as ɵppd, queryDef as ɵqud, textDef as ɵted, unwrapValue as ɵunv, viewDef as ɵvid };
17660
+ export { _iterableDiffersFactory as ɵangular_packages_core_core_j, _keyValueDiffersFactory as ɵangular_packages_core_core_k, _localeFactory as ɵangular_packages_core_core_l, _appIdRandomProviderFactory as ɵangular_packages_core_core_f, defaultKeyValueDiffers as ɵangular_packages_core_core_g, DefaultIterableDifferFactory as ɵangular_packages_core_core_h, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_i, ReflectiveInjector_ as ɵangular_packages_core_core_c, ReflectiveDependency as ɵangular_packages_core_core_d, resolveReflectiveProviders as ɵangular_packages_core_core_e, wtfEnabled as ɵangular_packages_core_core_m, createScope as ɵangular_packages_core_core_o, detectWTF as ɵangular_packages_core_core_n, endTimeRange as ɵangular_packages_core_core_r, leave as ɵangular_packages_core_core_p, startTimeRange as ɵangular_packages_core_core_q, getOrCreateChangeDetectorRef as ɵangular_packages_core_core_v, getOrCreateContainerRef as ɵangular_packages_core_core_x, getOrCreateInjectable as ɵangular_packages_core_core_w, getOrCreateNodeInjector as ɵangular_packages_core_core_u, getOrCreateTemplateRef as ɵangular_packages_core_core_y, bindingUpdated as ɵangular_packages_core_core_bb, bindingUpdated2 as ɵangular_packages_core_core_bd, bindingUpdated4 as ɵangular_packages_core_core_be, checkAndUpdateBinding$1 as ɵangular_packages_core_core_bc, consumeBinding as ɵangular_packages_core_core_ba, getCreationMode as ɵangular_packages_core_core_z, makeParamDecorator as ɵangular_packages_core_core_a, makePropDecorator as ɵangular_packages_core_core_b, _def as ɵangular_packages_core_core_s, DebugContext as ɵangular_packages_core_core_t, createPlatform, assertPlatform, destroyPlatform, getPlatform, PlatformRef, ApplicationRef, enableProdMode, isDevMode, createPlatformFactory, NgProbeToken, APP_ID, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER, PLATFORM_ID, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationInitStatus, DebugElement, DebugNode, asNativeElements, getDebugNode, Testability, TestabilityRegistry, setTestabilityGetter, TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID, MissingTranslationStrategy, ApplicationModule, wtfCreateScope, wtfLeave, wtfStartTimeRange, wtfEndTimeRange, Type, EventEmitter, ErrorHandler, Sanitizer, SecurityContext, ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, ContentChild, ContentChildren, Query, ViewChild, ViewChildren, Component, Directive, HostBinding, HostListener, Input, Output, Pipe, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule, ViewEncapsulation, Version, VERSION, defineInjectable, defineInjector, forwardRef, resolveForwardRef, Injectable, inject, INJECTOR, Injector, ReflectiveInjector, createInjector, ResolvedReflectiveFactory, ReflectiveKey, InjectionToken, Inject, Optional, Self, SkipSelf, Host, NgZone, RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RootRenderer, COMPILER_OPTIONS, Compiler, CompilerFactory, ModuleWithComponentFactories, ComponentFactory, ComponentRef, ComponentFactoryResolver, ElementRef, NgModuleFactory, NgModuleRef, NgModuleFactoryLoader, getModuleFactory, QueryList, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TemplateRef, ViewContainerRef, EmbeddedViewRef, ViewRef, ChangeDetectionStrategy, ChangeDetectorRef, DefaultIterableDiffer, IterableDiffers, KeyValueDiffers, SimpleChange, WrappedValue, platformCore, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, defaultIterableDiffers as ɵdefaultIterableDiffers, devModeEqual as ɵdevModeEqual, isListLikeIterable as ɵisListLikeIterable, ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, Console as ɵConsole, inject as ɵinject, setCurrentInjector as ɵsetCurrentInjector, APP_ROOT as ɵAPP_ROOT, ComponentFactory as ɵComponentFactory, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, ReflectionCapabilities as ɵReflectionCapabilities, RenderDebugInfo as ɵRenderDebugInfo, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeStyle as ɵ_sanitizeStyle, _sanitizeUrl as ɵ_sanitizeUrl, _global as ɵglobal, looseIdentical as ɵlooseIdentical, stringify as ɵstringify, makeDecorator as ɵmakeDecorator, isObservable as ɵisObservable, isPromise as ɵisPromise, clearOverrides as ɵclearOverrides, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, defineComponent as ɵdefineComponent, defineDirective as ɵdefineDirective, definePipe as ɵdefinePipe, detectChanges as ɵdetectChanges, renderComponent as ɵrenderComponent, directiveInject as ɵdirectiveInject, injectTemplateRef as ɵinjectTemplateRef, injectViewContainerRef as ɵinjectViewContainerRef, injectChangeDetectorRef as ɵinjectChangeDetectorRef, injectAttribute as ɵinjectAttribute, PublicFeature as ɵPublicFeature, NgOnChangesFeature as ɵNgOnChangesFeature, markDirty as ɵmarkDirty, NO_CHANGE as ɵNC, container as ɵC, elementStart as ɵE, listener as ɵL, text as ɵT, embeddedViewStart as ɵV, query as ɵQ, loadDirective as ɵd, projection as ɵP, bind as ɵb, interpolation1 as ɵi1, interpolation2 as ɵi2, interpolation3 as ɵi3, interpolation4 as ɵi4, interpolation5 as ɵi5, interpolation6 as ɵi6, interpolation7 as ɵi7, interpolation8 as ɵi8, interpolationV as ɵiV, pipeBind1 as ɵpb1, pipeBind2 as ɵpb2, pipeBind3 as ɵpb3, pipeBind4 as ɵpb4, pipeBindV as ɵpbV, pureFunction0 as ɵf0, pureFunction1 as ɵf1, pureFunction2 as ɵf2, pureFunction3 as ɵf3, pureFunction4 as ɵf4, pureFunction5 as ɵf5, pureFunction6 as ɵf6, pureFunction7 as ɵf7, pureFunction8 as ɵf8, pureFunctionV as ɵfV, containerRefreshStart as ɵcR, containerRefreshEnd as ɵcr, queryRefresh as ɵqR, elementEnd as ɵe, elementProperty as ɵp, projectionDef as ɵpD, elementAttribute as ɵa, elementStyle as ɵs, elementStyleNamed as ɵsn, elementClass as ɵk, elementClassNamed as ɵkn, textBinding as ɵt, embeddedViewEnd as ɵv, store as ɵst, load as ɵld, pipe as ɵPp, whenRendered as ɵwhenRendered, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, sanitizeHtml as ɵsanitizeHtml, sanitizeStyle as ɵsanitizeStyle, sanitizeUrl as ɵsanitizeUrl, sanitizeResourceUrl as ɵsanitizeResourceUrl, registerModuleFactory as ɵregisterModuleFactory, EMPTY_ARRAY$2 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, anchorDef as ɵand, createComponentFactory as ɵccf, createNgModuleFactory as ɵcmf, createRendererType2 as ɵcrt, directiveDef as ɵdid, elementDef as ɵeld, elementEventFullName as ɵelementEventFullName, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, nodeValue as ɵnov, pipeDef as ɵpid, providerDef as ɵprd, pureArrayDef as ɵpad, pureObjectDef as ɵpod, purePipeDef as ɵppd, queryDef as ɵqud, textDef as ɵted, unwrapValue as ɵunv, viewDef as ɵvid };
17579
17661
  //# sourceMappingURL=core.js.map