@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.
- package/bundles/core-testing.umd.js +2 -2
- package/bundles/core-testing.umd.js.map +1 -1
- package/bundles/core-testing.umd.min.js +2 -2
- package/bundles/core-testing.umd.min.js.map +1 -1
- package/bundles/core.umd.js +475 -342
- package/bundles/core.umd.js.map +1 -1
- package/bundles/core.umd.min.js +123 -124
- package/bundles/core.umd.min.js.map +1 -1
- package/core.d.ts +227 -144
- package/core.metadata.json +1 -1
- package/esm2015/core.js +33 -33
- package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
- package/esm2015/src/core_render3_private_export.js +2 -2
- package/esm2015/src/di/injector_compatibility.js +39 -16
- package/esm2015/src/di/interface/injector.js +3 -2
- package/esm2015/src/di/metadata.js +22 -6
- package/esm2015/src/linker/compiler.js +2 -2
- package/esm2015/src/linker/element_ref.js +10 -1
- package/esm2015/src/linker/query_list.js +39 -11
- package/esm2015/src/linker/view_container_ref.js +2 -2
- package/esm2015/src/metadata/di.js +7 -3
- package/esm2015/src/metadata/view.js +2 -2
- package/esm2015/src/render3/component.js +2 -2
- package/esm2015/src/render3/di.js +17 -32
- package/esm2015/src/render3/error_code.js +27 -2
- package/esm2015/src/render3/index.js +2 -2
- package/esm2015/src/render3/instructions/lview_debug.js +24 -4
- package/esm2015/src/render3/interfaces/query.js +1 -1
- package/esm2015/src/render3/interfaces/view.js +1 -1
- package/esm2015/src/render3/jit/directive.js +3 -2
- package/esm2015/src/render3/jit/environment.js +1 -3
- package/esm2015/src/render3/query.js +28 -54
- package/esm2015/src/render3/view_ref.js +23 -12
- package/esm2015/src/util/array_utils.js +25 -1
- package/esm2015/src/util/dom.js +25 -12
- package/esm2015/src/version.js +1 -1
- package/esm2015/src/view/query.js +5 -5
- package/esm2015/src/view/types.js +1 -1
- package/esm2015/src/view/view.js +3 -2
- package/esm2015/testing/src/fake_async.js +2 -2
- package/fesm2015/core.js +422 -293
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/testing.js +2 -2
- package/fesm2015/testing.js.map +1 -1
- package/package.json +1 -1
- package/schematics/migrations/static-queries/index.js +3 -8
- package/src/r3_symbols.d.ts +1 -2
- package/testing/testing.d.ts +1 -1
- package/testing.d.ts +1 -1
package/bundles/core.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v11.1.
|
|
2
|
+
* @license Angular v11.1.1
|
|
3
3
|
* (c) 2010-2020 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -379,7 +379,8 @@
|
|
|
379
379
|
* found in the LICENSE file at https://angular.io/license
|
|
380
380
|
*/
|
|
381
381
|
(function (InjectFlags) {
|
|
382
|
-
// TODO(alxhub): make this 'const' when ngc no longer
|
|
382
|
+
// TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer
|
|
383
|
+
// writes exports of it into ngfactory files.
|
|
383
384
|
/** Check self and check parent injector if needed */
|
|
384
385
|
InjectFlags[InjectFlags["Default"] = 0] = "Default";
|
|
385
386
|
/**
|
|
@@ -565,7 +566,7 @@
|
|
|
565
566
|
* Use Shadow DOM to encapsulate styles.
|
|
566
567
|
*
|
|
567
568
|
* For the DOM this means using modern [Shadow
|
|
568
|
-
* DOM](https://
|
|
569
|
+
* DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) and
|
|
569
570
|
* creating a ShadowRoot for Component's Host Element.
|
|
570
571
|
*/
|
|
571
572
|
ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
|
|
@@ -1568,6 +1569,10 @@
|
|
|
1568
1569
|
* Use of this source code is governed by an MIT-style license that can be
|
|
1569
1570
|
* found in the LICENSE file at https://angular.io/license
|
|
1570
1571
|
*/
|
|
1572
|
+
// Base URL for the error details page.
|
|
1573
|
+
// Keep this value in sync with a similar const in
|
|
1574
|
+
// `packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts`.
|
|
1575
|
+
var ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';
|
|
1571
1576
|
var RuntimeError = /** @class */ (function (_super) {
|
|
1572
1577
|
__extends(RuntimeError, _super);
|
|
1573
1578
|
function RuntimeError(code, message) {
|
|
@@ -1577,10 +1582,31 @@
|
|
|
1577
1582
|
}
|
|
1578
1583
|
return RuntimeError;
|
|
1579
1584
|
}(Error));
|
|
1585
|
+
// Contains a set of error messages that have details guides at angular.io.
|
|
1586
|
+
// Full list of available error guides can be found at https://angular.io/errors
|
|
1587
|
+
/* tslint:disable:no-toplevel-property-access */
|
|
1588
|
+
var RUNTIME_ERRORS_WITH_GUIDES = new Set([
|
|
1589
|
+
"100" /* EXPRESSION_CHANGED_AFTER_CHECKED */,
|
|
1590
|
+
"200" /* CYCLIC_DI_DEPENDENCY */,
|
|
1591
|
+
"201" /* PROVIDER_NOT_FOUND */,
|
|
1592
|
+
"300" /* MULTIPLE_COMPONENTS_MATCH */,
|
|
1593
|
+
"301" /* EXPORT_NOT_FOUND */,
|
|
1594
|
+
]);
|
|
1595
|
+
/* tslint:enable:no-toplevel-property-access */
|
|
1580
1596
|
/** Called to format a runtime error */
|
|
1581
1597
|
function formatRuntimeError(code, message) {
|
|
1582
1598
|
var fullCode = code ? "NG0" + code + ": " : '';
|
|
1583
|
-
|
|
1599
|
+
var errorMessage = "" + fullCode + message;
|
|
1600
|
+
// Some runtime errors are still thrown without `ngDevMode` (for example
|
|
1601
|
+
// `throwProviderNotFoundError`), so we add `ngDevMode` check here to avoid pulling
|
|
1602
|
+
// `RUNTIME_ERRORS_WITH_GUIDES` symbol into prod bundles.
|
|
1603
|
+
// TODO: revisit all instances where `RuntimeError` is thrown and see if `ngDevMode` can be added
|
|
1604
|
+
// there instead to tree-shake more devmode-only code (and eventually remove `ngDevMode` check
|
|
1605
|
+
// from this code).
|
|
1606
|
+
if (ngDevMode && RUNTIME_ERRORS_WITH_GUIDES.has(code)) {
|
|
1607
|
+
errorMessage = errorMessage + ". Find more at " + ERROR_DETAILS_PAGE_BASE_URL + "/NG0" + code;
|
|
1608
|
+
}
|
|
1609
|
+
return errorMessage;
|
|
1584
1610
|
}
|
|
1585
1611
|
|
|
1586
1612
|
/**
|
|
@@ -3298,6 +3324,12 @@
|
|
|
3298
3324
|
*/
|
|
3299
3325
|
var BLOOM_SIZE = 256;
|
|
3300
3326
|
var BLOOM_MASK = BLOOM_SIZE - 1;
|
|
3327
|
+
/**
|
|
3328
|
+
* The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,
|
|
3329
|
+
* so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash
|
|
3330
|
+
* number.
|
|
3331
|
+
*/
|
|
3332
|
+
var BLOOM_BUCKET_BITS = 5;
|
|
3301
3333
|
/** Counter used to generate unique IDs for directives. */
|
|
3302
3334
|
var nextNgElementId = 0;
|
|
3303
3335
|
/**
|
|
@@ -3324,25 +3356,15 @@
|
|
|
3324
3356
|
}
|
|
3325
3357
|
// We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),
|
|
3326
3358
|
// so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.
|
|
3327
|
-
var
|
|
3359
|
+
var bloomHash = id & BLOOM_MASK;
|
|
3328
3360
|
// Create a mask that targets the specific bit associated with the directive.
|
|
3329
3361
|
// JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
|
|
3330
3362
|
// to bit positions 0 - 31 in a 32 bit integer.
|
|
3331
|
-
var mask = 1 <<
|
|
3332
|
-
//
|
|
3333
|
-
//
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
var b5 = bloomBit & 0x20;
|
|
3337
|
-
var tData = tView.data;
|
|
3338
|
-
if (b7) {
|
|
3339
|
-
b6 ? (b5 ? (tData[injectorIndex + 7] |= mask) : (tData[injectorIndex + 6] |= mask)) :
|
|
3340
|
-
(b5 ? (tData[injectorIndex + 5] |= mask) : (tData[injectorIndex + 4] |= mask));
|
|
3341
|
-
}
|
|
3342
|
-
else {
|
|
3343
|
-
b6 ? (b5 ? (tData[injectorIndex + 3] |= mask) : (tData[injectorIndex + 2] |= mask)) :
|
|
3344
|
-
(b5 ? (tData[injectorIndex + 1] |= mask) : (tData[injectorIndex] |= mask));
|
|
3345
|
-
}
|
|
3363
|
+
var mask = 1 << bloomHash;
|
|
3364
|
+
// Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.
|
|
3365
|
+
// Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask
|
|
3366
|
+
// should be written to.
|
|
3367
|
+
tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
|
|
3346
3368
|
}
|
|
3347
3369
|
/**
|
|
3348
3370
|
* Creates (or gets an existing) injector for a given element or container.
|
|
@@ -3838,21 +3860,10 @@
|
|
|
3838
3860
|
// JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
|
|
3839
3861
|
// to bit positions 0 - 31 in a 32 bit integer.
|
|
3840
3862
|
var mask = 1 << bloomHash;
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
// bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc.
|
|
3846
|
-
// Get the bloom filter value from the appropriate bucket based on the directive's bloomBit.
|
|
3847
|
-
var value;
|
|
3848
|
-
if (b7) {
|
|
3849
|
-
value = b6 ? (b5 ? injectorView[injectorIndex + 7] : injectorView[injectorIndex + 6]) :
|
|
3850
|
-
(b5 ? injectorView[injectorIndex + 5] : injectorView[injectorIndex + 4]);
|
|
3851
|
-
}
|
|
3852
|
-
else {
|
|
3853
|
-
value = b6 ? (b5 ? injectorView[injectorIndex + 3] : injectorView[injectorIndex + 2]) :
|
|
3854
|
-
(b5 ? injectorView[injectorIndex + 1] : injectorView[injectorIndex]);
|
|
3855
|
-
}
|
|
3863
|
+
// Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of
|
|
3864
|
+
// `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset
|
|
3865
|
+
// that should be used.
|
|
3866
|
+
var value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
|
|
3856
3867
|
// If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,
|
|
3857
3868
|
// this injector is a potential match.
|
|
3858
3869
|
return !!(value & mask);
|
|
@@ -4205,6 +4216,10 @@
|
|
|
4205
4216
|
* @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
|
|
4206
4217
|
*/
|
|
4207
4218
|
var ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');
|
|
4219
|
+
// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not
|
|
4220
|
+
// explicitly set. This value will be changed to `true` in v12.
|
|
4221
|
+
// TODO(misko): switch the default in v12 to `true`. See: packages/compiler/src/core.ts
|
|
4222
|
+
var emitDistinctChangesOnlyDefaultValue = false;
|
|
4208
4223
|
/**
|
|
4209
4224
|
* Base class for query metadata.
|
|
4210
4225
|
*
|
|
@@ -4222,7 +4237,7 @@
|
|
|
4222
4237
|
}());
|
|
4223
4238
|
var ɵ0$1 = function (selector, data) {
|
|
4224
4239
|
if (data === void 0) { data = {}; }
|
|
4225
|
-
return (Object.assign({ selector: selector, first: false, isViewQuery: false, descendants: false }, data));
|
|
4240
|
+
return (Object.assign({ selector: selector, first: false, isViewQuery: false, descendants: false, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
|
|
4226
4241
|
};
|
|
4227
4242
|
/**
|
|
4228
4243
|
* ContentChildren decorator and metadata.
|
|
@@ -4247,7 +4262,7 @@
|
|
|
4247
4262
|
var ContentChild = makePropDecorator('ContentChild', ɵ1, Query);
|
|
4248
4263
|
var ɵ2 = function (selector, data) {
|
|
4249
4264
|
if (data === void 0) { data = {}; }
|
|
4250
|
-
return (Object.assign({ selector: selector, first: false, isViewQuery: true, descendants: true }, data));
|
|
4265
|
+
return (Object.assign({ selector: selector, first: false, isViewQuery: true, descendants: true, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));
|
|
4251
4266
|
};
|
|
4252
4267
|
/**
|
|
4253
4268
|
* ViewChildren decorator and metadata.
|
|
@@ -4353,6 +4368,30 @@
|
|
|
4353
4368
|
arr.push(items[i]);
|
|
4354
4369
|
}
|
|
4355
4370
|
}
|
|
4371
|
+
/**
|
|
4372
|
+
* Determines if the contents of two arrays is identical
|
|
4373
|
+
*
|
|
4374
|
+
* @param a first array
|
|
4375
|
+
* @param b second array
|
|
4376
|
+
* @param identityAccessor Optional function for extracting stable object identity from a value in
|
|
4377
|
+
* the array.
|
|
4378
|
+
*/
|
|
4379
|
+
function arrayEquals(a, b, identityAccessor) {
|
|
4380
|
+
if (a.length !== b.length)
|
|
4381
|
+
return false;
|
|
4382
|
+
for (var i = 0; i < a.length; i++) {
|
|
4383
|
+
var valueA = a[i];
|
|
4384
|
+
var valueB = b[i];
|
|
4385
|
+
if (identityAccessor) {
|
|
4386
|
+
valueA = identityAccessor(valueA);
|
|
4387
|
+
valueB = identityAccessor(valueB);
|
|
4388
|
+
}
|
|
4389
|
+
if (valueB !== valueA) {
|
|
4390
|
+
return false;
|
|
4391
|
+
}
|
|
4392
|
+
}
|
|
4393
|
+
return true;
|
|
4394
|
+
}
|
|
4356
4395
|
/**
|
|
4357
4396
|
* Flattens an array.
|
|
4358
4397
|
*/
|
|
@@ -4935,42 +4974,237 @@
|
|
|
4935
4974
|
* Use of this source code is governed by an MIT-style license that can be
|
|
4936
4975
|
* found in the LICENSE file at https://angular.io/license
|
|
4937
4976
|
*/
|
|
4938
|
-
var
|
|
4977
|
+
var _THROW_IF_NOT_FOUND = {};
|
|
4978
|
+
var THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
|
|
4979
|
+
/*
|
|
4980
|
+
* Name of a property (that we patch onto DI decorator), which is used as an annotation of which
|
|
4981
|
+
* InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators
|
|
4982
|
+
* in the code, thus making them tree-shakable.
|
|
4983
|
+
*/
|
|
4984
|
+
var DI_DECORATOR_FLAG = '__NG_DI_FLAG__';
|
|
4985
|
+
var NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
|
|
4986
|
+
var NG_TOKEN_PATH = 'ngTokenPath';
|
|
4987
|
+
var NEW_LINE = /\n/gm;
|
|
4988
|
+
var NO_NEW_LINE = 'ɵ';
|
|
4989
|
+
var SOURCE = '__source';
|
|
4990
|
+
var ɵ0$2 = getClosureSafeProperty;
|
|
4991
|
+
var USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$2 });
|
|
4992
|
+
/**
|
|
4993
|
+
* Current injector value used by `inject`.
|
|
4994
|
+
* - `undefined`: it is an error to call `inject`
|
|
4995
|
+
* - `null`: `inject` can be called but there is no injector (limp-mode).
|
|
4996
|
+
* - Injector instance: Use the injector for resolution.
|
|
4997
|
+
*/
|
|
4998
|
+
var _currentInjector = undefined;
|
|
4999
|
+
function setCurrentInjector(injector) {
|
|
5000
|
+
var former = _currentInjector;
|
|
5001
|
+
_currentInjector = injector;
|
|
5002
|
+
return former;
|
|
5003
|
+
}
|
|
5004
|
+
function injectInjectorOnly(token, flags) {
|
|
5005
|
+
if (flags === void 0) { flags = exports.InjectFlags.Default; }
|
|
5006
|
+
if (_currentInjector === undefined) {
|
|
5007
|
+
throw new Error("inject() must be called from an injection context");
|
|
5008
|
+
}
|
|
5009
|
+
else if (_currentInjector === null) {
|
|
5010
|
+
return injectRootLimpMode(token, undefined, flags);
|
|
5011
|
+
}
|
|
5012
|
+
else {
|
|
5013
|
+
return _currentInjector.get(token, flags & exports.InjectFlags.Optional ? null : undefined, flags);
|
|
5014
|
+
}
|
|
5015
|
+
}
|
|
5016
|
+
function ɵɵinject(token, flags) {
|
|
5017
|
+
if (flags === void 0) { flags = exports.InjectFlags.Default; }
|
|
5018
|
+
return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);
|
|
5019
|
+
}
|
|
5020
|
+
/**
|
|
5021
|
+
* Throws an error indicating that a factory function could not be generated by the compiler for a
|
|
5022
|
+
* particular class.
|
|
5023
|
+
*
|
|
5024
|
+
* This instruction allows the actual error message to be optimized away when ngDevMode is turned
|
|
5025
|
+
* off, saving bytes of generated code while still providing a good experience in dev mode.
|
|
5026
|
+
*
|
|
5027
|
+
* The name of the class is not mentioned here, but will be in the generated factory function name
|
|
5028
|
+
* and thus in the stack trace.
|
|
5029
|
+
*
|
|
5030
|
+
* @codeGenApi
|
|
5031
|
+
*/
|
|
5032
|
+
function ɵɵinvalidFactoryDep(index) {
|
|
5033
|
+
var msg = ngDevMode ?
|
|
5034
|
+
"This constructor is not compatible with Angular Dependency Injection because its dependency at index " + index + " of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease 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." :
|
|
5035
|
+
'invalid';
|
|
5036
|
+
throw new Error(msg);
|
|
5037
|
+
}
|
|
5038
|
+
/**
|
|
5039
|
+
* Injects a token from the currently active injector.
|
|
5040
|
+
*
|
|
5041
|
+
* Must be used in the context of a factory function such as one defined for an
|
|
5042
|
+
* `InjectionToken`. Throws an error if not called from such a context.
|
|
5043
|
+
*
|
|
5044
|
+
* Within such a factory function, using this function to request injection of a dependency
|
|
5045
|
+
* is faster and more type-safe than providing an additional array of dependencies
|
|
5046
|
+
* (as has been common with `useFactory` providers).
|
|
5047
|
+
*
|
|
5048
|
+
* @param token The injection token for the dependency to be injected.
|
|
5049
|
+
* @param flags Optional flags that control how injection is executed.
|
|
5050
|
+
* The flags correspond to injection strategies that can be specified with
|
|
5051
|
+
* parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
|
|
5052
|
+
* @returns True if injection is successful, null otherwise.
|
|
5053
|
+
*
|
|
5054
|
+
* @usageNotes
|
|
5055
|
+
*
|
|
5056
|
+
* ### Example
|
|
5057
|
+
*
|
|
5058
|
+
* {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
|
|
5059
|
+
*
|
|
5060
|
+
* @publicApi
|
|
5061
|
+
*/
|
|
5062
|
+
var inject = ɵɵinject;
|
|
5063
|
+
function injectArgs(types) {
|
|
5064
|
+
var args = [];
|
|
5065
|
+
for (var i = 0; i < types.length; i++) {
|
|
5066
|
+
var arg = resolveForwardRef(types[i]);
|
|
5067
|
+
if (Array.isArray(arg)) {
|
|
5068
|
+
if (arg.length === 0) {
|
|
5069
|
+
throw new Error('Arguments array must have arguments.');
|
|
5070
|
+
}
|
|
5071
|
+
var type = undefined;
|
|
5072
|
+
var flags = exports.InjectFlags.Default;
|
|
5073
|
+
for (var j = 0; j < arg.length; j++) {
|
|
5074
|
+
var meta = arg[j];
|
|
5075
|
+
var flag = getInjectFlag(meta);
|
|
5076
|
+
if (typeof flag === 'number') {
|
|
5077
|
+
// Special case when we handle @Inject decorator.
|
|
5078
|
+
if (flag === -1 /* Inject */) {
|
|
5079
|
+
type = meta.token;
|
|
5080
|
+
}
|
|
5081
|
+
else {
|
|
5082
|
+
flags |= flag;
|
|
5083
|
+
}
|
|
5084
|
+
}
|
|
5085
|
+
else {
|
|
5086
|
+
type = meta;
|
|
5087
|
+
}
|
|
5088
|
+
}
|
|
5089
|
+
args.push(ɵɵinject(type, flags));
|
|
5090
|
+
}
|
|
5091
|
+
else {
|
|
5092
|
+
args.push(ɵɵinject(arg));
|
|
5093
|
+
}
|
|
5094
|
+
}
|
|
5095
|
+
return args;
|
|
5096
|
+
}
|
|
5097
|
+
/**
|
|
5098
|
+
* Attaches a given InjectFlag to a given decorator using monkey-patching.
|
|
5099
|
+
* Since DI decorators can be used in providers `deps` array (when provider is configured using
|
|
5100
|
+
* `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we
|
|
5101
|
+
* attach the flag to make it available both as a static property and as a field on decorator
|
|
5102
|
+
* instance.
|
|
5103
|
+
*
|
|
5104
|
+
* @param decorator Provided DI decorator.
|
|
5105
|
+
* @param flag InjectFlag that should be applied.
|
|
5106
|
+
*/
|
|
5107
|
+
function attachInjectFlag(decorator, flag) {
|
|
5108
|
+
decorator[DI_DECORATOR_FLAG] = flag;
|
|
5109
|
+
decorator.prototype[DI_DECORATOR_FLAG] = flag;
|
|
5110
|
+
return decorator;
|
|
5111
|
+
}
|
|
5112
|
+
/**
|
|
5113
|
+
* Reads monkey-patched property that contains InjectFlag attached to a decorator.
|
|
5114
|
+
*
|
|
5115
|
+
* @param token Token that may contain monkey-patched DI flags property.
|
|
5116
|
+
*/
|
|
5117
|
+
function getInjectFlag(token) {
|
|
5118
|
+
return token[DI_DECORATOR_FLAG];
|
|
5119
|
+
}
|
|
5120
|
+
function catchInjectorError(e, token, injectorErrorName, source) {
|
|
5121
|
+
var tokenPath = e[NG_TEMP_TOKEN_PATH];
|
|
5122
|
+
if (token[SOURCE]) {
|
|
5123
|
+
tokenPath.unshift(token[SOURCE]);
|
|
5124
|
+
}
|
|
5125
|
+
e.message = formatError('\n' + e.message, tokenPath, injectorErrorName, source);
|
|
5126
|
+
e[NG_TOKEN_PATH] = tokenPath;
|
|
5127
|
+
e[NG_TEMP_TOKEN_PATH] = null;
|
|
5128
|
+
throw e;
|
|
5129
|
+
}
|
|
5130
|
+
function formatError(text, obj, injectorErrorName, source) {
|
|
5131
|
+
if (source === void 0) { source = null; }
|
|
5132
|
+
text = text && text.charAt(0) === '\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;
|
|
5133
|
+
var context = stringify(obj);
|
|
5134
|
+
if (Array.isArray(obj)) {
|
|
5135
|
+
context = obj.map(stringify).join(' -> ');
|
|
5136
|
+
}
|
|
5137
|
+
else if (typeof obj === 'object') {
|
|
5138
|
+
var parts = [];
|
|
5139
|
+
for (var key in obj) {
|
|
5140
|
+
if (obj.hasOwnProperty(key)) {
|
|
5141
|
+
var value = obj[key];
|
|
5142
|
+
parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));
|
|
5143
|
+
}
|
|
5144
|
+
}
|
|
5145
|
+
context = "{" + parts.join(', ') + "}";
|
|
5146
|
+
}
|
|
5147
|
+
return "" + injectorErrorName + (source ? '(' + source + ')' : '') + "[" + context + "]: " + text.replace(NEW_LINE, '\n ');
|
|
5148
|
+
}
|
|
5149
|
+
|
|
5150
|
+
/**
|
|
5151
|
+
* @license
|
|
5152
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5153
|
+
*
|
|
5154
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
5155
|
+
* found in the LICENSE file at https://angular.io/license
|
|
5156
|
+
*/
|
|
5157
|
+
var ɵ0$3 = function (token) { return ({ token: token }); };
|
|
4939
5158
|
/**
|
|
4940
5159
|
* Inject decorator and metadata.
|
|
4941
5160
|
*
|
|
4942
5161
|
* @Annotation
|
|
4943
5162
|
* @publicApi
|
|
4944
5163
|
*/
|
|
4945
|
-
var Inject =
|
|
5164
|
+
var Inject = attachInjectFlag(
|
|
5165
|
+
// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
|
|
5166
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
5167
|
+
makeParamDecorator('Inject', ɵ0$3), -1 /* Inject */);
|
|
4946
5168
|
/**
|
|
4947
5169
|
* Optional decorator and metadata.
|
|
4948
5170
|
*
|
|
4949
5171
|
* @Annotation
|
|
4950
5172
|
* @publicApi
|
|
4951
5173
|
*/
|
|
4952
|
-
var Optional =
|
|
5174
|
+
var Optional =
|
|
5175
|
+
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5176
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
5177
|
+
attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
|
|
4953
5178
|
/**
|
|
4954
5179
|
* Self decorator and metadata.
|
|
4955
5180
|
*
|
|
4956
5181
|
* @Annotation
|
|
4957
5182
|
* @publicApi
|
|
4958
5183
|
*/
|
|
4959
|
-
var Self =
|
|
5184
|
+
var Self =
|
|
5185
|
+
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5186
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
5187
|
+
attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
|
|
4960
5188
|
/**
|
|
4961
5189
|
* `SkipSelf` decorator and metadata.
|
|
4962
5190
|
*
|
|
4963
5191
|
* @Annotation
|
|
4964
5192
|
* @publicApi
|
|
4965
5193
|
*/
|
|
4966
|
-
var SkipSelf =
|
|
5194
|
+
var SkipSelf =
|
|
5195
|
+
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5196
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
5197
|
+
attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
|
|
4967
5198
|
/**
|
|
4968
5199
|
* Host decorator and metadata.
|
|
4969
5200
|
*
|
|
4970
5201
|
* @Annotation
|
|
4971
5202
|
* @publicApi
|
|
4972
5203
|
*/
|
|
4973
|
-
var Host =
|
|
5204
|
+
var Host =
|
|
5205
|
+
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5206
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
5207
|
+
attachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);
|
|
4974
5208
|
|
|
4975
5209
|
/**
|
|
4976
5210
|
* @license
|
|
@@ -5166,162 +5400,6 @@
|
|
|
5166
5400
|
componentDefPendingResolution.delete(type);
|
|
5167
5401
|
}
|
|
5168
5402
|
|
|
5169
|
-
/**
|
|
5170
|
-
* @license
|
|
5171
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5172
|
-
*
|
|
5173
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
5174
|
-
* found in the LICENSE file at https://angular.io/license
|
|
5175
|
-
*/
|
|
5176
|
-
var _THROW_IF_NOT_FOUND = {};
|
|
5177
|
-
var THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
|
|
5178
|
-
var NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
|
|
5179
|
-
var NG_TOKEN_PATH = 'ngTokenPath';
|
|
5180
|
-
var NEW_LINE = /\n/gm;
|
|
5181
|
-
var NO_NEW_LINE = 'ɵ';
|
|
5182
|
-
var SOURCE = '__source';
|
|
5183
|
-
var ɵ0$3 = getClosureSafeProperty;
|
|
5184
|
-
var USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$3 });
|
|
5185
|
-
/**
|
|
5186
|
-
* Current injector value used by `inject`.
|
|
5187
|
-
* - `undefined`: it is an error to call `inject`
|
|
5188
|
-
* - `null`: `inject` can be called but there is no injector (limp-mode).
|
|
5189
|
-
* - Injector instance: Use the injector for resolution.
|
|
5190
|
-
*/
|
|
5191
|
-
var _currentInjector = undefined;
|
|
5192
|
-
function setCurrentInjector(injector) {
|
|
5193
|
-
var former = _currentInjector;
|
|
5194
|
-
_currentInjector = injector;
|
|
5195
|
-
return former;
|
|
5196
|
-
}
|
|
5197
|
-
function injectInjectorOnly(token, flags) {
|
|
5198
|
-
if (flags === void 0) { flags = exports.InjectFlags.Default; }
|
|
5199
|
-
if (_currentInjector === undefined) {
|
|
5200
|
-
throw new Error("inject() must be called from an injection context");
|
|
5201
|
-
}
|
|
5202
|
-
else if (_currentInjector === null) {
|
|
5203
|
-
return injectRootLimpMode(token, undefined, flags);
|
|
5204
|
-
}
|
|
5205
|
-
else {
|
|
5206
|
-
return _currentInjector.get(token, flags & exports.InjectFlags.Optional ? null : undefined, flags);
|
|
5207
|
-
}
|
|
5208
|
-
}
|
|
5209
|
-
function ɵɵinject(token, flags) {
|
|
5210
|
-
if (flags === void 0) { flags = exports.InjectFlags.Default; }
|
|
5211
|
-
return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);
|
|
5212
|
-
}
|
|
5213
|
-
/**
|
|
5214
|
-
* Throws an error indicating that a factory function could not be generated by the compiler for a
|
|
5215
|
-
* particular class.
|
|
5216
|
-
*
|
|
5217
|
-
* This instruction allows the actual error message to be optimized away when ngDevMode is turned
|
|
5218
|
-
* off, saving bytes of generated code while still providing a good experience in dev mode.
|
|
5219
|
-
*
|
|
5220
|
-
* The name of the class is not mentioned here, but will be in the generated factory function name
|
|
5221
|
-
* and thus in the stack trace.
|
|
5222
|
-
*
|
|
5223
|
-
* @codeGenApi
|
|
5224
|
-
*/
|
|
5225
|
-
function ɵɵinvalidFactoryDep(index) {
|
|
5226
|
-
var msg = ngDevMode ?
|
|
5227
|
-
"This constructor is not compatible with Angular Dependency Injection because its dependency at index " + index + " of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease 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." :
|
|
5228
|
-
'invalid';
|
|
5229
|
-
throw new Error(msg);
|
|
5230
|
-
}
|
|
5231
|
-
/**
|
|
5232
|
-
* Injects a token from the currently active injector.
|
|
5233
|
-
*
|
|
5234
|
-
* Must be used in the context of a factory function such as one defined for an
|
|
5235
|
-
* `InjectionToken`. Throws an error if not called from such a context.
|
|
5236
|
-
*
|
|
5237
|
-
* Within such a factory function, using this function to request injection of a dependency
|
|
5238
|
-
* is faster and more type-safe than providing an additional array of dependencies
|
|
5239
|
-
* (as has been common with `useFactory` providers).
|
|
5240
|
-
*
|
|
5241
|
-
* @param token The injection token for the dependency to be injected.
|
|
5242
|
-
* @param flags Optional flags that control how injection is executed.
|
|
5243
|
-
* The flags correspond to injection strategies that can be specified with
|
|
5244
|
-
* parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
|
|
5245
|
-
* @returns True if injection is successful, null otherwise.
|
|
5246
|
-
*
|
|
5247
|
-
* @usageNotes
|
|
5248
|
-
*
|
|
5249
|
-
* ### Example
|
|
5250
|
-
*
|
|
5251
|
-
* {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
|
|
5252
|
-
*
|
|
5253
|
-
* @publicApi
|
|
5254
|
-
*/
|
|
5255
|
-
var inject = ɵɵinject;
|
|
5256
|
-
function injectArgs(types) {
|
|
5257
|
-
var args = [];
|
|
5258
|
-
for (var i = 0; i < types.length; i++) {
|
|
5259
|
-
var arg = resolveForwardRef(types[i]);
|
|
5260
|
-
if (Array.isArray(arg)) {
|
|
5261
|
-
if (arg.length === 0) {
|
|
5262
|
-
throw new Error('Arguments array must have arguments.');
|
|
5263
|
-
}
|
|
5264
|
-
var type = undefined;
|
|
5265
|
-
var flags = exports.InjectFlags.Default;
|
|
5266
|
-
for (var j = 0; j < arg.length; j++) {
|
|
5267
|
-
var meta = arg[j];
|
|
5268
|
-
if (meta instanceof Optional || meta.ngMetadataName === 'Optional' || meta === Optional) {
|
|
5269
|
-
flags |= exports.InjectFlags.Optional;
|
|
5270
|
-
}
|
|
5271
|
-
else if (meta instanceof SkipSelf || meta.ngMetadataName === 'SkipSelf' || meta === SkipSelf) {
|
|
5272
|
-
flags |= exports.InjectFlags.SkipSelf;
|
|
5273
|
-
}
|
|
5274
|
-
else if (meta instanceof Self || meta.ngMetadataName === 'Self' || meta === Self) {
|
|
5275
|
-
flags |= exports.InjectFlags.Self;
|
|
5276
|
-
}
|
|
5277
|
-
else if (meta instanceof Host || meta.ngMetadataName === 'Host' || meta === Host) {
|
|
5278
|
-
flags |= exports.InjectFlags.Host;
|
|
5279
|
-
}
|
|
5280
|
-
else if (meta instanceof Inject || meta === Inject) {
|
|
5281
|
-
type = meta.token;
|
|
5282
|
-
}
|
|
5283
|
-
else {
|
|
5284
|
-
type = meta;
|
|
5285
|
-
}
|
|
5286
|
-
}
|
|
5287
|
-
args.push(ɵɵinject(type, flags));
|
|
5288
|
-
}
|
|
5289
|
-
else {
|
|
5290
|
-
args.push(ɵɵinject(arg));
|
|
5291
|
-
}
|
|
5292
|
-
}
|
|
5293
|
-
return args;
|
|
5294
|
-
}
|
|
5295
|
-
function catchInjectorError(e, token, injectorErrorName, source) {
|
|
5296
|
-
var tokenPath = e[NG_TEMP_TOKEN_PATH];
|
|
5297
|
-
if (token[SOURCE]) {
|
|
5298
|
-
tokenPath.unshift(token[SOURCE]);
|
|
5299
|
-
}
|
|
5300
|
-
e.message = formatError('\n' + e.message, tokenPath, injectorErrorName, source);
|
|
5301
|
-
e[NG_TOKEN_PATH] = tokenPath;
|
|
5302
|
-
e[NG_TEMP_TOKEN_PATH] = null;
|
|
5303
|
-
throw e;
|
|
5304
|
-
}
|
|
5305
|
-
function formatError(text, obj, injectorErrorName, source) {
|
|
5306
|
-
if (source === void 0) { source = null; }
|
|
5307
|
-
text = text && text.charAt(0) === '\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;
|
|
5308
|
-
var context = stringify(obj);
|
|
5309
|
-
if (Array.isArray(obj)) {
|
|
5310
|
-
context = obj.map(stringify).join(' -> ');
|
|
5311
|
-
}
|
|
5312
|
-
else if (typeof obj === 'object') {
|
|
5313
|
-
var parts = [];
|
|
5314
|
-
for (var key in obj) {
|
|
5315
|
-
if (obj.hasOwnProperty(key)) {
|
|
5316
|
-
var value = obj[key];
|
|
5317
|
-
parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));
|
|
5318
|
-
}
|
|
5319
|
-
}
|
|
5320
|
-
context = "{" + parts.join(', ') + "}";
|
|
5321
|
-
}
|
|
5322
|
-
return "" + injectorErrorName + (source ? '(' + source + ')' : '') + "[" + context + "]: " + text.replace(NEW_LINE, '\n ');
|
|
5323
|
-
}
|
|
5324
|
-
|
|
5325
5403
|
/**
|
|
5326
5404
|
* The Trusted Types policy, or null if Trusted Types are not
|
|
5327
5405
|
* enabled/supported, or undefined if the policy has not been created yet.
|
|
@@ -6498,14 +6576,26 @@
|
|
|
6498
6576
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6499
6577
|
* found in the LICENSE file at https://angular.io/license
|
|
6500
6578
|
*/
|
|
6501
|
-
var END_COMMENT = /-->/g;
|
|
6502
|
-
var END_COMMENT_ESCAPED = '-\u200B-\u200B>';
|
|
6503
6579
|
/**
|
|
6504
|
-
*
|
|
6580
|
+
* Disallowed strings in the comment.
|
|
6581
|
+
*
|
|
6582
|
+
* see: https://html.spec.whatwg.org/multipage/syntax.html#comments
|
|
6583
|
+
*/
|
|
6584
|
+
var COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
|
|
6585
|
+
/**
|
|
6586
|
+
* Delimiter in the disallowed strings which needs to be wrapped with zero with character.
|
|
6587
|
+
*/
|
|
6588
|
+
var COMMENT_DELIMITER = /(<|>)/;
|
|
6589
|
+
var COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
|
|
6590
|
+
/**
|
|
6591
|
+
* Escape the content of comment strings so that it can be safely inserted into a comment node.
|
|
6505
6592
|
*
|
|
6506
6593
|
* The issue is that HTML does not specify any way to escape comment end text inside the comment.
|
|
6507
|
-
* `<!-- The way you close a comment is with "
|
|
6508
|
-
*
|
|
6594
|
+
* Consider: `<!-- The way you close a comment is with ">", and "->" at the beginning or by "-->" or
|
|
6595
|
+
* "--!>" at the end. -->`. Above the `"-->"` is meant to be text not an end to the comment. This
|
|
6596
|
+
* can be created programmatically through DOM APIs. (`<!--` are also disallowed.)
|
|
6597
|
+
*
|
|
6598
|
+
* see: https://html.spec.whatwg.org/multipage/syntax.html#comments
|
|
6509
6599
|
*
|
|
6510
6600
|
* ```
|
|
6511
6601
|
* div.innerHTML = div.innerHTML
|
|
@@ -6516,15 +6606,16 @@
|
|
|
6516
6606
|
* opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
|
|
6517
6607
|
* may contain such text and expect them to be safe.)
|
|
6518
6608
|
*
|
|
6519
|
-
* This function escapes the comment text by looking for
|
|
6520
|
-
*
|
|
6521
|
-
* contains
|
|
6522
|
-
* comment.
|
|
6609
|
+
* This function escapes the comment text by looking for comment delimiters (`<` and `>`) and
|
|
6610
|
+
* surrounding them with `_>_` where the `_` is a zero width space `\u200B`. The result is that if a
|
|
6611
|
+
* comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the
|
|
6612
|
+
* text it will render normally but it will not cause the HTML parser to close/open the comment.
|
|
6523
6613
|
*
|
|
6524
|
-
* @param value text to make safe for comment node by escaping the comment close character
|
|
6614
|
+
* @param value text to make safe for comment node by escaping the comment open/close character
|
|
6615
|
+
* sequence.
|
|
6525
6616
|
*/
|
|
6526
6617
|
function escapeCommentText(value) {
|
|
6527
|
-
return value.replace(
|
|
6618
|
+
return value.replace(COMMENT_DISALLOWED, function (text) { return text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED); });
|
|
6528
6619
|
}
|
|
6529
6620
|
|
|
6530
6621
|
/**
|
|
@@ -8928,8 +9019,21 @@
|
|
|
8928
9019
|
TNode.prototype.debugNodeInjectorPath = function (lView) {
|
|
8929
9020
|
var path = [];
|
|
8930
9021
|
var injectorIndex = getInjectorIndex(this, lView);
|
|
8931
|
-
|
|
9022
|
+
if (injectorIndex === -1) {
|
|
9023
|
+
// Looks like the current `TNode` does not have `NodeInjector` associated with it => look for
|
|
9024
|
+
// parent NodeInjector.
|
|
9025
|
+
var parentLocation = getParentInjectorLocation(this, lView);
|
|
9026
|
+
if (parentLocation !== NO_PARENT_INJECTOR) {
|
|
9027
|
+
// We found a parent, so start searching from the parent location.
|
|
9028
|
+
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
9029
|
+
lView = getParentInjectorView(parentLocation, lView);
|
|
9030
|
+
}
|
|
9031
|
+
else {
|
|
9032
|
+
// No parents have been found, so there are no `NodeInjector`s to consult.
|
|
9033
|
+
}
|
|
9034
|
+
}
|
|
8932
9035
|
while (injectorIndex !== -1) {
|
|
9036
|
+
ngDevMode && assertNodeInjector(lView, injectorIndex);
|
|
8933
9037
|
var tNode = lView[TVIEW].data[injectorIndex + 8 /* TNODE */];
|
|
8934
9038
|
path.push(buildDebugNode(tNode, lView));
|
|
8935
9039
|
var parentLocation = lView[injectorIndex + 8 /* PARENT */];
|
|
@@ -9386,11 +9490,15 @@
|
|
|
9386
9490
|
return {
|
|
9387
9491
|
html: toHtml(native),
|
|
9388
9492
|
type: toTNodeTypeAsString(tNode.type),
|
|
9493
|
+
tNode: tNode,
|
|
9389
9494
|
native: native,
|
|
9390
9495
|
children: toDebugNodes(tNode.child, lView),
|
|
9391
9496
|
factories: factories,
|
|
9392
9497
|
instances: instances,
|
|
9393
|
-
injector: buildNodeInjectorDebug(tNode, tView, lView)
|
|
9498
|
+
injector: buildNodeInjectorDebug(tNode, tView, lView),
|
|
9499
|
+
get injectorResolutionPath() {
|
|
9500
|
+
return tNode.debugNodeInjectorPath(lView);
|
|
9501
|
+
},
|
|
9394
9502
|
};
|
|
9395
9503
|
}
|
|
9396
9504
|
function buildNodeInjectorDebug(tNode, tView, lView) {
|
|
@@ -9434,6 +9542,9 @@
|
|
|
9434
9542
|
* @param idx
|
|
9435
9543
|
*/
|
|
9436
9544
|
function toBloom(array, idx) {
|
|
9545
|
+
if (idx < 0) {
|
|
9546
|
+
return 'NO_NODE_INJECTOR';
|
|
9547
|
+
}
|
|
9437
9548
|
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);
|
|
9438
9549
|
}
|
|
9439
9550
|
var LContainerDebug = /** @class */ (function () {
|
|
@@ -12723,7 +12834,7 @@
|
|
|
12723
12834
|
ngDevMode && assertIndexInRange(rootView, index);
|
|
12724
12835
|
rootView[index] = rNode;
|
|
12725
12836
|
// '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
|
|
12726
|
-
// the same time we want to communicate the
|
|
12837
|
+
// the same time we want to communicate the debug `TNode` that this is a special `TNode`
|
|
12727
12838
|
// representing a host element.
|
|
12728
12839
|
var tNode = getOrCreateTNode(tView, index, 2 /* Element */, '#host', null);
|
|
12729
12840
|
var mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
|
|
@@ -21699,6 +21810,15 @@
|
|
|
21699
21810
|
* @nocollapse
|
|
21700
21811
|
*/
|
|
21701
21812
|
ElementRef.__NG_ELEMENT_ID__ = SWITCH_ELEMENT_REF_FACTORY;
|
|
21813
|
+
/**
|
|
21814
|
+
* Unwraps `ElementRef` and return the `nativeElement`.
|
|
21815
|
+
*
|
|
21816
|
+
* @param value value to unwrap
|
|
21817
|
+
* @returns `nativeElement` if `ElementRef` otherwise returns value as is.
|
|
21818
|
+
*/
|
|
21819
|
+
function unwrapElementRef(value) {
|
|
21820
|
+
return value instanceof ElementRef ? value.nativeElement : value;
|
|
21821
|
+
}
|
|
21702
21822
|
|
|
21703
21823
|
/**
|
|
21704
21824
|
* @license
|
|
@@ -21812,7 +21932,7 @@
|
|
|
21812
21932
|
/**
|
|
21813
21933
|
* @publicApi
|
|
21814
21934
|
*/
|
|
21815
|
-
var VERSION = new Version('11.1.
|
|
21935
|
+
var VERSION = new Version('11.1.1');
|
|
21816
21936
|
|
|
21817
21937
|
/**
|
|
21818
21938
|
* @license
|
|
@@ -22978,7 +23098,7 @@
|
|
|
22978
23098
|
this._lView = _lView;
|
|
22979
23099
|
this._cdRefInjectingView = _cdRefInjectingView;
|
|
22980
23100
|
this._appRef = null;
|
|
22981
|
-
this.
|
|
23101
|
+
this._attachedToViewContainer = false;
|
|
22982
23102
|
}
|
|
22983
23103
|
Object.defineProperty(ViewRef.prototype, "rootNodes", {
|
|
22984
23104
|
get: function () {
|
|
@@ -23007,12 +23127,19 @@
|
|
|
23007
23127
|
if (this._appRef) {
|
|
23008
23128
|
this._appRef.detachView(this);
|
|
23009
23129
|
}
|
|
23010
|
-
else if (this.
|
|
23011
|
-
var
|
|
23012
|
-
if (
|
|
23013
|
-
|
|
23130
|
+
else if (this._attachedToViewContainer) {
|
|
23131
|
+
var parent = this._lView[PARENT];
|
|
23132
|
+
if (isLContainer(parent)) {
|
|
23133
|
+
var viewRefs = parent[VIEW_REFS];
|
|
23134
|
+
var index = viewRefs ? viewRefs.indexOf(this) : -1;
|
|
23135
|
+
if (index > -1) {
|
|
23136
|
+
ngDevMode &&
|
|
23137
|
+
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.');
|
|
23138
|
+
detachView(parent, index);
|
|
23139
|
+
removeFromArray(viewRefs, index);
|
|
23140
|
+
}
|
|
23014
23141
|
}
|
|
23015
|
-
this.
|
|
23142
|
+
this._attachedToViewContainer = false;
|
|
23016
23143
|
}
|
|
23017
23144
|
destroyLView(this._lView[TVIEW], this._lView);
|
|
23018
23145
|
};
|
|
@@ -23204,18 +23331,18 @@
|
|
|
23204
23331
|
ViewRef.prototype.checkNoChanges = function () {
|
|
23205
23332
|
checkNoChangesInternal(this._lView[TVIEW], this._lView, this.context);
|
|
23206
23333
|
};
|
|
23207
|
-
ViewRef.prototype.attachToViewContainerRef = function (
|
|
23334
|
+
ViewRef.prototype.attachToViewContainerRef = function () {
|
|
23208
23335
|
if (this._appRef) {
|
|
23209
23336
|
throw new Error('This view is already attached directly to the ApplicationRef!');
|
|
23210
23337
|
}
|
|
23211
|
-
this.
|
|
23338
|
+
this._attachedToViewContainer = true;
|
|
23212
23339
|
};
|
|
23213
23340
|
ViewRef.prototype.detachFromAppRef = function () {
|
|
23214
23341
|
this._appRef = null;
|
|
23215
23342
|
renderDetachView(this._lView[TVIEW], this._lView);
|
|
23216
23343
|
};
|
|
23217
23344
|
ViewRef.prototype.attachToAppRef = function (appRef) {
|
|
23218
|
-
if (this.
|
|
23345
|
+
if (this._attachedToViewContainer) {
|
|
23219
23346
|
throw new Error('This view is already attached to a ViewContainer!');
|
|
23220
23347
|
}
|
|
23221
23348
|
this._appRef = appRef;
|
|
@@ -23627,7 +23754,7 @@
|
|
|
23627
23754
|
if (parentRNode !== null) {
|
|
23628
23755
|
addViewToContainer(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
|
|
23629
23756
|
}
|
|
23630
|
-
viewRef.attachToViewContainerRef(
|
|
23757
|
+
viewRef.attachToViewContainerRef();
|
|
23631
23758
|
addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef);
|
|
23632
23759
|
return viewRef;
|
|
23633
23760
|
};
|
|
@@ -26514,11 +26641,22 @@
|
|
|
26514
26641
|
* @publicApi
|
|
26515
26642
|
*/
|
|
26516
26643
|
var QueryList = /** @class */ (function () {
|
|
26517
|
-
|
|
26644
|
+
/**
|
|
26645
|
+
* @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
|
|
26646
|
+
* has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
|
|
26647
|
+
* the same result) This is set to `false` for backwards compatibility but will be changed to
|
|
26648
|
+
* true in v12.
|
|
26649
|
+
*/
|
|
26650
|
+
function QueryList(_emitDistinctChangesOnly) {
|
|
26651
|
+
if (_emitDistinctChangesOnly === void 0) { _emitDistinctChangesOnly = false; }
|
|
26652
|
+
this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
|
|
26518
26653
|
this.dirty = true;
|
|
26519
26654
|
this._results = [];
|
|
26520
|
-
this.
|
|
26655
|
+
this._changesDetected = false;
|
|
26656
|
+
this._changes = null;
|
|
26521
26657
|
this.length = 0;
|
|
26658
|
+
this.first = undefined;
|
|
26659
|
+
this.last = undefined;
|
|
26522
26660
|
// This function should be declared on the prototype, but doing so there will cause the class
|
|
26523
26661
|
// declaration to have side-effects and become not tree-shakable. For this reason we do it in
|
|
26524
26662
|
// the constructor.
|
|
@@ -26528,6 +26666,16 @@
|
|
|
26528
26666
|
if (!proto[symbol])
|
|
26529
26667
|
proto[symbol] = symbolIterator;
|
|
26530
26668
|
}
|
|
26669
|
+
Object.defineProperty(QueryList.prototype, "changes", {
|
|
26670
|
+
/**
|
|
26671
|
+
* Returns `Observable` of `QueryList` notifying the subscriber of changes.
|
|
26672
|
+
*/
|
|
26673
|
+
get: function () {
|
|
26674
|
+
return this._changes || (this._changes = new EventEmitter());
|
|
26675
|
+
},
|
|
26676
|
+
enumerable: false,
|
|
26677
|
+
configurable: true
|
|
26678
|
+
});
|
|
26531
26679
|
/**
|
|
26532
26680
|
* Returns the QueryList entry at `index`.
|
|
26533
26681
|
*/
|
|
@@ -26591,19 +26739,31 @@
|
|
|
26591
26739
|
* occurs.
|
|
26592
26740
|
*
|
|
26593
26741
|
* @param resultsTree The query results to store
|
|
26742
|
+
* @param identityAccessor Optional function for extracting stable object identity from a value
|
|
26743
|
+
* in the array. This function is executed for each element of the query result list while
|
|
26744
|
+
* comparing current query list with the new one (provided as a first argument of the `reset`
|
|
26745
|
+
* function) to detect if the lists are different. If the function is not provided, elements
|
|
26746
|
+
* are compared as is (without any pre-processing).
|
|
26594
26747
|
*/
|
|
26595
|
-
QueryList.prototype.reset = function (resultsTree) {
|
|
26596
|
-
|
|
26597
|
-
|
|
26598
|
-
|
|
26599
|
-
|
|
26600
|
-
|
|
26748
|
+
QueryList.prototype.reset = function (resultsTree, identityAccessor) {
|
|
26749
|
+
// Cast to `QueryListInternal` so that we can mutate fields which are readonly for the usage of
|
|
26750
|
+
// QueryList (but not for QueryList itself.)
|
|
26751
|
+
var self = this;
|
|
26752
|
+
self.dirty = false;
|
|
26753
|
+
var newResultFlat = flatten(resultsTree);
|
|
26754
|
+
if (this._changesDetected = !arrayEquals(self._results, newResultFlat, identityAccessor)) {
|
|
26755
|
+
self._results = newResultFlat;
|
|
26756
|
+
self.length = newResultFlat.length;
|
|
26757
|
+
self.last = newResultFlat[this.length - 1];
|
|
26758
|
+
self.first = newResultFlat[0];
|
|
26759
|
+
}
|
|
26601
26760
|
};
|
|
26602
26761
|
/**
|
|
26603
26762
|
* Triggers a change event by emitting on the `changes` {@link EventEmitter}.
|
|
26604
26763
|
*/
|
|
26605
26764
|
QueryList.prototype.notifyOnChanges = function () {
|
|
26606
|
-
this.
|
|
26765
|
+
if (this._changes && (this._changesDetected || !this._emitDistinctChangesOnly))
|
|
26766
|
+
this._changes.emit(this);
|
|
26607
26767
|
};
|
|
26608
26768
|
/** internal */
|
|
26609
26769
|
QueryList.prototype.setDirty = function () {
|
|
@@ -26699,11 +26859,10 @@
|
|
|
26699
26859
|
return LQueries_;
|
|
26700
26860
|
}());
|
|
26701
26861
|
var TQueryMetadata_ = /** @class */ (function () {
|
|
26702
|
-
function TQueryMetadata_(predicate,
|
|
26862
|
+
function TQueryMetadata_(predicate, flags, read) {
|
|
26703
26863
|
if (read === void 0) { read = null; }
|
|
26704
26864
|
this.predicate = predicate;
|
|
26705
|
-
this.
|
|
26706
|
-
this.isStatic = isStatic;
|
|
26865
|
+
this.flags = flags;
|
|
26707
26866
|
this.read = read;
|
|
26708
26867
|
}
|
|
26709
26868
|
return TQueryMetadata_;
|
|
@@ -26804,7 +26963,8 @@
|
|
|
26804
26963
|
return null;
|
|
26805
26964
|
};
|
|
26806
26965
|
TQuery_.prototype.isApplyingToNode = function (tNode) {
|
|
26807
|
-
if (this._appliesToNextNode &&
|
|
26966
|
+
if (this._appliesToNextNode &&
|
|
26967
|
+
(this.metadata.flags & 1 /* descendants */) !== 1 /* descendants */) {
|
|
26808
26968
|
var declarationNodeIdx = this._declarationNodeIndex;
|
|
26809
26969
|
var parent = tNode.parent;
|
|
26810
26970
|
// Determine if a given TNode is a "direct" child of a node on which a content query was
|
|
@@ -27017,7 +27177,9 @@
|
|
|
27017
27177
|
var queryIndex = getCurrentQueryIndex();
|
|
27018
27178
|
setCurrentQueryIndex(queryIndex + 1);
|
|
27019
27179
|
var tQuery = getTQuery(tView, queryIndex);
|
|
27020
|
-
if (queryList.dirty &&
|
|
27180
|
+
if (queryList.dirty &&
|
|
27181
|
+
(isCreationMode(lView) ===
|
|
27182
|
+
((tQuery.metadata.flags & 2 /* isStatic */) === 2 /* isStatic */))) {
|
|
27021
27183
|
if (tQuery.matches === null) {
|
|
27022
27184
|
queryList.reset([]);
|
|
27023
27185
|
}
|
|
@@ -27025,45 +27187,32 @@
|
|
|
27025
27187
|
var result = tQuery.crossesNgTemplate ?
|
|
27026
27188
|
collectQueryResults(tView, lView, queryIndex, []) :
|
|
27027
27189
|
materializeViewResults(tView, lView, tQuery, queryIndex);
|
|
27028
|
-
queryList.reset(result);
|
|
27190
|
+
queryList.reset(result, unwrapElementRef);
|
|
27029
27191
|
queryList.notifyOnChanges();
|
|
27030
27192
|
}
|
|
27031
27193
|
return true;
|
|
27032
27194
|
}
|
|
27033
27195
|
return false;
|
|
27034
27196
|
}
|
|
27035
|
-
/**
|
|
27036
|
-
* Creates new QueryList for a static view query.
|
|
27037
|
-
*
|
|
27038
|
-
* @param predicate The type for which the query will search
|
|
27039
|
-
* @param descend Whether or not to descend into children
|
|
27040
|
-
* @param read What to save in the query
|
|
27041
|
-
*
|
|
27042
|
-
* @codeGenApi
|
|
27043
|
-
*/
|
|
27044
|
-
function ɵɵstaticViewQuery(predicate, descend, read) {
|
|
27045
|
-
viewQueryInternal(getTView(), getLView(), predicate, descend, read, true);
|
|
27046
|
-
}
|
|
27047
27197
|
/**
|
|
27048
27198
|
* Creates new QueryList, stores the reference in LView and returns QueryList.
|
|
27049
27199
|
*
|
|
27050
27200
|
* @param predicate The type for which the query will search
|
|
27051
|
-
* @param
|
|
27201
|
+
* @param flags Flags associated with the query
|
|
27052
27202
|
* @param read What to save in the query
|
|
27053
27203
|
*
|
|
27054
27204
|
* @codeGenApi
|
|
27055
27205
|
*/
|
|
27056
|
-
function ɵɵviewQuery(predicate,
|
|
27057
|
-
|
|
27058
|
-
|
|
27059
|
-
function viewQueryInternal(tView, lView, predicate, descend, read, isStatic) {
|
|
27206
|
+
function ɵɵviewQuery(predicate, flags, read) {
|
|
27207
|
+
ngDevMode && assertNumber(flags, 'Expecting flags');
|
|
27208
|
+
var tView = getTView();
|
|
27060
27209
|
if (tView.firstCreatePass) {
|
|
27061
|
-
createTQuery(tView, new TQueryMetadata_(predicate,
|
|
27062
|
-
if (isStatic) {
|
|
27210
|
+
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
|
|
27211
|
+
if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
|
|
27063
27212
|
tView.staticViewQueries = true;
|
|
27064
27213
|
}
|
|
27065
27214
|
}
|
|
27066
|
-
createLQuery(tView,
|
|
27215
|
+
createLQuery(tView, getLView(), flags);
|
|
27067
27216
|
}
|
|
27068
27217
|
/**
|
|
27069
27218
|
* Registers a QueryList, associated with a content query, for later refresh (part of a view
|
|
@@ -27071,39 +27220,24 @@
|
|
|
27071
27220
|
*
|
|
27072
27221
|
* @param directiveIndex Current directive index
|
|
27073
27222
|
* @param predicate The type for which the query will search
|
|
27074
|
-
* @param
|
|
27223
|
+
* @param flags Flags associated with the query
|
|
27075
27224
|
* @param read What to save in the query
|
|
27076
27225
|
* @returns QueryList<T>
|
|
27077
27226
|
*
|
|
27078
27227
|
* @codeGenApi
|
|
27079
27228
|
*/
|
|
27080
|
-
function ɵɵcontentQuery(directiveIndex, predicate,
|
|
27081
|
-
|
|
27082
|
-
|
|
27083
|
-
/**
|
|
27084
|
-
* Registers a QueryList, associated with a static content query, for later refresh
|
|
27085
|
-
* (part of a view refresh).
|
|
27086
|
-
*
|
|
27087
|
-
* @param directiveIndex Current directive index
|
|
27088
|
-
* @param predicate The type for which the query will search
|
|
27089
|
-
* @param descend Whether or not to descend into children
|
|
27090
|
-
* @param read What to save in the query
|
|
27091
|
-
* @returns QueryList<T>
|
|
27092
|
-
*
|
|
27093
|
-
* @codeGenApi
|
|
27094
|
-
*/
|
|
27095
|
-
function ɵɵstaticContentQuery(directiveIndex, predicate, descend, read) {
|
|
27096
|
-
contentQueryInternal(getTView(), getLView(), predicate, descend, read, true, getCurrentTNode(), directiveIndex);
|
|
27097
|
-
}
|
|
27098
|
-
function contentQueryInternal(tView, lView, predicate, descend, read, isStatic, tNode, directiveIndex) {
|
|
27229
|
+
function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
|
|
27230
|
+
ngDevMode && assertNumber(flags, 'Expecting flags');
|
|
27231
|
+
var tView = getTView();
|
|
27099
27232
|
if (tView.firstCreatePass) {
|
|
27100
|
-
|
|
27233
|
+
var tNode = getCurrentTNode();
|
|
27234
|
+
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
|
|
27101
27235
|
saveContentQueryAndDirectiveIndex(tView, directiveIndex);
|
|
27102
|
-
if (isStatic) {
|
|
27236
|
+
if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
|
|
27103
27237
|
tView.staticContentQueries = true;
|
|
27104
27238
|
}
|
|
27105
27239
|
}
|
|
27106
|
-
createLQuery(tView,
|
|
27240
|
+
createLQuery(tView, getLView(), flags);
|
|
27107
27241
|
}
|
|
27108
27242
|
/**
|
|
27109
27243
|
* Loads a QueryList corresponding to the current view or content query.
|
|
@@ -27119,8 +27253,8 @@
|
|
|
27119
27253
|
ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex);
|
|
27120
27254
|
return lView[QUERIES].queries[queryIndex].queryList;
|
|
27121
27255
|
}
|
|
27122
|
-
function createLQuery(tView, lView) {
|
|
27123
|
-
var queryList = new QueryList();
|
|
27256
|
+
function createLQuery(tView, lView, flags) {
|
|
27257
|
+
var queryList = new QueryList((flags & 4 /* emitDistinctChangesOnly */) === 4 /* emitDistinctChangesOnly */);
|
|
27124
27258
|
storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
|
|
27125
27259
|
if (lView[QUERIES] === null)
|
|
27126
27260
|
lView[QUERIES] = new LQueries_();
|
|
@@ -27269,8 +27403,6 @@
|
|
|
27269
27403
|
'ɵɵpipe': ɵɵpipe,
|
|
27270
27404
|
'ɵɵqueryRefresh': ɵɵqueryRefresh,
|
|
27271
27405
|
'ɵɵviewQuery': ɵɵviewQuery,
|
|
27272
|
-
'ɵɵstaticViewQuery': ɵɵstaticViewQuery,
|
|
27273
|
-
'ɵɵstaticContentQuery': ɵɵstaticContentQuery,
|
|
27274
27406
|
'ɵɵloadQuery': ɵɵloadQuery,
|
|
27275
27407
|
'ɵɵcontentQuery': ɵɵcontentQuery,
|
|
27276
27408
|
'ɵɵreference': ɵɵreference,
|
|
@@ -28036,7 +28168,8 @@
|
|
|
28036
28168
|
descendants: ann.descendants,
|
|
28037
28169
|
first: ann.first,
|
|
28038
28170
|
read: ann.read ? ann.read : null,
|
|
28039
|
-
static: !!ann.static
|
|
28171
|
+
static: !!ann.static,
|
|
28172
|
+
emitDistinctChangesOnly: !!ann.emitDistinctChangesOnly,
|
|
28040
28173
|
};
|
|
28041
28174
|
}
|
|
28042
28175
|
function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
|
|
@@ -28622,7 +28755,7 @@
|
|
|
28622
28755
|
* found in the LICENSE file at https://angular.io/license
|
|
28623
28756
|
*/
|
|
28624
28757
|
/**
|
|
28625
|
-
* Combination of NgModuleFactory and
|
|
28758
|
+
* Combination of NgModuleFactory and ComponentFactories.
|
|
28626
28759
|
*
|
|
28627
28760
|
* @publicApi
|
|
28628
28761
|
*/
|
|
@@ -31572,8 +31705,8 @@
|
|
|
31572
31705
|
ngContent: null
|
|
31573
31706
|
};
|
|
31574
31707
|
}
|
|
31575
|
-
function createQuery() {
|
|
31576
|
-
return new QueryList();
|
|
31708
|
+
function createQuery(emitDistinctChangesOnly) {
|
|
31709
|
+
return new QueryList(emitDistinctChangesOnly);
|
|
31577
31710
|
}
|
|
31578
31711
|
function dirtyParentQueries(view) {
|
|
31579
31712
|
var queryIds = view.def.nodeMatchedQueries;
|
|
@@ -31625,7 +31758,7 @@
|
|
|
31625
31758
|
newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, nodeDef.query, []);
|
|
31626
31759
|
directiveInstance = view.component;
|
|
31627
31760
|
}
|
|
31628
|
-
queryList.reset(newValues);
|
|
31761
|
+
queryList.reset(newValues, unwrapElementRef);
|
|
31629
31762
|
var bindings = nodeDef.query.bindings;
|
|
31630
31763
|
var notify = false;
|
|
31631
31764
|
for (var i = 0; i < bindings.length; i++) {
|
|
@@ -32379,7 +32512,8 @@
|
|
|
32379
32512
|
break;
|
|
32380
32513
|
case 67108864 /* TypeContentQuery */:
|
|
32381
32514
|
case 134217728 /* TypeViewQuery */:
|
|
32382
|
-
nodeData = createQuery()
|
|
32515
|
+
nodeData = createQuery((nodeDef.flags & -2147483648 /* EmitDistinctChangesOnly */) ===
|
|
32516
|
+
-2147483648 /* EmitDistinctChangesOnly */);
|
|
32383
32517
|
break;
|
|
32384
32518
|
case 8 /* TypeNgContent */:
|
|
32385
32519
|
appendNgContent(view, renderHost, nodeDef);
|
|
@@ -33740,7 +33874,7 @@
|
|
|
33740
33874
|
exports.platformCore = platformCore;
|
|
33741
33875
|
exports.resolveForwardRef = resolveForwardRef;
|
|
33742
33876
|
exports.setTestabilityGetter = setTestabilityGetter;
|
|
33743
|
-
exports.ɵ0 = ɵ0$
|
|
33877
|
+
exports.ɵ0 = ɵ0$3;
|
|
33744
33878
|
exports.ɵALLOW_MULTIPLE_PLATFORMS = ALLOW_MULTIPLE_PLATFORMS;
|
|
33745
33879
|
exports.ɵAPP_ID_RANDOM_PROVIDER = APP_ID_RANDOM_PROVIDER;
|
|
33746
33880
|
exports.ɵCREATE_ATTRIBUTE_DECORATOR__POST_R3__ = CREATE_ATTRIBUTE_DECORATOR__POST_R3__;
|
|
@@ -33789,53 +33923,54 @@
|
|
|
33789
33923
|
exports.ɵand = anchorDef;
|
|
33790
33924
|
exports.ɵangular_packages_core_core_a = isForwardRef;
|
|
33791
33925
|
exports.ɵangular_packages_core_core_b = injectInjectorOnly;
|
|
33792
|
-
exports.ɵangular_packages_core_core_ba =
|
|
33793
|
-
exports.ɵangular_packages_core_core_bb =
|
|
33794
|
-
exports.ɵangular_packages_core_core_bc =
|
|
33795
|
-
exports.ɵangular_packages_core_core_bd =
|
|
33796
|
-
exports.ɵangular_packages_core_core_be =
|
|
33797
|
-
exports.ɵangular_packages_core_core_bf =
|
|
33798
|
-
exports.ɵangular_packages_core_core_bg =
|
|
33799
|
-
exports.ɵangular_packages_core_core_bh =
|
|
33800
|
-
exports.ɵangular_packages_core_core_bi =
|
|
33801
|
-
exports.ɵ
|
|
33802
|
-
exports.ɵangular_packages_core_core_bl =
|
|
33803
|
-
exports.ɵangular_packages_core_core_bm =
|
|
33804
|
-
exports.ɵangular_packages_core_core_bn =
|
|
33805
|
-
exports.ɵangular_packages_core_core_bo =
|
|
33806
|
-
exports.ɵangular_packages_core_core_bp =
|
|
33807
|
-
exports.ɵangular_packages_core_core_bq =
|
|
33808
|
-
exports.ɵangular_packages_core_core_br =
|
|
33809
|
-
exports.ɵangular_packages_core_core_bs =
|
|
33810
|
-
exports.ɵ
|
|
33811
|
-
exports.ɵ
|
|
33812
|
-
exports.ɵ
|
|
33813
|
-
exports.ɵ
|
|
33814
|
-
exports.ɵ
|
|
33815
|
-
exports.ɵ
|
|
33816
|
-
exports.ɵ
|
|
33817
|
-
exports.ɵ
|
|
33818
|
-
exports.ɵ
|
|
33819
|
-
exports.ɵ
|
|
33820
|
-
exports.ɵ
|
|
33821
|
-
exports.ɵ
|
|
33822
|
-
exports.ɵ
|
|
33823
|
-
exports.ɵ
|
|
33824
|
-
exports.ɵ
|
|
33825
|
-
exports.ɵ
|
|
33826
|
-
exports.ɵ
|
|
33827
|
-
exports.ɵ
|
|
33828
|
-
exports.ɵ
|
|
33829
|
-
exports.ɵ
|
|
33830
|
-
exports.ɵ
|
|
33831
|
-
exports.ɵ
|
|
33832
|
-
exports.ɵ
|
|
33833
|
-
exports.ɵ
|
|
33834
|
-
exports.ɵ
|
|
33835
|
-
exports.ɵ
|
|
33836
|
-
exports.ɵ
|
|
33837
|
-
exports.ɵ
|
|
33838
|
-
exports.ɵ
|
|
33926
|
+
exports.ɵangular_packages_core_core_ba = zoneSchedulerFactory;
|
|
33927
|
+
exports.ɵangular_packages_core_core_bb = USD_CURRENCY_CODE;
|
|
33928
|
+
exports.ɵangular_packages_core_core_bc = _def;
|
|
33929
|
+
exports.ɵangular_packages_core_core_bd = DebugContext;
|
|
33930
|
+
exports.ɵangular_packages_core_core_be = NgOnChangesFeatureImpl;
|
|
33931
|
+
exports.ɵangular_packages_core_core_bf = SCHEDULER;
|
|
33932
|
+
exports.ɵangular_packages_core_core_bg = injectAttributeImpl;
|
|
33933
|
+
exports.ɵangular_packages_core_core_bh = getLView;
|
|
33934
|
+
exports.ɵangular_packages_core_core_bi = getBindingRoot;
|
|
33935
|
+
exports.ɵangular_packages_core_core_bj = nextContextImpl;
|
|
33936
|
+
exports.ɵangular_packages_core_core_bl = pureFunction1Internal;
|
|
33937
|
+
exports.ɵangular_packages_core_core_bm = pureFunction2Internal;
|
|
33938
|
+
exports.ɵangular_packages_core_core_bn = pureFunction3Internal;
|
|
33939
|
+
exports.ɵangular_packages_core_core_bo = pureFunction4Internal;
|
|
33940
|
+
exports.ɵangular_packages_core_core_bp = pureFunctionVInternal;
|
|
33941
|
+
exports.ɵangular_packages_core_core_bq = getUrlSanitizer;
|
|
33942
|
+
exports.ɵangular_packages_core_core_br = makePropDecorator;
|
|
33943
|
+
exports.ɵangular_packages_core_core_bs = makeParamDecorator;
|
|
33944
|
+
exports.ɵangular_packages_core_core_bv = getClosureSafeProperty;
|
|
33945
|
+
exports.ɵangular_packages_core_core_bw = NullInjector;
|
|
33946
|
+
exports.ɵangular_packages_core_core_bx = getInjectImplementation;
|
|
33947
|
+
exports.ɵangular_packages_core_core_bz = getNativeByTNode;
|
|
33948
|
+
exports.ɵangular_packages_core_core_c = attachInjectFlag;
|
|
33949
|
+
exports.ɵangular_packages_core_core_cb = getRootContext;
|
|
33950
|
+
exports.ɵangular_packages_core_core_cc = i18nPostprocess;
|
|
33951
|
+
exports.ɵangular_packages_core_core_d = ReflectiveInjector_;
|
|
33952
|
+
exports.ɵangular_packages_core_core_e = ReflectiveDependency;
|
|
33953
|
+
exports.ɵangular_packages_core_core_f = resolveReflectiveProviders;
|
|
33954
|
+
exports.ɵangular_packages_core_core_g = _appIdRandomProviderFactory;
|
|
33955
|
+
exports.ɵangular_packages_core_core_h = injectRenderer2;
|
|
33956
|
+
exports.ɵangular_packages_core_core_i = injectElementRef;
|
|
33957
|
+
exports.ɵangular_packages_core_core_j = createElementRef;
|
|
33958
|
+
exports.ɵangular_packages_core_core_k = getModuleFactory__PRE_R3__;
|
|
33959
|
+
exports.ɵangular_packages_core_core_l = injectTemplateRef;
|
|
33960
|
+
exports.ɵangular_packages_core_core_m = createTemplateRef;
|
|
33961
|
+
exports.ɵangular_packages_core_core_n = injectViewContainerRef;
|
|
33962
|
+
exports.ɵangular_packages_core_core_o = DebugNode__PRE_R3__;
|
|
33963
|
+
exports.ɵangular_packages_core_core_p = DebugElement__PRE_R3__;
|
|
33964
|
+
exports.ɵangular_packages_core_core_q = getDebugNodeR2__PRE_R3__;
|
|
33965
|
+
exports.ɵangular_packages_core_core_r = injectChangeDetectorRef;
|
|
33966
|
+
exports.ɵangular_packages_core_core_s = DefaultIterableDifferFactory;
|
|
33967
|
+
exports.ɵangular_packages_core_core_t = DefaultKeyValueDifferFactory;
|
|
33968
|
+
exports.ɵangular_packages_core_core_u = defaultIterableDiffersFactory;
|
|
33969
|
+
exports.ɵangular_packages_core_core_v = defaultKeyValueDiffersFactory;
|
|
33970
|
+
exports.ɵangular_packages_core_core_w = _iterableDiffersFactory;
|
|
33971
|
+
exports.ɵangular_packages_core_core_x = _keyValueDiffersFactory;
|
|
33972
|
+
exports.ɵangular_packages_core_core_y = _localeFactory;
|
|
33973
|
+
exports.ɵangular_packages_core_core_z = APPLICATION_MODULE_PROVIDERS;
|
|
33839
33974
|
exports.ɵbypassSanitizationTrustHtml = bypassSanitizationTrustHtml;
|
|
33840
33975
|
exports.ɵbypassSanitizationTrustResourceUrl = bypassSanitizationTrustResourceUrl;
|
|
33841
33976
|
exports.ɵbypassSanitizationTrustScript = bypassSanitizationTrustScript;
|
|
@@ -34030,8 +34165,6 @@
|
|
|
34030
34165
|
exports.ɵɵsanitizeUrlOrResourceUrl = ɵɵsanitizeUrlOrResourceUrl;
|
|
34031
34166
|
exports.ɵɵsetComponentScope = ɵɵsetComponentScope;
|
|
34032
34167
|
exports.ɵɵsetNgModuleScope = ɵɵsetNgModuleScope;
|
|
34033
|
-
exports.ɵɵstaticContentQuery = ɵɵstaticContentQuery;
|
|
34034
|
-
exports.ɵɵstaticViewQuery = ɵɵstaticViewQuery;
|
|
34035
34168
|
exports.ɵɵstyleMap = ɵɵstyleMap;
|
|
34036
34169
|
exports.ɵɵstyleMapInterpolate1 = ɵɵstyleMapInterpolate1;
|
|
34037
34170
|
exports.ɵɵstyleMapInterpolate2 = ɵɵstyleMapInterpolate2;
|