@angular/core 11.1.0-next.5 → 11.1.2

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 (48) hide show
  1. package/bundles/core-testing.umd.js +2 -2
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +2 -2
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +473 -346
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +116 -117
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +237 -144
  10. package/core.metadata.json +1 -1
  11. package/esm2015/core.js +33 -33
  12. package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
  13. package/esm2015/src/core_render3_private_export.js +2 -2
  14. package/esm2015/src/di/injector_compatibility.js +39 -16
  15. package/esm2015/src/di/interface/injector.js +3 -2
  16. package/esm2015/src/di/metadata.js +22 -6
  17. package/esm2015/src/event_emitter.js +15 -15
  18. package/esm2015/src/linker/compiler.js +2 -2
  19. package/esm2015/src/linker/element_ref.js +10 -1
  20. package/esm2015/src/linker/query_list.js +39 -11
  21. package/esm2015/src/metadata/di.js +7 -3
  22. package/esm2015/src/metadata/view.js +2 -2
  23. package/esm2015/src/render3/component.js +2 -2
  24. package/esm2015/src/render3/di.js +17 -32
  25. package/esm2015/src/render3/error_code.js +28 -2
  26. package/esm2015/src/render3/index.js +2 -2
  27. package/esm2015/src/render3/instructions/lview_debug.js +24 -4
  28. package/esm2015/src/render3/interfaces/query.js +1 -1
  29. package/esm2015/src/render3/interfaces/view.js +1 -1
  30. package/esm2015/src/render3/jit/directive.js +3 -2
  31. package/esm2015/src/render3/jit/environment.js +1 -3
  32. package/esm2015/src/render3/query.js +28 -54
  33. package/esm2015/src/util/array_utils.js +25 -1
  34. package/esm2015/src/util/dom.js +25 -12
  35. package/esm2015/src/version.js +1 -1
  36. package/esm2015/src/view/query.js +5 -5
  37. package/esm2015/src/view/types.js +1 -1
  38. package/esm2015/src/view/view.js +3 -2
  39. package/esm2015/testing/src/fake_async.js +2 -2
  40. package/fesm2015/core.js +420 -297
  41. package/fesm2015/core.js.map +1 -1
  42. package/fesm2015/testing.js +2 -2
  43. package/fesm2015/testing.js.map +1 -1
  44. package/package.json +1 -1
  45. package/schematics/migrations/static-queries/index.js +3 -8
  46. package/src/r3_symbols.d.ts +1 -2
  47. package/testing/testing.d.ts +1 -1
  48. package/testing.d.ts +1 -1
package/fesm2015/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v11.1.0-next.5
2
+ * @license Angular v11.1.2
3
3
  * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -378,7 +378,8 @@ const NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafePr
378
378
  */
379
379
  var InjectFlags;
380
380
  (function (InjectFlags) {
381
- // TODO(alxhub): make this 'const' when ngc no longer writes exports of it into ngfactory files.
381
+ // TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer
382
+ // writes exports of it into ngfactory files.
382
383
  /** Check self and check parent injector if needed */
383
384
  InjectFlags[InjectFlags["Default"] = 0] = "Default";
384
385
  /**
@@ -591,7 +592,7 @@ var ViewEncapsulation;
591
592
  * Use Shadow DOM to encapsulate styles.
592
593
  *
593
594
  * For the DOM this means using modern [Shadow
594
- * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
595
+ * DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) and
595
596
  * creating a ShadowRoot for Component's Host Element.
596
597
  */
597
598
  ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
@@ -1298,16 +1299,42 @@ function getFactoryDef(type, throwNotFound) {
1298
1299
  * Use of this source code is governed by an MIT-style license that can be
1299
1300
  * found in the LICENSE file at https://angular.io/license
1300
1301
  */
1302
+ // Base URL for the error details page.
1303
+ // Keep this value in sync with a similar const in
1304
+ // `packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts`.
1305
+ const ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';
1301
1306
  class RuntimeError extends Error {
1302
1307
  constructor(code, message) {
1303
1308
  super(formatRuntimeError(code, message));
1304
1309
  this.code = code;
1305
1310
  }
1306
1311
  }
1312
+ // Contains a set of error messages that have details guides at angular.io.
1313
+ // Full list of available error guides can be found at https://angular.io/errors
1314
+ /* tslint:disable:no-toplevel-property-access */
1315
+ const RUNTIME_ERRORS_WITH_GUIDES = new Set([
1316
+ "100" /* EXPRESSION_CHANGED_AFTER_CHECKED */,
1317
+ "200" /* CYCLIC_DI_DEPENDENCY */,
1318
+ "201" /* PROVIDER_NOT_FOUND */,
1319
+ "300" /* MULTIPLE_COMPONENTS_MATCH */,
1320
+ "301" /* EXPORT_NOT_FOUND */,
1321
+ "302" /* PIPE_NOT_FOUND */,
1322
+ ]);
1323
+ /* tslint:enable:no-toplevel-property-access */
1307
1324
  /** Called to format a runtime error */
1308
1325
  function formatRuntimeError(code, message) {
1309
1326
  const fullCode = code ? `NG0${code}: ` : '';
1310
- return `${fullCode}${message}`;
1327
+ let errorMessage = `${fullCode}${message}`;
1328
+ // Some runtime errors are still thrown without `ngDevMode` (for example
1329
+ // `throwProviderNotFoundError`), so we add `ngDevMode` check here to avoid pulling
1330
+ // `RUNTIME_ERRORS_WITH_GUIDES` symbol into prod bundles.
1331
+ // TODO: revisit all instances where `RuntimeError` is thrown and see if `ngDevMode` can be added
1332
+ // there instead to tree-shake more devmode-only code (and eventually remove `ngDevMode` check
1333
+ // from this code).
1334
+ if (ngDevMode && RUNTIME_ERRORS_WITH_GUIDES.has(code)) {
1335
+ errorMessage = `${errorMessage}. Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/NG0${code}`;
1336
+ }
1337
+ return errorMessage;
1311
1338
  }
1312
1339
 
1313
1340
  /**
@@ -3023,6 +3050,12 @@ function setIncludeViewProviders(v) {
3023
3050
  */
3024
3051
  const BLOOM_SIZE = 256;
3025
3052
  const BLOOM_MASK = BLOOM_SIZE - 1;
3053
+ /**
3054
+ * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,
3055
+ * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash
3056
+ * number.
3057
+ */
3058
+ const BLOOM_BUCKET_BITS = 5;
3026
3059
  /** Counter used to generate unique IDs for directives. */
3027
3060
  let nextNgElementId = 0;
3028
3061
  /**
@@ -3049,25 +3082,15 @@ function bloomAdd(injectorIndex, tView, type) {
3049
3082
  }
3050
3083
  // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),
3051
3084
  // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.
3052
- const bloomBit = id & BLOOM_MASK;
3085
+ const bloomHash = id & BLOOM_MASK;
3053
3086
  // Create a mask that targets the specific bit associated with the directive.
3054
3087
  // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
3055
3088
  // to bit positions 0 - 31 in a 32 bit integer.
3056
- const mask = 1 << bloomBit;
3057
- // Use the raw bloomBit number to determine which bloom filter bucket we should check
3058
- // e.g: bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc
3059
- const b7 = bloomBit & 0x80;
3060
- const b6 = bloomBit & 0x40;
3061
- const b5 = bloomBit & 0x20;
3062
- const tData = tView.data;
3063
- if (b7) {
3064
- b6 ? (b5 ? (tData[injectorIndex + 7] |= mask) : (tData[injectorIndex + 6] |= mask)) :
3065
- (b5 ? (tData[injectorIndex + 5] |= mask) : (tData[injectorIndex + 4] |= mask));
3066
- }
3067
- else {
3068
- b6 ? (b5 ? (tData[injectorIndex + 3] |= mask) : (tData[injectorIndex + 2] |= mask)) :
3069
- (b5 ? (tData[injectorIndex + 1] |= mask) : (tData[injectorIndex] |= mask));
3070
- }
3089
+ const mask = 1 << bloomHash;
3090
+ // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.
3091
+ // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask
3092
+ // should be written to.
3093
+ tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
3071
3094
  }
3072
3095
  /**
3073
3096
  * Creates (or gets an existing) injector for a given element or container.
@@ -3562,21 +3585,10 @@ function bloomHasToken(bloomHash, injectorIndex, injectorView) {
3562
3585
  // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
3563
3586
  // to bit positions 0 - 31 in a 32 bit integer.
3564
3587
  const mask = 1 << bloomHash;
3565
- const b7 = bloomHash & 0x80;
3566
- const b6 = bloomHash & 0x40;
3567
- const b5 = bloomHash & 0x20;
3568
- // Our bloom filter size is 256 bits, which is eight 32-bit bloom filter buckets:
3569
- // bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc.
3570
- // Get the bloom filter value from the appropriate bucket based on the directive's bloomBit.
3571
- let value;
3572
- if (b7) {
3573
- value = b6 ? (b5 ? injectorView[injectorIndex + 7] : injectorView[injectorIndex + 6]) :
3574
- (b5 ? injectorView[injectorIndex + 5] : injectorView[injectorIndex + 4]);
3575
- }
3576
- else {
3577
- value = b6 ? (b5 ? injectorView[injectorIndex + 3] : injectorView[injectorIndex + 2]) :
3578
- (b5 ? injectorView[injectorIndex + 1] : injectorView[injectorIndex]);
3579
- }
3588
+ // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of
3589
+ // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset
3590
+ // that should be used.
3591
+ const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
3580
3592
  // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,
3581
3593
  // this injector is a potential match.
3582
3594
  return !!(value & mask);
@@ -3918,6 +3930,10 @@ class InjectionToken {
3918
3930
  * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
3919
3931
  */
3920
3932
  const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');
3933
+ // Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not
3934
+ // explicitly set. This value will be changed to `true` in v12.
3935
+ // TODO(misko): switch the default in v12 to `true`. See: packages/compiler/src/core.ts
3936
+ const emitDistinctChangesOnlyDefaultValue = false;
3921
3937
  /**
3922
3938
  * Base class for query metadata.
3923
3939
  *
@@ -3930,7 +3946,7 @@ const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponen
3930
3946
  */
3931
3947
  class Query {
3932
3948
  }
3933
- const ɵ0$1 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false }, data));
3949
+ const ɵ0$1 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
3934
3950
  /**
3935
3951
  * ContentChildren decorator and metadata.
3936
3952
  *
@@ -3949,7 +3965,7 @@ const ɵ1 = (selector, data = {}) => (Object.assign({ selector, first: true, isV
3949
3965
  * @publicApi
3950
3966
  */
3951
3967
  const ContentChild = makePropDecorator('ContentChild', ɵ1, Query);
3952
- const ɵ2 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true }, data));
3968
+ const ɵ2 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
3953
3969
  /**
3954
3970
  * ViewChildren decorator and metadata.
3955
3971
  *
@@ -4054,6 +4070,30 @@ function addAllToArray(items, arr) {
4054
4070
  arr.push(items[i]);
4055
4071
  }
4056
4072
  }
4073
+ /**
4074
+ * Determines if the contents of two arrays is identical
4075
+ *
4076
+ * @param a first array
4077
+ * @param b second array
4078
+ * @param identityAccessor Optional function for extracting stable object identity from a value in
4079
+ * the array.
4080
+ */
4081
+ function arrayEquals(a, b, identityAccessor) {
4082
+ if (a.length !== b.length)
4083
+ return false;
4084
+ for (let i = 0; i < a.length; i++) {
4085
+ let valueA = a[i];
4086
+ let valueB = b[i];
4087
+ if (identityAccessor) {
4088
+ valueA = identityAccessor(valueA);
4089
+ valueB = identityAccessor(valueB);
4090
+ }
4091
+ if (valueB !== valueA) {
4092
+ return false;
4093
+ }
4094
+ }
4095
+ return true;
4096
+ }
4057
4097
  /**
4058
4098
  * Flattens an array.
4059
4099
  */
@@ -4637,42 +4677,237 @@ function getParentCtor(ctor) {
4637
4677
  * Use of this source code is governed by an MIT-style license that can be
4638
4678
  * found in the LICENSE file at https://angular.io/license
4639
4679
  */
4640
- const ɵ0$2 = (token) => ({ token });
4680
+ const _THROW_IF_NOT_FOUND = {};
4681
+ const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
4682
+ /*
4683
+ * Name of a property (that we patch onto DI decorator), which is used as an annotation of which
4684
+ * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators
4685
+ * in the code, thus making them tree-shakable.
4686
+ */
4687
+ const DI_DECORATOR_FLAG = '__NG_DI_FLAG__';
4688
+ const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
4689
+ const NG_TOKEN_PATH = 'ngTokenPath';
4690
+ const NEW_LINE = /\n/gm;
4691
+ const NO_NEW_LINE = 'ɵ';
4692
+ const SOURCE = '__source';
4693
+ const ɵ0$2 = getClosureSafeProperty;
4694
+ const USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$2 });
4695
+ /**
4696
+ * Current injector value used by `inject`.
4697
+ * - `undefined`: it is an error to call `inject`
4698
+ * - `null`: `inject` can be called but there is no injector (limp-mode).
4699
+ * - Injector instance: Use the injector for resolution.
4700
+ */
4701
+ let _currentInjector = undefined;
4702
+ function setCurrentInjector(injector) {
4703
+ const former = _currentInjector;
4704
+ _currentInjector = injector;
4705
+ return former;
4706
+ }
4707
+ function injectInjectorOnly(token, flags = InjectFlags.Default) {
4708
+ if (_currentInjector === undefined) {
4709
+ throw new Error(`inject() must be called from an injection context`);
4710
+ }
4711
+ else if (_currentInjector === null) {
4712
+ return injectRootLimpMode(token, undefined, flags);
4713
+ }
4714
+ else {
4715
+ return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);
4716
+ }
4717
+ }
4718
+ function ɵɵinject(token, flags = InjectFlags.Default) {
4719
+ return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);
4720
+ }
4721
+ /**
4722
+ * Throws an error indicating that a factory function could not be generated by the compiler for a
4723
+ * particular class.
4724
+ *
4725
+ * This instruction allows the actual error message to be optimized away when ngDevMode is turned
4726
+ * off, saving bytes of generated code while still providing a good experience in dev mode.
4727
+ *
4728
+ * The name of the class is not mentioned here, but will be in the generated factory function name
4729
+ * and thus in the stack trace.
4730
+ *
4731
+ * @codeGenApi
4732
+ */
4733
+ function ɵɵinvalidFactoryDep(index) {
4734
+ const msg = ngDevMode ?
4735
+ `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.
4736
+ This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.
4737
+
4738
+ Please check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.` :
4739
+ 'invalid';
4740
+ throw new Error(msg);
4741
+ }
4742
+ /**
4743
+ * Injects a token from the currently active injector.
4744
+ *
4745
+ * Must be used in the context of a factory function such as one defined for an
4746
+ * `InjectionToken`. Throws an error if not called from such a context.
4747
+ *
4748
+ * Within such a factory function, using this function to request injection of a dependency
4749
+ * is faster and more type-safe than providing an additional array of dependencies
4750
+ * (as has been common with `useFactory` providers).
4751
+ *
4752
+ * @param token The injection token for the dependency to be injected.
4753
+ * @param flags Optional flags that control how injection is executed.
4754
+ * The flags correspond to injection strategies that can be specified with
4755
+ * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
4756
+ * @returns True if injection is successful, null otherwise.
4757
+ *
4758
+ * @usageNotes
4759
+ *
4760
+ * ### Example
4761
+ *
4762
+ * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4763
+ *
4764
+ * @publicApi
4765
+ */
4766
+ const inject = ɵɵinject;
4767
+ function injectArgs(types) {
4768
+ const args = [];
4769
+ for (let i = 0; i < types.length; i++) {
4770
+ const arg = resolveForwardRef(types[i]);
4771
+ if (Array.isArray(arg)) {
4772
+ if (arg.length === 0) {
4773
+ throw new Error('Arguments array must have arguments.');
4774
+ }
4775
+ let type = undefined;
4776
+ let flags = InjectFlags.Default;
4777
+ for (let j = 0; j < arg.length; j++) {
4778
+ const meta = arg[j];
4779
+ const flag = getInjectFlag(meta);
4780
+ if (typeof flag === 'number') {
4781
+ // Special case when we handle @Inject decorator.
4782
+ if (flag === -1 /* Inject */) {
4783
+ type = meta.token;
4784
+ }
4785
+ else {
4786
+ flags |= flag;
4787
+ }
4788
+ }
4789
+ else {
4790
+ type = meta;
4791
+ }
4792
+ }
4793
+ args.push(ɵɵinject(type, flags));
4794
+ }
4795
+ else {
4796
+ args.push(ɵɵinject(arg));
4797
+ }
4798
+ }
4799
+ return args;
4800
+ }
4801
+ /**
4802
+ * Attaches a given InjectFlag to a given decorator using monkey-patching.
4803
+ * Since DI decorators can be used in providers `deps` array (when provider is configured using
4804
+ * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we
4805
+ * attach the flag to make it available both as a static property and as a field on decorator
4806
+ * instance.
4807
+ *
4808
+ * @param decorator Provided DI decorator.
4809
+ * @param flag InjectFlag that should be applied.
4810
+ */
4811
+ function attachInjectFlag(decorator, flag) {
4812
+ decorator[DI_DECORATOR_FLAG] = flag;
4813
+ decorator.prototype[DI_DECORATOR_FLAG] = flag;
4814
+ return decorator;
4815
+ }
4816
+ /**
4817
+ * Reads monkey-patched property that contains InjectFlag attached to a decorator.
4818
+ *
4819
+ * @param token Token that may contain monkey-patched DI flags property.
4820
+ */
4821
+ function getInjectFlag(token) {
4822
+ return token[DI_DECORATOR_FLAG];
4823
+ }
4824
+ function catchInjectorError(e, token, injectorErrorName, source) {
4825
+ const tokenPath = e[NG_TEMP_TOKEN_PATH];
4826
+ if (token[SOURCE]) {
4827
+ tokenPath.unshift(token[SOURCE]);
4828
+ }
4829
+ e.message = formatError('\n' + e.message, tokenPath, injectorErrorName, source);
4830
+ e[NG_TOKEN_PATH] = tokenPath;
4831
+ e[NG_TEMP_TOKEN_PATH] = null;
4832
+ throw e;
4833
+ }
4834
+ function formatError(text, obj, injectorErrorName, source = null) {
4835
+ text = text && text.charAt(0) === '\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;
4836
+ let context = stringify(obj);
4837
+ if (Array.isArray(obj)) {
4838
+ context = obj.map(stringify).join(' -> ');
4839
+ }
4840
+ else if (typeof obj === 'object') {
4841
+ let parts = [];
4842
+ for (let key in obj) {
4843
+ if (obj.hasOwnProperty(key)) {
4844
+ let value = obj[key];
4845
+ parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));
4846
+ }
4847
+ }
4848
+ context = `{${parts.join(', ')}}`;
4849
+ }
4850
+ return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\n ')}`;
4851
+ }
4852
+
4853
+ /**
4854
+ * @license
4855
+ * Copyright Google LLC All Rights Reserved.
4856
+ *
4857
+ * Use of this source code is governed by an MIT-style license that can be
4858
+ * found in the LICENSE file at https://angular.io/license
4859
+ */
4860
+ const ɵ0$3 = (token) => ({ token });
4641
4861
  /**
4642
4862
  * Inject decorator and metadata.
4643
4863
  *
4644
4864
  * @Annotation
4645
4865
  * @publicApi
4646
4866
  */
4647
- const Inject = makeParamDecorator('Inject', ɵ0$2);
4867
+ const Inject = attachInjectFlag(
4868
+ // Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
4869
+ // tslint:disable-next-line: no-toplevel-property-access
4870
+ makeParamDecorator('Inject', ɵ0$3), -1 /* Inject */);
4648
4871
  /**
4649
4872
  * Optional decorator and metadata.
4650
4873
  *
4651
4874
  * @Annotation
4652
4875
  * @publicApi
4653
4876
  */
4654
- const Optional = makeParamDecorator('Optional');
4877
+ const Optional =
4878
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4879
+ // tslint:disable-next-line: no-toplevel-property-access
4880
+ attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
4655
4881
  /**
4656
4882
  * Self decorator and metadata.
4657
4883
  *
4658
4884
  * @Annotation
4659
4885
  * @publicApi
4660
4886
  */
4661
- const Self = makeParamDecorator('Self');
4887
+ const Self =
4888
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4889
+ // tslint:disable-next-line: no-toplevel-property-access
4890
+ attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
4662
4891
  /**
4663
4892
  * `SkipSelf` decorator and metadata.
4664
4893
  *
4665
4894
  * @Annotation
4666
4895
  * @publicApi
4667
4896
  */
4668
- const SkipSelf = makeParamDecorator('SkipSelf');
4897
+ const SkipSelf =
4898
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4899
+ // tslint:disable-next-line: no-toplevel-property-access
4900
+ attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
4669
4901
  /**
4670
4902
  * Host decorator and metadata.
4671
4903
  *
4672
4904
  * @Annotation
4673
4905
  * @publicApi
4674
4906
  */
4675
- const Host = makeParamDecorator('Host');
4907
+ const Host =
4908
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4909
+ // tslint:disable-next-line: no-toplevel-property-access
4910
+ attachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);
4676
4911
 
4677
4912
  /**
4678
4913
  * @license
@@ -4868,162 +5103,6 @@ function componentDefResolved(type) {
4868
5103
  componentDefPendingResolution.delete(type);
4869
5104
  }
4870
5105
 
4871
- /**
4872
- * @license
4873
- * Copyright Google LLC All Rights Reserved.
4874
- *
4875
- * Use of this source code is governed by an MIT-style license that can be
4876
- * found in the LICENSE file at https://angular.io/license
4877
- */
4878
- const _THROW_IF_NOT_FOUND = {};
4879
- const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
4880
- const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
4881
- const NG_TOKEN_PATH = 'ngTokenPath';
4882
- const NEW_LINE = /\n/gm;
4883
- const NO_NEW_LINE = 'ɵ';
4884
- const SOURCE = '__source';
4885
- const ɵ0$3 = getClosureSafeProperty;
4886
- const USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$3 });
4887
- /**
4888
- * Current injector value used by `inject`.
4889
- * - `undefined`: it is an error to call `inject`
4890
- * - `null`: `inject` can be called but there is no injector (limp-mode).
4891
- * - Injector instance: Use the injector for resolution.
4892
- */
4893
- let _currentInjector = undefined;
4894
- function setCurrentInjector(injector) {
4895
- const former = _currentInjector;
4896
- _currentInjector = injector;
4897
- return former;
4898
- }
4899
- function injectInjectorOnly(token, flags = InjectFlags.Default) {
4900
- if (_currentInjector === undefined) {
4901
- throw new Error(`inject() must be called from an injection context`);
4902
- }
4903
- else if (_currentInjector === null) {
4904
- return injectRootLimpMode(token, undefined, flags);
4905
- }
4906
- else {
4907
- return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);
4908
- }
4909
- }
4910
- function ɵɵinject(token, flags = InjectFlags.Default) {
4911
- return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);
4912
- }
4913
- /**
4914
- * Throws an error indicating that a factory function could not be generated by the compiler for a
4915
- * particular class.
4916
- *
4917
- * This instruction allows the actual error message to be optimized away when ngDevMode is turned
4918
- * off, saving bytes of generated code while still providing a good experience in dev mode.
4919
- *
4920
- * The name of the class is not mentioned here, but will be in the generated factory function name
4921
- * and thus in the stack trace.
4922
- *
4923
- * @codeGenApi
4924
- */
4925
- function ɵɵinvalidFactoryDep(index) {
4926
- const msg = ngDevMode ?
4927
- `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.
4928
- This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.
4929
-
4930
- Please check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.` :
4931
- 'invalid';
4932
- throw new Error(msg);
4933
- }
4934
- /**
4935
- * Injects a token from the currently active injector.
4936
- *
4937
- * Must be used in the context of a factory function such as one defined for an
4938
- * `InjectionToken`. Throws an error if not called from such a context.
4939
- *
4940
- * Within such a factory function, using this function to request injection of a dependency
4941
- * is faster and more type-safe than providing an additional array of dependencies
4942
- * (as has been common with `useFactory` providers).
4943
- *
4944
- * @param token The injection token for the dependency to be injected.
4945
- * @param flags Optional flags that control how injection is executed.
4946
- * The flags correspond to injection strategies that can be specified with
4947
- * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
4948
- * @returns True if injection is successful, null otherwise.
4949
- *
4950
- * @usageNotes
4951
- *
4952
- * ### Example
4953
- *
4954
- * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4955
- *
4956
- * @publicApi
4957
- */
4958
- const inject = ɵɵinject;
4959
- function injectArgs(types) {
4960
- const args = [];
4961
- for (let i = 0; i < types.length; i++) {
4962
- const arg = resolveForwardRef(types[i]);
4963
- if (Array.isArray(arg)) {
4964
- if (arg.length === 0) {
4965
- throw new Error('Arguments array must have arguments.');
4966
- }
4967
- let type = undefined;
4968
- let flags = InjectFlags.Default;
4969
- for (let j = 0; j < arg.length; j++) {
4970
- const meta = arg[j];
4971
- if (meta instanceof Optional || meta.ngMetadataName === 'Optional' || meta === Optional) {
4972
- flags |= InjectFlags.Optional;
4973
- }
4974
- else if (meta instanceof SkipSelf || meta.ngMetadataName === 'SkipSelf' || meta === SkipSelf) {
4975
- flags |= InjectFlags.SkipSelf;
4976
- }
4977
- else if (meta instanceof Self || meta.ngMetadataName === 'Self' || meta === Self) {
4978
- flags |= InjectFlags.Self;
4979
- }
4980
- else if (meta instanceof Host || meta.ngMetadataName === 'Host' || meta === Host) {
4981
- flags |= InjectFlags.Host;
4982
- }
4983
- else if (meta instanceof Inject || meta === Inject) {
4984
- type = meta.token;
4985
- }
4986
- else {
4987
- type = meta;
4988
- }
4989
- }
4990
- args.push(ɵɵinject(type, flags));
4991
- }
4992
- else {
4993
- args.push(ɵɵinject(arg));
4994
- }
4995
- }
4996
- return args;
4997
- }
4998
- function catchInjectorError(e, token, injectorErrorName, source) {
4999
- const tokenPath = e[NG_TEMP_TOKEN_PATH];
5000
- if (token[SOURCE]) {
5001
- tokenPath.unshift(token[SOURCE]);
5002
- }
5003
- e.message = formatError('\n' + e.message, tokenPath, injectorErrorName, source);
5004
- e[NG_TOKEN_PATH] = tokenPath;
5005
- e[NG_TEMP_TOKEN_PATH] = null;
5006
- throw e;
5007
- }
5008
- function formatError(text, obj, injectorErrorName, source = null) {
5009
- text = text && text.charAt(0) === '\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;
5010
- let context = stringify(obj);
5011
- if (Array.isArray(obj)) {
5012
- context = obj.map(stringify).join(' -> ');
5013
- }
5014
- else if (typeof obj === 'object') {
5015
- let parts = [];
5016
- for (let key in obj) {
5017
- if (obj.hasOwnProperty(key)) {
5018
- let value = obj[key];
5019
- parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));
5020
- }
5021
- }
5022
- context = `{${parts.join(', ')}}`;
5023
- }
5024
- return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\n ')}`;
5025
- }
5026
-
5027
5106
  /**
5028
5107
  * @license
5029
5108
  * Copyright Google LLC All Rights Reserved.
@@ -6168,14 +6247,26 @@ const NO_ERRORS_SCHEMA = {
6168
6247
  * Use of this source code is governed by an MIT-style license that can be
6169
6248
  * found in the LICENSE file at https://angular.io/license
6170
6249
  */
6171
- const END_COMMENT = /-->/g;
6172
- const END_COMMENT_ESCAPED = '-\u200B-\u200B>';
6173
6250
  /**
6174
- * Escape the content of the strings so that it can be safely inserted into a comment node.
6251
+ * Disallowed strings in the comment.
6252
+ *
6253
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
6254
+ */
6255
+ const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
6256
+ /**
6257
+ * Delimiter in the disallowed strings which needs to be wrapped with zero with character.
6258
+ */
6259
+ const COMMENT_DELIMITER = /(<|>)/;
6260
+ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
6261
+ /**
6262
+ * Escape the content of comment strings so that it can be safely inserted into a comment node.
6175
6263
  *
6176
6264
  * The issue is that HTML does not specify any way to escape comment end text inside the comment.
6177
- * `<!-- The way you close a comment is with "-->". -->`. Above the `"-->"` is meant to be text not
6178
- * an end to the comment. This can be created programmatically through DOM APIs.
6265
+ * Consider: `<!-- The way you close a comment is with ">", and "->" at the beginning or by "-->" or
6266
+ * "--!>" at the end. -->`. Above the `"-->"` is meant to be text not an end to the comment. This
6267
+ * can be created programmatically through DOM APIs. (`<!--` are also disallowed.)
6268
+ *
6269
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
6179
6270
  *
6180
6271
  * ```
6181
6272
  * div.innerHTML = div.innerHTML
@@ -6186,15 +6277,16 @@ const END_COMMENT_ESCAPED = '-\u200B-\u200B>';
6186
6277
  * opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
6187
6278
  * may contain such text and expect them to be safe.)
6188
6279
  *
6189
- * This function escapes the comment text by looking for the closing char sequence `-->` and replace
6190
- * it with `-_-_>` where the `_` is a zero width space `\u200B`. The result is that if a comment
6191
- * contains `-->` text it will render normally but it will not cause the HTML parser to close the
6192
- * comment.
6280
+ * This function escapes the comment text by looking for comment delimiters (`<` and `>`) and
6281
+ * surrounding them with `_>_` where the `_` is a zero width space `\u200B`. The result is that if a
6282
+ * comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the
6283
+ * text it will render normally but it will not cause the HTML parser to close/open the comment.
6193
6284
  *
6194
- * @param value text to make safe for comment node by escaping the comment close character sequence
6285
+ * @param value text to make safe for comment node by escaping the comment open/close character
6286
+ * sequence.
6195
6287
  */
6196
6288
  function escapeCommentText(value) {
6197
- return value.replace(END_COMMENT, END_COMMENT_ESCAPED);
6289
+ return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
6198
6290
  }
6199
6291
 
6200
6292
  /**
@@ -8594,8 +8686,21 @@ class TNode {
8594
8686
  debugNodeInjectorPath(lView) {
8595
8687
  const path = [];
8596
8688
  let injectorIndex = getInjectorIndex(this, lView);
8597
- ngDevMode && assertNodeInjector(lView, injectorIndex);
8689
+ if (injectorIndex === -1) {
8690
+ // Looks like the current `TNode` does not have `NodeInjector` associated with it => look for
8691
+ // parent NodeInjector.
8692
+ const parentLocation = getParentInjectorLocation(this, lView);
8693
+ if (parentLocation !== NO_PARENT_INJECTOR) {
8694
+ // We found a parent, so start searching from the parent location.
8695
+ injectorIndex = getParentInjectorIndex(parentLocation);
8696
+ lView = getParentInjectorView(parentLocation, lView);
8697
+ }
8698
+ else {
8699
+ // No parents have been found, so there are no `NodeInjector`s to consult.
8700
+ }
8701
+ }
8598
8702
  while (injectorIndex !== -1) {
8703
+ ngDevMode && assertNodeInjector(lView, injectorIndex);
8599
8704
  const tNode = lView[TVIEW].data[injectorIndex + 8 /* TNODE */];
8600
8705
  path.push(buildDebugNode(tNode, lView));
8601
8706
  const parentLocation = lView[injectorIndex + 8 /* PARENT */];
@@ -8929,11 +9034,15 @@ function buildDebugNode(tNode, lView) {
8929
9034
  return {
8930
9035
  html: toHtml(native),
8931
9036
  type: toTNodeTypeAsString(tNode.type),
9037
+ tNode,
8932
9038
  native: native,
8933
9039
  children: toDebugNodes(tNode.child, lView),
8934
9040
  factories,
8935
9041
  instances,
8936
- injector: buildNodeInjectorDebug(tNode, tView, lView)
9042
+ injector: buildNodeInjectorDebug(tNode, tView, lView),
9043
+ get injectorResolutionPath() {
9044
+ return tNode.debugNodeInjectorPath(lView);
9045
+ },
8937
9046
  };
8938
9047
  }
8939
9048
  function buildNodeInjectorDebug(tNode, tView, lView) {
@@ -8977,6 +9086,9 @@ function binary(array, idx) {
8977
9086
  * @param idx
8978
9087
  */
8979
9088
  function toBloom(array, idx) {
9089
+ if (idx < 0) {
9090
+ return 'NO_NODE_INJECTOR';
9091
+ }
8980
9092
  return `${binary(array, idx + 7)}_${binary(array, idx + 6)}_${binary(array, idx + 5)}_${binary(array, idx + 4)}_${binary(array, idx + 3)}_${binary(array, idx + 2)}_${binary(array, idx + 1)}_${binary(array, idx + 0)}`;
8981
9093
  }
8982
9094
  class LContainerDebug {
@@ -12220,7 +12332,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
12220
12332
  ngDevMode && assertIndexInRange(rootView, index);
12221
12333
  rootView[index] = rNode;
12222
12334
  // '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
12223
- // the same time we want to communicate the the debug `TNode` that this is a special `TNode`
12335
+ // the same time we want to communicate the debug `TNode` that this is a special `TNode`
12224
12336
  // representing a host element.
12225
12337
  const tNode = getOrCreateTNode(tView, index, 2 /* Element */, '#host', null);
12226
12338
  const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
@@ -21145,6 +21257,15 @@ class ElementRef {
21145
21257
  * @nocollapse
21146
21258
  */
21147
21259
  ElementRef.__NG_ELEMENT_ID__ = SWITCH_ELEMENT_REF_FACTORY;
21260
+ /**
21261
+ * Unwraps `ElementRef` and return the `nativeElement`.
21262
+ *
21263
+ * @param value value to unwrap
21264
+ * @returns `nativeElement` if `ElementRef` otherwise returns value as is.
21265
+ */
21266
+ function unwrapElementRef(value) {
21267
+ return value instanceof ElementRef ? value.nativeElement : value;
21268
+ }
21148
21269
 
21149
21270
  /**
21150
21271
  * @license
@@ -21248,7 +21369,7 @@ class Version {
21248
21369
  /**
21249
21370
  * @publicApi
21250
21371
  */
21251
- const VERSION = new Version('11.1.0-next.5');
21372
+ const VERSION = new Version('11.1.2');
21252
21373
 
21253
21374
  /**
21254
21375
  * @license
@@ -25735,36 +25856,36 @@ class EventEmitter_ extends Subject {
25735
25856
  emit(value) {
25736
25857
  super.next(value);
25737
25858
  }
25738
- subscribe(generatorOrNext, error, complete) {
25859
+ subscribe(observerOrNext, error, complete) {
25739
25860
  let schedulerFn;
25740
25861
  let errorFn = (err) => null;
25741
25862
  let completeFn = () => null;
25742
- if (generatorOrNext && typeof generatorOrNext === 'object') {
25863
+ if (observerOrNext && typeof observerOrNext === 'object') {
25743
25864
  schedulerFn = this.__isAsync ? (value) => {
25744
- setTimeout(() => generatorOrNext.next(value));
25865
+ setTimeout(() => observerOrNext.next(value));
25745
25866
  } : (value) => {
25746
- generatorOrNext.next(value);
25867
+ observerOrNext.next(value);
25747
25868
  };
25748
- if (generatorOrNext.error) {
25869
+ if (observerOrNext.error) {
25749
25870
  errorFn = this.__isAsync ? (err) => {
25750
- setTimeout(() => generatorOrNext.error(err));
25871
+ setTimeout(() => observerOrNext.error(err));
25751
25872
  } : (err) => {
25752
- generatorOrNext.error(err);
25873
+ observerOrNext.error(err);
25753
25874
  };
25754
25875
  }
25755
- if (generatorOrNext.complete) {
25876
+ if (observerOrNext.complete) {
25756
25877
  completeFn = this.__isAsync ? () => {
25757
- setTimeout(() => generatorOrNext.complete());
25878
+ setTimeout(() => observerOrNext.complete());
25758
25879
  } : () => {
25759
- generatorOrNext.complete();
25880
+ observerOrNext.complete();
25760
25881
  };
25761
25882
  }
25762
25883
  }
25763
25884
  else {
25764
25885
  schedulerFn = this.__isAsync ? (value) => {
25765
- setTimeout(() => generatorOrNext(value));
25886
+ setTimeout(() => observerOrNext(value));
25766
25887
  } : (value) => {
25767
- generatorOrNext(value);
25888
+ observerOrNext(value);
25768
25889
  };
25769
25890
  if (error) {
25770
25891
  errorFn = this.__isAsync ? (err) => {
@@ -25782,8 +25903,8 @@ class EventEmitter_ extends Subject {
25782
25903
  }
25783
25904
  }
25784
25905
  const sink = super.subscribe(schedulerFn, errorFn, completeFn);
25785
- if (generatorOrNext instanceof Subscription) {
25786
- generatorOrNext.add(sink);
25906
+ if (observerOrNext instanceof Subscription) {
25907
+ observerOrNext.add(sink);
25787
25908
  }
25788
25909
  return sink;
25789
25910
  }
@@ -25830,11 +25951,21 @@ function symbolIterator() {
25830
25951
  * @publicApi
25831
25952
  */
25832
25953
  class QueryList {
25833
- constructor() {
25954
+ /**
25955
+ * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
25956
+ * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
25957
+ * the same result) This is set to `false` for backwards compatibility but will be changed to
25958
+ * true in v12.
25959
+ */
25960
+ constructor(_emitDistinctChangesOnly = false) {
25961
+ this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
25834
25962
  this.dirty = true;
25835
25963
  this._results = [];
25836
- this.changes = new EventEmitter();
25964
+ this._changesDetected = false;
25965
+ this._changes = null;
25837
25966
  this.length = 0;
25967
+ this.first = undefined;
25968
+ this.last = undefined;
25838
25969
  // This function should be declared on the prototype, but doing so there will cause the class
25839
25970
  // declaration to have side-effects and become not tree-shakable. For this reason we do it in
25840
25971
  // the constructor.
@@ -25844,6 +25975,12 @@ class QueryList {
25844
25975
  if (!proto[symbol])
25845
25976
  proto[symbol] = symbolIterator;
25846
25977
  }
25978
+ /**
25979
+ * Returns `Observable` of `QueryList` notifying the subscriber of changes.
25980
+ */
25981
+ get changes() {
25982
+ return this._changes || (this._changes = new EventEmitter());
25983
+ }
25847
25984
  /**
25848
25985
  * Returns the QueryList entry at `index`.
25849
25986
  */
@@ -25907,19 +26044,31 @@ class QueryList {
25907
26044
  * occurs.
25908
26045
  *
25909
26046
  * @param resultsTree The query results to store
26047
+ * @param identityAccessor Optional function for extracting stable object identity from a value
26048
+ * in the array. This function is executed for each element of the query result list while
26049
+ * comparing current query list with the new one (provided as a first argument of the `reset`
26050
+ * function) to detect if the lists are different. If the function is not provided, elements
26051
+ * are compared as is (without any pre-processing).
25910
26052
  */
25911
- reset(resultsTree) {
25912
- this._results = flatten(resultsTree);
25913
- this.dirty = false;
25914
- this.length = this._results.length;
25915
- this.last = this._results[this.length - 1];
25916
- this.first = this._results[0];
26053
+ reset(resultsTree, identityAccessor) {
26054
+ // Cast to `QueryListInternal` so that we can mutate fields which are readonly for the usage of
26055
+ // QueryList (but not for QueryList itself.)
26056
+ const self = this;
26057
+ self.dirty = false;
26058
+ const newResultFlat = flatten(resultsTree);
26059
+ if (this._changesDetected = !arrayEquals(self._results, newResultFlat, identityAccessor)) {
26060
+ self._results = newResultFlat;
26061
+ self.length = newResultFlat.length;
26062
+ self.last = newResultFlat[this.length - 1];
26063
+ self.first = newResultFlat[0];
26064
+ }
25917
26065
  }
25918
26066
  /**
25919
26067
  * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
25920
26068
  */
25921
26069
  notifyOnChanges() {
25922
- this.changes.emit(this);
26070
+ if (this._changes && (this._changesDetected || !this._emitDistinctChangesOnly))
26071
+ this._changes.emit(this);
25923
26072
  }
25924
26073
  /** internal */
25925
26074
  setDirty() {
@@ -26011,10 +26160,9 @@ class LQueries_ {
26011
26160
  }
26012
26161
  }
26013
26162
  class TQueryMetadata_ {
26014
- constructor(predicate, descendants, isStatic, read = null) {
26163
+ constructor(predicate, flags, read = null) {
26015
26164
  this.predicate = predicate;
26016
- this.descendants = descendants;
26017
- this.isStatic = isStatic;
26165
+ this.flags = flags;
26018
26166
  this.read = read;
26019
26167
  }
26020
26168
  }
@@ -26107,7 +26255,8 @@ class TQuery_ {
26107
26255
  return null;
26108
26256
  }
26109
26257
  isApplyingToNode(tNode) {
26110
- if (this._appliesToNextNode && this.metadata.descendants === false) {
26258
+ if (this._appliesToNextNode &&
26259
+ (this.metadata.flags & 1 /* descendants */) !== 1 /* descendants */) {
26111
26260
  const declarationNodeIdx = this._declarationNodeIndex;
26112
26261
  let parent = tNode.parent;
26113
26262
  // Determine if a given TNode is a "direct" child of a node on which a content query was
@@ -26319,7 +26468,9 @@ function ɵɵqueryRefresh(queryList) {
26319
26468
  const queryIndex = getCurrentQueryIndex();
26320
26469
  setCurrentQueryIndex(queryIndex + 1);
26321
26470
  const tQuery = getTQuery(tView, queryIndex);
26322
- if (queryList.dirty && (isCreationMode(lView) === tQuery.metadata.isStatic)) {
26471
+ if (queryList.dirty &&
26472
+ (isCreationMode(lView) ===
26473
+ ((tQuery.metadata.flags & 2 /* isStatic */) === 2 /* isStatic */))) {
26323
26474
  if (tQuery.matches === null) {
26324
26475
  queryList.reset([]);
26325
26476
  }
@@ -26327,45 +26478,32 @@ function ɵɵqueryRefresh(queryList) {
26327
26478
  const result = tQuery.crossesNgTemplate ?
26328
26479
  collectQueryResults(tView, lView, queryIndex, []) :
26329
26480
  materializeViewResults(tView, lView, tQuery, queryIndex);
26330
- queryList.reset(result);
26481
+ queryList.reset(result, unwrapElementRef);
26331
26482
  queryList.notifyOnChanges();
26332
26483
  }
26333
26484
  return true;
26334
26485
  }
26335
26486
  return false;
26336
26487
  }
26337
- /**
26338
- * Creates new QueryList for a static view query.
26339
- *
26340
- * @param predicate The type for which the query will search
26341
- * @param descend Whether or not to descend into children
26342
- * @param read What to save in the query
26343
- *
26344
- * @codeGenApi
26345
- */
26346
- function ɵɵstaticViewQuery(predicate, descend, read) {
26347
- viewQueryInternal(getTView(), getLView(), predicate, descend, read, true);
26348
- }
26349
26488
  /**
26350
26489
  * Creates new QueryList, stores the reference in LView and returns QueryList.
26351
26490
  *
26352
26491
  * @param predicate The type for which the query will search
26353
- * @param descend Whether or not to descend into children
26492
+ * @param flags Flags associated with the query
26354
26493
  * @param read What to save in the query
26355
26494
  *
26356
26495
  * @codeGenApi
26357
26496
  */
26358
- function ɵɵviewQuery(predicate, descend, read) {
26359
- viewQueryInternal(getTView(), getLView(), predicate, descend, read, false);
26360
- }
26361
- function viewQueryInternal(tView, lView, predicate, descend, read, isStatic) {
26497
+ function ɵɵviewQuery(predicate, flags, read) {
26498
+ ngDevMode && assertNumber(flags, 'Expecting flags');
26499
+ const tView = getTView();
26362
26500
  if (tView.firstCreatePass) {
26363
- createTQuery(tView, new TQueryMetadata_(predicate, descend, isStatic, read), -1);
26364
- if (isStatic) {
26501
+ createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
26502
+ if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
26365
26503
  tView.staticViewQueries = true;
26366
26504
  }
26367
26505
  }
26368
- createLQuery(tView, lView);
26506
+ createLQuery(tView, getLView(), flags);
26369
26507
  }
26370
26508
  /**
26371
26509
  * Registers a QueryList, associated with a content query, for later refresh (part of a view
@@ -26373,39 +26511,24 @@ function viewQueryInternal(tView, lView, predicate, descend, read, isStatic) {
26373
26511
  *
26374
26512
  * @param directiveIndex Current directive index
26375
26513
  * @param predicate The type for which the query will search
26376
- * @param descend Whether or not to descend into children
26514
+ * @param flags Flags associated with the query
26377
26515
  * @param read What to save in the query
26378
26516
  * @returns QueryList<T>
26379
26517
  *
26380
26518
  * @codeGenApi
26381
26519
  */
26382
- function ɵɵcontentQuery(directiveIndex, predicate, descend, read) {
26383
- contentQueryInternal(getTView(), getLView(), predicate, descend, read, false, getCurrentTNode(), directiveIndex);
26384
- }
26385
- /**
26386
- * Registers a QueryList, associated with a static content query, for later refresh
26387
- * (part of a view refresh).
26388
- *
26389
- * @param directiveIndex Current directive index
26390
- * @param predicate The type for which the query will search
26391
- * @param descend Whether or not to descend into children
26392
- * @param read What to save in the query
26393
- * @returns QueryList<T>
26394
- *
26395
- * @codeGenApi
26396
- */
26397
- function ɵɵstaticContentQuery(directiveIndex, predicate, descend, read) {
26398
- contentQueryInternal(getTView(), getLView(), predicate, descend, read, true, getCurrentTNode(), directiveIndex);
26399
- }
26400
- function contentQueryInternal(tView, lView, predicate, descend, read, isStatic, tNode, directiveIndex) {
26520
+ function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
26521
+ ngDevMode && assertNumber(flags, 'Expecting flags');
26522
+ const tView = getTView();
26401
26523
  if (tView.firstCreatePass) {
26402
- createTQuery(tView, new TQueryMetadata_(predicate, descend, isStatic, read), tNode.index);
26524
+ const tNode = getCurrentTNode();
26525
+ createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
26403
26526
  saveContentQueryAndDirectiveIndex(tView, directiveIndex);
26404
- if (isStatic) {
26527
+ if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
26405
26528
  tView.staticContentQueries = true;
26406
26529
  }
26407
26530
  }
26408
- createLQuery(tView, lView);
26531
+ createLQuery(tView, getLView(), flags);
26409
26532
  }
26410
26533
  /**
26411
26534
  * Loads a QueryList corresponding to the current view or content query.
@@ -26421,8 +26544,8 @@ function loadQueryInternal(lView, queryIndex) {
26421
26544
  ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex);
26422
26545
  return lView[QUERIES].queries[queryIndex].queryList;
26423
26546
  }
26424
- function createLQuery(tView, lView) {
26425
- const queryList = new QueryList();
26547
+ function createLQuery(tView, lView, flags) {
26548
+ const queryList = new QueryList((flags & 4 /* emitDistinctChangesOnly */) === 4 /* emitDistinctChangesOnly */);
26426
26549
  storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
26427
26550
  if (lView[QUERIES] === null)
26428
26551
  lView[QUERIES] = new LQueries_();
@@ -26570,8 +26693,6 @@ const ɵ0$c = () => ({
26570
26693
  'ɵɵpipe': ɵɵpipe,
26571
26694
  'ɵɵqueryRefresh': ɵɵqueryRefresh,
26572
26695
  'ɵɵviewQuery': ɵɵviewQuery,
26573
- 'ɵɵstaticViewQuery': ɵɵstaticViewQuery,
26574
- 'ɵɵstaticContentQuery': ɵɵstaticContentQuery,
26575
26696
  'ɵɵloadQuery': ɵɵloadQuery,
26576
26697
  'ɵɵcontentQuery': ɵɵcontentQuery,
26577
26698
  'ɵɵreference': ɵɵreference,
@@ -27345,7 +27466,8 @@ function convertToR3QueryMetadata(propertyName, ann) {
27345
27466
  descendants: ann.descendants,
27346
27467
  first: ann.first,
27347
27468
  read: ann.read ? ann.read : null,
27348
- static: !!ann.static
27469
+ static: !!ann.static,
27470
+ emitDistinctChangesOnly: !!ann.emitDistinctChangesOnly,
27349
27471
  };
27350
27472
  }
27351
27473
  function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
@@ -27955,7 +28077,7 @@ const ivyEnabled = SWITCH_IVY_ENABLED__PRE_R3__;
27955
28077
  * found in the LICENSE file at https://angular.io/license
27956
28078
  */
27957
28079
  /**
27958
- * Combination of NgModuleFactory and ComponentFactorys.
28080
+ * Combination of NgModuleFactory and ComponentFactories.
27959
28081
  *
27960
28082
  * @publicApi
27961
28083
  */
@@ -30748,8 +30870,8 @@ function queryDef(flags, id, bindings) {
30748
30870
  ngContent: null
30749
30871
  };
30750
30872
  }
30751
- function createQuery() {
30752
- return new QueryList();
30873
+ function createQuery(emitDistinctChangesOnly) {
30874
+ return new QueryList(emitDistinctChangesOnly);
30753
30875
  }
30754
30876
  function dirtyParentQueries(view) {
30755
30877
  const queryIds = view.def.nodeMatchedQueries;
@@ -30801,7 +30923,7 @@ function checkAndUpdateQuery(view, nodeDef) {
30801
30923
  newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, nodeDef.query, []);
30802
30924
  directiveInstance = view.component;
30803
30925
  }
30804
- queryList.reset(newValues);
30926
+ queryList.reset(newValues, unwrapElementRef);
30805
30927
  const bindings = nodeDef.query.bindings;
30806
30928
  let notify = false;
30807
30929
  for (let i = 0; i < bindings.length; i++) {
@@ -31562,7 +31684,8 @@ function createViewNodes(view) {
31562
31684
  break;
31563
31685
  case 67108864 /* TypeContentQuery */:
31564
31686
  case 134217728 /* TypeViewQuery */:
31565
- nodeData = createQuery();
31687
+ nodeData = createQuery((nodeDef.flags & -2147483648 /* EmitDistinctChangesOnly */) ===
31688
+ -2147483648 /* EmitDistinctChangesOnly */);
31566
31689
  break;
31567
31690
  case 8 /* TypeNgContent */:
31568
31691
  appendNgContent(view, renderHost, nodeDef);
@@ -32787,5 +32910,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
32787
32910
  * Generated bundle index. Do not edit.
32788
32911
  */
32789
32912
 
32790
- export { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID$1 as LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleFactoryLoader, NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef$1 as ViewRef, WrappedValue, asNativeElements, assertPlatform, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode$1 as getDebugNode, getModuleFactory, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ɵ0$2 as ɵ0, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, CREATE_ATTRIBUTE_DECORATOR__POST_R3__ as ɵCREATE_ATTRIBUTE_DECORATOR__POST_R3__, ChangeDetectorStatus as ɵChangeDetectorStatus, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, Compiler_compileModuleAndAllComponentsAsync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__, Compiler_compileModuleAndAllComponentsSync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__, Compiler_compileModuleAsync__POST_R3__ as ɵCompiler_compileModuleAsync__POST_R3__, Compiler_compileModuleSync__POST_R3__ as ɵCompiler_compileModuleSync__POST_R3__, ComponentFactory as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, EMPTY_ARRAY$4 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, INJECTOR_IMPL__POST_R3__ as ɵINJECTOR_IMPL__POST_R3__, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory$1 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory$1 as ɵRender3ComponentFactory, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef$1 as ɵRender3NgModuleRef, SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__ as ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__, SWITCH_COMPILE_COMPONENT__POST_R3__ as ɵSWITCH_COMPILE_COMPONENT__POST_R3__, SWITCH_COMPILE_DIRECTIVE__POST_R3__ as ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__, SWITCH_COMPILE_INJECTABLE__POST_R3__ as ɵSWITCH_COMPILE_INJECTABLE__POST_R3__, SWITCH_COMPILE_NGMODULE__POST_R3__ as ɵSWITCH_COMPILE_NGMODULE__POST_R3__, SWITCH_COMPILE_PIPE__POST_R3__ as ɵSWITCH_COMPILE_PIPE__POST_R3__, SWITCH_ELEMENT_REF_FACTORY__POST_R3__ as ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__, SWITCH_IVY_ENABLED__POST_R3__ as ɵSWITCH_IVY_ENABLED__POST_R3__, SWITCH_RENDERER2_FACTORY__POST_R3__ as ɵSWITCH_RENDERER2_FACTORY__POST_R3__, SWITCH_TEMPLATE_REF_FACTORY__POST_R3__ as ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__, SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__ as ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, anchorDef as ɵand, isForwardRef as ɵangular_packages_core_core_a, injectInjectorOnly as ɵangular_packages_core_core_b, USD_CURRENCY_CODE as ɵangular_packages_core_core_ba, _def as ɵangular_packages_core_core_bb, DebugContext as ɵangular_packages_core_core_bc, NgOnChangesFeatureImpl as ɵangular_packages_core_core_bd, SCHEDULER as ɵangular_packages_core_core_be, injectAttributeImpl as ɵangular_packages_core_core_bf, getLView as ɵangular_packages_core_core_bg, getBindingRoot as ɵangular_packages_core_core_bh, nextContextImpl as ɵangular_packages_core_core_bi, pureFunction1Internal as ɵangular_packages_core_core_bk, pureFunction2Internal as ɵangular_packages_core_core_bl, pureFunction3Internal as ɵangular_packages_core_core_bm, pureFunction4Internal as ɵangular_packages_core_core_bn, pureFunctionVInternal as ɵangular_packages_core_core_bo, getUrlSanitizer as ɵangular_packages_core_core_bp, makePropDecorator as ɵangular_packages_core_core_bq, makeParamDecorator as ɵangular_packages_core_core_br, getClosureSafeProperty as ɵangular_packages_core_core_bs, NullInjector as ɵangular_packages_core_core_bt, getInjectImplementation as ɵangular_packages_core_core_bu, getNativeByTNode as ɵangular_packages_core_core_bw, getRootContext as ɵangular_packages_core_core_by, i18nPostprocess as ɵangular_packages_core_core_bz, ReflectiveInjector_ as ɵangular_packages_core_core_c, ReflectiveDependency as ɵangular_packages_core_core_d, resolveReflectiveProviders as ɵangular_packages_core_core_e, _appIdRandomProviderFactory as ɵangular_packages_core_core_f, injectRenderer2 as ɵangular_packages_core_core_g, injectElementRef as ɵangular_packages_core_core_h, createElementRef as ɵangular_packages_core_core_i, getModuleFactory__PRE_R3__ as ɵangular_packages_core_core_j, injectTemplateRef as ɵangular_packages_core_core_k, createTemplateRef as ɵangular_packages_core_core_l, injectViewContainerRef as ɵangular_packages_core_core_m, DebugNode__PRE_R3__ as ɵangular_packages_core_core_n, DebugElement__PRE_R3__ as ɵangular_packages_core_core_o, getDebugNodeR2__PRE_R3__ as ɵangular_packages_core_core_p, injectChangeDetectorRef as ɵangular_packages_core_core_q, DefaultIterableDifferFactory as ɵangular_packages_core_core_r, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_s, defaultIterableDiffersFactory as ɵangular_packages_core_core_t, defaultKeyValueDiffersFactory as ɵangular_packages_core_core_u, _iterableDiffersFactory as ɵangular_packages_core_core_v, _keyValueDiffersFactory as ɵangular_packages_core_core_w, _localeFactory as ɵangular_packages_core_core_x, APPLICATION_MODULE_PROVIDERS as ɵangular_packages_core_core_y, zoneSchedulerFactory as ɵangular_packages_core_core_z, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, createComponentFactory as ɵccf, clearOverrides as ɵclearOverrides, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, createNgModuleFactory as ɵcmf, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory__POST_R3__ as ɵcompileNgModuleFactory__POST_R3__, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, createRendererType2 as ɵcrt, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, directiveDef as ɵdid, elementDef as ɵeld, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, getDebugNodeR2 as ɵgetDebugNodeR2, getDebugNode__POST_R3__ as ɵgetDebugNode__POST_R3__, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getModuleFactory__POST_R3__ as ɵgetModuleFactory__POST_R3__, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, initServicesIfNeeded as ɵinitServicesIfNeeded, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, isBoundToModule__POST_R3__ as ɵisBoundToModule__POST_R3__, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ivyEnabled as ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, noSideEffects as ɵnoSideEffects, nodeValue as ɵnov, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, pureArrayDef as ɵpad, patchComponentDefWithScope as ɵpatchComponentDefWithScope, pipeDef as ɵpid, pureObjectDef as ɵpod, purePipeDef as ɵppd, providerDef as ɵprd, publishDefaultGlobalUtils as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, queryDef as ɵqud, registerLocaleData as ɵregisterLocaleData, registerModuleFactory as ɵregisterModuleFactory, registerNgModuleType as ɵregisterNgModuleType, renderComponent$1 as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, textDef as ɵted, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapValue as ɵunv, unwrapSafeValue as ɵunwrapSafeValue, viewDef as ɵvid, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetFactoryOf, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinjectPipeChangeDetectorRef, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstaticContentQuery, ɵɵstaticViewQuery, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
32913
+ export { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID$1 as LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleFactoryLoader, NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef$1 as ViewRef, WrappedValue, asNativeElements, assertPlatform, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode$1 as getDebugNode, getModuleFactory, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ɵ0$3 as ɵ0, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, CREATE_ATTRIBUTE_DECORATOR__POST_R3__ as ɵCREATE_ATTRIBUTE_DECORATOR__POST_R3__, ChangeDetectorStatus as ɵChangeDetectorStatus, CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver, Compiler_compileModuleAndAllComponentsAsync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__, Compiler_compileModuleAndAllComponentsSync__POST_R3__ as ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__, Compiler_compileModuleAsync__POST_R3__ as ɵCompiler_compileModuleAsync__POST_R3__, Compiler_compileModuleSync__POST_R3__ as ɵCompiler_compileModuleSync__POST_R3__, ComponentFactory as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, EMPTY_ARRAY$4 as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, INJECTOR_IMPL__POST_R3__ as ɵINJECTOR_IMPL__POST_R3__, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory$1 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory$1 as ɵRender3ComponentFactory, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef$1 as ɵRender3NgModuleRef, SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__ as ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__, SWITCH_COMPILE_COMPONENT__POST_R3__ as ɵSWITCH_COMPILE_COMPONENT__POST_R3__, SWITCH_COMPILE_DIRECTIVE__POST_R3__ as ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__, SWITCH_COMPILE_INJECTABLE__POST_R3__ as ɵSWITCH_COMPILE_INJECTABLE__POST_R3__, SWITCH_COMPILE_NGMODULE__POST_R3__ as ɵSWITCH_COMPILE_NGMODULE__POST_R3__, SWITCH_COMPILE_PIPE__POST_R3__ as ɵSWITCH_COMPILE_PIPE__POST_R3__, SWITCH_ELEMENT_REF_FACTORY__POST_R3__ as ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__, SWITCH_IVY_ENABLED__POST_R3__ as ɵSWITCH_IVY_ENABLED__POST_R3__, SWITCH_RENDERER2_FACTORY__POST_R3__ as ɵSWITCH_RENDERER2_FACTORY__POST_R3__, SWITCH_TEMPLATE_REF_FACTORY__POST_R3__ as ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__, SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__ as ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, anchorDef as ɵand, isForwardRef as ɵangular_packages_core_core_a, injectInjectorOnly as ɵangular_packages_core_core_b, zoneSchedulerFactory as ɵangular_packages_core_core_ba, USD_CURRENCY_CODE as ɵangular_packages_core_core_bb, _def as ɵangular_packages_core_core_bc, DebugContext as ɵangular_packages_core_core_bd, NgOnChangesFeatureImpl as ɵangular_packages_core_core_be, SCHEDULER as ɵangular_packages_core_core_bf, injectAttributeImpl as ɵangular_packages_core_core_bg, getLView as ɵangular_packages_core_core_bh, getBindingRoot as ɵangular_packages_core_core_bi, nextContextImpl as ɵangular_packages_core_core_bj, pureFunction1Internal as ɵangular_packages_core_core_bl, pureFunction2Internal as ɵangular_packages_core_core_bm, pureFunction3Internal as ɵangular_packages_core_core_bn, pureFunction4Internal as ɵangular_packages_core_core_bo, pureFunctionVInternal as ɵangular_packages_core_core_bp, getUrlSanitizer as ɵangular_packages_core_core_bq, makePropDecorator as ɵangular_packages_core_core_br, makeParamDecorator as ɵangular_packages_core_core_bs, getClosureSafeProperty as ɵangular_packages_core_core_bv, NullInjector as ɵangular_packages_core_core_bw, getInjectImplementation as ɵangular_packages_core_core_bx, getNativeByTNode as ɵangular_packages_core_core_bz, attachInjectFlag as ɵangular_packages_core_core_c, getRootContext as ɵangular_packages_core_core_cb, i18nPostprocess as ɵangular_packages_core_core_cc, ReflectiveInjector_ as ɵangular_packages_core_core_d, ReflectiveDependency as ɵangular_packages_core_core_e, resolveReflectiveProviders as ɵangular_packages_core_core_f, _appIdRandomProviderFactory as ɵangular_packages_core_core_g, injectRenderer2 as ɵangular_packages_core_core_h, injectElementRef as ɵangular_packages_core_core_i, createElementRef as ɵangular_packages_core_core_j, getModuleFactory__PRE_R3__ as ɵangular_packages_core_core_k, injectTemplateRef as ɵangular_packages_core_core_l, createTemplateRef as ɵangular_packages_core_core_m, injectViewContainerRef as ɵangular_packages_core_core_n, DebugNode__PRE_R3__ as ɵangular_packages_core_core_o, DebugElement__PRE_R3__ as ɵangular_packages_core_core_p, getDebugNodeR2__PRE_R3__ as ɵangular_packages_core_core_q, injectChangeDetectorRef as ɵangular_packages_core_core_r, DefaultIterableDifferFactory as ɵangular_packages_core_core_s, DefaultKeyValueDifferFactory as ɵangular_packages_core_core_t, defaultIterableDiffersFactory as ɵangular_packages_core_core_u, defaultKeyValueDiffersFactory as ɵangular_packages_core_core_v, _iterableDiffersFactory as ɵangular_packages_core_core_w, _keyValueDiffersFactory as ɵangular_packages_core_core_x, _localeFactory as ɵangular_packages_core_core_y, APPLICATION_MODULE_PROVIDERS as ɵangular_packages_core_core_z, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, createComponentFactory as ɵccf, clearOverrides as ɵclearOverrides, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, createNgModuleFactory as ɵcmf, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory__POST_R3__ as ɵcompileNgModuleFactory__POST_R3__, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, createRendererType2 as ɵcrt, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, directiveDef as ɵdid, elementDef as ɵeld, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, getDebugNodeR2 as ɵgetDebugNodeR2, getDebugNode__POST_R3__ as ɵgetDebugNode__POST_R3__, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getModuleFactory__POST_R3__ as ɵgetModuleFactory__POST_R3__, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, initServicesIfNeeded as ɵinitServicesIfNeeded, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, isBoundToModule__POST_R3__ as ɵisBoundToModule__POST_R3__, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ivyEnabled as ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, moduleDef as ɵmod, moduleProvideDef as ɵmpd, ngContentDef as ɵncd, noSideEffects as ɵnoSideEffects, nodeValue as ɵnov, overrideComponentView as ɵoverrideComponentView, overrideProvider as ɵoverrideProvider, pureArrayDef as ɵpad, patchComponentDefWithScope as ɵpatchComponentDefWithScope, pipeDef as ɵpid, pureObjectDef as ɵpod, purePipeDef as ɵppd, providerDef as ɵprd, publishDefaultGlobalUtils as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, queryDef as ɵqud, registerLocaleData as ɵregisterLocaleData, registerModuleFactory as ɵregisterModuleFactory, registerNgModuleType as ɵregisterNgModuleType, renderComponent$1 as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, textDef as ɵted, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapValue as ɵunv, unwrapSafeValue as ɵunwrapSafeValue, viewDef as ɵvid, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetFactoryOf, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinjectPipeChangeDetectorRef, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
32791
32914
  //# sourceMappingURL=core.js.map