@angular/core 11.1.0-next.4 → 11.1.1

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 (49) 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 +475 -342
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +123 -124
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +227 -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/linker/compiler.js +2 -2
  18. package/esm2015/src/linker/element_ref.js +10 -1
  19. package/esm2015/src/linker/query_list.js +39 -11
  20. package/esm2015/src/linker/view_container_ref.js +2 -2
  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 +27 -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/render3/view_ref.js +23 -12
  34. package/esm2015/src/util/array_utils.js +25 -1
  35. package/esm2015/src/util/dom.js +25 -12
  36. package/esm2015/src/version.js +1 -1
  37. package/esm2015/src/view/query.js +5 -5
  38. package/esm2015/src/view/types.js +1 -1
  39. package/esm2015/src/view/view.js +3 -2
  40. package/esm2015/testing/src/fake_async.js +2 -2
  41. package/fesm2015/core.js +422 -293
  42. package/fesm2015/core.js.map +1 -1
  43. package/fesm2015/testing.js +2 -2
  44. package/fesm2015/testing.js.map +1 -1
  45. package/package.json +1 -1
  46. package/schematics/migrations/static-queries/index.js +3 -8
  47. package/src/r3_symbols.d.ts +1 -2
  48. package/testing/testing.d.ts +1 -1
  49. package/testing.d.ts +1 -1
package/fesm2015/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v11.1.0-next.4
2
+ * @license Angular v11.1.1
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,41 @@ 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
+ ]);
1322
+ /* tslint:enable:no-toplevel-property-access */
1307
1323
  /** Called to format a runtime error */
1308
1324
  function formatRuntimeError(code, message) {
1309
1325
  const fullCode = code ? `NG0${code}: ` : '';
1310
- return `${fullCode}${message}`;
1326
+ let errorMessage = `${fullCode}${message}`;
1327
+ // Some runtime errors are still thrown without `ngDevMode` (for example
1328
+ // `throwProviderNotFoundError`), so we add `ngDevMode` check here to avoid pulling
1329
+ // `RUNTIME_ERRORS_WITH_GUIDES` symbol into prod bundles.
1330
+ // TODO: revisit all instances where `RuntimeError` is thrown and see if `ngDevMode` can be added
1331
+ // there instead to tree-shake more devmode-only code (and eventually remove `ngDevMode` check
1332
+ // from this code).
1333
+ if (ngDevMode && RUNTIME_ERRORS_WITH_GUIDES.has(code)) {
1334
+ errorMessage = `${errorMessage}. Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/NG0${code}`;
1335
+ }
1336
+ return errorMessage;
1311
1337
  }
1312
1338
 
1313
1339
  /**
@@ -3023,6 +3049,12 @@ function setIncludeViewProviders(v) {
3023
3049
  */
3024
3050
  const BLOOM_SIZE = 256;
3025
3051
  const BLOOM_MASK = BLOOM_SIZE - 1;
3052
+ /**
3053
+ * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,
3054
+ * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash
3055
+ * number.
3056
+ */
3057
+ const BLOOM_BUCKET_BITS = 5;
3026
3058
  /** Counter used to generate unique IDs for directives. */
3027
3059
  let nextNgElementId = 0;
3028
3060
  /**
@@ -3049,25 +3081,15 @@ function bloomAdd(injectorIndex, tView, type) {
3049
3081
  }
3050
3082
  // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),
3051
3083
  // 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;
3084
+ const bloomHash = id & BLOOM_MASK;
3053
3085
  // Create a mask that targets the specific bit associated with the directive.
3054
3086
  // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
3055
3087
  // 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
- }
3088
+ const mask = 1 << bloomHash;
3089
+ // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.
3090
+ // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask
3091
+ // should be written to.
3092
+ tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
3071
3093
  }
3072
3094
  /**
3073
3095
  * Creates (or gets an existing) injector for a given element or container.
@@ -3562,21 +3584,10 @@ function bloomHasToken(bloomHash, injectorIndex, injectorView) {
3562
3584
  // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
3563
3585
  // to bit positions 0 - 31 in a 32 bit integer.
3564
3586
  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
- }
3587
+ // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of
3588
+ // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset
3589
+ // that should be used.
3590
+ const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
3580
3591
  // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,
3581
3592
  // this injector is a potential match.
3582
3593
  return !!(value & mask);
@@ -3918,6 +3929,10 @@ class InjectionToken {
3918
3929
  * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
3919
3930
  */
3920
3931
  const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');
3932
+ // Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not
3933
+ // explicitly set. This value will be changed to `true` in v12.
3934
+ // TODO(misko): switch the default in v12 to `true`. See: packages/compiler/src/core.ts
3935
+ const emitDistinctChangesOnlyDefaultValue = false;
3921
3936
  /**
3922
3937
  * Base class for query metadata.
3923
3938
  *
@@ -3930,7 +3945,7 @@ const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponen
3930
3945
  */
3931
3946
  class Query {
3932
3947
  }
3933
- const ɵ0$1 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false }, data));
3948
+ const ɵ0$1 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
3934
3949
  /**
3935
3950
  * ContentChildren decorator and metadata.
3936
3951
  *
@@ -3949,7 +3964,7 @@ const ɵ1 = (selector, data = {}) => (Object.assign({ selector, first: true, isV
3949
3964
  * @publicApi
3950
3965
  */
3951
3966
  const ContentChild = makePropDecorator('ContentChild', ɵ1, Query);
3952
- const ɵ2 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true }, data));
3967
+ const ɵ2 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
3953
3968
  /**
3954
3969
  * ViewChildren decorator and metadata.
3955
3970
  *
@@ -4054,6 +4069,30 @@ function addAllToArray(items, arr) {
4054
4069
  arr.push(items[i]);
4055
4070
  }
4056
4071
  }
4072
+ /**
4073
+ * Determines if the contents of two arrays is identical
4074
+ *
4075
+ * @param a first array
4076
+ * @param b second array
4077
+ * @param identityAccessor Optional function for extracting stable object identity from a value in
4078
+ * the array.
4079
+ */
4080
+ function arrayEquals(a, b, identityAccessor) {
4081
+ if (a.length !== b.length)
4082
+ return false;
4083
+ for (let i = 0; i < a.length; i++) {
4084
+ let valueA = a[i];
4085
+ let valueB = b[i];
4086
+ if (identityAccessor) {
4087
+ valueA = identityAccessor(valueA);
4088
+ valueB = identityAccessor(valueB);
4089
+ }
4090
+ if (valueB !== valueA) {
4091
+ return false;
4092
+ }
4093
+ }
4094
+ return true;
4095
+ }
4057
4096
  /**
4058
4097
  * Flattens an array.
4059
4098
  */
@@ -4637,42 +4676,237 @@ function getParentCtor(ctor) {
4637
4676
  * Use of this source code is governed by an MIT-style license that can be
4638
4677
  * found in the LICENSE file at https://angular.io/license
4639
4678
  */
4640
- const ɵ0$2 = (token) => ({ token });
4679
+ const _THROW_IF_NOT_FOUND = {};
4680
+ const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
4681
+ /*
4682
+ * Name of a property (that we patch onto DI decorator), which is used as an annotation of which
4683
+ * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators
4684
+ * in the code, thus making them tree-shakable.
4685
+ */
4686
+ const DI_DECORATOR_FLAG = '__NG_DI_FLAG__';
4687
+ const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
4688
+ const NG_TOKEN_PATH = 'ngTokenPath';
4689
+ const NEW_LINE = /\n/gm;
4690
+ const NO_NEW_LINE = 'ɵ';
4691
+ const SOURCE = '__source';
4692
+ const ɵ0$2 = getClosureSafeProperty;
4693
+ const USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$2 });
4694
+ /**
4695
+ * Current injector value used by `inject`.
4696
+ * - `undefined`: it is an error to call `inject`
4697
+ * - `null`: `inject` can be called but there is no injector (limp-mode).
4698
+ * - Injector instance: Use the injector for resolution.
4699
+ */
4700
+ let _currentInjector = undefined;
4701
+ function setCurrentInjector(injector) {
4702
+ const former = _currentInjector;
4703
+ _currentInjector = injector;
4704
+ return former;
4705
+ }
4706
+ function injectInjectorOnly(token, flags = InjectFlags.Default) {
4707
+ if (_currentInjector === undefined) {
4708
+ throw new Error(`inject() must be called from an injection context`);
4709
+ }
4710
+ else if (_currentInjector === null) {
4711
+ return injectRootLimpMode(token, undefined, flags);
4712
+ }
4713
+ else {
4714
+ return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);
4715
+ }
4716
+ }
4717
+ function ɵɵinject(token, flags = InjectFlags.Default) {
4718
+ return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);
4719
+ }
4720
+ /**
4721
+ * Throws an error indicating that a factory function could not be generated by the compiler for a
4722
+ * particular class.
4723
+ *
4724
+ * This instruction allows the actual error message to be optimized away when ngDevMode is turned
4725
+ * off, saving bytes of generated code while still providing a good experience in dev mode.
4726
+ *
4727
+ * The name of the class is not mentioned here, but will be in the generated factory function name
4728
+ * and thus in the stack trace.
4729
+ *
4730
+ * @codeGenApi
4731
+ */
4732
+ function ɵɵinvalidFactoryDep(index) {
4733
+ const msg = ngDevMode ?
4734
+ `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.
4735
+ 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.
4736
+
4737
+ 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.` :
4738
+ 'invalid';
4739
+ throw new Error(msg);
4740
+ }
4741
+ /**
4742
+ * Injects a token from the currently active injector.
4743
+ *
4744
+ * Must be used in the context of a factory function such as one defined for an
4745
+ * `InjectionToken`. Throws an error if not called from such a context.
4746
+ *
4747
+ * Within such a factory function, using this function to request injection of a dependency
4748
+ * is faster and more type-safe than providing an additional array of dependencies
4749
+ * (as has been common with `useFactory` providers).
4750
+ *
4751
+ * @param token The injection token for the dependency to be injected.
4752
+ * @param flags Optional flags that control how injection is executed.
4753
+ * The flags correspond to injection strategies that can be specified with
4754
+ * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
4755
+ * @returns True if injection is successful, null otherwise.
4756
+ *
4757
+ * @usageNotes
4758
+ *
4759
+ * ### Example
4760
+ *
4761
+ * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4762
+ *
4763
+ * @publicApi
4764
+ */
4765
+ const inject = ɵɵinject;
4766
+ function injectArgs(types) {
4767
+ const args = [];
4768
+ for (let i = 0; i < types.length; i++) {
4769
+ const arg = resolveForwardRef(types[i]);
4770
+ if (Array.isArray(arg)) {
4771
+ if (arg.length === 0) {
4772
+ throw new Error('Arguments array must have arguments.');
4773
+ }
4774
+ let type = undefined;
4775
+ let flags = InjectFlags.Default;
4776
+ for (let j = 0; j < arg.length; j++) {
4777
+ const meta = arg[j];
4778
+ const flag = getInjectFlag(meta);
4779
+ if (typeof flag === 'number') {
4780
+ // Special case when we handle @Inject decorator.
4781
+ if (flag === -1 /* Inject */) {
4782
+ type = meta.token;
4783
+ }
4784
+ else {
4785
+ flags |= flag;
4786
+ }
4787
+ }
4788
+ else {
4789
+ type = meta;
4790
+ }
4791
+ }
4792
+ args.push(ɵɵinject(type, flags));
4793
+ }
4794
+ else {
4795
+ args.push(ɵɵinject(arg));
4796
+ }
4797
+ }
4798
+ return args;
4799
+ }
4800
+ /**
4801
+ * Attaches a given InjectFlag to a given decorator using monkey-patching.
4802
+ * Since DI decorators can be used in providers `deps` array (when provider is configured using
4803
+ * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we
4804
+ * attach the flag to make it available both as a static property and as a field on decorator
4805
+ * instance.
4806
+ *
4807
+ * @param decorator Provided DI decorator.
4808
+ * @param flag InjectFlag that should be applied.
4809
+ */
4810
+ function attachInjectFlag(decorator, flag) {
4811
+ decorator[DI_DECORATOR_FLAG] = flag;
4812
+ decorator.prototype[DI_DECORATOR_FLAG] = flag;
4813
+ return decorator;
4814
+ }
4815
+ /**
4816
+ * Reads monkey-patched property that contains InjectFlag attached to a decorator.
4817
+ *
4818
+ * @param token Token that may contain monkey-patched DI flags property.
4819
+ */
4820
+ function getInjectFlag(token) {
4821
+ return token[DI_DECORATOR_FLAG];
4822
+ }
4823
+ function catchInjectorError(e, token, injectorErrorName, source) {
4824
+ const tokenPath = e[NG_TEMP_TOKEN_PATH];
4825
+ if (token[SOURCE]) {
4826
+ tokenPath.unshift(token[SOURCE]);
4827
+ }
4828
+ e.message = formatError('\n' + e.message, tokenPath, injectorErrorName, source);
4829
+ e[NG_TOKEN_PATH] = tokenPath;
4830
+ e[NG_TEMP_TOKEN_PATH] = null;
4831
+ throw e;
4832
+ }
4833
+ function formatError(text, obj, injectorErrorName, source = null) {
4834
+ text = text && text.charAt(0) === '\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;
4835
+ let context = stringify(obj);
4836
+ if (Array.isArray(obj)) {
4837
+ context = obj.map(stringify).join(' -> ');
4838
+ }
4839
+ else if (typeof obj === 'object') {
4840
+ let parts = [];
4841
+ for (let key in obj) {
4842
+ if (obj.hasOwnProperty(key)) {
4843
+ let value = obj[key];
4844
+ parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));
4845
+ }
4846
+ }
4847
+ context = `{${parts.join(', ')}}`;
4848
+ }
4849
+ return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\n ')}`;
4850
+ }
4851
+
4852
+ /**
4853
+ * @license
4854
+ * Copyright Google LLC All Rights Reserved.
4855
+ *
4856
+ * Use of this source code is governed by an MIT-style license that can be
4857
+ * found in the LICENSE file at https://angular.io/license
4858
+ */
4859
+ const ɵ0$3 = (token) => ({ token });
4641
4860
  /**
4642
4861
  * Inject decorator and metadata.
4643
4862
  *
4644
4863
  * @Annotation
4645
4864
  * @publicApi
4646
4865
  */
4647
- const Inject = makeParamDecorator('Inject', ɵ0$2);
4866
+ const Inject = attachInjectFlag(
4867
+ // Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
4868
+ // tslint:disable-next-line: no-toplevel-property-access
4869
+ makeParamDecorator('Inject', ɵ0$3), -1 /* Inject */);
4648
4870
  /**
4649
4871
  * Optional decorator and metadata.
4650
4872
  *
4651
4873
  * @Annotation
4652
4874
  * @publicApi
4653
4875
  */
4654
- const Optional = makeParamDecorator('Optional');
4876
+ const Optional =
4877
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4878
+ // tslint:disable-next-line: no-toplevel-property-access
4879
+ attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
4655
4880
  /**
4656
4881
  * Self decorator and metadata.
4657
4882
  *
4658
4883
  * @Annotation
4659
4884
  * @publicApi
4660
4885
  */
4661
- const Self = makeParamDecorator('Self');
4886
+ const Self =
4887
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4888
+ // tslint:disable-next-line: no-toplevel-property-access
4889
+ attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
4662
4890
  /**
4663
4891
  * `SkipSelf` decorator and metadata.
4664
4892
  *
4665
4893
  * @Annotation
4666
4894
  * @publicApi
4667
4895
  */
4668
- const SkipSelf = makeParamDecorator('SkipSelf');
4896
+ const SkipSelf =
4897
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4898
+ // tslint:disable-next-line: no-toplevel-property-access
4899
+ attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
4669
4900
  /**
4670
4901
  * Host decorator and metadata.
4671
4902
  *
4672
4903
  * @Annotation
4673
4904
  * @publicApi
4674
4905
  */
4675
- const Host = makeParamDecorator('Host');
4906
+ const Host =
4907
+ // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
4908
+ // tslint:disable-next-line: no-toplevel-property-access
4909
+ attachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);
4676
4910
 
4677
4911
  /**
4678
4912
  * @license
@@ -4868,162 +5102,6 @@ function componentDefResolved(type) {
4868
5102
  componentDefPendingResolution.delete(type);
4869
5103
  }
4870
5104
 
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
5105
  /**
5028
5106
  * @license
5029
5107
  * Copyright Google LLC All Rights Reserved.
@@ -6168,14 +6246,26 @@ const NO_ERRORS_SCHEMA = {
6168
6246
  * Use of this source code is governed by an MIT-style license that can be
6169
6247
  * found in the LICENSE file at https://angular.io/license
6170
6248
  */
6171
- const END_COMMENT = /-->/g;
6172
- const END_COMMENT_ESCAPED = '-\u200B-\u200B>';
6173
6249
  /**
6174
- * Escape the content of the strings so that it can be safely inserted into a comment node.
6250
+ * Disallowed strings in the comment.
6251
+ *
6252
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
6253
+ */
6254
+ const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
6255
+ /**
6256
+ * Delimiter in the disallowed strings which needs to be wrapped with zero with character.
6257
+ */
6258
+ const COMMENT_DELIMITER = /(<|>)/;
6259
+ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
6260
+ /**
6261
+ * Escape the content of comment strings so that it can be safely inserted into a comment node.
6175
6262
  *
6176
6263
  * 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.
6264
+ * Consider: `<!-- The way you close a comment is with ">", and "->" at the beginning or by "-->" or
6265
+ * "--!>" at the end. -->`. Above the `"-->"` is meant to be text not an end to the comment. This
6266
+ * can be created programmatically through DOM APIs. (`<!--` are also disallowed.)
6267
+ *
6268
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
6179
6269
  *
6180
6270
  * ```
6181
6271
  * div.innerHTML = div.innerHTML
@@ -6186,15 +6276,16 @@ const END_COMMENT_ESCAPED = '-\u200B-\u200B>';
6186
6276
  * opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
6187
6277
  * may contain such text and expect them to be safe.)
6188
6278
  *
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.
6279
+ * This function escapes the comment text by looking for comment delimiters (`<` and `>`) and
6280
+ * surrounding them with `_>_` where the `_` is a zero width space `\u200B`. The result is that if a
6281
+ * comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the
6282
+ * text it will render normally but it will not cause the HTML parser to close/open the comment.
6193
6283
  *
6194
- * @param value text to make safe for comment node by escaping the comment close character sequence
6284
+ * @param value text to make safe for comment node by escaping the comment open/close character
6285
+ * sequence.
6195
6286
  */
6196
6287
  function escapeCommentText(value) {
6197
- return value.replace(END_COMMENT, END_COMMENT_ESCAPED);
6288
+ return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
6198
6289
  }
6199
6290
 
6200
6291
  /**
@@ -8594,8 +8685,21 @@ class TNode {
8594
8685
  debugNodeInjectorPath(lView) {
8595
8686
  const path = [];
8596
8687
  let injectorIndex = getInjectorIndex(this, lView);
8597
- ngDevMode && assertNodeInjector(lView, injectorIndex);
8688
+ if (injectorIndex === -1) {
8689
+ // Looks like the current `TNode` does not have `NodeInjector` associated with it => look for
8690
+ // parent NodeInjector.
8691
+ const parentLocation = getParentInjectorLocation(this, lView);
8692
+ if (parentLocation !== NO_PARENT_INJECTOR) {
8693
+ // We found a parent, so start searching from the parent location.
8694
+ injectorIndex = getParentInjectorIndex(parentLocation);
8695
+ lView = getParentInjectorView(parentLocation, lView);
8696
+ }
8697
+ else {
8698
+ // No parents have been found, so there are no `NodeInjector`s to consult.
8699
+ }
8700
+ }
8598
8701
  while (injectorIndex !== -1) {
8702
+ ngDevMode && assertNodeInjector(lView, injectorIndex);
8599
8703
  const tNode = lView[TVIEW].data[injectorIndex + 8 /* TNODE */];
8600
8704
  path.push(buildDebugNode(tNode, lView));
8601
8705
  const parentLocation = lView[injectorIndex + 8 /* PARENT */];
@@ -8929,11 +9033,15 @@ function buildDebugNode(tNode, lView) {
8929
9033
  return {
8930
9034
  html: toHtml(native),
8931
9035
  type: toTNodeTypeAsString(tNode.type),
9036
+ tNode,
8932
9037
  native: native,
8933
9038
  children: toDebugNodes(tNode.child, lView),
8934
9039
  factories,
8935
9040
  instances,
8936
- injector: buildNodeInjectorDebug(tNode, tView, lView)
9041
+ injector: buildNodeInjectorDebug(tNode, tView, lView),
9042
+ get injectorResolutionPath() {
9043
+ return tNode.debugNodeInjectorPath(lView);
9044
+ },
8937
9045
  };
8938
9046
  }
8939
9047
  function buildNodeInjectorDebug(tNode, tView, lView) {
@@ -8977,6 +9085,9 @@ function binary(array, idx) {
8977
9085
  * @param idx
8978
9086
  */
8979
9087
  function toBloom(array, idx) {
9088
+ if (idx < 0) {
9089
+ return 'NO_NODE_INJECTOR';
9090
+ }
8980
9091
  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
9092
  }
8982
9093
  class LContainerDebug {
@@ -12220,7 +12331,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
12220
12331
  ngDevMode && assertIndexInRange(rootView, index);
12221
12332
  rootView[index] = rNode;
12222
12333
  // '#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`
12334
+ // the same time we want to communicate the debug `TNode` that this is a special `TNode`
12224
12335
  // representing a host element.
12225
12336
  const tNode = getOrCreateTNode(tView, index, 2 /* Element */, '#host', null);
12226
12337
  const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
@@ -21145,6 +21256,15 @@ class ElementRef {
21145
21256
  * @nocollapse
21146
21257
  */
21147
21258
  ElementRef.__NG_ELEMENT_ID__ = SWITCH_ELEMENT_REF_FACTORY;
21259
+ /**
21260
+ * Unwraps `ElementRef` and return the `nativeElement`.
21261
+ *
21262
+ * @param value value to unwrap
21263
+ * @returns `nativeElement` if `ElementRef` otherwise returns value as is.
21264
+ */
21265
+ function unwrapElementRef(value) {
21266
+ return value instanceof ElementRef ? value.nativeElement : value;
21267
+ }
21148
21268
 
21149
21269
  /**
21150
21270
  * @license
@@ -21248,7 +21368,7 @@ class Version {
21248
21368
  /**
21249
21369
  * @publicApi
21250
21370
  */
21251
- const VERSION = new Version('11.1.0-next.4');
21371
+ const VERSION = new Version('11.1.1');
21252
21372
 
21253
21373
  /**
21254
21374
  * @license
@@ -22401,7 +22521,7 @@ class ViewRef {
22401
22521
  this._lView = _lView;
22402
22522
  this._cdRefInjectingView = _cdRefInjectingView;
22403
22523
  this._appRef = null;
22404
- this._viewContainerRef = null;
22524
+ this._attachedToViewContainer = false;
22405
22525
  }
22406
22526
  get rootNodes() {
22407
22527
  const lView = this._lView;
@@ -22418,12 +22538,19 @@ class ViewRef {
22418
22538
  if (this._appRef) {
22419
22539
  this._appRef.detachView(this);
22420
22540
  }
22421
- else if (this._viewContainerRef) {
22422
- const index = this._viewContainerRef.indexOf(this);
22423
- if (index > -1) {
22424
- this._viewContainerRef.detach(index);
22541
+ else if (this._attachedToViewContainer) {
22542
+ const parent = this._lView[PARENT];
22543
+ if (isLContainer(parent)) {
22544
+ const viewRefs = parent[VIEW_REFS];
22545
+ const index = viewRefs ? viewRefs.indexOf(this) : -1;
22546
+ if (index > -1) {
22547
+ ngDevMode &&
22548
+ assertEqual(index, parent.indexOf(this._lView) - CONTAINER_HEADER_OFFSET, 'An attached view should be in the same position within its container as its ViewRef in the VIEW_REFS array.');
22549
+ detachView(parent, index);
22550
+ removeFromArray(viewRefs, index);
22551
+ }
22425
22552
  }
22426
- this._viewContainerRef = null;
22553
+ this._attachedToViewContainer = false;
22427
22554
  }
22428
22555
  destroyLView(this._lView[TVIEW], this._lView);
22429
22556
  }
@@ -22615,18 +22742,18 @@ class ViewRef {
22615
22742
  checkNoChanges() {
22616
22743
  checkNoChangesInternal(this._lView[TVIEW], this._lView, this.context);
22617
22744
  }
22618
- attachToViewContainerRef(vcRef) {
22745
+ attachToViewContainerRef() {
22619
22746
  if (this._appRef) {
22620
22747
  throw new Error('This view is already attached directly to the ApplicationRef!');
22621
22748
  }
22622
- this._viewContainerRef = vcRef;
22749
+ this._attachedToViewContainer = true;
22623
22750
  }
22624
22751
  detachFromAppRef() {
22625
22752
  this._appRef = null;
22626
22753
  renderDetachView(this._lView[TVIEW], this._lView);
22627
22754
  }
22628
22755
  attachToAppRef(appRef) {
22629
- if (this._viewContainerRef) {
22756
+ if (this._attachedToViewContainer) {
22630
22757
  throw new Error('This view is already attached to a ViewContainer!');
22631
22758
  }
22632
22759
  this._appRef = appRef;
@@ -23007,7 +23134,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
23007
23134
  if (parentRNode !== null) {
23008
23135
  addViewToContainer(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
23009
23136
  }
23010
- viewRef.attachToViewContainerRef(this);
23137
+ viewRef.attachToViewContainerRef();
23011
23138
  addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef);
23012
23139
  return viewRef;
23013
23140
  }
@@ -25823,11 +25950,21 @@ function symbolIterator() {
25823
25950
  * @publicApi
25824
25951
  */
25825
25952
  class QueryList {
25826
- constructor() {
25953
+ /**
25954
+ * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
25955
+ * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
25956
+ * the same result) This is set to `false` for backwards compatibility but will be changed to
25957
+ * true in v12.
25958
+ */
25959
+ constructor(_emitDistinctChangesOnly = false) {
25960
+ this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
25827
25961
  this.dirty = true;
25828
25962
  this._results = [];
25829
- this.changes = new EventEmitter();
25963
+ this._changesDetected = false;
25964
+ this._changes = null;
25830
25965
  this.length = 0;
25966
+ this.first = undefined;
25967
+ this.last = undefined;
25831
25968
  // This function should be declared on the prototype, but doing so there will cause the class
25832
25969
  // declaration to have side-effects and become not tree-shakable. For this reason we do it in
25833
25970
  // the constructor.
@@ -25837,6 +25974,12 @@ class QueryList {
25837
25974
  if (!proto[symbol])
25838
25975
  proto[symbol] = symbolIterator;
25839
25976
  }
25977
+ /**
25978
+ * Returns `Observable` of `QueryList` notifying the subscriber of changes.
25979
+ */
25980
+ get changes() {
25981
+ return this._changes || (this._changes = new EventEmitter());
25982
+ }
25840
25983
  /**
25841
25984
  * Returns the QueryList entry at `index`.
25842
25985
  */
@@ -25900,19 +26043,31 @@ class QueryList {
25900
26043
  * occurs.
25901
26044
  *
25902
26045
  * @param resultsTree The query results to store
26046
+ * @param identityAccessor Optional function for extracting stable object identity from a value
26047
+ * in the array. This function is executed for each element of the query result list while
26048
+ * comparing current query list with the new one (provided as a first argument of the `reset`
26049
+ * function) to detect if the lists are different. If the function is not provided, elements
26050
+ * are compared as is (without any pre-processing).
25903
26051
  */
25904
- reset(resultsTree) {
25905
- this._results = flatten(resultsTree);
25906
- this.dirty = false;
25907
- this.length = this._results.length;
25908
- this.last = this._results[this.length - 1];
25909
- this.first = this._results[0];
26052
+ reset(resultsTree, identityAccessor) {
26053
+ // Cast to `QueryListInternal` so that we can mutate fields which are readonly for the usage of
26054
+ // QueryList (but not for QueryList itself.)
26055
+ const self = this;
26056
+ self.dirty = false;
26057
+ const newResultFlat = flatten(resultsTree);
26058
+ if (this._changesDetected = !arrayEquals(self._results, newResultFlat, identityAccessor)) {
26059
+ self._results = newResultFlat;
26060
+ self.length = newResultFlat.length;
26061
+ self.last = newResultFlat[this.length - 1];
26062
+ self.first = newResultFlat[0];
26063
+ }
25910
26064
  }
25911
26065
  /**
25912
26066
  * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
25913
26067
  */
25914
26068
  notifyOnChanges() {
25915
- this.changes.emit(this);
26069
+ if (this._changes && (this._changesDetected || !this._emitDistinctChangesOnly))
26070
+ this._changes.emit(this);
25916
26071
  }
25917
26072
  /** internal */
25918
26073
  setDirty() {
@@ -26004,10 +26159,9 @@ class LQueries_ {
26004
26159
  }
26005
26160
  }
26006
26161
  class TQueryMetadata_ {
26007
- constructor(predicate, descendants, isStatic, read = null) {
26162
+ constructor(predicate, flags, read = null) {
26008
26163
  this.predicate = predicate;
26009
- this.descendants = descendants;
26010
- this.isStatic = isStatic;
26164
+ this.flags = flags;
26011
26165
  this.read = read;
26012
26166
  }
26013
26167
  }
@@ -26100,7 +26254,8 @@ class TQuery_ {
26100
26254
  return null;
26101
26255
  }
26102
26256
  isApplyingToNode(tNode) {
26103
- if (this._appliesToNextNode && this.metadata.descendants === false) {
26257
+ if (this._appliesToNextNode &&
26258
+ (this.metadata.flags & 1 /* descendants */) !== 1 /* descendants */) {
26104
26259
  const declarationNodeIdx = this._declarationNodeIndex;
26105
26260
  let parent = tNode.parent;
26106
26261
  // Determine if a given TNode is a "direct" child of a node on which a content query was
@@ -26312,7 +26467,9 @@ function ɵɵqueryRefresh(queryList) {
26312
26467
  const queryIndex = getCurrentQueryIndex();
26313
26468
  setCurrentQueryIndex(queryIndex + 1);
26314
26469
  const tQuery = getTQuery(tView, queryIndex);
26315
- if (queryList.dirty && (isCreationMode(lView) === tQuery.metadata.isStatic)) {
26470
+ if (queryList.dirty &&
26471
+ (isCreationMode(lView) ===
26472
+ ((tQuery.metadata.flags & 2 /* isStatic */) === 2 /* isStatic */))) {
26316
26473
  if (tQuery.matches === null) {
26317
26474
  queryList.reset([]);
26318
26475
  }
@@ -26320,45 +26477,32 @@ function ɵɵqueryRefresh(queryList) {
26320
26477
  const result = tQuery.crossesNgTemplate ?
26321
26478
  collectQueryResults(tView, lView, queryIndex, []) :
26322
26479
  materializeViewResults(tView, lView, tQuery, queryIndex);
26323
- queryList.reset(result);
26480
+ queryList.reset(result, unwrapElementRef);
26324
26481
  queryList.notifyOnChanges();
26325
26482
  }
26326
26483
  return true;
26327
26484
  }
26328
26485
  return false;
26329
26486
  }
26330
- /**
26331
- * Creates new QueryList for a static view query.
26332
- *
26333
- * @param predicate The type for which the query will search
26334
- * @param descend Whether or not to descend into children
26335
- * @param read What to save in the query
26336
- *
26337
- * @codeGenApi
26338
- */
26339
- function ɵɵstaticViewQuery(predicate, descend, read) {
26340
- viewQueryInternal(getTView(), getLView(), predicate, descend, read, true);
26341
- }
26342
26487
  /**
26343
26488
  * Creates new QueryList, stores the reference in LView and returns QueryList.
26344
26489
  *
26345
26490
  * @param predicate The type for which the query will search
26346
- * @param descend Whether or not to descend into children
26491
+ * @param flags Flags associated with the query
26347
26492
  * @param read What to save in the query
26348
26493
  *
26349
26494
  * @codeGenApi
26350
26495
  */
26351
- function ɵɵviewQuery(predicate, descend, read) {
26352
- viewQueryInternal(getTView(), getLView(), predicate, descend, read, false);
26353
- }
26354
- function viewQueryInternal(tView, lView, predicate, descend, read, isStatic) {
26496
+ function ɵɵviewQuery(predicate, flags, read) {
26497
+ ngDevMode && assertNumber(flags, 'Expecting flags');
26498
+ const tView = getTView();
26355
26499
  if (tView.firstCreatePass) {
26356
- createTQuery(tView, new TQueryMetadata_(predicate, descend, isStatic, read), -1);
26357
- if (isStatic) {
26500
+ createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
26501
+ if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
26358
26502
  tView.staticViewQueries = true;
26359
26503
  }
26360
26504
  }
26361
- createLQuery(tView, lView);
26505
+ createLQuery(tView, getLView(), flags);
26362
26506
  }
26363
26507
  /**
26364
26508
  * Registers a QueryList, associated with a content query, for later refresh (part of a view
@@ -26366,39 +26510,24 @@ function viewQueryInternal(tView, lView, predicate, descend, read, isStatic) {
26366
26510
  *
26367
26511
  * @param directiveIndex Current directive index
26368
26512
  * @param predicate The type for which the query will search
26369
- * @param descend Whether or not to descend into children
26513
+ * @param flags Flags associated with the query
26370
26514
  * @param read What to save in the query
26371
26515
  * @returns QueryList<T>
26372
26516
  *
26373
26517
  * @codeGenApi
26374
26518
  */
26375
- function ɵɵcontentQuery(directiveIndex, predicate, descend, read) {
26376
- contentQueryInternal(getTView(), getLView(), predicate, descend, read, false, getCurrentTNode(), directiveIndex);
26377
- }
26378
- /**
26379
- * Registers a QueryList, associated with a static content query, for later refresh
26380
- * (part of a view refresh).
26381
- *
26382
- * @param directiveIndex Current directive index
26383
- * @param predicate The type for which the query will search
26384
- * @param descend Whether or not to descend into children
26385
- * @param read What to save in the query
26386
- * @returns QueryList<T>
26387
- *
26388
- * @codeGenApi
26389
- */
26390
- function ɵɵstaticContentQuery(directiveIndex, predicate, descend, read) {
26391
- contentQueryInternal(getTView(), getLView(), predicate, descend, read, true, getCurrentTNode(), directiveIndex);
26392
- }
26393
- function contentQueryInternal(tView, lView, predicate, descend, read, isStatic, tNode, directiveIndex) {
26519
+ function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
26520
+ ngDevMode && assertNumber(flags, 'Expecting flags');
26521
+ const tView = getTView();
26394
26522
  if (tView.firstCreatePass) {
26395
- createTQuery(tView, new TQueryMetadata_(predicate, descend, isStatic, read), tNode.index);
26523
+ const tNode = getCurrentTNode();
26524
+ createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
26396
26525
  saveContentQueryAndDirectiveIndex(tView, directiveIndex);
26397
- if (isStatic) {
26526
+ if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
26398
26527
  tView.staticContentQueries = true;
26399
26528
  }
26400
26529
  }
26401
- createLQuery(tView, lView);
26530
+ createLQuery(tView, getLView(), flags);
26402
26531
  }
26403
26532
  /**
26404
26533
  * Loads a QueryList corresponding to the current view or content query.
@@ -26414,8 +26543,8 @@ function loadQueryInternal(lView, queryIndex) {
26414
26543
  ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex);
26415
26544
  return lView[QUERIES].queries[queryIndex].queryList;
26416
26545
  }
26417
- function createLQuery(tView, lView) {
26418
- const queryList = new QueryList();
26546
+ function createLQuery(tView, lView, flags) {
26547
+ const queryList = new QueryList((flags & 4 /* emitDistinctChangesOnly */) === 4 /* emitDistinctChangesOnly */);
26419
26548
  storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
26420
26549
  if (lView[QUERIES] === null)
26421
26550
  lView[QUERIES] = new LQueries_();
@@ -26563,8 +26692,6 @@ const ɵ0$c = () => ({
26563
26692
  'ɵɵpipe': ɵɵpipe,
26564
26693
  'ɵɵqueryRefresh': ɵɵqueryRefresh,
26565
26694
  'ɵɵviewQuery': ɵɵviewQuery,
26566
- 'ɵɵstaticViewQuery': ɵɵstaticViewQuery,
26567
- 'ɵɵstaticContentQuery': ɵɵstaticContentQuery,
26568
26695
  'ɵɵloadQuery': ɵɵloadQuery,
26569
26696
  'ɵɵcontentQuery': ɵɵcontentQuery,
26570
26697
  'ɵɵreference': ɵɵreference,
@@ -27338,7 +27465,8 @@ function convertToR3QueryMetadata(propertyName, ann) {
27338
27465
  descendants: ann.descendants,
27339
27466
  first: ann.first,
27340
27467
  read: ann.read ? ann.read : null,
27341
- static: !!ann.static
27468
+ static: !!ann.static,
27469
+ emitDistinctChangesOnly: !!ann.emitDistinctChangesOnly,
27342
27470
  };
27343
27471
  }
27344
27472
  function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
@@ -27948,7 +28076,7 @@ const ivyEnabled = SWITCH_IVY_ENABLED__PRE_R3__;
27948
28076
  * found in the LICENSE file at https://angular.io/license
27949
28077
  */
27950
28078
  /**
27951
- * Combination of NgModuleFactory and ComponentFactorys.
28079
+ * Combination of NgModuleFactory and ComponentFactories.
27952
28080
  *
27953
28081
  * @publicApi
27954
28082
  */
@@ -30741,8 +30869,8 @@ function queryDef(flags, id, bindings) {
30741
30869
  ngContent: null
30742
30870
  };
30743
30871
  }
30744
- function createQuery() {
30745
- return new QueryList();
30872
+ function createQuery(emitDistinctChangesOnly) {
30873
+ return new QueryList(emitDistinctChangesOnly);
30746
30874
  }
30747
30875
  function dirtyParentQueries(view) {
30748
30876
  const queryIds = view.def.nodeMatchedQueries;
@@ -30794,7 +30922,7 @@ function checkAndUpdateQuery(view, nodeDef) {
30794
30922
  newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, nodeDef.query, []);
30795
30923
  directiveInstance = view.component;
30796
30924
  }
30797
- queryList.reset(newValues);
30925
+ queryList.reset(newValues, unwrapElementRef);
30798
30926
  const bindings = nodeDef.query.bindings;
30799
30927
  let notify = false;
30800
30928
  for (let i = 0; i < bindings.length; i++) {
@@ -31555,7 +31683,8 @@ function createViewNodes(view) {
31555
31683
  break;
31556
31684
  case 67108864 /* TypeContentQuery */:
31557
31685
  case 134217728 /* TypeViewQuery */:
31558
- nodeData = createQuery();
31686
+ nodeData = createQuery((nodeDef.flags & -2147483648 /* EmitDistinctChangesOnly */) ===
31687
+ -2147483648 /* EmitDistinctChangesOnly */);
31559
31688
  break;
31560
31689
  case 8 /* TypeNgContent */:
31561
31690
  appendNgContent(view, renderHost, nodeDef);
@@ -32780,5 +32909,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
32780
32909
  * Generated bundle index. Do not edit.
32781
32910
  */
32782
32911
 
32783
- 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 };
32912
+ 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 };
32784
32913
  //# sourceMappingURL=core.js.map