@angular/core 14.0.0-next.2 → 14.0.0-next.5
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/core.d.ts +77 -21
- package/esm2020/src/application_init.mjs +4 -3
- package/esm2020/src/application_module.mjs +5 -104
- package/esm2020/src/application_ref.mjs +4 -3
- package/esm2020/src/application_tokens.mjs +14 -2
- package/esm2020/src/core.mjs +2 -2
- package/esm2020/src/core_render3_private_export.mjs +2 -1
- package/esm2020/src/debug/debug_node.mjs +11 -10
- package/esm2020/src/i18n/tokens.mjs +39 -3
- package/esm2020/src/linker/compiler.mjs +4 -3
- package/esm2020/src/linker/template_ref.mjs +3 -3
- package/esm2020/src/linker/view_container_ref.mjs +35 -8
- package/esm2020/src/render3/component.mjs +3 -3
- package/esm2020/src/render3/component_ref.mjs +22 -26
- package/esm2020/src/render3/context_discovery.mjs +34 -30
- package/esm2020/src/render3/di.mjs +177 -97
- package/esm2020/src/render3/hooks.mjs +3 -3
- package/esm2020/src/render3/instructions/element.mjs +7 -1
- package/esm2020/src/render3/instructions/element_container.mjs +7 -1
- package/esm2020/src/render3/instructions/lview_debug.mjs +6 -3
- package/esm2020/src/render3/instructions/shared.mjs +16 -7
- package/esm2020/src/render3/interfaces/context.mjs +35 -2
- package/esm2020/src/render3/interfaces/injector.mjs +1 -1
- package/esm2020/src/render3/interfaces/lview_tracking.mjs +33 -0
- package/esm2020/src/render3/interfaces/view.mjs +4 -2
- package/esm2020/src/render3/node_manipulation.mjs +4 -1
- package/esm2020/src/render3/util/discovery_utils.mjs +33 -22
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/fesm2015/core.mjs +478 -308
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +1 -1
- package/fesm2020/core.mjs +478 -301
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +1 -1
- package/package.json +1 -1
- package/schematics/migrations/entry-components/util.js +2 -2
- package/schematics/utils/import_manager.js +13 -12
- package/schematics/utils/typescript/imports.js +6 -5
- package/testing/testing.d.ts +1 -1
package/fesm2020/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.5
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -1172,6 +1172,8 @@ const DECLARATION_COMPONENT_VIEW = 16;
|
|
|
1172
1172
|
const DECLARATION_LCONTAINER = 17;
|
|
1173
1173
|
const PREORDER_HOOK_FLAGS = 18;
|
|
1174
1174
|
const QUERIES = 19;
|
|
1175
|
+
const ID = 20;
|
|
1176
|
+
const EMBEDDED_VIEW_INJECTOR = 21;
|
|
1175
1177
|
/**
|
|
1176
1178
|
* Size of LView's header. Necessary to adjust for it when setting slots.
|
|
1177
1179
|
*
|
|
@@ -1179,7 +1181,7 @@ const QUERIES = 19;
|
|
|
1179
1181
|
* instruction index into `LView` index. All other indexes should be in the `LView` index space and
|
|
1180
1182
|
* there should be no need to refer to `HEADER_OFFSET` anywhere else.
|
|
1181
1183
|
*/
|
|
1182
|
-
const HEADER_OFFSET =
|
|
1184
|
+
const HEADER_OFFSET = 22;
|
|
1183
1185
|
/**
|
|
1184
1186
|
* Converts `TViewType` into human readable text.
|
|
1185
1187
|
* Make sure this matches with `TViewType`
|
|
@@ -2474,7 +2476,7 @@ function incrementInitPhaseFlags(lView, initPhase) {
|
|
|
2474
2476
|
assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
|
|
2475
2477
|
let flags = lView[FLAGS];
|
|
2476
2478
|
if ((flags & 3 /* InitPhaseStateMask */) === initPhase) {
|
|
2477
|
-
flags &=
|
|
2479
|
+
flags &= 4095 /* IndexWithinInitPhaseReset */;
|
|
2478
2480
|
flags += 1 /* InitPhaseStateIncrementer */;
|
|
2479
2481
|
lView[FLAGS] = flags;
|
|
2480
2482
|
}
|
|
@@ -2538,12 +2540,12 @@ function callHook(currentView, initPhase, arr, i) {
|
|
|
2538
2540
|
const directiveIndex = isInitHook ? -arr[i] : arr[i];
|
|
2539
2541
|
const directive = currentView[directiveIndex];
|
|
2540
2542
|
if (isInitHook) {
|
|
2541
|
-
const indexWithintInitPhase = currentView[FLAGS] >>
|
|
2543
|
+
const indexWithintInitPhase = currentView[FLAGS] >> 12 /* IndexWithinInitPhaseShift */;
|
|
2542
2544
|
// The init phase state must be always checked here as it may have been recursively updated.
|
|
2543
2545
|
if (indexWithintInitPhase <
|
|
2544
2546
|
(currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&
|
|
2545
2547
|
(currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
|
|
2546
|
-
currentView[FLAGS] +=
|
|
2548
|
+
currentView[FLAGS] += 4096 /* IndexWithinInitPhaseIncrementer */;
|
|
2547
2549
|
profiler(4 /* LifecycleHookStart */, directive, hook);
|
|
2548
2550
|
try {
|
|
2549
2551
|
hook.call(directive);
|
|
@@ -3104,6 +3106,8 @@ const BLOOM_MASK = BLOOM_SIZE - 1;
|
|
|
3104
3106
|
const BLOOM_BUCKET_BITS = 5;
|
|
3105
3107
|
/** Counter used to generate unique IDs for directives. */
|
|
3106
3108
|
let nextNgElementId = 0;
|
|
3109
|
+
/** Value used when something wasn't found by an injector. */
|
|
3110
|
+
const NOT_FOUND = {};
|
|
3107
3111
|
/**
|
|
3108
3112
|
* Registers this directive as present in its node's injector by flipping the directive's
|
|
3109
3113
|
* corresponding bit in the injector's bloom filter.
|
|
@@ -3215,23 +3219,7 @@ function getParentInjectorLocation(tNode, lView) {
|
|
|
3215
3219
|
// `LView` hierarchy and look for it. If we walk of the top, that means that there is no parent
|
|
3216
3220
|
// `NodeInjector`.
|
|
3217
3221
|
while (lViewCursor !== null) {
|
|
3218
|
-
|
|
3219
|
-
const tView = lViewCursor[TVIEW];
|
|
3220
|
-
const tViewType = tView.type;
|
|
3221
|
-
if (tViewType === 2 /* Embedded */) {
|
|
3222
|
-
ngDevMode &&
|
|
3223
|
-
assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
3224
|
-
parentTNode = tView.declTNode;
|
|
3225
|
-
}
|
|
3226
|
-
else if (tViewType === 1 /* Component */) {
|
|
3227
|
-
// Components don't have `TView.declTNode` because each instance of component could be
|
|
3228
|
-
// inserted in different location, hence `TView.declTNode` is meaningless.
|
|
3229
|
-
parentTNode = lViewCursor[T_HOST];
|
|
3230
|
-
}
|
|
3231
|
-
else {
|
|
3232
|
-
ngDevMode && assertEqual(tView.type, 0 /* Root */, 'Root type expected');
|
|
3233
|
-
parentTNode = null;
|
|
3234
|
-
}
|
|
3222
|
+
parentTNode = getTNodeFromLView(lViewCursor);
|
|
3235
3223
|
if (parentTNode === null) {
|
|
3236
3224
|
// If we have no parent, than we are done.
|
|
3237
3225
|
return NO_PARENT_INJECTOR;
|
|
@@ -3392,93 +3380,116 @@ function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
|
|
|
3392
3380
|
*/
|
|
3393
3381
|
function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) {
|
|
3394
3382
|
if (tNode !== null) {
|
|
3395
|
-
|
|
3396
|
-
//
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
if (
|
|
3400
|
-
|
|
3401
|
-
// flag, the module injector is not searched for that token in Ivy.
|
|
3402
|
-
return (flags & InjectFlags.Host) ?
|
|
3403
|
-
notFoundValueOrThrow(notFoundValue, token, flags) :
|
|
3404
|
-
lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
|
|
3383
|
+
// If the view or any of its ancestors have an embedded
|
|
3384
|
+
// view injector, we have to look it up there first.
|
|
3385
|
+
if (lView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) {
|
|
3386
|
+
const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
|
|
3387
|
+
if (embeddedInjectorValue !== NOT_FOUND) {
|
|
3388
|
+
return embeddedInjectorValue;
|
|
3405
3389
|
}
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3390
|
+
}
|
|
3391
|
+
// Otherwise try the node injector.
|
|
3392
|
+
const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);
|
|
3393
|
+
if (value !== NOT_FOUND) {
|
|
3394
|
+
return value;
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3397
|
+
// Finally, fall back to the module injector.
|
|
3398
|
+
return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
|
|
3399
|
+
}
|
|
3400
|
+
/**
|
|
3401
|
+
* Returns the value associated to the given token from the node injector.
|
|
3402
|
+
*
|
|
3403
|
+
* @param tNode The Node where the search for the injector should start
|
|
3404
|
+
* @param lView The `LView` that contains the `tNode`
|
|
3405
|
+
* @param token The token to look for
|
|
3406
|
+
* @param flags Injection flags
|
|
3407
|
+
* @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`
|
|
3408
|
+
* @returns the value from the injector, `null` when not found, or `notFoundValue` if provided
|
|
3409
|
+
*/
|
|
3410
|
+
function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {
|
|
3411
|
+
const bloomHash = bloomHashBitOrFactory(token);
|
|
3412
|
+
// If the ID stored here is a function, this is a special object like ElementRef or TemplateRef
|
|
3413
|
+
// so just call the factory function to create it.
|
|
3414
|
+
if (typeof bloomHash === 'function') {
|
|
3415
|
+
if (!enterDI(lView, tNode, flags)) {
|
|
3416
|
+
// Failed to enter DI, try module injector instead. If a token is injected with the @Host
|
|
3417
|
+
// flag, the module injector is not searched for that token in Ivy.
|
|
3418
|
+
return (flags & InjectFlags.Host) ?
|
|
3419
|
+
notFoundValueOrThrow(notFoundValue, token, flags) :
|
|
3420
|
+
lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
|
|
3421
|
+
}
|
|
3422
|
+
try {
|
|
3423
|
+
const value = bloomHash(flags);
|
|
3424
|
+
if (value == null && !(flags & InjectFlags.Optional)) {
|
|
3425
|
+
throwProviderNotFoundError(token);
|
|
3414
3426
|
}
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
}
|
|
3418
|
-
}
|
|
3419
|
-
else if (typeof bloomHash === 'number') {
|
|
3420
|
-
// A reference to the previous injector TView that was found while climbing the element
|
|
3421
|
-
// injector tree. This is used to know if viewProviders can be accessed on the current
|
|
3422
|
-
// injector.
|
|
3423
|
-
let previousTView = null;
|
|
3424
|
-
let injectorIndex = getInjectorIndex(tNode, lView);
|
|
3425
|
-
let parentLocation = NO_PARENT_INJECTOR;
|
|
3426
|
-
let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
|
|
3427
|
-
// If we should skip this injector, or if there is no injector on this node, start by
|
|
3428
|
-
// searching the parent injector.
|
|
3429
|
-
if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {
|
|
3430
|
-
parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :
|
|
3431
|
-
lView[injectorIndex + 8 /* PARENT */];
|
|
3432
|
-
if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
|
|
3433
|
-
injectorIndex = -1;
|
|
3434
|
-
}
|
|
3435
|
-
else {
|
|
3436
|
-
previousTView = lView[TVIEW];
|
|
3437
|
-
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
3438
|
-
lView = getParentInjectorView(parentLocation, lView);
|
|
3439
|
-
}
|
|
3427
|
+
else {
|
|
3428
|
+
return value;
|
|
3440
3429
|
}
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3430
|
+
}
|
|
3431
|
+
finally {
|
|
3432
|
+
leaveDI();
|
|
3433
|
+
}
|
|
3434
|
+
}
|
|
3435
|
+
else if (typeof bloomHash === 'number') {
|
|
3436
|
+
// A reference to the previous injector TView that was found while climbing the element
|
|
3437
|
+
// injector tree. This is used to know if viewProviders can be accessed on the current
|
|
3438
|
+
// injector.
|
|
3439
|
+
let previousTView = null;
|
|
3440
|
+
let injectorIndex = getInjectorIndex(tNode, lView);
|
|
3441
|
+
let parentLocation = NO_PARENT_INJECTOR;
|
|
3442
|
+
let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
|
|
3443
|
+
// If we should skip this injector, or if there is no injector on this node, start by
|
|
3444
|
+
// searching the parent injector.
|
|
3445
|
+
if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {
|
|
3446
|
+
parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :
|
|
3447
|
+
lView[injectorIndex + 8 /* PARENT */];
|
|
3448
|
+
if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
|
|
3449
|
+
injectorIndex = -1;
|
|
3450
|
+
}
|
|
3451
|
+
else {
|
|
3452
|
+
previousTView = lView[TVIEW];
|
|
3453
|
+
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
3454
|
+
lView = getParentInjectorView(parentLocation, lView);
|
|
3455
|
+
}
|
|
3456
|
+
}
|
|
3457
|
+
// Traverse up the injector tree until we find a potential match or until we know there
|
|
3458
|
+
// *isn't* a match.
|
|
3459
|
+
while (injectorIndex !== -1) {
|
|
3460
|
+
ngDevMode && assertNodeInjector(lView, injectorIndex);
|
|
3461
|
+
// Check the current injector. If it matches, see if it contains token.
|
|
3462
|
+
const tView = lView[TVIEW];
|
|
3463
|
+
ngDevMode &&
|
|
3464
|
+
assertTNodeForLView(tView.data[injectorIndex + 8 /* TNODE */], lView);
|
|
3465
|
+
if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
|
|
3466
|
+
// At this point, we have an injector which *may* contain the token, so we step through
|
|
3467
|
+
// the providers and directives associated with the injector's corresponding node to get
|
|
3468
|
+
// the instance.
|
|
3469
|
+
const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);
|
|
3470
|
+
if (instance !== NOT_FOUND) {
|
|
3471
|
+
return instance;
|
|
3473
3472
|
}
|
|
3474
3473
|
}
|
|
3474
|
+
parentLocation = lView[injectorIndex + 8 /* PARENT */];
|
|
3475
|
+
if (parentLocation !== NO_PARENT_INJECTOR &&
|
|
3476
|
+
shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* TNODE */] === hostTElementNode) &&
|
|
3477
|
+
bloomHasToken(bloomHash, injectorIndex, lView)) {
|
|
3478
|
+
// The def wasn't found anywhere on this node, so it was a false positive.
|
|
3479
|
+
// Traverse up the tree and continue searching.
|
|
3480
|
+
previousTView = tView;
|
|
3481
|
+
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
3482
|
+
lView = getParentInjectorView(parentLocation, lView);
|
|
3483
|
+
}
|
|
3484
|
+
else {
|
|
3485
|
+
// If we should not search parent OR If the ancestor bloom filter value does not have the
|
|
3486
|
+
// bit corresponding to the directive we can give up on traversing up to find the specific
|
|
3487
|
+
// injector.
|
|
3488
|
+
injectorIndex = -1;
|
|
3489
|
+
}
|
|
3475
3490
|
}
|
|
3476
3491
|
}
|
|
3477
|
-
return
|
|
3478
|
-
}
|
|
3479
|
-
const NOT_FOUND = {};
|
|
3480
|
-
function createNodeInjector() {
|
|
3481
|
-
return new NodeInjector(getCurrentTNode(), getLView());
|
|
3492
|
+
return notFoundValue;
|
|
3482
3493
|
}
|
|
3483
3494
|
function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
|
|
3484
3495
|
const currentTView = lView[TVIEW];
|
|
@@ -3652,6 +3663,10 @@ class NodeInjector {
|
|
|
3652
3663
|
return getOrCreateInjectable(this._tNode, this._lView, token, flags, notFoundValue);
|
|
3653
3664
|
}
|
|
3654
3665
|
}
|
|
3666
|
+
/** Creates a `NodeInjector` for the current node. */
|
|
3667
|
+
function createNodeInjector() {
|
|
3668
|
+
return new NodeInjector(getCurrentTNode(), getLView());
|
|
3669
|
+
}
|
|
3655
3670
|
/**
|
|
3656
3671
|
* @codeGenApi
|
|
3657
3672
|
*/
|
|
@@ -3690,6 +3705,73 @@ function getFactoryOf(type) {
|
|
|
3690
3705
|
}
|
|
3691
3706
|
return getFactoryDef(type);
|
|
3692
3707
|
}
|
|
3708
|
+
/**
|
|
3709
|
+
* Returns a value from the closest embedded or node injector.
|
|
3710
|
+
*
|
|
3711
|
+
* @param tNode The Node where the search for the injector should start
|
|
3712
|
+
* @param lView The `LView` that contains the `tNode`
|
|
3713
|
+
* @param token The token to look for
|
|
3714
|
+
* @param flags Injection flags
|
|
3715
|
+
* @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`
|
|
3716
|
+
* @returns the value from the injector, `null` when not found, or `notFoundValue` if provided
|
|
3717
|
+
*/
|
|
3718
|
+
function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {
|
|
3719
|
+
let currentTNode = tNode;
|
|
3720
|
+
let currentLView = lView;
|
|
3721
|
+
// When an LView with an embedded view injector is inserted, it'll likely be interlaced with
|
|
3722
|
+
// nodes who may have injectors (e.g. node injector -> embedded view injector -> node injector).
|
|
3723
|
+
// Since the bloom filters for the node injectors have already been constructed and we don't
|
|
3724
|
+
// have a way of extracting the records from an injector, the only way to maintain the correct
|
|
3725
|
+
// hierarchy when resolving the value is to walk it node-by-node while attempting to resolve
|
|
3726
|
+
// the token at each level.
|
|
3727
|
+
while (currentTNode !== null && currentLView !== null &&
|
|
3728
|
+
(currentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) &&
|
|
3729
|
+
!(currentLView[FLAGS] & 512 /* IsRoot */)) {
|
|
3730
|
+
ngDevMode && assertTNodeForLView(currentTNode, currentLView);
|
|
3731
|
+
// Note that this lookup on the node injector is using the `Self` flag, because
|
|
3732
|
+
// we don't want the node injector to look at any parent injectors since we
|
|
3733
|
+
// may hit the embedded view injector first.
|
|
3734
|
+
const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | InjectFlags.Self, NOT_FOUND);
|
|
3735
|
+
if (nodeInjectorValue !== NOT_FOUND) {
|
|
3736
|
+
return nodeInjectorValue;
|
|
3737
|
+
}
|
|
3738
|
+
// Has an explicit type due to a TS bug: https://github.com/microsoft/TypeScript/issues/33191
|
|
3739
|
+
let parentTNode = currentTNode.parent;
|
|
3740
|
+
// `TNode.parent` includes the parent within the current view only. If it doesn't exist,
|
|
3741
|
+
// it means that we've hit the view boundary and we need to go up to the next view.
|
|
3742
|
+
if (!parentTNode) {
|
|
3743
|
+
// Before we go to the next LView, check if the token exists on the current embedded injector.
|
|
3744
|
+
const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];
|
|
3745
|
+
if (embeddedViewInjector) {
|
|
3746
|
+
const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags);
|
|
3747
|
+
if (embeddedViewInjectorValue !== NOT_FOUND) {
|
|
3748
|
+
return embeddedViewInjectorValue;
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
// Otherwise keep going up the tree.
|
|
3752
|
+
parentTNode = getTNodeFromLView(currentLView);
|
|
3753
|
+
currentLView = currentLView[DECLARATION_VIEW];
|
|
3754
|
+
}
|
|
3755
|
+
currentTNode = parentTNode;
|
|
3756
|
+
}
|
|
3757
|
+
return notFoundValue;
|
|
3758
|
+
}
|
|
3759
|
+
/** Gets the TNode associated with an LView inside of the declaration view. */
|
|
3760
|
+
function getTNodeFromLView(lView) {
|
|
3761
|
+
const tView = lView[TVIEW];
|
|
3762
|
+
const tViewType = tView.type;
|
|
3763
|
+
// The parent pointer differs based on `TView.type`.
|
|
3764
|
+
if (tViewType === 2 /* Embedded */) {
|
|
3765
|
+
ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
3766
|
+
return tView.declTNode;
|
|
3767
|
+
}
|
|
3768
|
+
else if (tViewType === 1 /* Component */) {
|
|
3769
|
+
// Components don't have `TView.declTNode` because each instance of component could be
|
|
3770
|
+
// inserted in different location, hence `TView.declTNode` is meaningless.
|
|
3771
|
+
return lView[T_HOST];
|
|
3772
|
+
}
|
|
3773
|
+
return null;
|
|
3774
|
+
}
|
|
3693
3775
|
|
|
3694
3776
|
/**
|
|
3695
3777
|
* @license
|
|
@@ -6170,6 +6252,78 @@ function getSanitizer() {
|
|
|
6170
6252
|
return lView && lView[SANITIZER];
|
|
6171
6253
|
}
|
|
6172
6254
|
|
|
6255
|
+
/**
|
|
6256
|
+
* @license
|
|
6257
|
+
* Copyright Google LLC All Rights Reserved.
|
|
6258
|
+
*
|
|
6259
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6260
|
+
* found in the LICENSE file at https://angular.io/license
|
|
6261
|
+
*/
|
|
6262
|
+
// Keeps track of the currently-active LViews.
|
|
6263
|
+
const TRACKED_LVIEWS = new Map();
|
|
6264
|
+
// Used for generating unique IDs for LViews.
|
|
6265
|
+
let uniqueIdCounter = 0;
|
|
6266
|
+
/** Gets a unique ID that can be assigned to an LView. */
|
|
6267
|
+
function getUniqueLViewId() {
|
|
6268
|
+
return uniqueIdCounter++;
|
|
6269
|
+
}
|
|
6270
|
+
/** Starts tracking an LView. */
|
|
6271
|
+
function registerLView(lView) {
|
|
6272
|
+
ngDevMode && assertNumber(lView[ID], 'LView must have an ID in order to be registered');
|
|
6273
|
+
TRACKED_LVIEWS.set(lView[ID], lView);
|
|
6274
|
+
}
|
|
6275
|
+
/** Gets an LView by its unique ID. */
|
|
6276
|
+
function getLViewById(id) {
|
|
6277
|
+
ngDevMode && assertNumber(id, 'ID used for LView lookup must be a number');
|
|
6278
|
+
return TRACKED_LVIEWS.get(id) || null;
|
|
6279
|
+
}
|
|
6280
|
+
/** Stops tracking an LView. */
|
|
6281
|
+
function unregisterLView(lView) {
|
|
6282
|
+
ngDevMode && assertNumber(lView[ID], 'Cannot stop tracking an LView that does not have an ID');
|
|
6283
|
+
TRACKED_LVIEWS.delete(lView[ID]);
|
|
6284
|
+
}
|
|
6285
|
+
|
|
6286
|
+
/**
|
|
6287
|
+
* @license
|
|
6288
|
+
* Copyright Google LLC All Rights Reserved.
|
|
6289
|
+
*
|
|
6290
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6291
|
+
* found in the LICENSE file at https://angular.io/license
|
|
6292
|
+
*/
|
|
6293
|
+
/**
|
|
6294
|
+
* The internal view context which is specific to a given DOM element, directive or
|
|
6295
|
+
* component instance. Each value in here (besides the LView and element node details)
|
|
6296
|
+
* can be present, null or undefined. If undefined then it implies the value has not been
|
|
6297
|
+
* looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
|
|
6298
|
+
*
|
|
6299
|
+
* Each value will get filled when the respective value is examined within the getContext
|
|
6300
|
+
* function. The component, element and each directive instance will share the same instance
|
|
6301
|
+
* of the context.
|
|
6302
|
+
*/
|
|
6303
|
+
class LContext {
|
|
6304
|
+
constructor(
|
|
6305
|
+
/**
|
|
6306
|
+
* ID of the component's parent view data.
|
|
6307
|
+
*/
|
|
6308
|
+
lViewId,
|
|
6309
|
+
/**
|
|
6310
|
+
* The index instance of the node.
|
|
6311
|
+
*/
|
|
6312
|
+
nodeIndex,
|
|
6313
|
+
/**
|
|
6314
|
+
* The instance of the DOM node that is attached to the lNode.
|
|
6315
|
+
*/
|
|
6316
|
+
native) {
|
|
6317
|
+
this.lViewId = lViewId;
|
|
6318
|
+
this.nodeIndex = nodeIndex;
|
|
6319
|
+
this.native = native;
|
|
6320
|
+
}
|
|
6321
|
+
/** Component's parent view data. */
|
|
6322
|
+
get lView() {
|
|
6323
|
+
return getLViewById(this.lViewId);
|
|
6324
|
+
}
|
|
6325
|
+
}
|
|
6326
|
+
|
|
6173
6327
|
/**
|
|
6174
6328
|
* @license
|
|
6175
6329
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -6202,7 +6356,7 @@ function getLContext(target) {
|
|
|
6202
6356
|
if (mpValue) {
|
|
6203
6357
|
// only when it's an array is it considered an LView instance
|
|
6204
6358
|
// ... otherwise it's an already constructed LContext instance
|
|
6205
|
-
if (
|
|
6359
|
+
if (isLView(mpValue)) {
|
|
6206
6360
|
const lView = mpValue;
|
|
6207
6361
|
let nodeIndex;
|
|
6208
6362
|
let component = undefined;
|
|
@@ -6261,13 +6415,7 @@ function getLContext(target) {
|
|
|
6261
6415
|
while (parent = parent.parentNode) {
|
|
6262
6416
|
const parentContext = readPatchedData(parent);
|
|
6263
6417
|
if (parentContext) {
|
|
6264
|
-
|
|
6265
|
-
if (Array.isArray(parentContext)) {
|
|
6266
|
-
lView = parentContext;
|
|
6267
|
-
}
|
|
6268
|
-
else {
|
|
6269
|
-
lView = parentContext.lView;
|
|
6270
|
-
}
|
|
6418
|
+
const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView;
|
|
6271
6419
|
// the edge of the app was also reached here through another means
|
|
6272
6420
|
// (maybe because the DOM was changed manually).
|
|
6273
6421
|
if (!lView) {
|
|
@@ -6290,14 +6438,7 @@ function getLContext(target) {
|
|
|
6290
6438
|
* Creates an empty instance of a `LContext` context
|
|
6291
6439
|
*/
|
|
6292
6440
|
function createLContext(lView, nodeIndex, native) {
|
|
6293
|
-
return
|
|
6294
|
-
lView,
|
|
6295
|
-
nodeIndex,
|
|
6296
|
-
native,
|
|
6297
|
-
component: undefined,
|
|
6298
|
-
directives: undefined,
|
|
6299
|
-
localRefs: undefined,
|
|
6300
|
-
};
|
|
6441
|
+
return new LContext(lView[ID], nodeIndex, native);
|
|
6301
6442
|
}
|
|
6302
6443
|
/**
|
|
6303
6444
|
* Takes a component instance and returns the view for that component.
|
|
@@ -6306,21 +6447,24 @@ function createLContext(lView, nodeIndex, native) {
|
|
|
6306
6447
|
* @returns The component's view
|
|
6307
6448
|
*/
|
|
6308
6449
|
function getComponentViewByInstance(componentInstance) {
|
|
6309
|
-
let
|
|
6310
|
-
let
|
|
6311
|
-
if (
|
|
6312
|
-
const
|
|
6313
|
-
|
|
6314
|
-
|
|
6450
|
+
let patchedData = readPatchedData(componentInstance);
|
|
6451
|
+
let lView;
|
|
6452
|
+
if (isLView(patchedData)) {
|
|
6453
|
+
const contextLView = patchedData;
|
|
6454
|
+
const nodeIndex = findViaComponent(contextLView, componentInstance);
|
|
6455
|
+
lView = getComponentLViewByIndex(nodeIndex, contextLView);
|
|
6456
|
+
const context = createLContext(contextLView, nodeIndex, lView[HOST]);
|
|
6315
6457
|
context.component = componentInstance;
|
|
6316
6458
|
attachPatchData(componentInstance, context);
|
|
6317
6459
|
attachPatchData(context.native, context);
|
|
6318
6460
|
}
|
|
6319
6461
|
else {
|
|
6320
|
-
const context =
|
|
6321
|
-
|
|
6462
|
+
const context = patchedData;
|
|
6463
|
+
const contextLView = context.lView;
|
|
6464
|
+
ngDevMode && assertLView(contextLView);
|
|
6465
|
+
lView = getComponentLViewByIndex(context.nodeIndex, contextLView);
|
|
6322
6466
|
}
|
|
6323
|
-
return
|
|
6467
|
+
return lView;
|
|
6324
6468
|
}
|
|
6325
6469
|
/**
|
|
6326
6470
|
* This property will be monkey-patched on elements, components and directives.
|
|
@@ -6332,7 +6476,16 @@ const MONKEY_PATCH_KEY_NAME = '__ngContext__';
|
|
|
6332
6476
|
*/
|
|
6333
6477
|
function attachPatchData(target, data) {
|
|
6334
6478
|
ngDevMode && assertDefined(target, 'Target expected');
|
|
6335
|
-
|
|
6479
|
+
// Only attach the ID of the view in order to avoid memory leaks (see #41047). We only do this
|
|
6480
|
+
// for `LView`, because we have control over when an `LView` is created and destroyed, whereas
|
|
6481
|
+
// we can't know when to remove an `LContext`.
|
|
6482
|
+
if (isLView(data)) {
|
|
6483
|
+
target[MONKEY_PATCH_KEY_NAME] = data[ID];
|
|
6484
|
+
registerLView(data);
|
|
6485
|
+
}
|
|
6486
|
+
else {
|
|
6487
|
+
target[MONKEY_PATCH_KEY_NAME] = data;
|
|
6488
|
+
}
|
|
6336
6489
|
}
|
|
6337
6490
|
/**
|
|
6338
6491
|
* Returns the monkey-patch value data present on the target (which could be
|
|
@@ -6340,12 +6493,13 @@ function attachPatchData(target, data) {
|
|
|
6340
6493
|
*/
|
|
6341
6494
|
function readPatchedData(target) {
|
|
6342
6495
|
ngDevMode && assertDefined(target, 'Target expected');
|
|
6343
|
-
|
|
6496
|
+
const data = target[MONKEY_PATCH_KEY_NAME];
|
|
6497
|
+
return (typeof data === 'number') ? getLViewById(data) : data || null;
|
|
6344
6498
|
}
|
|
6345
6499
|
function readPatchedLView(target) {
|
|
6346
6500
|
const value = readPatchedData(target);
|
|
6347
6501
|
if (value) {
|
|
6348
|
-
return
|
|
6502
|
+
return isLView(value) ? value : value.lView;
|
|
6349
6503
|
}
|
|
6350
6504
|
return null;
|
|
6351
6505
|
}
|
|
@@ -7292,6 +7446,8 @@ function cleanUpView(tView, lView) {
|
|
|
7292
7446
|
lQueries.detachView(tView);
|
|
7293
7447
|
}
|
|
7294
7448
|
}
|
|
7449
|
+
// Unregister the view once everything else has been cleaned up.
|
|
7450
|
+
unregisterLView(lView);
|
|
7295
7451
|
}
|
|
7296
7452
|
}
|
|
7297
7453
|
/** Removes listeners and unsubscribes from output subscriptions */
|
|
@@ -9009,7 +9165,7 @@ class LViewDebug {
|
|
|
9009
9165
|
attached: !!(flags & 128 /* Attached */),
|
|
9010
9166
|
destroyed: !!(flags & 256 /* Destroyed */),
|
|
9011
9167
|
isRoot: !!(flags & 512 /* IsRoot */),
|
|
9012
|
-
indexWithinInitPhase: flags >>
|
|
9168
|
+
indexWithinInitPhase: flags >> 12 /* IndexWithinInitPhaseShift */,
|
|
9013
9169
|
};
|
|
9014
9170
|
}
|
|
9015
9171
|
get parent() {
|
|
@@ -9072,6 +9228,9 @@ class LViewDebug {
|
|
|
9072
9228
|
get tHost() {
|
|
9073
9229
|
return this._raw_lView[T_HOST];
|
|
9074
9230
|
}
|
|
9231
|
+
get id() {
|
|
9232
|
+
return this._raw_lView[ID];
|
|
9233
|
+
}
|
|
9075
9234
|
get decls() {
|
|
9076
9235
|
return toLViewRange(this.tView, this._raw_lView, HEADER_OFFSET, this.tView.bindingStartIndex);
|
|
9077
9236
|
}
|
|
@@ -9301,10 +9460,14 @@ function renderChildComponents(hostLView, components) {
|
|
|
9301
9460
|
renderComponent$1(hostLView, components[i]);
|
|
9302
9461
|
}
|
|
9303
9462
|
}
|
|
9304
|
-
function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector) {
|
|
9463
|
+
function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector, embeddedViewInjector) {
|
|
9305
9464
|
const lView = ngDevMode ? cloneToLViewFromTViewBlueprint(tView) : tView.blueprint.slice();
|
|
9306
9465
|
lView[HOST] = host;
|
|
9307
9466
|
lView[FLAGS] = flags | 4 /* CreationMode */ | 128 /* Attached */ | 8 /* FirstLViewPass */;
|
|
9467
|
+
if (embeddedViewInjector !== null ||
|
|
9468
|
+
(parentLView && (parentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */))) {
|
|
9469
|
+
lView[FLAGS] |= 2048 /* HasEmbeddedViewInjector */;
|
|
9470
|
+
}
|
|
9308
9471
|
resetPreOrderHookFlags(lView);
|
|
9309
9472
|
ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
|
|
9310
9473
|
lView[PARENT] = lView[DECLARATION_VIEW] = parentLView;
|
|
@@ -9316,6 +9479,8 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
|
|
|
9316
9479
|
lView[SANITIZER] = sanitizer || parentLView && parentLView[SANITIZER] || null;
|
|
9317
9480
|
lView[INJECTOR$1] = injector || parentLView && parentLView[INJECTOR$1] || null;
|
|
9318
9481
|
lView[T_HOST] = tHostNode;
|
|
9482
|
+
lView[ID] = getUniqueLViewId();
|
|
9483
|
+
lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
|
|
9319
9484
|
ngDevMode &&
|
|
9320
9485
|
assertEqual(tView.type == 2 /* Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
|
|
9321
9486
|
lView[DECLARATION_COMPONENT_VIEW] =
|
|
@@ -10324,7 +10489,6 @@ function instantiateAllDirectives(tView, lView, tNode, native) {
|
|
|
10324
10489
|
function invokeDirectivesHostBindings(tView, lView, tNode) {
|
|
10325
10490
|
const start = tNode.directiveStart;
|
|
10326
10491
|
const end = tNode.directiveEnd;
|
|
10327
|
-
const firstCreatePass = tView.firstCreatePass;
|
|
10328
10492
|
const elementIndex = tNode.index;
|
|
10329
10493
|
const currentDirectiveIndex = getCurrentDirectiveIndex();
|
|
10330
10494
|
try {
|
|
@@ -10471,7 +10635,7 @@ function addComponentLogic(lView, hostTNode, def) {
|
|
|
10471
10635
|
// Only component views should be added to the view tree directly. Embedded views are
|
|
10472
10636
|
// accessed through their containers because they may be removed / re-added later.
|
|
10473
10637
|
const rendererFactory = lView[RENDERER_FACTORY];
|
|
10474
|
-
const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null));
|
|
10638
|
+
const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null, null));
|
|
10475
10639
|
// Component view will always be created before any injected LContainers,
|
|
10476
10640
|
// so this is a regular element, wrap it with the component view
|
|
10477
10641
|
lView[hostTNode.index] = componentView;
|
|
@@ -10840,8 +11004,11 @@ function tickRootContext(rootContext) {
|
|
|
10840
11004
|
for (let i = 0; i < rootContext.components.length; i++) {
|
|
10841
11005
|
const rootComponent = rootContext.components[i];
|
|
10842
11006
|
const lView = readPatchedLView(rootComponent);
|
|
10843
|
-
|
|
10844
|
-
|
|
11007
|
+
// We might not have an `LView` if the component was destroyed.
|
|
11008
|
+
if (lView !== null) {
|
|
11009
|
+
const tView = lView[TVIEW];
|
|
11010
|
+
renderComponentOrTemplate(tView, lView, tView.template, rootComponent);
|
|
11011
|
+
}
|
|
10845
11012
|
}
|
|
10846
11013
|
}
|
|
10847
11014
|
function detectChangesInternal(tView, lView, context) {
|
|
@@ -11699,12 +11866,16 @@ Injector.__NG_ELEMENT_ID__ = -1 /* Injector */;
|
|
|
11699
11866
|
* @globalApi ng
|
|
11700
11867
|
*/
|
|
11701
11868
|
function getComponent$1(element) {
|
|
11702
|
-
assertDomElement(element);
|
|
11869
|
+
ngDevMode && assertDomElement(element);
|
|
11703
11870
|
const context = getLContext(element);
|
|
11704
11871
|
if (context === null)
|
|
11705
11872
|
return null;
|
|
11706
11873
|
if (context.component === undefined) {
|
|
11707
|
-
|
|
11874
|
+
const lView = context.lView;
|
|
11875
|
+
if (lView === null) {
|
|
11876
|
+
return null;
|
|
11877
|
+
}
|
|
11878
|
+
context.component = getComponentAtNodeIndex(context.nodeIndex, lView);
|
|
11708
11879
|
}
|
|
11709
11880
|
return context.component;
|
|
11710
11881
|
}
|
|
@@ -11723,7 +11894,8 @@ function getComponent$1(element) {
|
|
|
11723
11894
|
function getContext(element) {
|
|
11724
11895
|
assertDomElement(element);
|
|
11725
11896
|
const context = getLContext(element);
|
|
11726
|
-
|
|
11897
|
+
const lView = context ? context.lView : null;
|
|
11898
|
+
return lView === null ? null : lView[CONTEXT];
|
|
11727
11899
|
}
|
|
11728
11900
|
/**
|
|
11729
11901
|
* Retrieves the component instance whose view contains the DOM element.
|
|
@@ -11742,11 +11914,10 @@ function getContext(element) {
|
|
|
11742
11914
|
*/
|
|
11743
11915
|
function getOwningComponent(elementOrDir) {
|
|
11744
11916
|
const context = getLContext(elementOrDir);
|
|
11745
|
-
|
|
11917
|
+
let lView = context ? context.lView : null;
|
|
11918
|
+
if (lView === null)
|
|
11746
11919
|
return null;
|
|
11747
|
-
let lView = context.lView;
|
|
11748
11920
|
let parent;
|
|
11749
|
-
ngDevMode && assertLView(lView);
|
|
11750
11921
|
while (lView[TVIEW].type === 2 /* Embedded */ && (parent = getLViewParent(lView))) {
|
|
11751
11922
|
lView = parent;
|
|
11752
11923
|
}
|
|
@@ -11764,7 +11935,8 @@ function getOwningComponent(elementOrDir) {
|
|
|
11764
11935
|
* @globalApi ng
|
|
11765
11936
|
*/
|
|
11766
11937
|
function getRootComponents(elementOrDir) {
|
|
11767
|
-
|
|
11938
|
+
const lView = readPatchedLView(elementOrDir);
|
|
11939
|
+
return lView !== null ? [...getRootContext(lView).components] : [];
|
|
11768
11940
|
}
|
|
11769
11941
|
/**
|
|
11770
11942
|
* Retrieves an `Injector` associated with an element, component or directive instance.
|
|
@@ -11778,10 +11950,11 @@ function getRootComponents(elementOrDir) {
|
|
|
11778
11950
|
*/
|
|
11779
11951
|
function getInjector(elementOrDir) {
|
|
11780
11952
|
const context = getLContext(elementOrDir);
|
|
11781
|
-
|
|
11953
|
+
const lView = context ? context.lView : null;
|
|
11954
|
+
if (lView === null)
|
|
11782
11955
|
return Injector.NULL;
|
|
11783
|
-
const tNode =
|
|
11784
|
-
return new NodeInjector(tNode,
|
|
11956
|
+
const tNode = lView[TVIEW].data[context.nodeIndex];
|
|
11957
|
+
return new NodeInjector(tNode, lView);
|
|
11785
11958
|
}
|
|
11786
11959
|
/**
|
|
11787
11960
|
* Retrieve a set of injection tokens at a given DOM node.
|
|
@@ -11790,9 +11963,9 @@ function getInjector(elementOrDir) {
|
|
|
11790
11963
|
*/
|
|
11791
11964
|
function getInjectionTokens(element) {
|
|
11792
11965
|
const context = getLContext(element);
|
|
11793
|
-
|
|
11966
|
+
const lView = context ? context.lView : null;
|
|
11967
|
+
if (lView === null)
|
|
11794
11968
|
return [];
|
|
11795
|
-
const lView = context.lView;
|
|
11796
11969
|
const tView = lView[TVIEW];
|
|
11797
11970
|
const tNode = tView.data[context.nodeIndex];
|
|
11798
11971
|
const providerTokens = [];
|
|
@@ -11842,10 +12015,10 @@ function getDirectives(node) {
|
|
|
11842
12015
|
return [];
|
|
11843
12016
|
}
|
|
11844
12017
|
const context = getLContext(node);
|
|
11845
|
-
|
|
12018
|
+
const lView = context ? context.lView : null;
|
|
12019
|
+
if (lView === null) {
|
|
11846
12020
|
return [];
|
|
11847
12021
|
}
|
|
11848
|
-
const lView = context.lView;
|
|
11849
12022
|
const tView = lView[TVIEW];
|
|
11850
12023
|
const nodeIndex = context.nodeIndex;
|
|
11851
12024
|
if (!tView?.data[nodeIndex]) {
|
|
@@ -11905,7 +12078,11 @@ function getLocalRefs(target) {
|
|
|
11905
12078
|
if (context === null)
|
|
11906
12079
|
return {};
|
|
11907
12080
|
if (context.localRefs === undefined) {
|
|
11908
|
-
|
|
12081
|
+
const lView = context.lView;
|
|
12082
|
+
if (lView === null) {
|
|
12083
|
+
return {};
|
|
12084
|
+
}
|
|
12085
|
+
context.localRefs = discoverLocalRefs(lView, context.nodeIndex);
|
|
11909
12086
|
}
|
|
11910
12087
|
return context.localRefs || {};
|
|
11911
12088
|
}
|
|
@@ -11969,11 +12146,11 @@ function getRenderedText(component) {
|
|
|
11969
12146
|
* @globalApi ng
|
|
11970
12147
|
*/
|
|
11971
12148
|
function getListeners(element) {
|
|
11972
|
-
assertDomElement(element);
|
|
12149
|
+
ngDevMode && assertDomElement(element);
|
|
11973
12150
|
const lContext = getLContext(element);
|
|
11974
|
-
|
|
12151
|
+
const lView = lContext === null ? null : lContext.lView;
|
|
12152
|
+
if (lView === null)
|
|
11975
12153
|
return [];
|
|
11976
|
-
const lView = lContext.lView;
|
|
11977
12154
|
const tView = lView[TVIEW];
|
|
11978
12155
|
const lCleanup = lView[CLEANUP];
|
|
11979
12156
|
const tCleanup = tView.cleanup;
|
|
@@ -12024,10 +12201,10 @@ function getDebugNode$1(element) {
|
|
|
12024
12201
|
throw new Error('Expecting instance of DOM Element');
|
|
12025
12202
|
}
|
|
12026
12203
|
const lContext = getLContext(element);
|
|
12027
|
-
|
|
12204
|
+
const lView = lContext ? lContext.lView : null;
|
|
12205
|
+
if (lView === null) {
|
|
12028
12206
|
return null;
|
|
12029
12207
|
}
|
|
12030
|
-
const lView = lContext.lView;
|
|
12031
12208
|
const nodeIndex = lContext.nodeIndex;
|
|
12032
12209
|
if (nodeIndex !== -1) {
|
|
12033
12210
|
const valueInLView = lView[nodeIndex];
|
|
@@ -12052,6 +12229,7 @@ function getComponentLView(target) {
|
|
|
12052
12229
|
const lContext = getLContext(target);
|
|
12053
12230
|
const nodeIndx = lContext.nodeIndex;
|
|
12054
12231
|
const lView = lContext.lView;
|
|
12232
|
+
ngDevMode && assertLView(lView);
|
|
12055
12233
|
const componentLView = lView[nodeIndx];
|
|
12056
12234
|
ngDevMode && assertLView(componentLView);
|
|
12057
12235
|
return componentLView;
|
|
@@ -12199,7 +12377,7 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
|
|
|
12199
12377
|
const rootContext = createRootContext(opts.scheduler, opts.playerHandler);
|
|
12200
12378
|
const renderer = rendererFactory.createRenderer(hostRNode, componentDef);
|
|
12201
12379
|
const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
|
|
12202
|
-
const rootView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, renderer, null, opts.injector || null);
|
|
12380
|
+
const rootView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, renderer, null, opts.injector || null, null);
|
|
12203
12381
|
enterView(rootView);
|
|
12204
12382
|
let component;
|
|
12205
12383
|
try {
|
|
@@ -12254,7 +12432,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
|
|
|
12254
12432
|
}
|
|
12255
12433
|
}
|
|
12256
12434
|
const viewRenderer = rendererFactory.createRenderer(rNode, def);
|
|
12257
|
-
const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null);
|
|
12435
|
+
const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
|
|
12258
12436
|
if (tView.firstCreatePass) {
|
|
12259
12437
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
|
|
12260
12438
|
markAsComponentHost(tView, tNode);
|
|
@@ -14506,6 +14684,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
|
|
|
14506
14684
|
* @param name Name of the DOM Node
|
|
14507
14685
|
* @param attrsIndex Index of the element's attributes in the `consts` array.
|
|
14508
14686
|
* @param localRefsIndex Index of the element's local references in the `consts` array.
|
|
14687
|
+
* @returns This function returns itself so that it may be chained.
|
|
14509
14688
|
*
|
|
14510
14689
|
* Attributes and localRefs are passed as an array of strings where elements with an even index
|
|
14511
14690
|
* hold an attribute name and elements with an odd index hold an attribute value, ex.:
|
|
@@ -14557,9 +14736,11 @@ function ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {
|
|
|
14557
14736
|
if (localRefsIndex !== null) {
|
|
14558
14737
|
saveResolvedLocalsInData(lView, tNode);
|
|
14559
14738
|
}
|
|
14739
|
+
return ɵɵelementStart;
|
|
14560
14740
|
}
|
|
14561
14741
|
/**
|
|
14562
14742
|
* Mark the end of the element.
|
|
14743
|
+
* @returns This function returns itself so that it may be chained.
|
|
14563
14744
|
*
|
|
14564
14745
|
* @codeGenApi
|
|
14565
14746
|
*/
|
|
@@ -14590,6 +14771,7 @@ function ɵɵelementEnd() {
|
|
|
14590
14771
|
if (tNode.stylesWithoutHost != null && hasStyleInput(tNode)) {
|
|
14591
14772
|
setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.stylesWithoutHost, false);
|
|
14592
14773
|
}
|
|
14774
|
+
return ɵɵelementEnd;
|
|
14593
14775
|
}
|
|
14594
14776
|
/**
|
|
14595
14777
|
* Creates an empty element using {@link elementStart} and {@link elementEnd}
|
|
@@ -14598,12 +14780,14 @@ function ɵɵelementEnd() {
|
|
|
14598
14780
|
* @param name Name of the DOM Node
|
|
14599
14781
|
* @param attrsIndex Index of the element's attributes in the `consts` array.
|
|
14600
14782
|
* @param localRefsIndex Index of the element's local references in the `consts` array.
|
|
14783
|
+
* @returns This function returns itself so that it may be chained.
|
|
14601
14784
|
*
|
|
14602
14785
|
* @codeGenApi
|
|
14603
14786
|
*/
|
|
14604
14787
|
function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
|
|
14605
14788
|
ɵɵelementStart(index, name, attrsIndex, localRefsIndex);
|
|
14606
14789
|
ɵɵelementEnd();
|
|
14790
|
+
return ɵɵelement;
|
|
14607
14791
|
}
|
|
14608
14792
|
function logUnknownElementError(tView, element, tNode, hasDirectives) {
|
|
14609
14793
|
const schemas = tView.schemas;
|
|
@@ -14672,6 +14856,7 @@ function elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, l
|
|
|
14672
14856
|
* @param index Index of the element in the LView array
|
|
14673
14857
|
* @param attrsIndex Index of the container attributes in the `consts` array.
|
|
14674
14858
|
* @param localRefsIndex Index of the container's local references in the `consts` array.
|
|
14859
|
+
* @returns This function returns itself so that it may be chained.
|
|
14675
14860
|
*
|
|
14676
14861
|
* Even if this instruction accepts a set of attributes no actual attribute values are propagated to
|
|
14677
14862
|
* the DOM (as a comment node can't have attributes). Attributes are here only for directive
|
|
@@ -14702,9 +14887,11 @@ function ɵɵelementContainerStart(index, attrsIndex, localRefsIndex) {
|
|
|
14702
14887
|
if (localRefsIndex != null) {
|
|
14703
14888
|
saveResolvedLocalsInData(lView, tNode);
|
|
14704
14889
|
}
|
|
14890
|
+
return ɵɵelementContainerStart;
|
|
14705
14891
|
}
|
|
14706
14892
|
/**
|
|
14707
14893
|
* Mark the end of the <ng-container>.
|
|
14894
|
+
* @returns This function returns itself so that it may be chained.
|
|
14708
14895
|
*
|
|
14709
14896
|
* @codeGenApi
|
|
14710
14897
|
*/
|
|
@@ -14726,6 +14913,7 @@ function ɵɵelementContainerEnd() {
|
|
|
14726
14913
|
tView.queries.elementEnd(currentTNode);
|
|
14727
14914
|
}
|
|
14728
14915
|
}
|
|
14916
|
+
return ɵɵelementContainerEnd;
|
|
14729
14917
|
}
|
|
14730
14918
|
/**
|
|
14731
14919
|
* Creates an empty logical container using {@link elementContainerStart}
|
|
@@ -14734,12 +14922,14 @@ function ɵɵelementContainerEnd() {
|
|
|
14734
14922
|
* @param index Index of the element in the LView array
|
|
14735
14923
|
* @param attrsIndex Index of the container attributes in the `consts` array.
|
|
14736
14924
|
* @param localRefsIndex Index of the container's local references in the `consts` array.
|
|
14925
|
+
* @returns This function returns itself so that it may be chained.
|
|
14737
14926
|
*
|
|
14738
14927
|
* @codeGenApi
|
|
14739
14928
|
*/
|
|
14740
14929
|
function ɵɵelementContainer(index, attrsIndex, localRefsIndex) {
|
|
14741
14930
|
ɵɵelementContainerStart(index, attrsIndex, localRefsIndex);
|
|
14742
14931
|
ɵɵelementContainerEnd();
|
|
14932
|
+
return ɵɵelementContainer;
|
|
14743
14933
|
}
|
|
14744
14934
|
|
|
14745
14935
|
/**
|
|
@@ -21090,7 +21280,7 @@ class Version {
|
|
|
21090
21280
|
/**
|
|
21091
21281
|
* @publicApi
|
|
21092
21282
|
*/
|
|
21093
|
-
const VERSION = new Version('14.0.0-next.
|
|
21283
|
+
const VERSION = new Version('14.0.0-next.5');
|
|
21094
21284
|
|
|
21095
21285
|
/**
|
|
21096
21286
|
* @license
|
|
@@ -21496,29 +21686,27 @@ function getNamespace(elementName) {
|
|
|
21496
21686
|
return name === 'svg' ? SVG_NAMESPACE : (name === 'math' ? MATH_ML_NAMESPACE : null);
|
|
21497
21687
|
}
|
|
21498
21688
|
/**
|
|
21499
|
-
*
|
|
21500
|
-
*
|
|
21689
|
+
* Injector that looks up a value using a specific injector, before falling back to the module
|
|
21690
|
+
* injector. Used primarily when creating components or embedded views dynamically.
|
|
21501
21691
|
*/
|
|
21502
|
-
|
|
21503
|
-
|
|
21504
|
-
|
|
21505
|
-
|
|
21506
|
-
|
|
21507
|
-
|
|
21508
|
-
get
|
|
21509
|
-
|
|
21510
|
-
|
|
21511
|
-
|
|
21512
|
-
|
|
21513
|
-
|
|
21514
|
-
|
|
21515
|
-
|
|
21516
|
-
|
|
21517
|
-
return value;
|
|
21518
|
-
}
|
|
21519
|
-
return moduleInjector.get(token, notFoundValue, flags);
|
|
21692
|
+
class ChainedInjector {
|
|
21693
|
+
constructor(injector, parentInjector) {
|
|
21694
|
+
this.injector = injector;
|
|
21695
|
+
this.parentInjector = parentInjector;
|
|
21696
|
+
}
|
|
21697
|
+
get(token, notFoundValue, flags) {
|
|
21698
|
+
const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, flags);
|
|
21699
|
+
if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||
|
|
21700
|
+
notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {
|
|
21701
|
+
// Return the value from the root element injector when
|
|
21702
|
+
// - it provides it
|
|
21703
|
+
// (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
|
|
21704
|
+
// - the module injector should not be checked
|
|
21705
|
+
// (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
|
|
21706
|
+
return value;
|
|
21520
21707
|
}
|
|
21521
|
-
|
|
21708
|
+
return this.parentInjector.get(token, notFoundValue, flags);
|
|
21709
|
+
}
|
|
21522
21710
|
}
|
|
21523
21711
|
/**
|
|
21524
21712
|
* Render3 implementation of {@link viewEngine_ComponentFactory}.
|
|
@@ -21546,7 +21734,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
21546
21734
|
}
|
|
21547
21735
|
create(injector, projectableNodes, rootSelectorOrNode, ngModule) {
|
|
21548
21736
|
ngModule = ngModule || this.ngModule;
|
|
21549
|
-
const rootViewInjector = ngModule ?
|
|
21737
|
+
const rootViewInjector = ngModule ? new ChainedInjector(injector, ngModule.injector) : injector;
|
|
21550
21738
|
const rendererFactory = rootViewInjector.get(RendererFactory2, domRendererFactory3);
|
|
21551
21739
|
const sanitizer = rootViewInjector.get(Sanitizer, null);
|
|
21552
21740
|
const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
|
|
@@ -21561,7 +21749,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
21561
21749
|
const rootContext = createRootContext();
|
|
21562
21750
|
// Create the root view. Uses empty TView and ContentTemplate.
|
|
21563
21751
|
const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
|
|
21564
|
-
const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector);
|
|
21752
|
+
const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
|
|
21565
21753
|
// rootView is the parent when bootstrapping
|
|
21566
21754
|
// TODO(misko): it looks like we are entering view here but we don't really need to as
|
|
21567
21755
|
// `renderView` does that. However as the code is written it is needed because
|
|
@@ -22681,9 +22869,9 @@ const R3TemplateRef = class TemplateRef extends ViewEngineTemplateRef {
|
|
|
22681
22869
|
this._declarationTContainer = _declarationTContainer;
|
|
22682
22870
|
this.elementRef = elementRef;
|
|
22683
22871
|
}
|
|
22684
|
-
createEmbeddedView(context) {
|
|
22872
|
+
createEmbeddedView(context, injector) {
|
|
22685
22873
|
const embeddedTView = this._declarationTContainer.tViews;
|
|
22686
|
-
const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* CheckAlways */, null, embeddedTView.declTNode, null, null, null, null);
|
|
22874
|
+
const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* CheckAlways */, null, embeddedTView.declTNode, null, null, null, null, injector || null);
|
|
22687
22875
|
const declarationLContainer = this._declarationLView[this._declarationTContainer.index];
|
|
22688
22876
|
ngDevMode && assertLContainer(declarationLContainer);
|
|
22689
22877
|
embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
|
|
@@ -22799,8 +22987,17 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
22799
22987
|
get length() {
|
|
22800
22988
|
return this._lContainer.length - CONTAINER_HEADER_OFFSET;
|
|
22801
22989
|
}
|
|
22802
|
-
createEmbeddedView(templateRef, context,
|
|
22803
|
-
|
|
22990
|
+
createEmbeddedView(templateRef, context, indexOrOptions) {
|
|
22991
|
+
let index;
|
|
22992
|
+
let injector;
|
|
22993
|
+
if (typeof indexOrOptions === 'number') {
|
|
22994
|
+
index = indexOrOptions;
|
|
22995
|
+
}
|
|
22996
|
+
else if (indexOrOptions != null) {
|
|
22997
|
+
index = indexOrOptions.index;
|
|
22998
|
+
injector = indexOrOptions.injector;
|
|
22999
|
+
}
|
|
23000
|
+
const viewRef = templateRef.createEmbeddedView(context || {}, injector);
|
|
22804
23001
|
this.insert(viewRef, index);
|
|
22805
23002
|
return viewRef;
|
|
22806
23003
|
}
|
|
@@ -22841,11 +23038,29 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
22841
23038
|
componentFactoryOrType :
|
|
22842
23039
|
new ComponentFactory(getComponentDef(componentFactoryOrType));
|
|
22843
23040
|
const contextInjector = injector || this.parentInjector;
|
|
22844
|
-
|
|
22845
|
-
|
|
22846
|
-
//
|
|
22847
|
-
//
|
|
22848
|
-
|
|
23041
|
+
// If an `NgModuleRef` is not provided explicitly, try retrieving it from the DI tree.
|
|
23042
|
+
if (!ngModuleRef && componentFactory.ngModule == null) {
|
|
23043
|
+
// For the `ComponentFactory` case, entering this logic is very unlikely, since we expect that
|
|
23044
|
+
// an instance of a `ComponentFactory`, resolved via `ComponentFactoryResolver` would have an
|
|
23045
|
+
// `ngModule` field. This is possible in some test scenarios and potentially in some JIT-based
|
|
23046
|
+
// use-cases. For the `ComponentFactory` case we preserve backwards-compatibility and try
|
|
23047
|
+
// using a provided injector first, then fall back to the parent injector of this
|
|
23048
|
+
// `ViewContainerRef` instance.
|
|
23049
|
+
//
|
|
23050
|
+
// For the factory-less case, it's critical to establish a connection with the module
|
|
23051
|
+
// injector tree (by retrieving an instance of an `NgModuleRef` and accessing its injector),
|
|
23052
|
+
// so that a component can use DI tokens provided in MgModules. For this reason, we can not
|
|
23053
|
+
// rely on the provided injector, since it might be detached from the DI tree (for example, if
|
|
23054
|
+
// it was created via `Injector.create` without specifying a parent injector, or if an
|
|
23055
|
+
// injector is retrieved from an `NgModuleRef` created via `createNgModuleRef` using an
|
|
23056
|
+
// NgModule outside of a module tree). Instead, we always use `ViewContainerRef`'s parent
|
|
23057
|
+
// injector, which is normally connected to the DI tree, which includes module injector
|
|
23058
|
+
// subtree.
|
|
23059
|
+
const _injector = isComponentFactory ? contextInjector : this.parentInjector;
|
|
23060
|
+
// DO NOT REFACTOR. The code here used to have a `injector.get(NgModuleRef, null) ||
|
|
23061
|
+
// undefined` expression which seems to cause internal google apps to fail. This is documented
|
|
23062
|
+
// in the following internal bug issue: go/b/142967802
|
|
23063
|
+
const result = _injector.get(NgModuleRef$1, null);
|
|
22849
23064
|
if (result) {
|
|
22850
23065
|
ngModuleRef = result;
|
|
22851
23066
|
}
|
|
@@ -24814,9 +25029,10 @@ class ApplicationInitStatus {
|
|
|
24814
25029
|
}
|
|
24815
25030
|
}
|
|
24816
25031
|
ApplicationInitStatus.ɵfac = function ApplicationInitStatus_Factory(t) { return new (t || ApplicationInitStatus)(ɵɵinject(APP_INITIALIZER, 8)); };
|
|
24817
|
-
ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac });
|
|
25032
|
+
ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' });
|
|
24818
25033
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
|
|
24819
|
-
type: Injectable
|
|
25034
|
+
type: Injectable,
|
|
25035
|
+
args: [{ providedIn: 'root' }]
|
|
24820
25036
|
}], function () { return [{ type: undefined, decorators: [{
|
|
24821
25037
|
type: Inject,
|
|
24822
25038
|
args: [APP_INITIALIZER]
|
|
@@ -24842,7 +25058,10 @@ ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Appli
|
|
|
24842
25058
|
*
|
|
24843
25059
|
* @publicApi
|
|
24844
25060
|
*/
|
|
24845
|
-
const APP_ID = new InjectionToken('AppId'
|
|
25061
|
+
const APP_ID = new InjectionToken('AppId', {
|
|
25062
|
+
providedIn: 'root',
|
|
25063
|
+
factory: _appIdRandomProviderFactory,
|
|
25064
|
+
});
|
|
24846
25065
|
function _appIdRandomProviderFactory() {
|
|
24847
25066
|
return `${_randomChar()}${_randomChar()}${_randomChar()}`;
|
|
24848
25067
|
}
|
|
@@ -24885,6 +25104,15 @@ const APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');
|
|
|
24885
25104
|
* @publicApi
|
|
24886
25105
|
*/
|
|
24887
25106
|
const PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');
|
|
25107
|
+
// We keep this token here, rather than the animations package, so that modules that only care
|
|
25108
|
+
// about which animations module is loaded (e.g. the CDK) can retrieve it without having to
|
|
25109
|
+
// include extra dependencies. See #44970 for more context.
|
|
25110
|
+
/**
|
|
25111
|
+
* A [DI token](guide/glossary#di-token "DI token definition") that indicates which animations
|
|
25112
|
+
* module has been loaded.
|
|
25113
|
+
* @publicApi
|
|
25114
|
+
*/
|
|
25115
|
+
const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
|
|
24888
25116
|
|
|
24889
25117
|
/**
|
|
24890
25118
|
* @license
|
|
@@ -24917,6 +25145,33 @@ Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: C
|
|
|
24917
25145
|
* Use of this source code is governed by an MIT-style license that can be
|
|
24918
25146
|
* found in the LICENSE file at https://angular.io/license
|
|
24919
25147
|
*/
|
|
25148
|
+
/**
|
|
25149
|
+
* Work out the locale from the potential global properties.
|
|
25150
|
+
*
|
|
25151
|
+
* * Closure Compiler: use `goog.getLocale()`.
|
|
25152
|
+
* * Ivy enabled: use `$localize.locale`
|
|
25153
|
+
*/
|
|
25154
|
+
function getGlobalLocale() {
|
|
25155
|
+
if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode &&
|
|
25156
|
+
typeof goog !== 'undefined' && goog.getLocale() !== 'en') {
|
|
25157
|
+
// * The default `goog.getLocale()` value is `en`, while Angular used `en-US`.
|
|
25158
|
+
// * In order to preserve backwards compatibility, we use Angular default value over
|
|
25159
|
+
// Closure Compiler's one.
|
|
25160
|
+
return goog.getLocale();
|
|
25161
|
+
}
|
|
25162
|
+
else {
|
|
25163
|
+
// KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE
|
|
25164
|
+
// COMPILE-TIME INLINER.
|
|
25165
|
+
//
|
|
25166
|
+
// * During compile time inlining of translations the expression will be replaced
|
|
25167
|
+
// with a string literal that is the current locale. Other forms of this expression are not
|
|
25168
|
+
// guaranteed to be replaced.
|
|
25169
|
+
//
|
|
25170
|
+
// * During runtime translation evaluation, the developer is required to set `$localize.locale`
|
|
25171
|
+
// if required, or just to provide their own `LOCALE_ID` provider.
|
|
25172
|
+
return (typeof $localize !== 'undefined' && $localize.locale) || DEFAULT_LOCALE_ID;
|
|
25173
|
+
}
|
|
25174
|
+
}
|
|
24920
25175
|
/**
|
|
24921
25176
|
* Provide this token to set the locale of your application.
|
|
24922
25177
|
* It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
|
|
@@ -24939,7 +25194,10 @@ Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: C
|
|
|
24939
25194
|
*
|
|
24940
25195
|
* @publicApi
|
|
24941
25196
|
*/
|
|
24942
|
-
const LOCALE_ID = new InjectionToken('LocaleId'
|
|
25197
|
+
const LOCALE_ID = new InjectionToken('LocaleId', {
|
|
25198
|
+
providedIn: 'root',
|
|
25199
|
+
factory: () => inject(LOCALE_ID, InjectFlags.Optional | InjectFlags.SkipSelf) || getGlobalLocale(),
|
|
25200
|
+
});
|
|
24943
25201
|
/**
|
|
24944
25202
|
* Provide this token to set the default currency code your application uses for
|
|
24945
25203
|
* CurrencyPipe when there is no currency code passed into it. This is only used by
|
|
@@ -24978,7 +25236,10 @@ const LOCALE_ID = new InjectionToken('LocaleId');
|
|
|
24978
25236
|
*
|
|
24979
25237
|
* @publicApi
|
|
24980
25238
|
*/
|
|
24981
|
-
const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode'
|
|
25239
|
+
const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
|
|
25240
|
+
providedIn: 'root',
|
|
25241
|
+
factory: () => USD_CURRENCY_CODE,
|
|
25242
|
+
});
|
|
24982
25243
|
/**
|
|
24983
25244
|
* Use this token at bootstrap to provide the content of your translation file (`xtb`,
|
|
24984
25245
|
* `xlf` or `xlf2`) when you want to translate your application in another language.
|
|
@@ -25145,9 +25406,10 @@ class Compiler {
|
|
|
25145
25406
|
}
|
|
25146
25407
|
}
|
|
25147
25408
|
Compiler.ɵfac = function Compiler_Factory(t) { return new (t || Compiler)(); };
|
|
25148
|
-
Compiler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac });
|
|
25409
|
+
Compiler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' });
|
|
25149
25410
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
|
|
25150
|
-
type: Injectable
|
|
25411
|
+
type: Injectable,
|
|
25412
|
+
args: [{ providedIn: 'root' }]
|
|
25151
25413
|
}], null, null); })();
|
|
25152
25414
|
/**
|
|
25153
25415
|
* Token to provide CompilerOptions in the platform injector.
|
|
@@ -26508,9 +26770,10 @@ class ApplicationRef {
|
|
|
26508
26770
|
}
|
|
26509
26771
|
}
|
|
26510
26772
|
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ComponentFactoryResolver$1), ɵɵinject(ApplicationInitStatus)); };
|
|
26511
|
-
ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac });
|
|
26773
|
+
ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
|
|
26512
26774
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
26513
|
-
type: Injectable
|
|
26775
|
+
type: Injectable,
|
|
26776
|
+
args: [{ providedIn: 'root' }]
|
|
26514
26777
|
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ComponentFactoryResolver$1 }, { type: ApplicationInitStatus }]; }, null); })();
|
|
26515
26778
|
function remove(list, el) {
|
|
26516
26779
|
const index = list.indexOf(el);
|
|
@@ -26916,8 +27179,8 @@ class DebugElement extends DebugNode {
|
|
|
26916
27179
|
*/
|
|
26917
27180
|
get name() {
|
|
26918
27181
|
const context = getLContext(this.nativeNode);
|
|
26919
|
-
|
|
26920
|
-
|
|
27182
|
+
const lView = context ? context.lView : null;
|
|
27183
|
+
if (lView !== null) {
|
|
26921
27184
|
const tData = lView[TVIEW].data;
|
|
26922
27185
|
const tNode = tData[context.nodeIndex];
|
|
26923
27186
|
return tNode.value;
|
|
@@ -26940,10 +27203,10 @@ class DebugElement extends DebugNode {
|
|
|
26940
27203
|
*/
|
|
26941
27204
|
get properties() {
|
|
26942
27205
|
const context = getLContext(this.nativeNode);
|
|
26943
|
-
|
|
27206
|
+
const lView = context ? context.lView : null;
|
|
27207
|
+
if (lView === null) {
|
|
26944
27208
|
return {};
|
|
26945
27209
|
}
|
|
26946
|
-
const lView = context.lView;
|
|
26947
27210
|
const tData = lView[TVIEW].data;
|
|
26948
27211
|
const tNode = tData[context.nodeIndex];
|
|
26949
27212
|
const properties = {};
|
|
@@ -26964,10 +27227,10 @@ class DebugElement extends DebugNode {
|
|
|
26964
27227
|
return attributes;
|
|
26965
27228
|
}
|
|
26966
27229
|
const context = getLContext(element);
|
|
26967
|
-
|
|
27230
|
+
const lView = context ? context.lView : null;
|
|
27231
|
+
if (lView === null) {
|
|
26968
27232
|
return {};
|
|
26969
27233
|
}
|
|
26970
|
-
const lView = context.lView;
|
|
26971
27234
|
const tNodeAttrs = lView[TVIEW].data[context.nodeIndex].attrs;
|
|
26972
27235
|
const lowercaseTNodeAttrs = [];
|
|
26973
27236
|
// For debug nodes we take the element's attribute directly from the DOM since it allows us
|
|
@@ -27161,9 +27424,10 @@ function isPrimitiveValue(value) {
|
|
|
27161
27424
|
}
|
|
27162
27425
|
function _queryAll(parentElement, predicate, matches, elementsOnly) {
|
|
27163
27426
|
const context = getLContext(parentElement.nativeNode);
|
|
27164
|
-
|
|
27165
|
-
|
|
27166
|
-
|
|
27427
|
+
const lView = context ? context.lView : null;
|
|
27428
|
+
if (lView !== null) {
|
|
27429
|
+
const parentTNode = lView[TVIEW].data[context.nodeIndex];
|
|
27430
|
+
_queryNodeChildren(parentTNode, lView, predicate, matches, elementsOnly, parentElement.nativeNode);
|
|
27167
27431
|
}
|
|
27168
27432
|
else {
|
|
27169
27433
|
// If the context is null, then `parentElement` was either created with Renderer2 or native DOM
|
|
@@ -28514,96 +28778,10 @@ const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDER
|
|
|
28514
28778
|
* Use of this source code is governed by an MIT-style license that can be
|
|
28515
28779
|
* found in the LICENSE file at https://angular.io/license
|
|
28516
28780
|
*/
|
|
28517
|
-
function _iterableDiffersFactory() {
|
|
28518
|
-
return defaultIterableDiffers;
|
|
28519
|
-
}
|
|
28520
|
-
function _keyValueDiffersFactory() {
|
|
28521
|
-
return defaultKeyValueDiffers;
|
|
28522
|
-
}
|
|
28523
|
-
function _localeFactory(locale) {
|
|
28524
|
-
return locale || getGlobalLocale();
|
|
28525
|
-
}
|
|
28526
|
-
/**
|
|
28527
|
-
* Work out the locale from the potential global properties.
|
|
28528
|
-
*
|
|
28529
|
-
* * Closure Compiler: use `goog.getLocale()`.
|
|
28530
|
-
* * Ivy enabled: use `$localize.locale`
|
|
28531
|
-
*/
|
|
28532
|
-
function getGlobalLocale() {
|
|
28533
|
-
if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode &&
|
|
28534
|
-
typeof goog !== 'undefined' && goog.getLocale() !== 'en') {
|
|
28535
|
-
// * The default `goog.getLocale()` value is `en`, while Angular used `en-US`.
|
|
28536
|
-
// * In order to preserve backwards compatibility, we use Angular default value over
|
|
28537
|
-
// Closure Compiler's one.
|
|
28538
|
-
return goog.getLocale();
|
|
28539
|
-
}
|
|
28540
|
-
else {
|
|
28541
|
-
// KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE
|
|
28542
|
-
// COMPILE-TIME INLINER.
|
|
28543
|
-
//
|
|
28544
|
-
// * During compile time inlining of translations the expression will be replaced
|
|
28545
|
-
// with a string literal that is the current locale. Other forms of this expression are not
|
|
28546
|
-
// guaranteed to be replaced.
|
|
28547
|
-
//
|
|
28548
|
-
// * During runtime translation evaluation, the developer is required to set `$localize.locale`
|
|
28549
|
-
// if required, or just to provide their own `LOCALE_ID` provider.
|
|
28550
|
-
return (typeof $localize !== 'undefined' && $localize.locale) || DEFAULT_LOCALE_ID;
|
|
28551
|
-
}
|
|
28552
|
-
}
|
|
28553
|
-
/**
|
|
28554
|
-
* A built-in [dependency injection token](guide/glossary#di-token)
|
|
28555
|
-
* that is used to configure the root injector for bootstrapping.
|
|
28556
|
-
*/
|
|
28557
|
-
const APPLICATION_MODULE_PROVIDERS = [
|
|
28558
|
-
{
|
|
28559
|
-
provide: ApplicationRef,
|
|
28560
|
-
useClass: ApplicationRef,
|
|
28561
|
-
deps: [NgZone, Injector, ErrorHandler, ComponentFactoryResolver$1, ApplicationInitStatus]
|
|
28562
|
-
},
|
|
28563
|
-
{ provide: SCHEDULER, deps: [NgZone], useFactory: zoneSchedulerFactory },
|
|
28564
|
-
{
|
|
28565
|
-
provide: ApplicationInitStatus,
|
|
28566
|
-
useClass: ApplicationInitStatus,
|
|
28567
|
-
deps: [[new Optional(), APP_INITIALIZER]]
|
|
28568
|
-
},
|
|
28569
|
-
{ provide: Compiler, useClass: Compiler, deps: [] },
|
|
28570
|
-
APP_ID_RANDOM_PROVIDER,
|
|
28571
|
-
{ provide: IterableDiffers, useFactory: _iterableDiffersFactory, deps: [] },
|
|
28572
|
-
{ provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory, deps: [] },
|
|
28573
|
-
{
|
|
28574
|
-
provide: LOCALE_ID,
|
|
28575
|
-
useFactory: _localeFactory,
|
|
28576
|
-
deps: [[new Inject(LOCALE_ID), new Optional(), new SkipSelf()]]
|
|
28577
|
-
},
|
|
28578
|
-
{ provide: DEFAULT_CURRENCY_CODE, useValue: USD_CURRENCY_CODE },
|
|
28579
|
-
];
|
|
28580
|
-
/**
|
|
28581
|
-
* Schedule work at next available slot.
|
|
28582
|
-
*
|
|
28583
|
-
* In Ivy this is just `requestAnimationFrame`. For compatibility reasons when bootstrapped
|
|
28584
|
-
* using `platformRef.bootstrap` we need to use `NgZone.onStable` as the scheduling mechanism.
|
|
28585
|
-
* This overrides the scheduling mechanism in Ivy to `NgZone.onStable`.
|
|
28586
|
-
*
|
|
28587
|
-
* @param ngZone NgZone to use for scheduling.
|
|
28588
|
-
*/
|
|
28589
|
-
function zoneSchedulerFactory(ngZone) {
|
|
28590
|
-
let queue = [];
|
|
28591
|
-
ngZone.onStable.subscribe(() => {
|
|
28592
|
-
while (queue.length) {
|
|
28593
|
-
queue.pop()();
|
|
28594
|
-
}
|
|
28595
|
-
});
|
|
28596
|
-
return function (fn) {
|
|
28597
|
-
queue.push(fn);
|
|
28598
|
-
};
|
|
28599
|
-
}
|
|
28600
28781
|
/**
|
|
28601
|
-
* Configures the root injector for an app with
|
|
28602
|
-
* providers of `@angular/core` dependencies that `ApplicationRef` needs
|
|
28603
|
-
* to bootstrap components.
|
|
28604
|
-
*
|
|
28605
28782
|
* Re-exported by `BrowserModule`, which is included automatically in the root
|
|
28606
|
-
* `AppModule` when you create a new app with the CLI `new` command.
|
|
28783
|
+
* `AppModule` when you create a new app with the CLI `new` command. Eagerly injects
|
|
28784
|
+
* `ApplicationRef` to instantiate it.
|
|
28607
28785
|
*
|
|
28608
28786
|
* @publicApi
|
|
28609
28787
|
*/
|
|
@@ -28613,10 +28791,9 @@ class ApplicationModule {
|
|
|
28613
28791
|
}
|
|
28614
28792
|
ApplicationModule.ɵfac = function ApplicationModule_Factory(t) { return new (t || ApplicationModule)(ɵɵinject(ApplicationRef)); };
|
|
28615
28793
|
ApplicationModule.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule });
|
|
28616
|
-
ApplicationModule.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({
|
|
28794
|
+
ApplicationModule.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({});
|
|
28617
28795
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationModule, [{
|
|
28618
|
-
type: NgModule
|
|
28619
|
-
args: [{ providers: APPLICATION_MODULE_PROVIDERS }]
|
|
28796
|
+
type: NgModule
|
|
28620
28797
|
}], function () { return [{ type: ApplicationRef }]; }, null); })();
|
|
28621
28798
|
|
|
28622
28799
|
/**
|
|
@@ -28788,5 +28965,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
28788
28965
|
* Generated bundle index. Do not edit.
|
|
28789
28966
|
*/
|
|
28790
28967
|
|
|
28791
|
-
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$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as 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, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, 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 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, registerNgModuleType as ɵregisterNgModuleType, renderComponent 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, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵ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, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵ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 };
|
|
28968
|
+
export { ANALYZE_FOR_ENTRY_COMPONENTS, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as 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, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LContext as ɵLContext, 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 as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, registerNgModuleType as ɵregisterNgModuleType, renderComponent 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, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵ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, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵ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 };
|
|
28792
28969
|
//# sourceMappingURL=core.mjs.map
|