@angular/core 14.0.0-next.15 → 14.0.0-next.16
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/esm2020/src/application_ref.mjs +22 -13
- package/esm2020/src/change_detection/change_detector_ref.mjs +3 -3
- package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +2 -2
- package/esm2020/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
- package/esm2020/src/change_detection/differs/iterable_differs.mjs +2 -2
- package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +2 -2
- package/esm2020/src/compiler/compiler_facade.mjs +2 -2
- package/esm2020/src/core_render3_private_export.mjs +2 -2
- package/esm2020/src/debug/debug_node.mjs +5 -5
- package/esm2020/src/di/create_injector.mjs +3 -4
- package/esm2020/src/di/index.mjs +2 -2
- package/esm2020/src/di/initializer_token.mjs +4 -4
- package/esm2020/src/di/injector.mjs +2 -2
- package/esm2020/src/di/injector_compatibility.mjs +4 -4
- package/esm2020/src/di/injector_token.mjs +2 -2
- package/esm2020/src/di/interface/provider.mjs +1 -1
- package/esm2020/src/di/jit/injectable.mjs +3 -3
- package/esm2020/src/di/metadata.mjs +6 -6
- package/esm2020/src/di/provider_collection.mjs +20 -5
- package/esm2020/src/di/r3_injector.mjs +27 -10
- package/esm2020/src/errors.mjs +1 -1
- package/esm2020/src/linker/template_ref.mjs +3 -3
- package/esm2020/src/linker/view_container_ref.mjs +4 -4
- package/esm2020/src/metadata/directives.mjs +1 -1
- package/esm2020/src/render3/assert.mjs +3 -3
- package/esm2020/src/render3/collect_native_nodes.mjs +5 -5
- package/esm2020/src/render3/component.mjs +8 -8
- package/esm2020/src/render3/component_ref.mjs +4 -4
- package/esm2020/src/render3/context_discovery.mjs +4 -4
- package/esm2020/src/render3/di.mjs +21 -21
- package/esm2020/src/render3/di_setup.mjs +5 -5
- package/esm2020/src/render3/errors.mjs +5 -5
- package/esm2020/src/render3/errors_di.mjs +10 -7
- package/esm2020/src/render3/features/inherit_definition_feature.mjs +2 -2
- package/esm2020/src/render3/features/standalone_feature.mjs +5 -4
- package/esm2020/src/render3/hooks.mjs +19 -19
- package/esm2020/src/render3/i18n/i18n_apply.mjs +16 -16
- package/esm2020/src/render3/i18n/i18n_debug.mjs +9 -9
- package/esm2020/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
- package/esm2020/src/render3/i18n/i18n_parse.mjs +14 -14
- package/esm2020/src/render3/i18n/i18n_util.mjs +7 -7
- package/esm2020/src/render3/index.mjs +2 -2
- package/esm2020/src/render3/instructions/advance.mjs +3 -3
- package/esm2020/src/render3/instructions/all.mjs +2 -1
- package/esm2020/src/render3/instructions/change_detection.mjs +2 -2
- package/esm2020/src/render3/instructions/element.mjs +26 -6
- package/esm2020/src/render3/instructions/element_container.mjs +3 -3
- package/esm2020/src/render3/instructions/i18n.mjs +2 -2
- package/esm2020/src/render3/instructions/listener.mjs +7 -7
- package/esm2020/src/render3/instructions/lview_debug.mjs +26 -26
- package/esm2020/src/render3/instructions/projection.mjs +3 -3
- package/esm2020/src/render3/instructions/shared.mjs +90 -70
- package/esm2020/src/render3/instructions/styling.mjs +5 -5
- package/esm2020/src/render3/instructions/template.mjs +3 -3
- package/esm2020/src/render3/instructions/text.mjs +2 -2
- package/esm2020/src/render3/interfaces/node.mjs +10 -10
- package/esm2020/src/render3/interfaces/styling.mjs +18 -18
- package/esm2020/src/render3/interfaces/type_checks.mjs +5 -5
- package/esm2020/src/render3/interfaces/view.mjs +1 -1
- package/esm2020/src/render3/jit/directive.mjs +43 -6
- package/esm2020/src/render3/jit/module.mjs +22 -12
- package/esm2020/src/render3/jit/partial.mjs +8 -8
- package/esm2020/src/render3/jit/pipe.mjs +3 -3
- package/esm2020/src/render3/jit/util.mjs +15 -0
- package/esm2020/src/render3/ng_module_ref.mjs +1 -1
- package/esm2020/src/render3/node_assert.mjs +8 -8
- package/esm2020/src/render3/node_manipulation.mjs +40 -40
- package/esm2020/src/render3/node_manipulation_i18n.mjs +3 -3
- package/esm2020/src/render3/node_selector_matcher.mjs +28 -28
- package/esm2020/src/render3/pipe.mjs +2 -2
- package/esm2020/src/render3/query.mjs +12 -12
- package/esm2020/src/render3/state.mjs +5 -5
- package/esm2020/src/render3/styling/class_differ.mjs +3 -3
- package/esm2020/src/render3/styling/static_styling.mjs +3 -3
- package/esm2020/src/render3/styling/styling_parser.mjs +17 -17
- package/esm2020/src/render3/util/attrs_utils.mjs +10 -10
- package/esm2020/src/render3/util/discovery_utils.mjs +4 -4
- package/esm2020/src/render3/util/injector_utils.mjs +4 -4
- package/esm2020/src/render3/util/view_traversal_utils.mjs +2 -2
- package/esm2020/src/render3/util/view_utils.mjs +3 -3
- package/esm2020/src/render3/view_ref.mjs +6 -6
- package/esm2020/src/sanitization/bypass.mjs +7 -7
- package/esm2020/src/sanitization/sanitization.mjs +10 -10
- package/esm2020/src/util/raf.mjs +1 -1
- 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/esm2020/testing/src/r3_test_bed.mjs +34 -6
- package/esm2020/testing/src/r3_test_bed_compiler.mjs +45 -4
- package/esm2020/testing/src/resolvers.mjs +1 -1
- package/esm2020/testing/src/test_bed_common.mjs +5 -1
- package/fesm2015/core.mjs +640 -498
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +84 -8
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +640 -498
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +81 -8
- package/fesm2020/testing.mjs.map +1 -1
- package/index.d.ts +101 -57
- package/package.json +1 -1
- package/testing/index.d.ts +29 -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.16
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -234,24 +234,27 @@ function stringifyForError(value) {
|
|
|
234
234
|
/** Called when directives inject each other (creating a circular dependency) */
|
|
235
235
|
function throwCyclicDependencyError(token, path) {
|
|
236
236
|
const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';
|
|
237
|
-
throw new RuntimeError(-200 /* CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);
|
|
237
|
+
throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);
|
|
238
238
|
}
|
|
239
239
|
function throwMixedMultiProviderError() {
|
|
240
240
|
throw new Error(`Cannot mix multi providers and regular providers`);
|
|
241
241
|
}
|
|
242
242
|
function throwInvalidProviderError(ngModuleType, providers, provider) {
|
|
243
|
-
let ngModuleDetail = '';
|
|
244
243
|
if (ngModuleType && providers) {
|
|
245
244
|
const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');
|
|
246
|
-
|
|
247
|
-
|
|
245
|
+
throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`);
|
|
246
|
+
}
|
|
247
|
+
else if (provider.ɵproviders) {
|
|
248
|
+
throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
throw new Error('Invalid provider');
|
|
248
252
|
}
|
|
249
|
-
throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}'` + ngModuleDetail);
|
|
250
253
|
}
|
|
251
254
|
/** Throws an error when a token is not found in DI. */
|
|
252
255
|
function throwProviderNotFoundError(token, injectorName) {
|
|
253
256
|
const injectorDetails = injectorName ? ` in ${injectorName}` : '';
|
|
254
|
-
throw new RuntimeError(-201 /* PROVIDER_NOT_FOUND */, `No provider for ${stringifyForError(token)} found${injectorDetails}`);
|
|
257
|
+
throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, `No provider for ${stringifyForError(token)} found${injectorDetails}`);
|
|
255
258
|
}
|
|
256
259
|
|
|
257
260
|
/**
|
|
@@ -1260,19 +1263,19 @@ function isLContainer(value) {
|
|
|
1260
1263
|
return Array.isArray(value) && value[TYPE] === true;
|
|
1261
1264
|
}
|
|
1262
1265
|
function isContentQueryHost(tNode) {
|
|
1263
|
-
return (tNode.flags & 8 /* hasContentQuery */) !== 0;
|
|
1266
|
+
return (tNode.flags & 8 /* TNodeFlags.hasContentQuery */) !== 0;
|
|
1264
1267
|
}
|
|
1265
1268
|
function isComponentHost(tNode) {
|
|
1266
|
-
return (tNode.flags & 2 /* isComponentHost */) === 2 /* isComponentHost */;
|
|
1269
|
+
return (tNode.flags & 2 /* TNodeFlags.isComponentHost */) === 2 /* TNodeFlags.isComponentHost */;
|
|
1267
1270
|
}
|
|
1268
1271
|
function isDirectiveHost(tNode) {
|
|
1269
|
-
return (tNode.flags & 1 /* isDirectiveHost */) === 1 /* isDirectiveHost */;
|
|
1272
|
+
return (tNode.flags & 1 /* TNodeFlags.isDirectiveHost */) === 1 /* TNodeFlags.isDirectiveHost */;
|
|
1270
1273
|
}
|
|
1271
1274
|
function isComponentDef(def) {
|
|
1272
1275
|
return def.template !== null;
|
|
1273
1276
|
}
|
|
1274
1277
|
function isRootView(target) {
|
|
1275
|
-
return (target[FLAGS] & 512 /* IsRoot */) !== 0;
|
|
1278
|
+
return (target[FLAGS] & 512 /* LViewFlags.IsRoot */) !== 0;
|
|
1276
1279
|
}
|
|
1277
1280
|
|
|
1278
1281
|
/**
|
|
@@ -1386,7 +1389,7 @@ function assertParentView(lView, errMessage) {
|
|
|
1386
1389
|
*/
|
|
1387
1390
|
function assertNodeInjector(lView, injectorIndex) {
|
|
1388
1391
|
assertIndexInExpandoRange(lView, injectorIndex);
|
|
1389
|
-
assertIndexInExpandoRange(lView, injectorIndex + 8 /* PARENT */);
|
|
1392
|
+
assertIndexInExpandoRange(lView, injectorIndex + 8 /* NodeInjectorOffset.PARENT */);
|
|
1390
1393
|
assertNumber(lView[injectorIndex + 0], 'injectorIndex should point to a bloom filter');
|
|
1391
1394
|
assertNumber(lView[injectorIndex + 1], 'injectorIndex should point to a bloom filter');
|
|
1392
1395
|
assertNumber(lView[injectorIndex + 2], 'injectorIndex should point to a bloom filter');
|
|
@@ -1395,7 +1398,7 @@ function assertNodeInjector(lView, injectorIndex) {
|
|
|
1395
1398
|
assertNumber(lView[injectorIndex + 5], 'injectorIndex should point to a bloom filter');
|
|
1396
1399
|
assertNumber(lView[injectorIndex + 6], 'injectorIndex should point to a bloom filter');
|
|
1397
1400
|
assertNumber(lView[injectorIndex + 7], 'injectorIndex should point to a bloom filter');
|
|
1398
|
-
assertNumber(lView[injectorIndex + 8 /* PARENT */], 'injectorIndex should point to parent injector');
|
|
1401
|
+
assertNumber(lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */], 'injectorIndex should point to parent injector');
|
|
1399
1402
|
}
|
|
1400
1403
|
|
|
1401
1404
|
/**
|
|
@@ -1792,7 +1795,7 @@ function getComponentLViewByIndex(nodeIndex, hostView) {
|
|
|
1792
1795
|
}
|
|
1793
1796
|
/** Checks whether a given view is in creation mode */
|
|
1794
1797
|
function isCreationMode(view) {
|
|
1795
|
-
return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
|
|
1798
|
+
return (view[FLAGS] & 4 /* LViewFlags.CreationMode */) === 4 /* LViewFlags.CreationMode */;
|
|
1796
1799
|
}
|
|
1797
1800
|
/**
|
|
1798
1801
|
* Returns a boolean for whether the view is attached to the change detection tree.
|
|
@@ -1801,7 +1804,7 @@ function isCreationMode(view) {
|
|
|
1801
1804
|
* into a container. For that, you'll want `viewAttachedToContainer` below.
|
|
1802
1805
|
*/
|
|
1803
1806
|
function viewAttachedToChangeDetector(view) {
|
|
1804
|
-
return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
|
|
1807
|
+
return (view[FLAGS] & 128 /* LViewFlags.Attached */) === 128 /* LViewFlags.Attached */;
|
|
1805
1808
|
}
|
|
1806
1809
|
/** Returns a boolean for whether the view is attached to a container. */
|
|
1807
1810
|
function viewAttachedToContainer(view) {
|
|
@@ -1958,7 +1961,7 @@ function ɵɵresetView(value) {
|
|
|
1958
1961
|
}
|
|
1959
1962
|
function getCurrentTNode() {
|
|
1960
1963
|
let currentTNode = getCurrentTNodePlaceholderOk();
|
|
1961
|
-
while (currentTNode !== null && currentTNode.type === 64 /* Placeholder */) {
|
|
1964
|
+
while (currentTNode !== null && currentTNode.type === 64 /* TNodeType.Placeholder */) {
|
|
1962
1965
|
currentTNode = currentTNode.parent;
|
|
1963
1966
|
}
|
|
1964
1967
|
return currentTNode;
|
|
@@ -2084,14 +2087,14 @@ function setCurrentQueryIndex(value) {
|
|
|
2084
2087
|
function getDeclarationTNode(lView) {
|
|
2085
2088
|
const tView = lView[TVIEW];
|
|
2086
2089
|
// Return the declaration parent for embedded views
|
|
2087
|
-
if (tView.type === 2 /* Embedded */) {
|
|
2090
|
+
if (tView.type === 2 /* TViewType.Embedded */) {
|
|
2088
2091
|
ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
2089
2092
|
return tView.declTNode;
|
|
2090
2093
|
}
|
|
2091
2094
|
// Components don't have `TView.declTNode` because each instance of component could be
|
|
2092
2095
|
// inserted in different location, hence `TView.declTNode` is meaningless.
|
|
2093
2096
|
// Falling back to `T_HOST` in case we cross component boundary.
|
|
2094
|
-
if (tView.type === 1 /* Component */) {
|
|
2097
|
+
if (tView.type === 1 /* TViewType.Component */) {
|
|
2095
2098
|
return lView[T_HOST];
|
|
2096
2099
|
}
|
|
2097
2100
|
// Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.
|
|
@@ -2130,7 +2133,7 @@ function enterDI(lView, tNode, flags) {
|
|
|
2130
2133
|
// In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives
|
|
2131
2134
|
// We want to skip those and look only at Elements and ElementContainers to ensure
|
|
2132
2135
|
// we're looking at true parent nodes, and not content or other types.
|
|
2133
|
-
if (parentTNode.type & (2 /* Element */ | 8 /* ElementContainer */)) {
|
|
2136
|
+
if (parentTNode.type & (2 /* TNodeType.Element */ | 8 /* TNodeType.ElementContainer */)) {
|
|
2134
2137
|
break;
|
|
2135
2138
|
}
|
|
2136
2139
|
}
|
|
@@ -2461,7 +2464,7 @@ function registerPostOrderHooks(tView, tNode) {
|
|
|
2461
2464
|
* case, when executing select(number))
|
|
2462
2465
|
*/
|
|
2463
2466
|
function executeCheckHooks(lView, hooks, nodeIndex) {
|
|
2464
|
-
callHooks(lView, hooks, 3 /* InitPhaseCompleted */, nodeIndex);
|
|
2467
|
+
callHooks(lView, hooks, 3 /* InitPhaseState.InitPhaseCompleted */, nodeIndex);
|
|
2465
2468
|
}
|
|
2466
2469
|
/**
|
|
2467
2470
|
* Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,
|
|
@@ -2478,18 +2481,18 @@ function executeCheckHooks(lView, hooks, nodeIndex) {
|
|
|
2478
2481
|
*/
|
|
2479
2482
|
function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {
|
|
2480
2483
|
ngDevMode &&
|
|
2481
|
-
assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');
|
|
2482
|
-
if ((lView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
|
|
2484
|
+
assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');
|
|
2485
|
+
if ((lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
|
|
2483
2486
|
callHooks(lView, hooks, initPhase, nodeIndex);
|
|
2484
2487
|
}
|
|
2485
2488
|
}
|
|
2486
2489
|
function incrementInitPhaseFlags(lView, initPhase) {
|
|
2487
2490
|
ngDevMode &&
|
|
2488
|
-
assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
|
|
2491
|
+
assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
|
|
2489
2492
|
let flags = lView[FLAGS];
|
|
2490
|
-
if ((flags & 3 /* InitPhaseStateMask */) === initPhase) {
|
|
2491
|
-
flags &= 4095 /* IndexWithinInitPhaseReset */;
|
|
2492
|
-
flags += 1 /* InitPhaseStateIncrementer */;
|
|
2493
|
+
if ((flags & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
|
|
2494
|
+
flags &= 4095 /* LViewFlags.IndexWithinInitPhaseReset */;
|
|
2495
|
+
flags += 1 /* LViewFlags.InitPhaseStateIncrementer */;
|
|
2493
2496
|
lView[FLAGS] = flags;
|
|
2494
2497
|
}
|
|
2495
2498
|
}
|
|
@@ -2511,7 +2514,7 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
|
|
|
2511
2514
|
ngDevMode &&
|
|
2512
2515
|
assertEqual(isInCheckNoChangesMode(), false, 'Hooks should never be run when in check no changes mode.');
|
|
2513
2516
|
const startIndex = currentNodeIndex !== undefined ?
|
|
2514
|
-
(currentView[PREORDER_HOOK_FLAGS] & 65535 /* IndexOfTheNextPreOrderHookMaskMask */) :
|
|
2517
|
+
(currentView[PREORDER_HOOK_FLAGS] & 65535 /* PreOrderHookFlags.IndexOfTheNextPreOrderHookMaskMask */) :
|
|
2515
2518
|
0;
|
|
2516
2519
|
const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;
|
|
2517
2520
|
const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1
|
|
@@ -2527,11 +2530,11 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
|
|
|
2527
2530
|
else {
|
|
2528
2531
|
const isInitHook = arr[i] < 0;
|
|
2529
2532
|
if (isInitHook)
|
|
2530
|
-
currentView[PREORDER_HOOK_FLAGS] += 65536 /* NumberOfInitHooksCalledIncrementer */;
|
|
2533
|
+
currentView[PREORDER_HOOK_FLAGS] += 65536 /* PreOrderHookFlags.NumberOfInitHooksCalledIncrementer */;
|
|
2531
2534
|
if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {
|
|
2532
2535
|
callHook(currentView, initPhase, arr, i);
|
|
2533
2536
|
currentView[PREORDER_HOOK_FLAGS] =
|
|
2534
|
-
(currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* NumberOfInitHooksCalledMask */) + i +
|
|
2537
|
+
(currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* PreOrderHookFlags.NumberOfInitHooksCalledMask */) + i +
|
|
2535
2538
|
2;
|
|
2536
2539
|
}
|
|
2537
2540
|
i++;
|
|
@@ -2552,28 +2555,28 @@ function callHook(currentView, initPhase, arr, i) {
|
|
|
2552
2555
|
const directiveIndex = isInitHook ? -arr[i] : arr[i];
|
|
2553
2556
|
const directive = currentView[directiveIndex];
|
|
2554
2557
|
if (isInitHook) {
|
|
2555
|
-
const indexWithintInitPhase = currentView[FLAGS] >> 12 /* IndexWithinInitPhaseShift */;
|
|
2558
|
+
const indexWithintInitPhase = currentView[FLAGS] >> 12 /* LViewFlags.IndexWithinInitPhaseShift */;
|
|
2556
2559
|
// The init phase state must be always checked here as it may have been recursively updated.
|
|
2557
2560
|
if (indexWithintInitPhase <
|
|
2558
|
-
(currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&
|
|
2559
|
-
(currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
|
|
2560
|
-
currentView[FLAGS] += 4096 /* IndexWithinInitPhaseIncrementer */;
|
|
2561
|
-
profiler(4 /* LifecycleHookStart */, directive, hook);
|
|
2561
|
+
(currentView[PREORDER_HOOK_FLAGS] >> 16 /* PreOrderHookFlags.NumberOfInitHooksCalledShift */) &&
|
|
2562
|
+
(currentView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
|
|
2563
|
+
currentView[FLAGS] += 4096 /* LViewFlags.IndexWithinInitPhaseIncrementer */;
|
|
2564
|
+
profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);
|
|
2562
2565
|
try {
|
|
2563
2566
|
hook.call(directive);
|
|
2564
2567
|
}
|
|
2565
2568
|
finally {
|
|
2566
|
-
profiler(5 /* LifecycleHookEnd */, directive, hook);
|
|
2569
|
+
profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);
|
|
2567
2570
|
}
|
|
2568
2571
|
}
|
|
2569
2572
|
}
|
|
2570
2573
|
else {
|
|
2571
|
-
profiler(4 /* LifecycleHookStart */, directive, hook);
|
|
2574
|
+
profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);
|
|
2572
2575
|
try {
|
|
2573
2576
|
hook.call(directive);
|
|
2574
2577
|
}
|
|
2575
2578
|
finally {
|
|
2576
|
-
profiler(5 /* LifecycleHookEnd */, directive, hook);
|
|
2579
|
+
profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);
|
|
2577
2580
|
}
|
|
2578
2581
|
}
|
|
2579
2582
|
}
|
|
@@ -2715,13 +2718,13 @@ const unusedValueExportToPlacateAjd$5 = 1;
|
|
|
2715
2718
|
*/
|
|
2716
2719
|
function toTNodeTypeAsString(tNodeType) {
|
|
2717
2720
|
let text = '';
|
|
2718
|
-
(tNodeType & 1 /* Text */) && (text += '|Text');
|
|
2719
|
-
(tNodeType & 2 /* Element */) && (text += '|Element');
|
|
2720
|
-
(tNodeType & 4 /* Container */) && (text += '|Container');
|
|
2721
|
-
(tNodeType & 8 /* ElementContainer */) && (text += '|ElementContainer');
|
|
2722
|
-
(tNodeType & 16 /* Projection */) && (text += '|Projection');
|
|
2723
|
-
(tNodeType & 32 /* Icu */) && (text += '|IcuContainer');
|
|
2724
|
-
(tNodeType & 64 /* Placeholder */) && (text += '|Placeholder');
|
|
2721
|
+
(tNodeType & 1 /* TNodeType.Text */) && (text += '|Text');
|
|
2722
|
+
(tNodeType & 2 /* TNodeType.Element */) && (text += '|Element');
|
|
2723
|
+
(tNodeType & 4 /* TNodeType.Container */) && (text += '|Container');
|
|
2724
|
+
(tNodeType & 8 /* TNodeType.ElementContainer */) && (text += '|ElementContainer');
|
|
2725
|
+
(tNodeType & 16 /* TNodeType.Projection */) && (text += '|Projection');
|
|
2726
|
+
(tNodeType & 32 /* TNodeType.Icu */) && (text += '|IcuContainer');
|
|
2727
|
+
(tNodeType & 64 /* TNodeType.Placeholder */) && (text += '|Placeholder');
|
|
2725
2728
|
return text.length > 0 ? text.substring(1) : text;
|
|
2726
2729
|
}
|
|
2727
2730
|
// Note: This hack is necessary so we don't erroneously get a circular dependency
|
|
@@ -2749,7 +2752,7 @@ const unusedValueExportToPlacateAjd$4 = 1;
|
|
|
2749
2752
|
* @param tNode
|
|
2750
2753
|
*/
|
|
2751
2754
|
function hasClassInput(tNode) {
|
|
2752
|
-
return (tNode.flags & 16 /* hasClassInput */) !== 0;
|
|
2755
|
+
return (tNode.flags & 16 /* TNodeFlags.hasClassInput */) !== 0;
|
|
2753
2756
|
}
|
|
2754
2757
|
/**
|
|
2755
2758
|
* Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.
|
|
@@ -2773,7 +2776,7 @@ function hasClassInput(tNode) {
|
|
|
2773
2776
|
* @param tNode
|
|
2774
2777
|
*/
|
|
2775
2778
|
function hasStyleInput(tNode) {
|
|
2776
|
-
return (tNode.flags & 32 /* hasStyleInput */) !== 0;
|
|
2779
|
+
return (tNode.flags & 32 /* TNodeFlags.hasStyleInput */) !== 0;
|
|
2777
2780
|
}
|
|
2778
2781
|
|
|
2779
2782
|
/**
|
|
@@ -2791,13 +2794,13 @@ function assertTNodeType(tNode, expectedTypes, message) {
|
|
|
2791
2794
|
}
|
|
2792
2795
|
}
|
|
2793
2796
|
function assertPureTNodeType(type) {
|
|
2794
|
-
if (!(type === 2 /* Element */ || //
|
|
2795
|
-
type === 1 /* Text */ || //
|
|
2796
|
-
type === 4 /* Container */ || //
|
|
2797
|
-
type === 8 /* ElementContainer */ || //
|
|
2798
|
-
type === 32 /* Icu */ || //
|
|
2799
|
-
type === 16 /* Projection */ || //
|
|
2800
|
-
type === 64 /* Placeholder */)) {
|
|
2797
|
+
if (!(type === 2 /* TNodeType.Element */ || //
|
|
2798
|
+
type === 1 /* TNodeType.Text */ || //
|
|
2799
|
+
type === 4 /* TNodeType.Container */ || //
|
|
2800
|
+
type === 8 /* TNodeType.ElementContainer */ || //
|
|
2801
|
+
type === 32 /* TNodeType.Icu */ || //
|
|
2802
|
+
type === 16 /* TNodeType.Projection */ || //
|
|
2803
|
+
type === 64 /* TNodeType.Placeholder */)) {
|
|
2801
2804
|
throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
|
|
2802
2805
|
}
|
|
2803
2806
|
}
|
|
@@ -2837,7 +2840,7 @@ function setUpAttributes(renderer, native, attrs) {
|
|
|
2837
2840
|
if (typeof value === 'number') {
|
|
2838
2841
|
// only namespaces are supported. Other value types (such as style/class
|
|
2839
2842
|
// entries) are not supported in this function.
|
|
2840
|
-
if (value !== 0 /* NamespaceURI */) {
|
|
2843
|
+
if (value !== 0 /* AttributeMarker.NamespaceURI */) {
|
|
2841
2844
|
break;
|
|
2842
2845
|
}
|
|
2843
2846
|
// we just landed on the marker value ... therefore
|
|
@@ -2884,14 +2887,14 @@ function setUpAttributes(renderer, native, attrs) {
|
|
|
2884
2887
|
* @returns true if the marker is a "name-only" marker (e.g. `Bindings`, `Template` or `I18n`).
|
|
2885
2888
|
*/
|
|
2886
2889
|
function isNameOnlyAttributeMarker(marker) {
|
|
2887
|
-
return marker === 3 /* Bindings */ || marker === 4 /* Template */ ||
|
|
2888
|
-
marker === 6 /* I18n */;
|
|
2890
|
+
return marker === 3 /* AttributeMarker.Bindings */ || marker === 4 /* AttributeMarker.Template */ ||
|
|
2891
|
+
marker === 6 /* AttributeMarker.I18n */;
|
|
2889
2892
|
}
|
|
2890
2893
|
function isAnimationProp(name) {
|
|
2891
2894
|
// Perf note: accessing charCodeAt to check for the first character of a string is faster as
|
|
2892
2895
|
// compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that
|
|
2893
2896
|
// charCodeAt doesn't allocate memory to return a substring.
|
|
2894
|
-
return name.charCodeAt(0) === 64 /* AT_SIGN */;
|
|
2897
|
+
return name.charCodeAt(0) === 64 /* CharCode.AT_SIGN */;
|
|
2895
2898
|
}
|
|
2896
2899
|
/**
|
|
2897
2900
|
* Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.
|
|
@@ -2910,18 +2913,18 @@ function mergeHostAttrs(dst, src) {
|
|
|
2910
2913
|
dst = src.slice();
|
|
2911
2914
|
}
|
|
2912
2915
|
else {
|
|
2913
|
-
let srcMarker = -1 /* ImplicitAttributes */;
|
|
2916
|
+
let srcMarker = -1 /* AttributeMarker.ImplicitAttributes */;
|
|
2914
2917
|
for (let i = 0; i < src.length; i++) {
|
|
2915
2918
|
const item = src[i];
|
|
2916
2919
|
if (typeof item === 'number') {
|
|
2917
2920
|
srcMarker = item;
|
|
2918
2921
|
}
|
|
2919
2922
|
else {
|
|
2920
|
-
if (srcMarker === 0 /* NamespaceURI */) {
|
|
2923
|
+
if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) {
|
|
2921
2924
|
// Case where we need to consume `key1`, `key2`, `value` items.
|
|
2922
2925
|
}
|
|
2923
|
-
else if (srcMarker === -1 /* ImplicitAttributes */ ||
|
|
2924
|
-
srcMarker === 2 /* Styles */) {
|
|
2926
|
+
else if (srcMarker === -1 /* AttributeMarker.ImplicitAttributes */ ||
|
|
2927
|
+
srcMarker === 2 /* AttributeMarker.Styles */) {
|
|
2925
2928
|
// Case where we have to consume `key1` and `value` only.
|
|
2926
2929
|
mergeHostAttribute(dst, srcMarker, item, null, src[++i]);
|
|
2927
2930
|
}
|
|
@@ -2948,7 +2951,7 @@ function mergeHostAttribute(dst, marker, key1, key2, value) {
|
|
|
2948
2951
|
// Assume that new markers will be inserted at the end.
|
|
2949
2952
|
let markerInsertPosition = dst.length;
|
|
2950
2953
|
// scan until correct type.
|
|
2951
|
-
if (marker === -1 /* ImplicitAttributes */) {
|
|
2954
|
+
if (marker === -1 /* AttributeMarker.ImplicitAttributes */) {
|
|
2952
2955
|
markerInsertPosition = -1;
|
|
2953
2956
|
}
|
|
2954
2957
|
else {
|
|
@@ -3023,13 +3026,13 @@ function hasParentInjector(parentLocation) {
|
|
|
3023
3026
|
function getParentInjectorIndex(parentLocation) {
|
|
3024
3027
|
ngDevMode && assertNumber(parentLocation, 'Number expected');
|
|
3025
3028
|
ngDevMode && assertNotEqual(parentLocation, -1, 'Not a valid state.');
|
|
3026
|
-
const parentInjectorIndex = parentLocation & 32767 /* InjectorIndexMask */;
|
|
3029
|
+
const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
|
|
3027
3030
|
ngDevMode &&
|
|
3028
3031
|
assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
|
|
3029
|
-
return parentLocation & 32767 /* InjectorIndexMask */;
|
|
3032
|
+
return parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
|
|
3030
3033
|
}
|
|
3031
3034
|
function getParentInjectorViewOffset(parentLocation) {
|
|
3032
|
-
return parentLocation >> 16 /* ViewOffsetShift */;
|
|
3035
|
+
return parentLocation >> 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */;
|
|
3033
3036
|
}
|
|
3034
3037
|
/**
|
|
3035
3038
|
* Unwraps a parent injector location number to find the view offset from the current injector,
|
|
@@ -3183,11 +3186,11 @@ function getOrCreateNodeInjectorForNode(tNode, lView) {
|
|
|
3183
3186
|
const parentData = parentLView[TVIEW].data;
|
|
3184
3187
|
// Creates a cumulative bloom filter that merges the parent's bloom filter
|
|
3185
3188
|
// and its own cumulative bloom (which contains tokens for all ancestors)
|
|
3186
|
-
for (let i = 0; i < 8 /* BLOOM_SIZE */; i++) {
|
|
3189
|
+
for (let i = 0; i < 8 /* NodeInjectorOffset.BLOOM_SIZE */; i++) {
|
|
3187
3190
|
lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
|
|
3188
3191
|
}
|
|
3189
3192
|
}
|
|
3190
|
-
lView[injectorIndex + 8 /* PARENT */] = parentLoc;
|
|
3193
|
+
lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */] = parentLoc;
|
|
3191
3194
|
return injectorIndex;
|
|
3192
3195
|
}
|
|
3193
3196
|
function insertBloom(arr, footer) {
|
|
@@ -3200,7 +3203,7 @@ function getInjectorIndex(tNode, lView) {
|
|
|
3200
3203
|
(tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||
|
|
3201
3204
|
// After the first template pass, the injector index might exist but the parent values
|
|
3202
3205
|
// might not have been calculated yet for this instance
|
|
3203
|
-
lView[tNode.injectorIndex + 8 /* PARENT */] === null) {
|
|
3206
|
+
lView[tNode.injectorIndex + 8 /* NodeInjectorOffset.PARENT */] === null) {
|
|
3204
3207
|
return -1;
|
|
3205
3208
|
}
|
|
3206
3209
|
else {
|
|
@@ -3243,7 +3246,7 @@ function getParentInjectorLocation(tNode, lView) {
|
|
|
3243
3246
|
if (parentTNode.injectorIndex !== -1) {
|
|
3244
3247
|
// We found a NodeInjector which points to something.
|
|
3245
3248
|
return (parentTNode.injectorIndex |
|
|
3246
|
-
(declarationViewOffset << 16 /* ViewOffsetShift */));
|
|
3249
|
+
(declarationViewOffset << 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */));
|
|
3247
3250
|
}
|
|
3248
3251
|
}
|
|
3249
3252
|
return NO_PARENT_INJECTOR;
|
|
@@ -3290,7 +3293,7 @@ function diPublicInInjector(injectorIndex, tView, token) {
|
|
|
3290
3293
|
* @publicApi
|
|
3291
3294
|
*/
|
|
3292
3295
|
function injectAttributeImpl(tNode, attrNameToInject) {
|
|
3293
|
-
ngDevMode && assertTNodeType(tNode, 12 /* AnyContainer */ | 3 /* AnyRNode */);
|
|
3296
|
+
ngDevMode && assertTNodeType(tNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);
|
|
3294
3297
|
ngDevMode && assertDefined(tNode, 'expecting tNode');
|
|
3295
3298
|
if (attrNameToInject === 'class') {
|
|
3296
3299
|
return tNode.classes;
|
|
@@ -3308,7 +3311,7 @@ function injectAttributeImpl(tNode, attrNameToInject) {
|
|
|
3308
3311
|
if (isNameOnlyAttributeMarker(value))
|
|
3309
3312
|
break;
|
|
3310
3313
|
// Skip namespaced attributes
|
|
3311
|
-
if (value === 0 /* NamespaceURI */) {
|
|
3314
|
+
if (value === 0 /* AttributeMarker.NamespaceURI */) {
|
|
3312
3315
|
// we skip the next two values
|
|
3313
3316
|
// as namespaced attributes looks like
|
|
3314
3317
|
// [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',
|
|
@@ -3394,7 +3397,7 @@ function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default,
|
|
|
3394
3397
|
if (tNode !== null) {
|
|
3395
3398
|
// If the view or any of its ancestors have an embedded
|
|
3396
3399
|
// view injector, we have to look it up there first.
|
|
3397
|
-
if (lView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) {
|
|
3400
|
+
if (lView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) {
|
|
3398
3401
|
const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
|
|
3399
3402
|
if (embeddedInjectorValue !== NOT_FOUND) {
|
|
3400
3403
|
return embeddedInjectorValue;
|
|
@@ -3456,7 +3459,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
|
|
|
3456
3459
|
// searching the parent injector.
|
|
3457
3460
|
if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {
|
|
3458
3461
|
parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :
|
|
3459
|
-
lView[injectorIndex + 8 /* PARENT */];
|
|
3462
|
+
lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
|
|
3460
3463
|
if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
|
|
3461
3464
|
injectorIndex = -1;
|
|
3462
3465
|
}
|
|
@@ -3473,7 +3476,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
|
|
|
3473
3476
|
// Check the current injector. If it matches, see if it contains token.
|
|
3474
3477
|
const tView = lView[TVIEW];
|
|
3475
3478
|
ngDevMode &&
|
|
3476
|
-
assertTNodeForLView(tView.data[injectorIndex + 8 /* TNODE */], lView);
|
|
3479
|
+
assertTNodeForLView(tView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */], lView);
|
|
3477
3480
|
if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
|
|
3478
3481
|
// At this point, we have an injector which *may* contain the token, so we step through
|
|
3479
3482
|
// the providers and directives associated with the injector's corresponding node to get
|
|
@@ -3483,9 +3486,9 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
|
|
|
3483
3486
|
return instance;
|
|
3484
3487
|
}
|
|
3485
3488
|
}
|
|
3486
|
-
parentLocation = lView[injectorIndex + 8 /* PARENT */];
|
|
3489
|
+
parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
|
|
3487
3490
|
if (parentLocation !== NO_PARENT_INJECTOR &&
|
|
3488
|
-
shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* TNODE */] === hostTElementNode) &&
|
|
3491
|
+
shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */] === hostTElementNode) &&
|
|
3489
3492
|
bloomHasToken(bloomHash, injectorIndex, lView)) {
|
|
3490
3493
|
// The def wasn't found anywhere on this node, so it was a false positive.
|
|
3491
3494
|
// Traverse up the tree and continue searching.
|
|
@@ -3505,7 +3508,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
|
|
|
3505
3508
|
}
|
|
3506
3509
|
function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
|
|
3507
3510
|
const currentTView = lView[TVIEW];
|
|
3508
|
-
const tNode = currentTView.data[injectorIndex + 8 /* TNODE */];
|
|
3511
|
+
const tNode = currentTView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
|
|
3509
3512
|
// First, we need to determine if view providers can be accessed by the starting element.
|
|
3510
3513
|
// There are two possibilities
|
|
3511
3514
|
const canAccessViewProviders = previousTView == null ?
|
|
@@ -3523,7 +3526,7 @@ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flag
|
|
|
3523
3526
|
// - AND the parent TNode is an Element.
|
|
3524
3527
|
// This means that we just came from the Component's View and therefore are allowed to see
|
|
3525
3528
|
// into the ViewProviders.
|
|
3526
|
-
(previousTView != currentTView && ((tNode.type & 3 /* AnyRNode */) !== 0));
|
|
3529
|
+
(previousTView != currentTView && ((tNode.type & 3 /* TNodeType.AnyRNode */) !== 0));
|
|
3527
3530
|
// This special case happens when there is a @host on the inject and when we are searching
|
|
3528
3531
|
// on the host element node.
|
|
3529
3532
|
const isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;
|
|
@@ -3548,10 +3551,10 @@ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flag
|
|
|
3548
3551
|
function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {
|
|
3549
3552
|
const nodeProviderIndexes = tNode.providerIndexes;
|
|
3550
3553
|
const tInjectables = tView.data;
|
|
3551
|
-
const injectablesStart = nodeProviderIndexes & 1048575 /* ProvidersStartIndexMask */;
|
|
3554
|
+
const injectablesStart = nodeProviderIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
|
|
3552
3555
|
const directivesStart = tNode.directiveStart;
|
|
3553
3556
|
const directiveEnd = tNode.directiveEnd;
|
|
3554
|
-
const cptViewProvidersCount = nodeProviderIndexes >> 20 /* CptViewProvidersCountShift */;
|
|
3557
|
+
const cptViewProvidersCount = nodeProviderIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
|
|
3555
3558
|
const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
|
|
3556
3559
|
// When the host special case applies, only the viewProviders and the component are visible
|
|
3557
3560
|
const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
|
|
@@ -3641,7 +3644,7 @@ function bloomHashBitOrFactory(token) {
|
|
|
3641
3644
|
}
|
|
3642
3645
|
else {
|
|
3643
3646
|
ngDevMode &&
|
|
3644
|
-
assertEqual(tokenId, -1 /* Injector */, 'Expecting to get Special Injector Id');
|
|
3647
|
+
assertEqual(tokenId, -1 /* InjectorMarkers.Injector */, 'Expecting to get Special Injector Id');
|
|
3645
3648
|
return createNodeInjector;
|
|
3646
3649
|
}
|
|
3647
3650
|
}
|
|
@@ -3737,8 +3740,8 @@ function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundVa
|
|
|
3737
3740
|
// hierarchy when resolving the value is to walk it node-by-node while attempting to resolve
|
|
3738
3741
|
// the token at each level.
|
|
3739
3742
|
while (currentTNode !== null && currentLView !== null &&
|
|
3740
|
-
(currentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) &&
|
|
3741
|
-
!(currentLView[FLAGS] & 512 /* IsRoot */)) {
|
|
3743
|
+
(currentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) &&
|
|
3744
|
+
!(currentLView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
|
|
3742
3745
|
ngDevMode && assertTNodeForLView(currentTNode, currentLView);
|
|
3743
3746
|
// Note that this lookup on the node injector is using the `Self` flag, because
|
|
3744
3747
|
// we don't want the node injector to look at any parent injectors since we
|
|
@@ -3773,11 +3776,11 @@ function getTNodeFromLView(lView) {
|
|
|
3773
3776
|
const tView = lView[TVIEW];
|
|
3774
3777
|
const tViewType = tView.type;
|
|
3775
3778
|
// The parent pointer differs based on `TView.type`.
|
|
3776
|
-
if (tViewType === 2 /* Embedded */) {
|
|
3779
|
+
if (tViewType === 2 /* TViewType.Embedded */) {
|
|
3777
3780
|
ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
3778
3781
|
return tView.declTNode;
|
|
3779
3782
|
}
|
|
3780
|
-
else if (tViewType === 1 /* Component */) {
|
|
3783
|
+
else if (tViewType === 1 /* TViewType.Component */) {
|
|
3781
3784
|
// Components don't have `TView.declTNode` because each instance of component could be
|
|
3782
3785
|
// inserted in different location, hence `TView.declTNode` is meaningless.
|
|
3783
3786
|
return lView[T_HOST];
|
|
@@ -4175,7 +4178,7 @@ function getCompilerFacade(request) {
|
|
|
4175
4178
|
console.error(`JIT compilation failed for ${request.kind}`, request.type);
|
|
4176
4179
|
let message = `The ${request.kind} '${request
|
|
4177
4180
|
.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
|
|
4178
|
-
if (request.usage === 1 /* PartialDeclaration */) {
|
|
4181
|
+
if (request.usage === 1 /* JitCompilerUsage.PartialDeclaration */) {
|
|
4179
4182
|
message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
|
|
4180
4183
|
message +=
|
|
4181
4184
|
`However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
|
|
@@ -4847,7 +4850,7 @@ function injectInjectorOnly(token, flags = InjectFlags.Default) {
|
|
|
4847
4850
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
4848
4851
|
`inject() must be called from an injection context` :
|
|
4849
4852
|
'';
|
|
4850
|
-
throw new RuntimeError(203 /* MISSING_INJECTION_CONTEXT */, errorMessage);
|
|
4853
|
+
throw new RuntimeError(203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
|
|
4851
4854
|
}
|
|
4852
4855
|
else if (_currentInjector === null) {
|
|
4853
4856
|
return injectRootLimpMode(token, undefined, flags);
|
|
@@ -4914,7 +4917,7 @@ function injectArgs(types) {
|
|
|
4914
4917
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
4915
4918
|
'Arguments array must have arguments.' :
|
|
4916
4919
|
'';
|
|
4917
|
-
throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
|
|
4920
|
+
throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
|
|
4918
4921
|
}
|
|
4919
4922
|
let type = undefined;
|
|
4920
4923
|
let flags = InjectFlags.Default;
|
|
@@ -4923,7 +4926,7 @@ function injectArgs(types) {
|
|
|
4923
4926
|
const flag = getInjectFlag(meta);
|
|
4924
4927
|
if (typeof flag === 'number') {
|
|
4925
4928
|
// Special case when we handle @Inject decorator.
|
|
4926
|
-
if (flag === -1 /* Inject */) {
|
|
4929
|
+
if (flag === -1 /* DecoratorFlags.Inject */) {
|
|
4927
4930
|
type = meta.token;
|
|
4928
4931
|
}
|
|
4929
4932
|
else {
|
|
@@ -5010,7 +5013,7 @@ function formatError(text, obj, injectorErrorName, source = null) {
|
|
|
5010
5013
|
const Inject = attachInjectFlag(
|
|
5011
5014
|
// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
|
|
5012
5015
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5013
|
-
makeParamDecorator('Inject', (token) => ({ token })), -1 /* Inject */);
|
|
5016
|
+
makeParamDecorator('Inject', (token) => ({ token })), -1 /* DecoratorFlags.Inject */);
|
|
5014
5017
|
/**
|
|
5015
5018
|
* Optional decorator and metadata.
|
|
5016
5019
|
*
|
|
@@ -5020,7 +5023,7 @@ makeParamDecorator('Inject', (token) => ({ token })), -1 /* Inject */);
|
|
|
5020
5023
|
const Optional =
|
|
5021
5024
|
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5022
5025
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5023
|
-
attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
|
|
5026
|
+
attachInjectFlag(makeParamDecorator('Optional'), 8 /* InternalInjectFlags.Optional */);
|
|
5024
5027
|
/**
|
|
5025
5028
|
* Self decorator and metadata.
|
|
5026
5029
|
*
|
|
@@ -5030,7 +5033,7 @@ attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
|
|
|
5030
5033
|
const Self =
|
|
5031
5034
|
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5032
5035
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5033
|
-
attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
|
|
5036
|
+
attachInjectFlag(makeParamDecorator('Self'), 2 /* InternalInjectFlags.Self */);
|
|
5034
5037
|
/**
|
|
5035
5038
|
* `SkipSelf` decorator and metadata.
|
|
5036
5039
|
*
|
|
@@ -5040,7 +5043,7 @@ attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
|
|
|
5040
5043
|
const SkipSelf =
|
|
5041
5044
|
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5042
5045
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5043
|
-
attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
|
|
5046
|
+
attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* InternalInjectFlags.SkipSelf */);
|
|
5044
5047
|
/**
|
|
5045
5048
|
* Host decorator and metadata.
|
|
5046
5049
|
*
|
|
@@ -5050,7 +5053,7 @@ attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
|
|
|
5050
5053
|
const Host =
|
|
5051
5054
|
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
|
|
5052
5055
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5053
|
-
attachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);
|
|
5056
|
+
attachInjectFlag(makeParamDecorator('Host'), 1 /* InternalInjectFlags.Host */);
|
|
5054
5057
|
|
|
5055
5058
|
/**
|
|
5056
5059
|
* @license
|
|
@@ -5499,27 +5502,27 @@ class SafeValueImpl {
|
|
|
5499
5502
|
}
|
|
5500
5503
|
class SafeHtmlImpl extends SafeValueImpl {
|
|
5501
5504
|
getTypeName() {
|
|
5502
|
-
return "HTML" /* Html */;
|
|
5505
|
+
return "HTML" /* BypassType.Html */;
|
|
5503
5506
|
}
|
|
5504
5507
|
}
|
|
5505
5508
|
class SafeStyleImpl extends SafeValueImpl {
|
|
5506
5509
|
getTypeName() {
|
|
5507
|
-
return "Style" /* Style */;
|
|
5510
|
+
return "Style" /* BypassType.Style */;
|
|
5508
5511
|
}
|
|
5509
5512
|
}
|
|
5510
5513
|
class SafeScriptImpl extends SafeValueImpl {
|
|
5511
5514
|
getTypeName() {
|
|
5512
|
-
return "Script" /* Script */;
|
|
5515
|
+
return "Script" /* BypassType.Script */;
|
|
5513
5516
|
}
|
|
5514
5517
|
}
|
|
5515
5518
|
class SafeUrlImpl extends SafeValueImpl {
|
|
5516
5519
|
getTypeName() {
|
|
5517
|
-
return "URL" /* Url */;
|
|
5520
|
+
return "URL" /* BypassType.Url */;
|
|
5518
5521
|
}
|
|
5519
5522
|
}
|
|
5520
5523
|
class SafeResourceUrlImpl extends SafeValueImpl {
|
|
5521
5524
|
getTypeName() {
|
|
5522
|
-
return "ResourceURL" /* ResourceUrl */;
|
|
5525
|
+
return "ResourceURL" /* BypassType.ResourceUrl */;
|
|
5523
5526
|
}
|
|
5524
5527
|
}
|
|
5525
5528
|
function unwrapSafeValue(value) {
|
|
@@ -5530,7 +5533,7 @@ function allowSanitizationBypassAndThrow(value, type) {
|
|
|
5530
5533
|
const actualType = getSanitizationBypassType(value);
|
|
5531
5534
|
if (actualType != null && actualType !== type) {
|
|
5532
5535
|
// Allow ResourceURLs in URL contexts, they are strictly more trusted.
|
|
5533
|
-
if (actualType === "ResourceURL" /* ResourceUrl */ && type === "URL" /* Url */)
|
|
5536
|
+
if (actualType === "ResourceURL" /* BypassType.ResourceUrl */ && type === "URL" /* BypassType.Url */)
|
|
5534
5537
|
return true;
|
|
5535
5538
|
throw new Error(`Required a safe ${type}, got a ${actualType} (see https://g.co/ng/security#xss)`);
|
|
5536
5539
|
}
|
|
@@ -6088,7 +6091,7 @@ function ɵɵsanitizeHtml(unsafeHtml) {
|
|
|
6088
6091
|
if (sanitizer) {
|
|
6089
6092
|
return trustedHTMLFromStringBypass(sanitizer.sanitize(SecurityContext.HTML, unsafeHtml) || '');
|
|
6090
6093
|
}
|
|
6091
|
-
if (allowSanitizationBypassAndThrow(unsafeHtml, "HTML" /* Html */)) {
|
|
6094
|
+
if (allowSanitizationBypassAndThrow(unsafeHtml, "HTML" /* BypassType.Html */)) {
|
|
6092
6095
|
return trustedHTMLFromStringBypass(unwrapSafeValue(unsafeHtml));
|
|
6093
6096
|
}
|
|
6094
6097
|
return _sanitizeHtml(getDocument(), renderStringify(unsafeHtml));
|
|
@@ -6109,7 +6112,7 @@ function ɵɵsanitizeStyle(unsafeStyle) {
|
|
|
6109
6112
|
if (sanitizer) {
|
|
6110
6113
|
return sanitizer.sanitize(SecurityContext.STYLE, unsafeStyle) || '';
|
|
6111
6114
|
}
|
|
6112
|
-
if (allowSanitizationBypassAndThrow(unsafeStyle, "Style" /* Style */)) {
|
|
6115
|
+
if (allowSanitizationBypassAndThrow(unsafeStyle, "Style" /* BypassType.Style */)) {
|
|
6113
6116
|
return unwrapSafeValue(unsafeStyle);
|
|
6114
6117
|
}
|
|
6115
6118
|
return renderStringify(unsafeStyle);
|
|
@@ -6135,7 +6138,7 @@ function ɵɵsanitizeUrl(unsafeUrl) {
|
|
|
6135
6138
|
if (sanitizer) {
|
|
6136
6139
|
return sanitizer.sanitize(SecurityContext.URL, unsafeUrl) || '';
|
|
6137
6140
|
}
|
|
6138
|
-
if (allowSanitizationBypassAndThrow(unsafeUrl, "URL" /* Url */)) {
|
|
6141
|
+
if (allowSanitizationBypassAndThrow(unsafeUrl, "URL" /* BypassType.Url */)) {
|
|
6139
6142
|
return unwrapSafeValue(unsafeUrl);
|
|
6140
6143
|
}
|
|
6141
6144
|
return _sanitizeUrl(renderStringify(unsafeUrl));
|
|
@@ -6156,13 +6159,13 @@ function ɵɵsanitizeResourceUrl(unsafeResourceUrl) {
|
|
|
6156
6159
|
if (sanitizer) {
|
|
6157
6160
|
return trustedScriptURLFromStringBypass(sanitizer.sanitize(SecurityContext.RESOURCE_URL, unsafeResourceUrl) || '');
|
|
6158
6161
|
}
|
|
6159
|
-
if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL" /* ResourceUrl */)) {
|
|
6162
|
+
if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL" /* BypassType.ResourceUrl */)) {
|
|
6160
6163
|
return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl));
|
|
6161
6164
|
}
|
|
6162
6165
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
6163
6166
|
'unsafe value used in a resource URL context (see https://g.co/ng/security#xss)' :
|
|
6164
6167
|
'';
|
|
6165
|
-
throw new RuntimeError(904 /* UNSAFE_VALUE_IN_RESOURCE_URL */, errorMessage);
|
|
6168
|
+
throw new RuntimeError(904 /* RuntimeErrorCode.UNSAFE_VALUE_IN_RESOURCE_URL */, errorMessage);
|
|
6166
6169
|
}
|
|
6167
6170
|
/**
|
|
6168
6171
|
* A `script` sanitizer which only lets trusted javascript through.
|
|
@@ -6181,13 +6184,13 @@ function ɵɵsanitizeScript(unsafeScript) {
|
|
|
6181
6184
|
if (sanitizer) {
|
|
6182
6185
|
return trustedScriptFromStringBypass(sanitizer.sanitize(SecurityContext.SCRIPT, unsafeScript) || '');
|
|
6183
6186
|
}
|
|
6184
|
-
if (allowSanitizationBypassAndThrow(unsafeScript, "Script" /* Script */)) {
|
|
6187
|
+
if (allowSanitizationBypassAndThrow(unsafeScript, "Script" /* BypassType.Script */)) {
|
|
6185
6188
|
return trustedScriptFromStringBypass(unwrapSafeValue(unsafeScript));
|
|
6186
6189
|
}
|
|
6187
6190
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
6188
6191
|
'unsafe value used in a script context' :
|
|
6189
6192
|
'';
|
|
6190
|
-
throw new RuntimeError(905 /* UNSAFE_VALUE_IN_SCRIPT */, errorMessage);
|
|
6193
|
+
throw new RuntimeError(905 /* RuntimeErrorCode.UNSAFE_VALUE_IN_SCRIPT */, errorMessage);
|
|
6191
6194
|
}
|
|
6192
6195
|
/**
|
|
6193
6196
|
* A template tag function for promoting the associated constant literal to a
|
|
@@ -6279,14 +6282,14 @@ function validateAgainstEventProperties(name) {
|
|
|
6279
6282
|
`please use (${name.slice(2)})=...` +
|
|
6280
6283
|
`\nIf '${name}' is a directive input, make sure the directive is imported by the` +
|
|
6281
6284
|
` current module.`;
|
|
6282
|
-
throw new RuntimeError(306 /* INVALID_EVENT_BINDING */, errorMessage);
|
|
6285
|
+
throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);
|
|
6283
6286
|
}
|
|
6284
6287
|
}
|
|
6285
6288
|
function validateAgainstEventAttributes(name) {
|
|
6286
6289
|
if (name.toLowerCase().startsWith('on')) {
|
|
6287
6290
|
const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` +
|
|
6288
6291
|
`please use (${name.slice(2)})=...`;
|
|
6289
|
-
throw new RuntimeError(306 /* INVALID_EVENT_BINDING */, errorMessage);
|
|
6292
|
+
throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);
|
|
6290
6293
|
}
|
|
6291
6294
|
}
|
|
6292
6295
|
function getSanitizer() {
|
|
@@ -6541,7 +6544,7 @@ function readPatchedData(target) {
|
|
|
6541
6544
|
function readPatchedLView(target) {
|
|
6542
6545
|
const value = readPatchedData(target);
|
|
6543
6546
|
if (value) {
|
|
6544
|
-
return isLView(value) ? value : value.lView;
|
|
6547
|
+
return (isLView(value) ? value : value.lView);
|
|
6545
6548
|
}
|
|
6546
6549
|
return null;
|
|
6547
6550
|
}
|
|
@@ -6644,14 +6647,14 @@ function getDirectivesAtNodeIndex(nodeIndex, lView, includeComponents) {
|
|
|
6644
6647
|
if (directiveStartIndex == 0)
|
|
6645
6648
|
return EMPTY_ARRAY;
|
|
6646
6649
|
const directiveEndIndex = tNode.directiveEnd;
|
|
6647
|
-
if (!includeComponents && tNode.flags & 2 /* isComponentHost */)
|
|
6650
|
+
if (!includeComponents && tNode.flags & 2 /* TNodeFlags.isComponentHost */)
|
|
6648
6651
|
directiveStartIndex++;
|
|
6649
6652
|
return lView.slice(directiveStartIndex, directiveEndIndex);
|
|
6650
6653
|
}
|
|
6651
6654
|
function getComponentAtNodeIndex(nodeIndex, lView) {
|
|
6652
6655
|
const tNode = lView[TVIEW].data[nodeIndex];
|
|
6653
6656
|
let directiveStartIndex = tNode.directiveStart;
|
|
6654
|
-
return tNode.flags & 2 /* isComponentHost */ ? lView[directiveStartIndex] : null;
|
|
6657
|
+
return tNode.flags & 2 /* TNodeFlags.isComponentHost */ ? lView[directiveStartIndex] : null;
|
|
6655
6658
|
}
|
|
6656
6659
|
/**
|
|
6657
6660
|
* Returns a map of local references (local reference name => element or directive instance) that
|
|
@@ -6932,11 +6935,11 @@ function maybeUnwrapFn(value) {
|
|
|
6932
6935
|
function assertStandaloneComponentType(type) {
|
|
6933
6936
|
const componentDef = getComponentDef(type);
|
|
6934
6937
|
if (!componentDef) {
|
|
6935
|
-
throw new RuntimeError(906 /* MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +
|
|
6938
|
+
throw new RuntimeError(906 /* RuntimeErrorCode.MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +
|
|
6936
6939
|
`make sure it has the \`@Component\` decorator.`);
|
|
6937
6940
|
}
|
|
6938
6941
|
if (!componentDef.standalone) {
|
|
6939
|
-
throw new RuntimeError(907 /* TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +
|
|
6942
|
+
throw new RuntimeError(907 /* RuntimeErrorCode.TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +
|
|
6940
6943
|
`but Angular expects to have a standalone component here. ` +
|
|
6941
6944
|
`Please make sure the ${stringifyForError(type)} component has ` +
|
|
6942
6945
|
`the \`standalone: true\` flag in the decorator.`);
|
|
@@ -6944,7 +6947,7 @@ function assertStandaloneComponentType(type) {
|
|
|
6944
6947
|
}
|
|
6945
6948
|
/** Called when there are multiple component selectors that match a given node */
|
|
6946
6949
|
function throwMultipleComponentError(tNode, first, second) {
|
|
6947
|
-
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
|
|
6950
|
+
throw new RuntimeError(-300 /* RuntimeErrorCode.MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
|
|
6948
6951
|
`${stringifyForError(first)} and ` +
|
|
6949
6952
|
`${stringifyForError(second)}`);
|
|
6950
6953
|
}
|
|
@@ -6957,7 +6960,7 @@ function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName)
|
|
|
6957
6960
|
` It seems like the view has been created after its parent and its children have been dirty checked.` +
|
|
6958
6961
|
` Has it been created in a change detection hook?`;
|
|
6959
6962
|
}
|
|
6960
|
-
throw new RuntimeError(-100 /* EXPRESSION_CHANGED_AFTER_CHECKED */, msg);
|
|
6963
|
+
throw new RuntimeError(-100 /* RuntimeErrorCode.EXPRESSION_CHANGED_AFTER_CHECKED */, msg);
|
|
6961
6964
|
}
|
|
6962
6965
|
function constructDetailsForInterpolation(lView, rootIndex, expressionIndex, meta, changedValue) {
|
|
6963
6966
|
const [propName, prefix, ...chunks] = meta.split(INTERPOLATION_DELIMITER);
|
|
@@ -7101,7 +7104,7 @@ function getLViewParent(lView) {
|
|
|
7101
7104
|
function getRootView(componentOrLView) {
|
|
7102
7105
|
ngDevMode && assertDefined(componentOrLView, 'component');
|
|
7103
7106
|
let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);
|
|
7104
|
-
while (lView && !(lView[FLAGS] & 512 /* IsRoot */)) {
|
|
7107
|
+
while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
|
|
7105
7108
|
lView = getLViewParent(lView);
|
|
7106
7109
|
}
|
|
7107
7110
|
ngDevMode && assertLView(lView);
|
|
@@ -7172,7 +7175,7 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
|
|
|
7172
7175
|
}
|
|
7173
7176
|
const rNode = unwrapRNode(lNodeToHandle);
|
|
7174
7177
|
ngDevMode && !isProceduralRenderer(renderer) && assertDomNode(rNode);
|
|
7175
|
-
if (action === 0 /* Create */ && parent !== null) {
|
|
7178
|
+
if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
|
|
7176
7179
|
if (beforeNode == null) {
|
|
7177
7180
|
nativeAppendChild(renderer, parent, rNode);
|
|
7178
7181
|
}
|
|
@@ -7180,13 +7183,13 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
|
|
|
7180
7183
|
nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
|
|
7181
7184
|
}
|
|
7182
7185
|
}
|
|
7183
|
-
else if (action === 1 /* Insert */ && parent !== null) {
|
|
7186
|
+
else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {
|
|
7184
7187
|
nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
|
|
7185
7188
|
}
|
|
7186
|
-
else if (action === 2 /* Detach */) {
|
|
7189
|
+
else if (action === 2 /* WalkTNodeTreeAction.Detach */) {
|
|
7187
7190
|
nativeRemoveNode(renderer, rNode, isComponent);
|
|
7188
7191
|
}
|
|
7189
|
-
else if (action === 3 /* Destroy */) {
|
|
7192
|
+
else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {
|
|
7190
7193
|
ngDevMode && ngDevMode.rendererDestroyNode++;
|
|
7191
7194
|
renderer.destroyNode(rNode);
|
|
7192
7195
|
}
|
|
@@ -7241,7 +7244,7 @@ function createElementNode(renderer, name, namespace) {
|
|
|
7241
7244
|
*/
|
|
7242
7245
|
function removeViewFromContainer(tView, lView) {
|
|
7243
7246
|
const renderer = lView[RENDERER];
|
|
7244
|
-
applyView(tView, lView, renderer, 2 /* Detach */, null, null);
|
|
7247
|
+
applyView(tView, lView, renderer, 2 /* WalkTNodeTreeAction.Detach */, null, null);
|
|
7245
7248
|
lView[HOST] = null;
|
|
7246
7249
|
lView[T_HOST] = null;
|
|
7247
7250
|
}
|
|
@@ -7262,7 +7265,7 @@ function removeViewFromContainer(tView, lView) {
|
|
|
7262
7265
|
function addViewToContainer(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) {
|
|
7263
7266
|
lView[HOST] = parentNativeNode;
|
|
7264
7267
|
lView[T_HOST] = parentTNode;
|
|
7265
|
-
applyView(tView, lView, renderer, 1 /* Insert */, parentNativeNode, beforeNode);
|
|
7268
|
+
applyView(tView, lView, renderer, 1 /* WalkTNodeTreeAction.Insert */, parentNativeNode, beforeNode);
|
|
7266
7269
|
}
|
|
7267
7270
|
/**
|
|
7268
7271
|
* Detach a `LView` from the DOM by detaching its nodes.
|
|
@@ -7271,7 +7274,7 @@ function addViewToContainer(tView, parentTNode, renderer, lView, parentNativeNod
|
|
|
7271
7274
|
* @param lView the `LView` to be detached.
|
|
7272
7275
|
*/
|
|
7273
7276
|
function renderDetachView(tView, lView) {
|
|
7274
|
-
applyView(tView, lView, lView[RENDERER], 2 /* Detach */, null, null);
|
|
7277
|
+
applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);
|
|
7275
7278
|
}
|
|
7276
7279
|
/**
|
|
7277
7280
|
* Traverses down and up the tree of views and containers to remove listeners and
|
|
@@ -7366,7 +7369,7 @@ function insertView(tView, lView, lContainer, index) {
|
|
|
7366
7369
|
lQueries.insertView(tView);
|
|
7367
7370
|
}
|
|
7368
7371
|
// Sets the attached flag
|
|
7369
|
-
lView[FLAGS] |= 128 /* Attached */;
|
|
7372
|
+
lView[FLAGS] |= 128 /* LViewFlags.Attached */;
|
|
7370
7373
|
}
|
|
7371
7374
|
/**
|
|
7372
7375
|
* Track views created from the declaration container (TemplateRef) and inserted into a
|
|
@@ -7406,8 +7409,8 @@ function detachMovedView(declarationContainer, lView) {
|
|
|
7406
7409
|
// If the view was marked for refresh but then detached before it was checked (where the flag
|
|
7407
7410
|
// would be cleared and the counter decremented), we need to decrement the view counter here
|
|
7408
7411
|
// instead.
|
|
7409
|
-
if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
|
|
7410
|
-
lView[FLAGS] &= ~1024 /* RefreshTransplantedView */;
|
|
7412
|
+
if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
|
|
7413
|
+
lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
|
|
7411
7414
|
updateTransplantedViewCount(insertionLContainer, -1);
|
|
7412
7415
|
}
|
|
7413
7416
|
movedViews.splice(declarationViewIndex, 1);
|
|
@@ -7445,7 +7448,7 @@ function detachView(lContainer, removeIndex) {
|
|
|
7445
7448
|
viewToDetach[PARENT] = null;
|
|
7446
7449
|
viewToDetach[NEXT] = null;
|
|
7447
7450
|
// Unsets the attached flag
|
|
7448
|
-
viewToDetach[FLAGS] &= ~128 /* Attached */;
|
|
7451
|
+
viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
|
|
7449
7452
|
}
|
|
7450
7453
|
return viewToDetach;
|
|
7451
7454
|
}
|
|
@@ -7457,10 +7460,10 @@ function detachView(lContainer, removeIndex) {
|
|
|
7457
7460
|
* @param lView The view to be destroyed.
|
|
7458
7461
|
*/
|
|
7459
7462
|
function destroyLView(tView, lView) {
|
|
7460
|
-
if (!(lView[FLAGS] & 256 /* Destroyed */)) {
|
|
7463
|
+
if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
|
|
7461
7464
|
const renderer = lView[RENDERER];
|
|
7462
7465
|
if (isProceduralRenderer(renderer) && renderer.destroyNode) {
|
|
7463
|
-
applyView(tView, lView, renderer, 3 /* Destroy */, null, null);
|
|
7466
|
+
applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
|
|
7464
7467
|
}
|
|
7465
7468
|
destroyViewTree(lView);
|
|
7466
7469
|
}
|
|
@@ -7474,20 +7477,20 @@ function destroyLView(tView, lView) {
|
|
|
7474
7477
|
* @param lView The LView to clean up
|
|
7475
7478
|
*/
|
|
7476
7479
|
function cleanUpView(tView, lView) {
|
|
7477
|
-
if (!(lView[FLAGS] & 256 /* Destroyed */)) {
|
|
7480
|
+
if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
|
|
7478
7481
|
// Usually the Attached flag is removed when the view is detached from its parent, however
|
|
7479
7482
|
// if it's a root view, the flag won't be unset hence why we're also removing on destroy.
|
|
7480
|
-
lView[FLAGS] &= ~128 /* Attached */;
|
|
7483
|
+
lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
|
|
7481
7484
|
// Mark the LView as destroyed *before* executing the onDestroy hooks. An onDestroy hook
|
|
7482
7485
|
// runs arbitrary user code, which could include its own `viewRef.destroy()` (or similar). If
|
|
7483
7486
|
// We don't flag the view as destroyed before the hooks, this could lead to an infinite loop.
|
|
7484
7487
|
// This also aligns with the ViewEngine behavior. It also means that the onDestroy hook is
|
|
7485
7488
|
// really more of an "afterDestroy" hook if you think about it.
|
|
7486
|
-
lView[FLAGS] |= 256 /* Destroyed */;
|
|
7489
|
+
lView[FLAGS] |= 256 /* LViewFlags.Destroyed */;
|
|
7487
7490
|
executeOnDestroys(tView, lView);
|
|
7488
7491
|
processCleanups(tView, lView);
|
|
7489
7492
|
// For component views only, the local renderer is destroyed at clean up time.
|
|
7490
|
-
if (lView[TVIEW].type === 1 /* Component */ && isProceduralRenderer(lView[RENDERER])) {
|
|
7493
|
+
if (lView[TVIEW].type === 1 /* TViewType.Component */ && isProceduralRenderer(lView[RENDERER])) {
|
|
7491
7494
|
ngDevMode && ngDevMode.rendererDestroy++;
|
|
7492
7495
|
lView[RENDERER].destroy();
|
|
7493
7496
|
}
|
|
@@ -7571,22 +7574,22 @@ function executeOnDestroys(tView, lView) {
|
|
|
7571
7574
|
for (let j = 0; j < toCall.length; j += 2) {
|
|
7572
7575
|
const callContext = context[toCall[j]];
|
|
7573
7576
|
const hook = toCall[j + 1];
|
|
7574
|
-
profiler(4 /* LifecycleHookStart */, callContext, hook);
|
|
7577
|
+
profiler(4 /* ProfilerEvent.LifecycleHookStart */, callContext, hook);
|
|
7575
7578
|
try {
|
|
7576
7579
|
hook.call(callContext);
|
|
7577
7580
|
}
|
|
7578
7581
|
finally {
|
|
7579
|
-
profiler(5 /* LifecycleHookEnd */, callContext, hook);
|
|
7582
|
+
profiler(5 /* ProfilerEvent.LifecycleHookEnd */, callContext, hook);
|
|
7580
7583
|
}
|
|
7581
7584
|
}
|
|
7582
7585
|
}
|
|
7583
7586
|
else {
|
|
7584
|
-
profiler(4 /* LifecycleHookStart */, context, toCall);
|
|
7587
|
+
profiler(4 /* ProfilerEvent.LifecycleHookStart */, context, toCall);
|
|
7585
7588
|
try {
|
|
7586
7589
|
toCall.call(context);
|
|
7587
7590
|
}
|
|
7588
7591
|
finally {
|
|
7589
|
-
profiler(5 /* LifecycleHookEnd */, context, toCall);
|
|
7592
|
+
profiler(5 /* ProfilerEvent.LifecycleHookEnd */, context, toCall);
|
|
7590
7593
|
}
|
|
7591
7594
|
}
|
|
7592
7595
|
}
|
|
@@ -7632,7 +7635,7 @@ function getClosestRElement(tView, tNode, lView) {
|
|
|
7632
7635
|
// Skip over element and ICU containers as those are represented by a comment node and
|
|
7633
7636
|
// can't be used as a render parent.
|
|
7634
7637
|
while (parentTNode !== null &&
|
|
7635
|
-
(parentTNode.type & (8 /* ElementContainer */ | 32 /* Icu */))) {
|
|
7638
|
+
(parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */))) {
|
|
7636
7639
|
tNode = parentTNode;
|
|
7637
7640
|
parentTNode = tNode.parent;
|
|
7638
7641
|
}
|
|
@@ -7644,8 +7647,8 @@ function getClosestRElement(tView, tNode, lView) {
|
|
|
7644
7647
|
return lView[HOST];
|
|
7645
7648
|
}
|
|
7646
7649
|
else {
|
|
7647
|
-
ngDevMode && assertTNodeType(parentTNode, 3 /* AnyRNode */ | 4 /* Container */);
|
|
7648
|
-
if (parentTNode.flags & 2 /* isComponentHost */) {
|
|
7650
|
+
ngDevMode && assertTNodeType(parentTNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
|
|
7651
|
+
if (parentTNode.flags & 2 /* TNodeFlags.isComponentHost */) {
|
|
7649
7652
|
ngDevMode && assertTNodeForLView(parentTNode, lView);
|
|
7650
7653
|
const encapsulation = tView.data[parentTNode.directiveStart].encapsulation;
|
|
7651
7654
|
// We've got a parent which is an element in the current view. We just need to verify if the
|
|
@@ -7746,7 +7749,7 @@ function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) {
|
|
|
7746
7749
|
* @param lView current `LView`
|
|
7747
7750
|
*/
|
|
7748
7751
|
function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) {
|
|
7749
|
-
if (parentTNode.type & (8 /* ElementContainer */ | 32 /* Icu */)) {
|
|
7752
|
+
if (parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */)) {
|
|
7750
7753
|
return getNativeByTNode(parentTNode, lView);
|
|
7751
7754
|
}
|
|
7752
7755
|
return null;
|
|
@@ -7801,15 +7804,15 @@ function appendChild(tView, lView, childRNode, childTNode) {
|
|
|
7801
7804
|
function getFirstNativeNode(lView, tNode) {
|
|
7802
7805
|
if (tNode !== null) {
|
|
7803
7806
|
ngDevMode &&
|
|
7804
|
-
assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 32 /* Icu */ | 16 /* Projection */);
|
|
7807
|
+
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */ | 16 /* TNodeType.Projection */);
|
|
7805
7808
|
const tNodeType = tNode.type;
|
|
7806
|
-
if (tNodeType & 3 /* AnyRNode */) {
|
|
7809
|
+
if (tNodeType & 3 /* TNodeType.AnyRNode */) {
|
|
7807
7810
|
return getNativeByTNode(tNode, lView);
|
|
7808
7811
|
}
|
|
7809
|
-
else if (tNodeType & 4 /* Container */) {
|
|
7812
|
+
else if (tNodeType & 4 /* TNodeType.Container */) {
|
|
7810
7813
|
return getBeforeNodeForView(-1, lView[tNode.index]);
|
|
7811
7814
|
}
|
|
7812
|
-
else if (tNodeType & 8 /* ElementContainer */) {
|
|
7815
|
+
else if (tNodeType & 8 /* TNodeType.ElementContainer */) {
|
|
7813
7816
|
const elIcuContainerChild = tNode.child;
|
|
7814
7817
|
if (elIcuContainerChild !== null) {
|
|
7815
7818
|
return getFirstNativeNode(lView, elIcuContainerChild);
|
|
@@ -7824,7 +7827,7 @@ function getFirstNativeNode(lView, tNode) {
|
|
|
7824
7827
|
}
|
|
7825
7828
|
}
|
|
7826
7829
|
}
|
|
7827
|
-
else if (tNodeType & 32 /* Icu */) {
|
|
7830
|
+
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
7828
7831
|
let nextRNode = icuContainerIterate(tNode, lView);
|
|
7829
7832
|
let rNode = nextRNode();
|
|
7830
7833
|
// If the ICU container has no nodes, than we use the ICU anchor as the node.
|
|
@@ -7892,21 +7895,21 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
|
|
|
7892
7895
|
while (tNode != null) {
|
|
7893
7896
|
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
7894
7897
|
ngDevMode &&
|
|
7895
|
-
assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 16 /* Projection */ | 32 /* Icu */);
|
|
7898
|
+
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
|
|
7896
7899
|
const rawSlotValue = lView[tNode.index];
|
|
7897
7900
|
const tNodeType = tNode.type;
|
|
7898
7901
|
if (isProjection) {
|
|
7899
|
-
if (action === 0 /* Create */) {
|
|
7902
|
+
if (action === 0 /* WalkTNodeTreeAction.Create */) {
|
|
7900
7903
|
rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView);
|
|
7901
|
-
tNode.flags |= 4 /* isProjected */;
|
|
7904
|
+
tNode.flags |= 4 /* TNodeFlags.isProjected */;
|
|
7902
7905
|
}
|
|
7903
7906
|
}
|
|
7904
|
-
if ((tNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
|
|
7905
|
-
if (tNodeType & 8 /* ElementContainer */) {
|
|
7907
|
+
if ((tNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
|
|
7908
|
+
if (tNodeType & 8 /* TNodeType.ElementContainer */) {
|
|
7906
7909
|
applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);
|
|
7907
7910
|
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
|
|
7908
7911
|
}
|
|
7909
|
-
else if (tNodeType & 32 /* Icu */) {
|
|
7912
|
+
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
7910
7913
|
const nextRNode = icuContainerIterate(tNode, lView);
|
|
7911
7914
|
let rNode;
|
|
7912
7915
|
while (rNode = nextRNode()) {
|
|
@@ -7914,11 +7917,11 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
|
|
|
7914
7917
|
}
|
|
7915
7918
|
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
|
|
7916
7919
|
}
|
|
7917
|
-
else if (tNodeType & 16 /* Projection */) {
|
|
7920
|
+
else if (tNodeType & 16 /* TNodeType.Projection */) {
|
|
7918
7921
|
applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
|
|
7919
7922
|
}
|
|
7920
7923
|
else {
|
|
7921
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 4 /* Container */);
|
|
7924
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
|
|
7922
7925
|
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
|
|
7923
7926
|
}
|
|
7924
7927
|
}
|
|
@@ -7943,7 +7946,7 @@ function applyProjection(tView, lView, tProjectionNode) {
|
|
|
7943
7946
|
const parentRNode = getParentRElement(tView, tProjectionNode, lView);
|
|
7944
7947
|
const parentTNode = tProjectionNode.parent || lView[T_HOST];
|
|
7945
7948
|
let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView);
|
|
7946
|
-
applyProjectionRecursive(renderer, 0 /* Create */, lView, tProjectionNode, parentRNode, beforeNode);
|
|
7949
|
+
applyProjectionRecursive(renderer, 0 /* WalkTNodeTreeAction.Create */, lView, tProjectionNode, parentRNode, beforeNode);
|
|
7947
7950
|
}
|
|
7948
7951
|
/**
|
|
7949
7952
|
* `applyProjectionRecursive` performs operation on the projection specified by `action` (insert,
|
|
@@ -8153,11 +8156,11 @@ function classIndexOf(className, classToSearch, startingIndex) {
|
|
|
8153
8156
|
const foundIndex = className.indexOf(classToSearch, startingIndex);
|
|
8154
8157
|
if (foundIndex === -1)
|
|
8155
8158
|
return foundIndex;
|
|
8156
|
-
if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* SPACE */) {
|
|
8159
|
+
if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* CharCode.SPACE */) {
|
|
8157
8160
|
// Ensure that it has leading whitespace
|
|
8158
8161
|
const length = classToSearch.length;
|
|
8159
8162
|
if (foundIndex + length === end ||
|
|
8160
|
-
className.charCodeAt(foundIndex + length) <= 32 /* SPACE */) {
|
|
8163
|
+
className.charCodeAt(foundIndex + length) <= 32 /* CharCode.SPACE */) {
|
|
8161
8164
|
// Ensure that it has trailing whitespace
|
|
8162
8165
|
return foundIndex;
|
|
8163
8166
|
}
|
|
@@ -8200,7 +8203,7 @@ function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {
|
|
|
8200
8203
|
return true;
|
|
8201
8204
|
}
|
|
8202
8205
|
}
|
|
8203
|
-
else if (item === 1 /* Classes */) {
|
|
8206
|
+
else if (item === 1 /* AttributeMarker.Classes */) {
|
|
8204
8207
|
// We found the classes section. Start searching for the class.
|
|
8205
8208
|
while (i < attrs.length && typeof (item = attrs[i++]) == 'string') {
|
|
8206
8209
|
// while we have strings
|
|
@@ -8218,7 +8221,7 @@ function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {
|
|
|
8218
8221
|
* @param tNode current TNode
|
|
8219
8222
|
*/
|
|
8220
8223
|
function isInlineTemplate(tNode) {
|
|
8221
|
-
return tNode.type === 4 /* Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;
|
|
8224
|
+
return tNode.type === 4 /* TNodeType.Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;
|
|
8222
8225
|
}
|
|
8223
8226
|
/**
|
|
8224
8227
|
* Function that checks whether a given tNode matches tag-based selector and has a valid type.
|
|
@@ -8232,7 +8235,7 @@ function isInlineTemplate(tNode) {
|
|
|
8232
8235
|
* (applicable to TNodeType.Container only).
|
|
8233
8236
|
*/
|
|
8234
8237
|
function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {
|
|
8235
|
-
const tagNameToCompare = tNode.type === 4 /* Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;
|
|
8238
|
+
const tagNameToCompare = tNode.type === 4 /* TNodeType.Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;
|
|
8236
8239
|
return currentSelector === tagNameToCompare;
|
|
8237
8240
|
}
|
|
8238
8241
|
/**
|
|
@@ -8246,7 +8249,7 @@ function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {
|
|
|
8246
8249
|
*/
|
|
8247
8250
|
function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
8248
8251
|
ngDevMode && assertDefined(selector[0], 'Selector should have a tag name');
|
|
8249
|
-
let mode = 4 /* ELEMENT */;
|
|
8252
|
+
let mode = 4 /* SelectorFlags.ELEMENT */;
|
|
8250
8253
|
const nodeAttrs = tNode.attrs || [];
|
|
8251
8254
|
// Find the index of first attribute that has no value, only a name.
|
|
8252
8255
|
const nameOnlyMarkerIdx = getNameOnlyMarkerIndex(nodeAttrs);
|
|
@@ -8265,13 +8268,13 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
|
8265
8268
|
if (skipToNextSelector && isPositive(current))
|
|
8266
8269
|
continue;
|
|
8267
8270
|
skipToNextSelector = false;
|
|
8268
|
-
mode = current | (mode & 1 /* NOT */);
|
|
8271
|
+
mode = current | (mode & 1 /* SelectorFlags.NOT */);
|
|
8269
8272
|
continue;
|
|
8270
8273
|
}
|
|
8271
8274
|
if (skipToNextSelector)
|
|
8272
8275
|
continue;
|
|
8273
|
-
if (mode & 4 /* ELEMENT */) {
|
|
8274
|
-
mode = 2 /* ATTRIBUTE */ | mode & 1 /* NOT */;
|
|
8276
|
+
if (mode & 4 /* SelectorFlags.ELEMENT */) {
|
|
8277
|
+
mode = 2 /* SelectorFlags.ATTRIBUTE */ | mode & 1 /* SelectorFlags.NOT */;
|
|
8275
8278
|
if (current !== '' && !hasTagAndTypeMatch(tNode, current, isProjectionMode) ||
|
|
8276
8279
|
current === '' && selector.length === 1) {
|
|
8277
8280
|
if (isPositive(mode))
|
|
@@ -8280,10 +8283,10 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
|
8280
8283
|
}
|
|
8281
8284
|
}
|
|
8282
8285
|
else {
|
|
8283
|
-
const selectorAttrValue = mode & 8 /* CLASS */ ? current : selector[++i];
|
|
8286
|
+
const selectorAttrValue = mode & 8 /* SelectorFlags.CLASS */ ? current : selector[++i];
|
|
8284
8287
|
// special case for matching against classes when a tNode has been instantiated with
|
|
8285
8288
|
// class and style values as separate attribute values (e.g. ['title', CLASS, 'foo'])
|
|
8286
|
-
if ((mode & 8 /* CLASS */) && tNode.attrs !== null) {
|
|
8289
|
+
if ((mode & 8 /* SelectorFlags.CLASS */) && tNode.attrs !== null) {
|
|
8287
8290
|
if (!isCssClassMatching(tNode.attrs, selectorAttrValue, isProjectionMode)) {
|
|
8288
8291
|
if (isPositive(mode))
|
|
8289
8292
|
return false;
|
|
@@ -8291,7 +8294,7 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
|
8291
8294
|
}
|
|
8292
8295
|
continue;
|
|
8293
8296
|
}
|
|
8294
|
-
const attrName = (mode & 8 /* CLASS */) ? 'class' : current;
|
|
8297
|
+
const attrName = (mode & 8 /* SelectorFlags.CLASS */) ? 'class' : current;
|
|
8295
8298
|
const attrIndexInNode = findAttrIndexInNode(attrName, nodeAttrs, isInlineTemplate(tNode), isProjectionMode);
|
|
8296
8299
|
if (attrIndexInNode === -1) {
|
|
8297
8300
|
if (isPositive(mode))
|
|
@@ -8306,16 +8309,16 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
|
8306
8309
|
}
|
|
8307
8310
|
else {
|
|
8308
8311
|
ngDevMode &&
|
|
8309
|
-
assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* NamespaceURI */, 'We do not match directives on namespaced attributes');
|
|
8312
|
+
assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* AttributeMarker.NamespaceURI */, 'We do not match directives on namespaced attributes');
|
|
8310
8313
|
// we lowercase the attribute value to be able to match
|
|
8311
8314
|
// selectors without case-sensitivity
|
|
8312
8315
|
// (selectors are already in lowercase when generated)
|
|
8313
8316
|
nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase();
|
|
8314
8317
|
}
|
|
8315
|
-
const compareAgainstClassName = mode & 8 /* CLASS */ ? nodeAttrValue : null;
|
|
8318
|
+
const compareAgainstClassName = mode & 8 /* SelectorFlags.CLASS */ ? nodeAttrValue : null;
|
|
8316
8319
|
if (compareAgainstClassName &&
|
|
8317
8320
|
classIndexOf(compareAgainstClassName, selectorAttrValue, 0) !== -1 ||
|
|
8318
|
-
mode & 2 /* ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {
|
|
8321
|
+
mode & 2 /* SelectorFlags.ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {
|
|
8319
8322
|
if (isPositive(mode))
|
|
8320
8323
|
return false;
|
|
8321
8324
|
skipToNextSelector = true;
|
|
@@ -8326,7 +8329,7 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
|
|
|
8326
8329
|
return isPositive(mode) || skipToNextSelector;
|
|
8327
8330
|
}
|
|
8328
8331
|
function isPositive(mode) {
|
|
8329
|
-
return (mode & 1 /* NOT */) === 0;
|
|
8332
|
+
return (mode & 1 /* SelectorFlags.NOT */) === 0;
|
|
8330
8333
|
}
|
|
8331
8334
|
/**
|
|
8332
8335
|
* Examines the attribute's definition array for a node to find the index of the
|
|
@@ -8368,10 +8371,10 @@ function findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {
|
|
|
8368
8371
|
if (maybeAttrName === name) {
|
|
8369
8372
|
return i;
|
|
8370
8373
|
}
|
|
8371
|
-
else if (maybeAttrName === 3 /* Bindings */ || maybeAttrName === 6 /* I18n */) {
|
|
8374
|
+
else if (maybeAttrName === 3 /* AttributeMarker.Bindings */ || maybeAttrName === 6 /* AttributeMarker.I18n */) {
|
|
8372
8375
|
bindingsMode = true;
|
|
8373
8376
|
}
|
|
8374
|
-
else if (maybeAttrName === 1 /* Classes */ || maybeAttrName === 2 /* Styles */) {
|
|
8377
|
+
else if (maybeAttrName === 1 /* AttributeMarker.Classes */ || maybeAttrName === 2 /* AttributeMarker.Styles */) {
|
|
8375
8378
|
let value = attrs[++i];
|
|
8376
8379
|
// We should skip classes here because we have a separate mechanism for
|
|
8377
8380
|
// matching classes in projection mode.
|
|
@@ -8380,11 +8383,11 @@ function findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {
|
|
|
8380
8383
|
}
|
|
8381
8384
|
continue;
|
|
8382
8385
|
}
|
|
8383
|
-
else if (maybeAttrName === 4 /* Template */) {
|
|
8386
|
+
else if (maybeAttrName === 4 /* AttributeMarker.Template */) {
|
|
8384
8387
|
// We do not care about Template attributes in this scenario.
|
|
8385
8388
|
break;
|
|
8386
8389
|
}
|
|
8387
|
-
else if (maybeAttrName === 0 /* NamespaceURI */) {
|
|
8390
|
+
else if (maybeAttrName === 0 /* AttributeMarker.NamespaceURI */) {
|
|
8388
8391
|
// Skip the whole namespaced attribute and value. This is by design.
|
|
8389
8392
|
i += 4;
|
|
8390
8393
|
continue;
|
|
@@ -8410,7 +8413,7 @@ function isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) {
|
|
|
8410
8413
|
function getProjectAsAttrValue(tNode) {
|
|
8411
8414
|
const nodeAttrs = tNode.attrs;
|
|
8412
8415
|
if (nodeAttrs != null) {
|
|
8413
|
-
const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* ProjectAs */);
|
|
8416
|
+
const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* AttributeMarker.ProjectAs */);
|
|
8414
8417
|
// only check for ngProjectAs in attribute names, don't accidentally match attribute's value
|
|
8415
8418
|
// (attribute names are stored at even indexes)
|
|
8416
8419
|
if ((ngProjectAsAttrIdx & 1) === 0) {
|
|
@@ -8429,7 +8432,7 @@ function getNameOnlyMarkerIndex(nodeAttrs) {
|
|
|
8429
8432
|
return nodeAttrs.length;
|
|
8430
8433
|
}
|
|
8431
8434
|
function matchTemplateAttribute(attrs, name) {
|
|
8432
|
-
let i = attrs.indexOf(4 /* Template */);
|
|
8435
|
+
let i = attrs.indexOf(4 /* AttributeMarker.Template */);
|
|
8433
8436
|
if (i > -1) {
|
|
8434
8437
|
i++;
|
|
8435
8438
|
while (i < attrs.length) {
|
|
@@ -8471,21 +8474,21 @@ function maybeWrapInNotSelector(isNegativeMode, chunk) {
|
|
|
8471
8474
|
function stringifyCSSSelector(selector) {
|
|
8472
8475
|
let result = selector[0];
|
|
8473
8476
|
let i = 1;
|
|
8474
|
-
let mode = 2 /* ATTRIBUTE */;
|
|
8477
|
+
let mode = 2 /* SelectorFlags.ATTRIBUTE */;
|
|
8475
8478
|
let currentChunk = '';
|
|
8476
8479
|
let isNegativeMode = false;
|
|
8477
8480
|
while (i < selector.length) {
|
|
8478
8481
|
let valueOrMarker = selector[i];
|
|
8479
8482
|
if (typeof valueOrMarker === 'string') {
|
|
8480
|
-
if (mode & 2 /* ATTRIBUTE */) {
|
|
8483
|
+
if (mode & 2 /* SelectorFlags.ATTRIBUTE */) {
|
|
8481
8484
|
const attrValue = selector[++i];
|
|
8482
8485
|
currentChunk +=
|
|
8483
8486
|
'[' + valueOrMarker + (attrValue.length > 0 ? '="' + attrValue + '"' : '') + ']';
|
|
8484
8487
|
}
|
|
8485
|
-
else if (mode & 8 /* CLASS */) {
|
|
8488
|
+
else if (mode & 8 /* SelectorFlags.CLASS */) {
|
|
8486
8489
|
currentChunk += '.' + valueOrMarker;
|
|
8487
8490
|
}
|
|
8488
|
-
else if (mode & 4 /* ELEMENT */) {
|
|
8491
|
+
else if (mode & 4 /* SelectorFlags.ELEMENT */) {
|
|
8489
8492
|
currentChunk += ' ' + valueOrMarker;
|
|
8490
8493
|
}
|
|
8491
8494
|
}
|
|
@@ -8552,16 +8555,16 @@ function extractAttrsAndClassesFromSelector(selector) {
|
|
|
8552
8555
|
const attrs = [];
|
|
8553
8556
|
const classes = [];
|
|
8554
8557
|
let i = 1;
|
|
8555
|
-
let mode = 2 /* ATTRIBUTE */;
|
|
8558
|
+
let mode = 2 /* SelectorFlags.ATTRIBUTE */;
|
|
8556
8559
|
while (i < selector.length) {
|
|
8557
8560
|
let valueOrMarker = selector[i];
|
|
8558
8561
|
if (typeof valueOrMarker === 'string') {
|
|
8559
|
-
if (mode === 2 /* ATTRIBUTE */) {
|
|
8562
|
+
if (mode === 2 /* SelectorFlags.ATTRIBUTE */) {
|
|
8560
8563
|
if (valueOrMarker !== '') {
|
|
8561
8564
|
attrs.push(valueOrMarker, selector[++i]);
|
|
8562
8565
|
}
|
|
8563
8566
|
}
|
|
8564
|
-
else if (mode === 8 /* CLASS */) {
|
|
8567
|
+
else if (mode === 8 /* SelectorFlags.CLASS */) {
|
|
8565
8568
|
classes.push(valueOrMarker);
|
|
8566
8569
|
}
|
|
8567
8570
|
}
|
|
@@ -8627,7 +8630,7 @@ function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
|
|
|
8627
8630
|
// Flush the initial hooks for elements in the view that have been added up to this point.
|
|
8628
8631
|
// PERF WARNING: do NOT extract this to a separate function without running benchmarks
|
|
8629
8632
|
if (!checkNoChangesMode) {
|
|
8630
|
-
const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* InitPhaseStateMask */) === 3 /* InitPhaseCompleted */;
|
|
8633
|
+
const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
|
|
8631
8634
|
if (hooksInitPhaseCompleted) {
|
|
8632
8635
|
const preOrderCheckHooks = tView.preOrderCheckHooks;
|
|
8633
8636
|
if (preOrderCheckHooks !== null) {
|
|
@@ -8637,7 +8640,7 @@ function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
|
|
|
8637
8640
|
else {
|
|
8638
8641
|
const preOrderHooks = tView.preOrderHooks;
|
|
8639
8642
|
if (preOrderHooks !== null) {
|
|
8640
|
-
executeInitAndCheckHooks(lView, preOrderHooks, 0 /* OnInitHooksToBeRun */, index);
|
|
8643
|
+
executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, index);
|
|
8641
8644
|
}
|
|
8642
8645
|
}
|
|
8643
8646
|
}
|
|
@@ -8694,47 +8697,47 @@ function createNamedArrayType(name) {
|
|
|
8694
8697
|
* found in the LICENSE file at https://angular.io/license
|
|
8695
8698
|
*/
|
|
8696
8699
|
function toTStylingRange(prev, next) {
|
|
8697
|
-
ngDevMode && assertNumberInRange(prev, 0, 32767 /* UNSIGNED_MASK */);
|
|
8698
|
-
ngDevMode && assertNumberInRange(next, 0, 32767 /* UNSIGNED_MASK */);
|
|
8699
|
-
return (prev << 17 /* PREV_SHIFT */ | next << 2 /* NEXT_SHIFT */);
|
|
8700
|
+
ngDevMode && assertNumberInRange(prev, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
|
|
8701
|
+
ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
|
|
8702
|
+
return (prev << 17 /* StylingRange.PREV_SHIFT */ | next << 2 /* StylingRange.NEXT_SHIFT */);
|
|
8700
8703
|
}
|
|
8701
8704
|
function getTStylingRangePrev(tStylingRange) {
|
|
8702
8705
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8703
|
-
return (tStylingRange >> 17 /* PREV_SHIFT */) & 32767 /* UNSIGNED_MASK */;
|
|
8706
|
+
return (tStylingRange >> 17 /* StylingRange.PREV_SHIFT */) & 32767 /* StylingRange.UNSIGNED_MASK */;
|
|
8704
8707
|
}
|
|
8705
8708
|
function getTStylingRangePrevDuplicate(tStylingRange) {
|
|
8706
8709
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8707
|
-
return (tStylingRange & 2 /* PREV_DUPLICATE */) ==
|
|
8708
|
-
2 /* PREV_DUPLICATE */;
|
|
8710
|
+
return (tStylingRange & 2 /* StylingRange.PREV_DUPLICATE */) ==
|
|
8711
|
+
2 /* StylingRange.PREV_DUPLICATE */;
|
|
8709
8712
|
}
|
|
8710
8713
|
function setTStylingRangePrev(tStylingRange, previous) {
|
|
8711
8714
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8712
|
-
ngDevMode && assertNumberInRange(previous, 0, 32767 /* UNSIGNED_MASK */);
|
|
8713
|
-
return ((tStylingRange & ~4294836224 /* PREV_MASK */) |
|
|
8714
|
-
(previous << 17 /* PREV_SHIFT */));
|
|
8715
|
+
ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
|
|
8716
|
+
return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) |
|
|
8717
|
+
(previous << 17 /* StylingRange.PREV_SHIFT */));
|
|
8715
8718
|
}
|
|
8716
8719
|
function setTStylingRangePrevDuplicate(tStylingRange) {
|
|
8717
8720
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8718
|
-
return (tStylingRange | 2 /* PREV_DUPLICATE */);
|
|
8721
|
+
return (tStylingRange | 2 /* StylingRange.PREV_DUPLICATE */);
|
|
8719
8722
|
}
|
|
8720
8723
|
function getTStylingRangeNext(tStylingRange) {
|
|
8721
8724
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8722
|
-
return (tStylingRange & 131068 /* NEXT_MASK */) >> 2 /* NEXT_SHIFT */;
|
|
8725
|
+
return (tStylingRange & 131068 /* StylingRange.NEXT_MASK */) >> 2 /* StylingRange.NEXT_SHIFT */;
|
|
8723
8726
|
}
|
|
8724
8727
|
function setTStylingRangeNext(tStylingRange, next) {
|
|
8725
8728
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8726
|
-
ngDevMode && assertNumberInRange(next, 0, 32767 /* UNSIGNED_MASK */);
|
|
8727
|
-
return ((tStylingRange & ~131068 /* NEXT_MASK */) | //
|
|
8728
|
-
next << 2 /* NEXT_SHIFT */);
|
|
8729
|
+
ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
|
|
8730
|
+
return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //
|
|
8731
|
+
next << 2 /* StylingRange.NEXT_SHIFT */);
|
|
8729
8732
|
}
|
|
8730
8733
|
function getTStylingRangeNextDuplicate(tStylingRange) {
|
|
8731
8734
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8732
|
-
return (tStylingRange & 1 /* NEXT_DUPLICATE */) ===
|
|
8733
|
-
1 /* NEXT_DUPLICATE */;
|
|
8735
|
+
return (tStylingRange & 1 /* StylingRange.NEXT_DUPLICATE */) ===
|
|
8736
|
+
1 /* StylingRange.NEXT_DUPLICATE */;
|
|
8734
8737
|
}
|
|
8735
8738
|
function setTStylingRangeNextDuplicate(tStylingRange) {
|
|
8736
8739
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
8737
|
-
return (tStylingRange | 1 /* NEXT_DUPLICATE */);
|
|
8740
|
+
return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);
|
|
8738
8741
|
}
|
|
8739
8742
|
function getTStylingRangeTail(tStylingRange) {
|
|
8740
8743
|
ngDevMode && assertNumber(tStylingRange, 'expected number');
|
|
@@ -8840,11 +8843,11 @@ class LEmbeddedView extends Array {
|
|
|
8840
8843
|
}
|
|
8841
8844
|
function getLViewToClone(type, name) {
|
|
8842
8845
|
switch (type) {
|
|
8843
|
-
case 0 /* Root */:
|
|
8846
|
+
case 0 /* TViewType.Root */:
|
|
8844
8847
|
if (LVIEW_ROOT === undefined)
|
|
8845
8848
|
LVIEW_ROOT = new LRootView();
|
|
8846
8849
|
return LVIEW_ROOT;
|
|
8847
|
-
case 1 /* Component */:
|
|
8850
|
+
case 1 /* TViewType.Component */:
|
|
8848
8851
|
if (!ngDevMode || !ngDevMode.namedConstructors) {
|
|
8849
8852
|
if (LVIEW_COMPONENT === undefined)
|
|
8850
8853
|
LVIEW_COMPONENT = new LComponentView();
|
|
@@ -8858,7 +8861,7 @@ function getLViewToClone(type, name) {
|
|
|
8858
8861
|
LVIEW_COMPONENT_CACHE.set(name, componentArray);
|
|
8859
8862
|
}
|
|
8860
8863
|
return componentArray;
|
|
8861
|
-
case 2 /* Embedded */:
|
|
8864
|
+
case 2 /* TViewType.Embedded */:
|
|
8862
8865
|
if (!ngDevMode || !ngDevMode.namedConstructors) {
|
|
8863
8866
|
if (LVIEW_EMBEDDED === undefined)
|
|
8864
8867
|
LVIEW_EMBEDDED = new LEmbeddedView();
|
|
@@ -9026,9 +9029,9 @@ class TNode {
|
|
|
9026
9029
|
}
|
|
9027
9030
|
while (injectorIndex !== -1) {
|
|
9028
9031
|
ngDevMode && assertNodeInjector(lView, injectorIndex);
|
|
9029
|
-
const tNode = lView[TVIEW].data[injectorIndex + 8 /* TNODE */];
|
|
9032
|
+
const tNode = lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
|
|
9030
9033
|
path.push(buildDebugNode(tNode, lView));
|
|
9031
|
-
const parentLocation = lView[injectorIndex + 8 /* PARENT */];
|
|
9034
|
+
const parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
|
|
9032
9035
|
if (parentLocation === NO_PARENT_INJECTOR) {
|
|
9033
9036
|
injectorIndex = -1;
|
|
9034
9037
|
}
|
|
@@ -9044,26 +9047,26 @@ class TNode {
|
|
|
9044
9047
|
}
|
|
9045
9048
|
get flags_() {
|
|
9046
9049
|
const flags = [];
|
|
9047
|
-
if (this.flags & 16 /* hasClassInput */)
|
|
9050
|
+
if (this.flags & 16 /* TNodeFlags.hasClassInput */)
|
|
9048
9051
|
flags.push('TNodeFlags.hasClassInput');
|
|
9049
|
-
if (this.flags & 8 /* hasContentQuery */)
|
|
9052
|
+
if (this.flags & 8 /* TNodeFlags.hasContentQuery */)
|
|
9050
9053
|
flags.push('TNodeFlags.hasContentQuery');
|
|
9051
|
-
if (this.flags & 32 /* hasStyleInput */)
|
|
9054
|
+
if (this.flags & 32 /* TNodeFlags.hasStyleInput */)
|
|
9052
9055
|
flags.push('TNodeFlags.hasStyleInput');
|
|
9053
|
-
if (this.flags & 128 /* hasHostBindings */)
|
|
9056
|
+
if (this.flags & 128 /* TNodeFlags.hasHostBindings */)
|
|
9054
9057
|
flags.push('TNodeFlags.hasHostBindings');
|
|
9055
|
-
if (this.flags & 2 /* isComponentHost */)
|
|
9058
|
+
if (this.flags & 2 /* TNodeFlags.isComponentHost */)
|
|
9056
9059
|
flags.push('TNodeFlags.isComponentHost');
|
|
9057
|
-
if (this.flags & 1 /* isDirectiveHost */)
|
|
9060
|
+
if (this.flags & 1 /* TNodeFlags.isDirectiveHost */)
|
|
9058
9061
|
flags.push('TNodeFlags.isDirectiveHost');
|
|
9059
|
-
if (this.flags & 64 /* isDetached */)
|
|
9062
|
+
if (this.flags & 64 /* TNodeFlags.isDetached */)
|
|
9060
9063
|
flags.push('TNodeFlags.isDetached');
|
|
9061
|
-
if (this.flags & 4 /* isProjected */)
|
|
9064
|
+
if (this.flags & 4 /* TNodeFlags.isProjected */)
|
|
9062
9065
|
flags.push('TNodeFlags.isProjected');
|
|
9063
9066
|
return flags.join('|');
|
|
9064
9067
|
}
|
|
9065
9068
|
get template_() {
|
|
9066
|
-
if (this.type & 1 /* Text */)
|
|
9069
|
+
if (this.type & 1 /* TNodeType.Text */)
|
|
9067
9070
|
return this.value;
|
|
9068
9071
|
const buf = [];
|
|
9069
9072
|
const tagName = typeof this.value === 'string' && this.value || this.type_;
|
|
@@ -9093,11 +9096,11 @@ class TNode {
|
|
|
9093
9096
|
return toDebugStyleBinding(this, true);
|
|
9094
9097
|
}
|
|
9095
9098
|
get providerIndexStart_() {
|
|
9096
|
-
return this.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
|
|
9099
|
+
return this.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
|
|
9097
9100
|
}
|
|
9098
9101
|
get providerIndexEnd_() {
|
|
9099
9102
|
return this.providerIndexStart_ +
|
|
9100
|
-
(this.providerIndexes >>> 20 /* CptViewProvidersCountShift */);
|
|
9103
|
+
(this.providerIndexes >>> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */);
|
|
9101
9104
|
}
|
|
9102
9105
|
}
|
|
9103
9106
|
const TNodeDebug = TNode;
|
|
@@ -9221,15 +9224,15 @@ class LViewDebug {
|
|
|
9221
9224
|
const flags = this._raw_lView[FLAGS];
|
|
9222
9225
|
return {
|
|
9223
9226
|
__raw__flags__: flags,
|
|
9224
|
-
initPhaseState: flags & 3 /* InitPhaseStateMask */,
|
|
9225
|
-
creationMode: !!(flags & 4 /* CreationMode */),
|
|
9226
|
-
firstViewPass: !!(flags & 8 /* FirstLViewPass */),
|
|
9227
|
-
checkAlways: !!(flags & 16 /* CheckAlways */),
|
|
9228
|
-
dirty: !!(flags & 64 /* Dirty */),
|
|
9229
|
-
attached: !!(flags & 128 /* Attached */),
|
|
9230
|
-
destroyed: !!(flags & 256 /* Destroyed */),
|
|
9231
|
-
isRoot: !!(flags & 512 /* IsRoot */),
|
|
9232
|
-
indexWithinInitPhase: flags >> 12 /* IndexWithinInitPhaseShift */,
|
|
9227
|
+
initPhaseState: flags & 3 /* LViewFlags.InitPhaseStateMask */,
|
|
9228
|
+
creationMode: !!(flags & 4 /* LViewFlags.CreationMode */),
|
|
9229
|
+
firstViewPass: !!(flags & 8 /* LViewFlags.FirstLViewPass */),
|
|
9230
|
+
checkAlways: !!(flags & 16 /* LViewFlags.CheckAlways */),
|
|
9231
|
+
dirty: !!(flags & 64 /* LViewFlags.Dirty */),
|
|
9232
|
+
attached: !!(flags & 128 /* LViewFlags.Attached */),
|
|
9233
|
+
destroyed: !!(flags & 256 /* LViewFlags.Destroyed */),
|
|
9234
|
+
isRoot: !!(flags & 512 /* LViewFlags.IsRoot */),
|
|
9235
|
+
indexWithinInitPhase: flags >> 12 /* LViewFlags.IndexWithinInitPhaseShift */,
|
|
9233
9236
|
};
|
|
9234
9237
|
}
|
|
9235
9238
|
get parent() {
|
|
@@ -9454,6 +9457,21 @@ class LContainerDebug {
|
|
|
9454
9457
|
}
|
|
9455
9458
|
}
|
|
9456
9459
|
|
|
9460
|
+
let shouldThrowErrorOnUnknownProperty = false;
|
|
9461
|
+
/**
|
|
9462
|
+
* Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
|
|
9463
|
+
* instead of just logging the error.
|
|
9464
|
+
* (for AOT-compiled ones this check happens at build time).
|
|
9465
|
+
*/
|
|
9466
|
+
function ɵsetUnknownPropertyStrictMode(shouldThrow) {
|
|
9467
|
+
shouldThrowErrorOnUnknownProperty = shouldThrow;
|
|
9468
|
+
}
|
|
9469
|
+
/**
|
|
9470
|
+
* Gets the current value of the strict mode.
|
|
9471
|
+
*/
|
|
9472
|
+
function ɵgetUnknownPropertyStrictMode() {
|
|
9473
|
+
return shouldThrowErrorOnUnknownProperty;
|
|
9474
|
+
}
|
|
9457
9475
|
/**
|
|
9458
9476
|
* A permanent marker promise which signifies that the current CD tree is
|
|
9459
9477
|
* clean.
|
|
@@ -9486,7 +9504,7 @@ function processHostBindingOpCodes(tView, lView) {
|
|
|
9486
9504
|
const hostBindingFn = hostBindingOpCodes[++i];
|
|
9487
9505
|
setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
|
|
9488
9506
|
const context = lView[directiveIdx];
|
|
9489
|
-
hostBindingFn(2 /* Update */, context);
|
|
9507
|
+
hostBindingFn(2 /* RenderFlags.Update */, context);
|
|
9490
9508
|
}
|
|
9491
9509
|
}
|
|
9492
9510
|
}
|
|
@@ -9507,7 +9525,7 @@ function refreshContentQueries(tView, lView) {
|
|
|
9507
9525
|
ngDevMode &&
|
|
9508
9526
|
assertDefined(directiveDef.contentQueries, 'contentQueries function should be defined');
|
|
9509
9527
|
setCurrentQueryIndex(queryStartIdx);
|
|
9510
|
-
directiveDef.contentQueries(2 /* Update */, lView[directiveDefIdx], directiveDefIdx);
|
|
9528
|
+
directiveDef.contentQueries(2 /* RenderFlags.Update */, lView[directiveDefIdx], directiveDefIdx);
|
|
9511
9529
|
}
|
|
9512
9530
|
}
|
|
9513
9531
|
}
|
|
@@ -9527,10 +9545,10 @@ function renderChildComponents(hostLView, components) {
|
|
|
9527
9545
|
function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector, embeddedViewInjector) {
|
|
9528
9546
|
const lView = ngDevMode ? cloneToLViewFromTViewBlueprint(tView) : tView.blueprint.slice();
|
|
9529
9547
|
lView[HOST] = host;
|
|
9530
|
-
lView[FLAGS] = flags | 4 /* CreationMode */ | 128 /* Attached */ | 8 /* FirstLViewPass */;
|
|
9548
|
+
lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
|
|
9531
9549
|
if (embeddedViewInjector !== null ||
|
|
9532
|
-
(parentLView && (parentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */))) {
|
|
9533
|
-
lView[FLAGS] |= 2048 /* HasEmbeddedViewInjector */;
|
|
9550
|
+
(parentLView && (parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */))) {
|
|
9551
|
+
lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
|
|
9534
9552
|
}
|
|
9535
9553
|
resetPreOrderHookFlags(lView);
|
|
9536
9554
|
ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
|
|
@@ -9546,9 +9564,9 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
|
|
|
9546
9564
|
lView[ID] = getUniqueLViewId();
|
|
9547
9565
|
lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
|
|
9548
9566
|
ngDevMode &&
|
|
9549
|
-
assertEqual(tView.type == 2 /* Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
|
|
9567
|
+
assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
|
|
9550
9568
|
lView[DECLARATION_COMPONENT_VIEW] =
|
|
9551
|
-
tView.type == 2 /* Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
|
|
9569
|
+
tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
|
|
9552
9570
|
ngDevMode && attachLViewDebug(lView);
|
|
9553
9571
|
return lView;
|
|
9554
9572
|
}
|
|
@@ -9566,10 +9584,10 @@ function getOrCreateTNode(tView, index, type, name, attrs) {
|
|
|
9566
9584
|
// See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.
|
|
9567
9585
|
// If the `TNode` was not pre-declared than it means it was not mentioned which means it was
|
|
9568
9586
|
// removed, so we mark it as detached.
|
|
9569
|
-
tNode.flags |= 64 /* isDetached */;
|
|
9587
|
+
tNode.flags |= 64 /* TNodeFlags.isDetached */;
|
|
9570
9588
|
}
|
|
9571
9589
|
}
|
|
9572
|
-
else if (tNode.type & 64 /* Placeholder */) {
|
|
9590
|
+
else if (tNode.type & 64 /* TNodeType.Placeholder */) {
|
|
9573
9591
|
tNode.type = type;
|
|
9574
9592
|
tNode.value = name;
|
|
9575
9593
|
tNode.attrs = attrs;
|
|
@@ -9656,13 +9674,13 @@ function renderView(tView, lView, context) {
|
|
|
9656
9674
|
try {
|
|
9657
9675
|
const viewQuery = tView.viewQuery;
|
|
9658
9676
|
if (viewQuery !== null) {
|
|
9659
|
-
executeViewQueryFn(1 /* Create */, viewQuery, context);
|
|
9677
|
+
executeViewQueryFn(1 /* RenderFlags.Create */, viewQuery, context);
|
|
9660
9678
|
}
|
|
9661
9679
|
// Execute a template associated with this view, if it exists. A template function might not be
|
|
9662
9680
|
// defined for the root component views.
|
|
9663
9681
|
const templateFn = tView.template;
|
|
9664
9682
|
if (templateFn !== null) {
|
|
9665
|
-
executeTemplate(tView, lView, templateFn, 1 /* Create */, context);
|
|
9683
|
+
executeTemplate(tView, lView, templateFn, 1 /* RenderFlags.Create */, context);
|
|
9666
9684
|
}
|
|
9667
9685
|
// This needs to be set before children are processed to support recursive components.
|
|
9668
9686
|
// This must be set to false immediately after the first creation run because in an
|
|
@@ -9682,7 +9700,7 @@ function renderView(tView, lView, context) {
|
|
|
9682
9700
|
// in case a child component has projected a container. The LContainer needs
|
|
9683
9701
|
// to exist so the embedded views are properly attached by the container.
|
|
9684
9702
|
if (tView.staticViewQueries) {
|
|
9685
|
-
executeViewQueryFn(2 /* Update */, tView.viewQuery, context);
|
|
9703
|
+
executeViewQueryFn(2 /* RenderFlags.Update */, tView.viewQuery, context);
|
|
9686
9704
|
}
|
|
9687
9705
|
// Render child component views.
|
|
9688
9706
|
const components = tView.components;
|
|
@@ -9700,7 +9718,7 @@ function renderView(tView, lView, context) {
|
|
|
9700
9718
|
throw error;
|
|
9701
9719
|
}
|
|
9702
9720
|
finally {
|
|
9703
|
-
lView[FLAGS] &= ~4 /* CreationMode */;
|
|
9721
|
+
lView[FLAGS] &= ~4 /* LViewFlags.CreationMode */;
|
|
9704
9722
|
leaveView();
|
|
9705
9723
|
}
|
|
9706
9724
|
}
|
|
@@ -9715,7 +9733,7 @@ function renderView(tView, lView, context) {
|
|
|
9715
9733
|
function refreshView(tView, lView, templateFn, context) {
|
|
9716
9734
|
ngDevMode && assertEqual(isCreationMode(lView), false, 'Should be run in update mode');
|
|
9717
9735
|
const flags = lView[FLAGS];
|
|
9718
|
-
if ((flags & 256 /* Destroyed */) === 256 /* Destroyed */)
|
|
9736
|
+
if ((flags & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */)
|
|
9719
9737
|
return;
|
|
9720
9738
|
enterView(lView);
|
|
9721
9739
|
// Check no changes mode is a dev only mode used to verify that bindings have not changed
|
|
@@ -9725,9 +9743,9 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9725
9743
|
resetPreOrderHookFlags(lView);
|
|
9726
9744
|
setBindingIndex(tView.bindingStartIndex);
|
|
9727
9745
|
if (templateFn !== null) {
|
|
9728
|
-
executeTemplate(tView, lView, templateFn, 2 /* Update */, context);
|
|
9746
|
+
executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);
|
|
9729
9747
|
}
|
|
9730
|
-
const hooksInitPhaseCompleted = (flags & 3 /* InitPhaseStateMask */) === 3 /* InitPhaseCompleted */;
|
|
9748
|
+
const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
|
|
9731
9749
|
// execute pre-order hooks (OnInit, OnChanges, DoCheck)
|
|
9732
9750
|
// PERF WARNING: do NOT extract this to a separate function without running benchmarks
|
|
9733
9751
|
if (!isInCheckNoChangesPass) {
|
|
@@ -9740,9 +9758,9 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9740
9758
|
else {
|
|
9741
9759
|
const preOrderHooks = tView.preOrderHooks;
|
|
9742
9760
|
if (preOrderHooks !== null) {
|
|
9743
|
-
executeInitAndCheckHooks(lView, preOrderHooks, 0 /* OnInitHooksToBeRun */, null);
|
|
9761
|
+
executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, null);
|
|
9744
9762
|
}
|
|
9745
|
-
incrementInitPhaseFlags(lView, 0 /* OnInitHooksToBeRun */);
|
|
9763
|
+
incrementInitPhaseFlags(lView, 0 /* InitPhaseState.OnInitHooksToBeRun */);
|
|
9746
9764
|
}
|
|
9747
9765
|
}
|
|
9748
9766
|
// First mark transplanted views that are declared in this lView as needing a refresh at their
|
|
@@ -9766,9 +9784,9 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9766
9784
|
else {
|
|
9767
9785
|
const contentHooks = tView.contentHooks;
|
|
9768
9786
|
if (contentHooks !== null) {
|
|
9769
|
-
executeInitAndCheckHooks(lView, contentHooks, 1 /* AfterContentInitHooksToBeRun */);
|
|
9787
|
+
executeInitAndCheckHooks(lView, contentHooks, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);
|
|
9770
9788
|
}
|
|
9771
|
-
incrementInitPhaseFlags(lView, 1 /* AfterContentInitHooksToBeRun */);
|
|
9789
|
+
incrementInitPhaseFlags(lView, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);
|
|
9772
9790
|
}
|
|
9773
9791
|
}
|
|
9774
9792
|
processHostBindingOpCodes(tView, lView);
|
|
@@ -9782,7 +9800,7 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9782
9800
|
// refresh, the template might not yet be inserted.
|
|
9783
9801
|
const viewQuery = tView.viewQuery;
|
|
9784
9802
|
if (viewQuery !== null) {
|
|
9785
|
-
executeViewQueryFn(2 /* Update */, viewQuery, context);
|
|
9803
|
+
executeViewQueryFn(2 /* RenderFlags.Update */, viewQuery, context);
|
|
9786
9804
|
}
|
|
9787
9805
|
// execute view hooks (AfterViewInit, AfterViewChecked)
|
|
9788
9806
|
// PERF WARNING: do NOT extract this to a separate function without running benchmarks
|
|
@@ -9796,9 +9814,9 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9796
9814
|
else {
|
|
9797
9815
|
const viewHooks = tView.viewHooks;
|
|
9798
9816
|
if (viewHooks !== null) {
|
|
9799
|
-
executeInitAndCheckHooks(lView, viewHooks, 2 /* AfterViewInitHooksToBeRun */);
|
|
9817
|
+
executeInitAndCheckHooks(lView, viewHooks, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);
|
|
9800
9818
|
}
|
|
9801
|
-
incrementInitPhaseFlags(lView, 2 /* AfterViewInitHooksToBeRun */);
|
|
9819
|
+
incrementInitPhaseFlags(lView, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);
|
|
9802
9820
|
}
|
|
9803
9821
|
}
|
|
9804
9822
|
if (tView.firstUpdatePass === true) {
|
|
@@ -9817,10 +9835,10 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9817
9835
|
// no changes cycle, the component would be not be dirty for the next update pass. This would
|
|
9818
9836
|
// be different in production mode where the component dirty state is not reset.
|
|
9819
9837
|
if (!isInCheckNoChangesPass) {
|
|
9820
|
-
lView[FLAGS] &= ~(64 /* Dirty */ | 8 /* FirstLViewPass */);
|
|
9838
|
+
lView[FLAGS] &= ~(64 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);
|
|
9821
9839
|
}
|
|
9822
|
-
if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
|
|
9823
|
-
lView[FLAGS] &= ~1024 /* RefreshTransplantedView */;
|
|
9840
|
+
if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
|
|
9841
|
+
lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
|
|
9824
9842
|
updateTransplantedViewCount(lView[PARENT], -1);
|
|
9825
9843
|
}
|
|
9826
9844
|
}
|
|
@@ -9849,7 +9867,7 @@ function renderComponentOrTemplate(tView, lView, templateFn, context) {
|
|
|
9849
9867
|
}
|
|
9850
9868
|
function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
9851
9869
|
const prevSelectedIndex = getSelectedIndex();
|
|
9852
|
-
const isUpdatePhase = rf & 2 /* Update */;
|
|
9870
|
+
const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
|
|
9853
9871
|
try {
|
|
9854
9872
|
setSelectedIndex(-1);
|
|
9855
9873
|
if (isUpdatePhase && lView.length > HEADER_OFFSET) {
|
|
@@ -9857,13 +9875,13 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
|
9857
9875
|
// have to generate that instruction for most update blocks.
|
|
9858
9876
|
selectIndexInternal(tView, lView, HEADER_OFFSET, isInCheckNoChangesMode());
|
|
9859
9877
|
}
|
|
9860
|
-
const preHookType = isUpdatePhase ? 2 /* TemplateUpdateStart */ : 0 /* TemplateCreateStart */;
|
|
9878
|
+
const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;
|
|
9861
9879
|
profiler(preHookType, context);
|
|
9862
9880
|
templateFn(rf, context);
|
|
9863
9881
|
}
|
|
9864
9882
|
finally {
|
|
9865
9883
|
setSelectedIndex(prevSelectedIndex);
|
|
9866
|
-
const postHookType = isUpdatePhase ? 3 /* TemplateUpdateEnd */ : 1 /* TemplateCreateEnd */;
|
|
9884
|
+
const postHookType = isUpdatePhase ? 3 /* ProfilerEvent.TemplateUpdateEnd */ : 1 /* ProfilerEvent.TemplateCreateEnd */;
|
|
9867
9885
|
profiler(postHookType, context);
|
|
9868
9886
|
}
|
|
9869
9887
|
}
|
|
@@ -9877,7 +9895,7 @@ function executeContentQueries(tView, tNode, lView) {
|
|
|
9877
9895
|
for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
|
|
9878
9896
|
const def = tView.data[directiveIndex];
|
|
9879
9897
|
if (def.contentQueries) {
|
|
9880
|
-
def.contentQueries(1 /* Create */, lView[directiveIndex], directiveIndex);
|
|
9898
|
+
def.contentQueries(1 /* RenderFlags.Create */, lView[directiveIndex], directiveIndex);
|
|
9881
9899
|
}
|
|
9882
9900
|
}
|
|
9883
9901
|
}
|
|
@@ -9889,7 +9907,7 @@ function createDirectivesInstances(tView, lView, tNode) {
|
|
|
9889
9907
|
if (!getBindingsEnabled())
|
|
9890
9908
|
return;
|
|
9891
9909
|
instantiateAllDirectives(tView, lView, tNode, getNativeByTNode(tNode, lView));
|
|
9892
|
-
if ((tNode.flags & 128 /* hasHostBindings */) === 128 /* hasHostBindings */) {
|
|
9910
|
+
if ((tNode.flags & 128 /* TNodeFlags.hasHostBindings */) === 128 /* TNodeFlags.hasHostBindings */) {
|
|
9893
9911
|
invokeDirectivesHostBindings(tView, lView, tNode);
|
|
9894
9912
|
}
|
|
9895
9913
|
}
|
|
@@ -9925,7 +9943,7 @@ function getOrCreateTComponentView(def) {
|
|
|
9925
9943
|
// Declaration node here is null since this function is called when we dynamically create a
|
|
9926
9944
|
// component and hence there is no declaration.
|
|
9927
9945
|
const declTNode = null;
|
|
9928
|
-
return def.tView = createTView(1 /* Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts);
|
|
9946
|
+
return def.tView = createTView(1 /* TViewType.Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts);
|
|
9929
9947
|
}
|
|
9930
9948
|
return tView;
|
|
9931
9949
|
}
|
|
@@ -10223,10 +10241,10 @@ function initializeInputAndOutputAliases(tView, tNode) {
|
|
|
10223
10241
|
}
|
|
10224
10242
|
if (inputsStore !== null) {
|
|
10225
10243
|
if (inputsStore.hasOwnProperty('class')) {
|
|
10226
|
-
tNode.flags |= 16 /* hasClassInput */;
|
|
10244
|
+
tNode.flags |= 16 /* TNodeFlags.hasClassInput */;
|
|
10227
10245
|
}
|
|
10228
10246
|
if (inputsStore.hasOwnProperty('style')) {
|
|
10229
|
-
tNode.flags |= 32 /* hasStyleInput */;
|
|
10247
|
+
tNode.flags |= 32 /* TNodeFlags.hasStyleInput */;
|
|
10230
10248
|
}
|
|
10231
10249
|
}
|
|
10232
10250
|
tNode.initialInputs = inputsFromAttrs;
|
|
@@ -10271,13 +10289,13 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10271
10289
|
setNgReflectProperties(lView, element, tNode.type, dataValue, value);
|
|
10272
10290
|
}
|
|
10273
10291
|
}
|
|
10274
|
-
else if (tNode.type & 3 /* AnyRNode */) {
|
|
10292
|
+
else if (tNode.type & 3 /* TNodeType.AnyRNode */) {
|
|
10275
10293
|
propName = mapPropName(propName);
|
|
10276
10294
|
if (ngDevMode) {
|
|
10277
10295
|
validateAgainstEventProperties(propName);
|
|
10278
10296
|
if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
|
|
10279
10297
|
// Return here since we only log warnings for unknown properties.
|
|
10280
|
-
|
|
10298
|
+
handleUnknownPropertyError(propName, tNode.value);
|
|
10281
10299
|
return;
|
|
10282
10300
|
}
|
|
10283
10301
|
ngDevMode.rendererSetProperty++;
|
|
@@ -10293,11 +10311,11 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10293
10311
|
element[propName] = value;
|
|
10294
10312
|
}
|
|
10295
10313
|
}
|
|
10296
|
-
else if (tNode.type & 12 /* AnyContainer */) {
|
|
10314
|
+
else if (tNode.type & 12 /* TNodeType.AnyContainer */) {
|
|
10297
10315
|
// If the node is a container and the property didn't
|
|
10298
10316
|
// match any of the inputs or schemas we should throw.
|
|
10299
10317
|
if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
|
|
10300
|
-
|
|
10318
|
+
handleUnknownPropertyError(propName, tNode.value);
|
|
10301
10319
|
}
|
|
10302
10320
|
}
|
|
10303
10321
|
}
|
|
@@ -10305,15 +10323,15 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10305
10323
|
function markDirtyIfOnPush(lView, viewIndex) {
|
|
10306
10324
|
ngDevMode && assertLView(lView);
|
|
10307
10325
|
const childComponentLView = getComponentLViewByIndex(viewIndex, lView);
|
|
10308
|
-
if (!(childComponentLView[FLAGS] & 16 /* CheckAlways */)) {
|
|
10309
|
-
childComponentLView[FLAGS] |= 64 /* Dirty */;
|
|
10326
|
+
if (!(childComponentLView[FLAGS] & 16 /* LViewFlags.CheckAlways */)) {
|
|
10327
|
+
childComponentLView[FLAGS] |= 64 /* LViewFlags.Dirty */;
|
|
10310
10328
|
}
|
|
10311
10329
|
}
|
|
10312
10330
|
function setNgReflectProperty(lView, element, type, attrName, value) {
|
|
10313
10331
|
const renderer = lView[RENDERER];
|
|
10314
10332
|
attrName = normalizeDebugBindingName(attrName);
|
|
10315
10333
|
const debugValue = normalizeDebugBindingValue(value);
|
|
10316
|
-
if (type & 3 /* AnyRNode */) {
|
|
10334
|
+
if (type & 3 /* TNodeType.AnyRNode */) {
|
|
10317
10335
|
if (value == null) {
|
|
10318
10336
|
isProceduralRenderer(renderer) ? renderer.removeAttribute(element, attrName) :
|
|
10319
10337
|
element.removeAttribute(attrName);
|
|
@@ -10335,7 +10353,7 @@ function setNgReflectProperty(lView, element, type, attrName, value) {
|
|
|
10335
10353
|
}
|
|
10336
10354
|
}
|
|
10337
10355
|
function setNgReflectProperties(lView, element, type, dataValue, value) {
|
|
10338
|
-
if (type & (3 /* AnyRNode */ | 4 /* Container */)) {
|
|
10356
|
+
if (type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {
|
|
10339
10357
|
/**
|
|
10340
10358
|
* dataValue is an array containing runtime input or output names for the directives:
|
|
10341
10359
|
* i+0: directive instance index
|
|
@@ -10399,13 +10417,18 @@ function matchingSchemas(schemas, tagName) {
|
|
|
10399
10417
|
return false;
|
|
10400
10418
|
}
|
|
10401
10419
|
/**
|
|
10402
|
-
* Logs an error that a property is not supported on an element.
|
|
10420
|
+
* Logs or throws an error that a property is not supported on an element.
|
|
10403
10421
|
* @param propName Name of the invalid property.
|
|
10404
10422
|
* @param tagName Name of the node on which we encountered the property.
|
|
10405
10423
|
*/
|
|
10406
|
-
function
|
|
10424
|
+
function handleUnknownPropertyError(propName, tagName) {
|
|
10407
10425
|
const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
|
|
10408
|
-
|
|
10426
|
+
if (shouldThrowErrorOnUnknownProperty) {
|
|
10427
|
+
throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
|
|
10428
|
+
}
|
|
10429
|
+
else {
|
|
10430
|
+
console.error(formatRuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message));
|
|
10431
|
+
}
|
|
10409
10432
|
}
|
|
10410
10433
|
/**
|
|
10411
10434
|
* Instantiate a root component.
|
|
@@ -10466,9 +10489,9 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
|
|
|
10466
10489
|
configureViewWithDirective(tView, tNode, lView, directiveIdx, def);
|
|
10467
10490
|
saveNameToExportMap(directiveIdx, def, exportsMap);
|
|
10468
10491
|
if (def.contentQueries !== null)
|
|
10469
|
-
tNode.flags |= 8 /* hasContentQuery */;
|
|
10492
|
+
tNode.flags |= 8 /* TNodeFlags.hasContentQuery */;
|
|
10470
10493
|
if (def.hostBindings !== null || def.hostAttrs !== null || def.hostVars !== 0)
|
|
10471
|
-
tNode.flags |= 128 /* hasHostBindings */;
|
|
10494
|
+
tNode.flags |= 128 /* TNodeFlags.hasHostBindings */;
|
|
10472
10495
|
const lifeCycleHooks = def.type.prototype;
|
|
10473
10496
|
// Only push a node index into the preOrderHooks array if this is the first
|
|
10474
10497
|
// pre-order hook found on this node.
|
|
@@ -10556,7 +10579,7 @@ function instantiateAllDirectives(tView, lView, tNode, native) {
|
|
|
10556
10579
|
const def = tView.data[i];
|
|
10557
10580
|
const isComponent = isComponentDef(def);
|
|
10558
10581
|
if (isComponent) {
|
|
10559
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */);
|
|
10582
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
|
|
10560
10583
|
addComponentLogic(lView, tNode, def);
|
|
10561
10584
|
}
|
|
10562
10585
|
const directive = getNodeInjectable(lView, tView, i, tNode);
|
|
@@ -10599,7 +10622,7 @@ function invokeDirectivesHostBindings(tView, lView, tNode) {
|
|
|
10599
10622
|
*/
|
|
10600
10623
|
function invokeHostBindingsInCreationMode(def, directive) {
|
|
10601
10624
|
if (def.hostBindings !== null) {
|
|
10602
|
-
def.hostBindings(1 /* Create */, directive);
|
|
10625
|
+
def.hostBindings(1 /* RenderFlags.Create */, directive);
|
|
10603
10626
|
}
|
|
10604
10627
|
}
|
|
10605
10628
|
/**
|
|
@@ -10608,7 +10631,7 @@ function invokeHostBindingsInCreationMode(def, directive) {
|
|
|
10608
10631
|
*/
|
|
10609
10632
|
function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
10610
10633
|
ngDevMode && assertFirstCreatePass(tView);
|
|
10611
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
|
|
10634
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
|
|
10612
10635
|
const registry = tView.directiveRegistry;
|
|
10613
10636
|
let matches = null;
|
|
10614
10637
|
if (registry) {
|
|
@@ -10619,9 +10642,9 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
|
10619
10642
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, viewData), tView, def.type);
|
|
10620
10643
|
if (isComponentDef(def)) {
|
|
10621
10644
|
if (ngDevMode) {
|
|
10622
|
-
assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
|
|
10645
|
+
assertTNodeType(tNode, 2 /* TNodeType.Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
|
|
10623
10646
|
`Please use a different tag to activate the ${stringify(def.type)} component.`);
|
|
10624
|
-
if (tNode.flags & 2 /* isComponentHost */) {
|
|
10647
|
+
if (tNode.flags & 2 /* TNodeFlags.isComponentHost */) {
|
|
10625
10648
|
// If another component has been matched previously, it's the first element in the
|
|
10626
10649
|
// `matches` array, see how we store components/directives in `matches` below.
|
|
10627
10650
|
throwMultipleComponentError(tNode, matches[0].type, def.type);
|
|
@@ -10646,7 +10669,7 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
|
10646
10669
|
*/
|
|
10647
10670
|
function markAsComponentHost(tView, hostTNode) {
|
|
10648
10671
|
ngDevMode && assertFirstCreatePass(tView);
|
|
10649
|
-
hostTNode.flags |= 2 /* isComponentHost */;
|
|
10672
|
+
hostTNode.flags |= 2 /* TNodeFlags.isComponentHost */;
|
|
10650
10673
|
(tView.components || (tView.components = ngDevMode ? new TViewComponents() : []))
|
|
10651
10674
|
.push(hostTNode.index);
|
|
10652
10675
|
}
|
|
@@ -10660,7 +10683,7 @@ function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
|
|
|
10660
10683
|
for (let i = 0; i < localRefs.length; i += 2) {
|
|
10661
10684
|
const index = exportsMap[localRefs[i + 1]];
|
|
10662
10685
|
if (index == null)
|
|
10663
|
-
throw new RuntimeError(-301 /* EXPORT_NOT_FOUND */, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`);
|
|
10686
|
+
throw new RuntimeError(-301 /* RuntimeErrorCode.EXPORT_NOT_FOUND */, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`);
|
|
10664
10687
|
localNames.push(localRefs[i], index);
|
|
10665
10688
|
}
|
|
10666
10689
|
}
|
|
@@ -10688,7 +10711,7 @@ function saveNameToExportMap(directiveIdx, def, exportsMap) {
|
|
|
10688
10711
|
function initTNodeFlags(tNode, index, numberOfDirectives) {
|
|
10689
10712
|
ngDevMode &&
|
|
10690
10713
|
assertNotEqual(numberOfDirectives, tNode.directiveEnd - tNode.directiveStart, 'Reached the max number of directives');
|
|
10691
|
-
tNode.flags |= 1 /* isDirectiveHost */;
|
|
10714
|
+
tNode.flags |= 1 /* TNodeFlags.isDirectiveHost */;
|
|
10692
10715
|
// When the first directive is created on a node, save the index
|
|
10693
10716
|
tNode.directiveStart = index;
|
|
10694
10717
|
tNode.directiveEnd = index + numberOfDirectives;
|
|
@@ -10722,7 +10745,7 @@ function addComponentLogic(lView, hostTNode, def) {
|
|
|
10722
10745
|
// Only component views should be added to the view tree directly. Embedded views are
|
|
10723
10746
|
// accessed through their containers because they may be removed / re-added later.
|
|
10724
10747
|
const rendererFactory = lView[RENDERER_FACTORY];
|
|
10725
|
-
const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null, null));
|
|
10748
|
+
const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null, null));
|
|
10726
10749
|
// Component view will always be created before any injected LContainers,
|
|
10727
10750
|
// so this is a regular element, wrap it with the component view
|
|
10728
10751
|
lView[hostTNode.index] = componentView;
|
|
@@ -10731,7 +10754,7 @@ function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespac
|
|
|
10731
10754
|
if (ngDevMode) {
|
|
10732
10755
|
assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
|
|
10733
10756
|
validateAgainstEventAttributes(name);
|
|
10734
|
-
assertTNodeType(tNode, 2 /* Element */, `Attempted to set attribute \`${name}\` on a container node. ` +
|
|
10757
|
+
assertTNodeType(tNode, 2 /* TNodeType.Element */, `Attempted to set attribute \`${name}\` on a container node. ` +
|
|
10735
10758
|
`Host bindings are not valid on ng-container or ng-template.`);
|
|
10736
10759
|
}
|
|
10737
10760
|
const element = getNativeByTNode(tNode, lView);
|
|
@@ -10804,12 +10827,12 @@ function generateInitialInputs(inputs, attrs) {
|
|
|
10804
10827
|
let i = 0;
|
|
10805
10828
|
while (i < attrs.length) {
|
|
10806
10829
|
const attrName = attrs[i];
|
|
10807
|
-
if (attrName === 0 /* NamespaceURI */) {
|
|
10830
|
+
if (attrName === 0 /* AttributeMarker.NamespaceURI */) {
|
|
10808
10831
|
// We do not allow inputs on namespaced attributes.
|
|
10809
10832
|
i += 4;
|
|
10810
10833
|
continue;
|
|
10811
10834
|
}
|
|
10812
|
-
else if (attrName === 5 /* ProjectAs */) {
|
|
10835
|
+
else if (attrName === 5 /* AttributeMarker.ProjectAs */) {
|
|
10813
10836
|
// Skip over the `ngProjectAs` value.
|
|
10814
10837
|
i += 2;
|
|
10815
10838
|
continue;
|
|
@@ -10894,14 +10917,14 @@ function markTransplantedViewsForRefresh(lView) {
|
|
|
10894
10917
|
ngDevMode && assertLContainer(insertionLContainer);
|
|
10895
10918
|
// We don't want to increment the counter if the moved LView was already marked for
|
|
10896
10919
|
// refresh.
|
|
10897
|
-
if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
|
|
10920
|
+
if ((movedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) === 0) {
|
|
10898
10921
|
updateTransplantedViewCount(insertionLContainer, 1);
|
|
10899
10922
|
}
|
|
10900
10923
|
// Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
|
|
10901
10924
|
// those that aren't (declaration component === insertion component). In the latter case,
|
|
10902
10925
|
// it's fine to add the flag, as we will clear it immediately in
|
|
10903
10926
|
// `refreshEmbeddedViews` for the view currently being refreshed.
|
|
10904
|
-
movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
|
|
10927
|
+
movedLView[FLAGS] |= 1024 /* LViewFlags.RefreshTransplantedView */;
|
|
10905
10928
|
}
|
|
10906
10929
|
}
|
|
10907
10930
|
}
|
|
@@ -10917,7 +10940,7 @@ function refreshComponent(hostLView, componentHostIdx) {
|
|
|
10917
10940
|
// Only attached components that are CheckAlways or OnPush and dirty should be refreshed
|
|
10918
10941
|
if (viewAttachedToChangeDetector(componentView)) {
|
|
10919
10942
|
const tView = componentView[TVIEW];
|
|
10920
|
-
if (componentView[FLAGS] & (16 /* CheckAlways */ | 64 /* Dirty */)) {
|
|
10943
|
+
if (componentView[FLAGS] & (16 /* LViewFlags.CheckAlways */ | 64 /* LViewFlags.Dirty */)) {
|
|
10921
10944
|
refreshView(tView, componentView, tView.template, componentView[CONTEXT]);
|
|
10922
10945
|
}
|
|
10923
10946
|
else if (componentView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
|
|
@@ -10936,7 +10959,7 @@ function refreshContainsDirtyView(lView) {
|
|
|
10936
10959
|
for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
|
|
10937
10960
|
for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
|
|
10938
10961
|
const embeddedLView = lContainer[i];
|
|
10939
|
-
if (embeddedLView[FLAGS] & 1024 /* RefreshTransplantedView */) {
|
|
10962
|
+
if (embeddedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
|
|
10940
10963
|
const embeddedTView = embeddedLView[TVIEW];
|
|
10941
10964
|
ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
|
|
10942
10965
|
refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
|
|
@@ -11040,7 +11063,7 @@ function addToViewTree(lView, lViewOrLContainer) {
|
|
|
11040
11063
|
*/
|
|
11041
11064
|
function markViewDirty(lView) {
|
|
11042
11065
|
while (lView) {
|
|
11043
|
-
lView[FLAGS] |= 64 /* Dirty */;
|
|
11066
|
+
lView[FLAGS] |= 64 /* LViewFlags.Dirty */;
|
|
11044
11067
|
const parent = getLViewParent(lView);
|
|
11045
11068
|
// Stop traversing up as soon as you find a root view that wasn't attached to any container
|
|
11046
11069
|
if (isRootView(lView) && !parent) {
|
|
@@ -11063,7 +11086,7 @@ function markViewDirty(lView) {
|
|
|
11063
11086
|
* `renderComponent`'s `scheduler` option.
|
|
11064
11087
|
*/
|
|
11065
11088
|
function scheduleTick(rootContext, flags) {
|
|
11066
|
-
const nothingScheduled = rootContext.flags === 0 /* Empty */;
|
|
11089
|
+
const nothingScheduled = rootContext.flags === 0 /* RootContextFlags.Empty */;
|
|
11067
11090
|
if (nothingScheduled && rootContext.clean == _CLEAN_PROMISE) {
|
|
11068
11091
|
// https://github.com/angular/angular/issues/39296
|
|
11069
11092
|
// should only attach the flags when really scheduling a tick
|
|
@@ -11071,12 +11094,12 @@ function scheduleTick(rootContext, flags) {
|
|
|
11071
11094
|
let res;
|
|
11072
11095
|
rootContext.clean = new Promise((r) => res = r);
|
|
11073
11096
|
rootContext.scheduler(() => {
|
|
11074
|
-
if (rootContext.flags & 1 /* DetectChanges */) {
|
|
11075
|
-
rootContext.flags &= ~1 /* DetectChanges */;
|
|
11097
|
+
if (rootContext.flags & 1 /* RootContextFlags.DetectChanges */) {
|
|
11098
|
+
rootContext.flags &= ~1 /* RootContextFlags.DetectChanges */;
|
|
11076
11099
|
tickRootContext(rootContext);
|
|
11077
11100
|
}
|
|
11078
|
-
if (rootContext.flags & 2 /* FlushPlayers */) {
|
|
11079
|
-
rootContext.flags &= ~2 /* FlushPlayers */;
|
|
11101
|
+
if (rootContext.flags & 2 /* RootContextFlags.FlushPlayers */) {
|
|
11102
|
+
rootContext.flags &= ~2 /* RootContextFlags.FlushPlayers */;
|
|
11080
11103
|
const playerHandler = rootContext.playerHandler;
|
|
11081
11104
|
if (playerHandler) {
|
|
11082
11105
|
playerHandler.flushPlayers();
|
|
@@ -11291,10 +11314,10 @@ function computeStaticStyling(tNode, attrs, writeToHost) {
|
|
|
11291
11314
|
if (typeof value === 'number') {
|
|
11292
11315
|
mode = value;
|
|
11293
11316
|
}
|
|
11294
|
-
else if (mode == 1 /* Classes */) {
|
|
11317
|
+
else if (mode == 1 /* AttributeMarker.Classes */) {
|
|
11295
11318
|
classes = concatStringsWithSpace(classes, value);
|
|
11296
11319
|
}
|
|
11297
|
-
else if (mode == 2 /* Styles */) {
|
|
11320
|
+
else if (mode == 2 /* AttributeMarker.Styles */) {
|
|
11298
11321
|
const style = value;
|
|
11299
11322
|
const styleValue = attrs[++i];
|
|
11300
11323
|
styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
|
|
@@ -11336,7 +11359,7 @@ function markDirty(component) {
|
|
|
11336
11359
|
ngDevMode && assertDefined(component, 'component');
|
|
11337
11360
|
const rootView = markViewDirty(getComponentViewByInstance(component));
|
|
11338
11361
|
ngDevMode && assertDefined(rootView[CONTEXT], 'rootContext should be defined');
|
|
11339
|
-
scheduleTick(rootView[CONTEXT], 1 /* DetectChanges */);
|
|
11362
|
+
scheduleTick(rootView[CONTEXT], 1 /* RootContextFlags.DetectChanges */);
|
|
11340
11363
|
}
|
|
11341
11364
|
/**
|
|
11342
11365
|
* Used to perform change detection on the whole application.
|
|
@@ -11372,12 +11395,12 @@ function tick(component) {
|
|
|
11372
11395
|
* found in the LICENSE file at https://angular.io/license
|
|
11373
11396
|
*/
|
|
11374
11397
|
/**
|
|
11375
|
-
* A multi-provider token for initialization functions that will run upon construction of
|
|
11376
|
-
*
|
|
11398
|
+
* A multi-provider token for initialization functions that will run upon construction of an
|
|
11399
|
+
* environment injector.
|
|
11377
11400
|
*
|
|
11378
11401
|
* @publicApi
|
|
11379
11402
|
*/
|
|
11380
|
-
const
|
|
11403
|
+
const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
|
|
11381
11404
|
|
|
11382
11405
|
/**
|
|
11383
11406
|
* @license
|
|
@@ -11399,14 +11422,27 @@ const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
|
|
|
11399
11422
|
* Collects providers from all NgModules and standalone components, including transitively imported
|
|
11400
11423
|
* ones.
|
|
11401
11424
|
*
|
|
11402
|
-
*
|
|
11425
|
+
* Providers extracted via `importProvidersFrom` are only usable in an application injector or
|
|
11426
|
+
* another environment injector (such as a route injector). They should not be used in component
|
|
11427
|
+
* providers.
|
|
11428
|
+
*
|
|
11429
|
+
* @returns The collected providers from the specified list of types.
|
|
11403
11430
|
* @publicApi
|
|
11404
11431
|
*/
|
|
11405
11432
|
function importProvidersFrom(...sources) {
|
|
11433
|
+
return { ɵproviders: internalImportProvidersFrom(true, sources) };
|
|
11434
|
+
}
|
|
11435
|
+
function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
|
|
11406
11436
|
const providersOut = [];
|
|
11407
11437
|
const dedup = new Set(); // already seen types
|
|
11408
11438
|
let injectorTypesWithProviders;
|
|
11409
11439
|
deepForEach(sources, source => {
|
|
11440
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) && checkForStandaloneCmp) {
|
|
11441
|
+
const cmpDef = getComponentDef(source);
|
|
11442
|
+
if (cmpDef?.standalone) {
|
|
11443
|
+
throw new RuntimeError(800 /* RuntimeErrorCode.IMPORT_PROVIDERS_FROM_STANDALONE */, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component "${stringifyForError(source)}"`);
|
|
11444
|
+
}
|
|
11445
|
+
}
|
|
11410
11446
|
// Narrow `source` to access the internal type analogue for `ModuleWithProviders`.
|
|
11411
11447
|
const internalSource = source;
|
|
11412
11448
|
if (walkProviderTree(internalSource, providersOut, [], dedup)) {
|
|
@@ -11536,8 +11572,8 @@ function walkProviderTree(container, providersOut, parents, dedup) {
|
|
|
11536
11572
|
{ provide: defType, useFactory: factory, deps: EMPTY_ARRAY },
|
|
11537
11573
|
// Make this `defType` available to an internal logic that calculates injector scope.
|
|
11538
11574
|
{ provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true },
|
|
11539
|
-
// Provider to eagerly instantiate `defType` via `
|
|
11540
|
-
{ provide:
|
|
11575
|
+
// Provider to eagerly instantiate `defType` via `ENVIRONMENT_INITIALIZER`.
|
|
11576
|
+
{ provide: ENVIRONMENT_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true } //
|
|
11541
11577
|
);
|
|
11542
11578
|
}
|
|
11543
11579
|
// Next, include providers listed on the definition itself.
|
|
@@ -11603,7 +11639,7 @@ function isClassProvider(value) {
|
|
|
11603
11639
|
const INJECTOR = new InjectionToken('INJECTOR',
|
|
11604
11640
|
// Dissable tslint because this is const enum which gets inlined not top level prop access.
|
|
11605
11641
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
11606
|
-
-1 /* Injector */);
|
|
11642
|
+
-1 /* InjectorMarkers.Injector */);
|
|
11607
11643
|
|
|
11608
11644
|
/**
|
|
11609
11645
|
* @license
|
|
@@ -11691,9 +11727,7 @@ class R3Injector extends EnvironmentInjector {
|
|
|
11691
11727
|
this._onDestroyHooks = [];
|
|
11692
11728
|
this._destroyed = false;
|
|
11693
11729
|
// Start off by creating Records for every provider.
|
|
11694
|
-
|
|
11695
|
-
this.processProvider(provider);
|
|
11696
|
-
}
|
|
11730
|
+
forEachSingleProvider(providers, provider => this.processProvider(provider));
|
|
11697
11731
|
// Make sure the INJECTOR token provides this injector.
|
|
11698
11732
|
this.records.set(INJECTOR, makeRecord(undefined, this));
|
|
11699
11733
|
// And `EnvironmentInjector` if the current injector is supposed to be env-scoped.
|
|
@@ -11812,7 +11846,7 @@ class R3Injector extends EnvironmentInjector {
|
|
|
11812
11846
|
const previousInjector = setCurrentInjector(this);
|
|
11813
11847
|
const previousInjectImplementation = setInjectImplementation(undefined);
|
|
11814
11848
|
try {
|
|
11815
|
-
const initializers = this.get(
|
|
11849
|
+
const initializers = this.get(ENVIRONMENT_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);
|
|
11816
11850
|
for (const initializer of initializers) {
|
|
11817
11851
|
initializer();
|
|
11818
11852
|
}
|
|
@@ -11832,7 +11866,7 @@ class R3Injector extends EnvironmentInjector {
|
|
|
11832
11866
|
}
|
|
11833
11867
|
assertNotDestroyed() {
|
|
11834
11868
|
if (this._destroyed) {
|
|
11835
|
-
throw new RuntimeError(205 /* INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');
|
|
11869
|
+
throw new RuntimeError(205 /* RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');
|
|
11836
11870
|
}
|
|
11837
11871
|
}
|
|
11838
11872
|
/**
|
|
@@ -11907,21 +11941,21 @@ function injectableDefOrInjectorDefFactory(token) {
|
|
|
11907
11941
|
// InjectionTokens should have an injectable def (ɵprov) and thus should be handled above.
|
|
11908
11942
|
// If it's missing that, it's an error.
|
|
11909
11943
|
if (token instanceof InjectionToken) {
|
|
11910
|
-
throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);
|
|
11944
|
+
throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);
|
|
11911
11945
|
}
|
|
11912
11946
|
// Undecorated types can sometimes be created if they have no constructor arguments.
|
|
11913
11947
|
if (token instanceof Function) {
|
|
11914
11948
|
return getUndecoratedInjectableFactory(token);
|
|
11915
11949
|
}
|
|
11916
11950
|
// There was no way to resolve a factory for this token.
|
|
11917
|
-
throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');
|
|
11951
|
+
throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');
|
|
11918
11952
|
}
|
|
11919
11953
|
function getUndecoratedInjectableFactory(token) {
|
|
11920
11954
|
// If the token has parameters then it has dependencies that we cannot resolve implicitly.
|
|
11921
11955
|
const paramLength = token.length;
|
|
11922
11956
|
if (paramLength > 0) {
|
|
11923
11957
|
const args = newArray(paramLength, '?');
|
|
11924
|
-
throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);
|
|
11958
|
+
throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);
|
|
11925
11959
|
}
|
|
11926
11960
|
// The constructor function appears to have no parameters.
|
|
11927
11961
|
// This might be because it inherits from a super-class. In which case, use an injectable
|
|
@@ -11952,6 +11986,9 @@ function providerToRecord(provider) {
|
|
|
11952
11986
|
*/
|
|
11953
11987
|
function providerToFactory(provider, ngModuleType, providers) {
|
|
11954
11988
|
let factory = undefined;
|
|
11989
|
+
if (ngDevMode && isImportedNgModuleProviders(provider)) {
|
|
11990
|
+
throwInvalidProviderError(undefined, providers, provider);
|
|
11991
|
+
}
|
|
11955
11992
|
if (isTypeProvider(provider)) {
|
|
11956
11993
|
const unwrappedProvider = resolveForwardRef(provider);
|
|
11957
11994
|
return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider);
|
|
@@ -12000,6 +12037,22 @@ function couldBeInjectableType(value) {
|
|
|
12000
12037
|
return (typeof value === 'function') ||
|
|
12001
12038
|
(typeof value === 'object' && value instanceof InjectionToken);
|
|
12002
12039
|
}
|
|
12040
|
+
function isImportedNgModuleProviders(provider) {
|
|
12041
|
+
return !!provider.ɵproviders;
|
|
12042
|
+
}
|
|
12043
|
+
function forEachSingleProvider(providers, fn) {
|
|
12044
|
+
for (const provider of providers) {
|
|
12045
|
+
if (Array.isArray(provider)) {
|
|
12046
|
+
forEachSingleProvider(provider, fn);
|
|
12047
|
+
}
|
|
12048
|
+
else if (isImportedNgModuleProviders(provider)) {
|
|
12049
|
+
forEachSingleProvider(provider.ɵproviders, fn);
|
|
12050
|
+
}
|
|
12051
|
+
else {
|
|
12052
|
+
fn(provider);
|
|
12053
|
+
}
|
|
12054
|
+
}
|
|
12055
|
+
}
|
|
12003
12056
|
|
|
12004
12057
|
/**
|
|
12005
12058
|
* @license
|
|
@@ -12025,8 +12078,8 @@ function createInjector(defType, parent = null, additionalProviders = null, name
|
|
|
12025
12078
|
*/
|
|
12026
12079
|
function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {
|
|
12027
12080
|
const providers = [
|
|
12028
|
-
|
|
12029
|
-
|
|
12081
|
+
additionalProviders || EMPTY_ARRAY,
|
|
12082
|
+
importProvidersFrom(defType),
|
|
12030
12083
|
];
|
|
12031
12084
|
name = name || (typeof defType === 'object' ? undefined : stringify(defType));
|
|
12032
12085
|
return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);
|
|
@@ -12086,7 +12139,7 @@ Injector.ɵprov = ɵɵdefineInjectable({
|
|
|
12086
12139
|
* @internal
|
|
12087
12140
|
* @nocollapse
|
|
12088
12141
|
*/
|
|
12089
|
-
Injector.__NG_ELEMENT_ID__ = -1 /* Injector */;
|
|
12142
|
+
Injector.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */;
|
|
12090
12143
|
|
|
12091
12144
|
/**
|
|
12092
12145
|
* @license
|
|
@@ -12175,10 +12228,10 @@ function getOwningComponent(elementOrDir) {
|
|
|
12175
12228
|
if (lView === null)
|
|
12176
12229
|
return null;
|
|
12177
12230
|
let parent;
|
|
12178
|
-
while (lView[TVIEW].type === 2 /* Embedded */ && (parent = getLViewParent(lView))) {
|
|
12231
|
+
while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {
|
|
12179
12232
|
lView = parent;
|
|
12180
12233
|
}
|
|
12181
|
-
return lView[FLAGS] & 512 /* IsRoot */ ? null : lView[CONTEXT];
|
|
12234
|
+
return lView[FLAGS] & 512 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
|
|
12182
12235
|
}
|
|
12183
12236
|
/**
|
|
12184
12237
|
* Retrieves all root components associated with a DOM element, directive or component instance.
|
|
@@ -12226,7 +12279,7 @@ function getInjectionTokens(element) {
|
|
|
12226
12279
|
const tView = lView[TVIEW];
|
|
12227
12280
|
const tNode = tView.data[context.nodeIndex];
|
|
12228
12281
|
const providerTokens = [];
|
|
12229
|
-
const startIndex = tNode.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
|
|
12282
|
+
const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
|
|
12230
12283
|
const endIndex = tNode.directiveEnd;
|
|
12231
12284
|
for (let i = startIndex; i < endIndex; i++) {
|
|
12232
12285
|
let value = tView.data[i];
|
|
@@ -12629,11 +12682,11 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
|
|
|
12629
12682
|
const componentTag = componentDef.selectors[0][0];
|
|
12630
12683
|
const hostRenderer = rendererFactory.createRenderer(null, null);
|
|
12631
12684
|
const hostRNode = locateHostElement(hostRenderer, opts.host || componentTag, componentDef.encapsulation);
|
|
12632
|
-
const rootFlags = componentDef.onPush ? 64 /* Dirty */ | 512 /* IsRoot */ :
|
|
12633
|
-
16 /* CheckAlways */ | 512 /* IsRoot */;
|
|
12685
|
+
const rootFlags = componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
|
|
12686
|
+
16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
|
|
12634
12687
|
const rootContext = createRootContext(opts.scheduler, opts.playerHandler);
|
|
12635
12688
|
const renderer = rendererFactory.createRenderer(hostRNode, componentDef);
|
|
12636
|
-
const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
|
|
12689
|
+
const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
|
|
12637
12690
|
const rootView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, renderer, null, opts.injector || null, null);
|
|
12638
12691
|
enterView(rootView);
|
|
12639
12692
|
let component;
|
|
@@ -12674,7 +12727,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
|
|
|
12674
12727
|
// '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
|
|
12675
12728
|
// the same time we want to communicate the debug `TNode` that this is a special `TNode`
|
|
12676
12729
|
// representing a host element.
|
|
12677
|
-
const tNode = getOrCreateTNode(tView, index, 2 /* Element */, '#host', null);
|
|
12730
|
+
const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, '#host', null);
|
|
12678
12731
|
const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
|
|
12679
12732
|
if (mergedAttrs !== null) {
|
|
12680
12733
|
computeStaticStyling(tNode, mergedAttrs, true);
|
|
@@ -12689,7 +12742,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
|
|
|
12689
12742
|
}
|
|
12690
12743
|
}
|
|
12691
12744
|
const viewRenderer = rendererFactory.createRenderer(rNode, def);
|
|
12692
|
-
const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
|
|
12745
|
+
const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
|
|
12693
12746
|
if (tView.firstCreatePass) {
|
|
12694
12747
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
|
|
12695
12748
|
markAsComponentHost(tView, tNode);
|
|
@@ -12715,7 +12768,7 @@ function createRootComponent(componentView, componentDef, rootLView, rootContext
|
|
|
12715
12768
|
if (componentDef.contentQueries) {
|
|
12716
12769
|
const tNode = getCurrentTNode();
|
|
12717
12770
|
ngDevMode && assertDefined(tNode, 'TNode expected');
|
|
12718
|
-
componentDef.contentQueries(1 /* Create */, component, tNode.directiveStart);
|
|
12771
|
+
componentDef.contentQueries(1 /* RenderFlags.Create */, component, tNode.directiveStart);
|
|
12719
12772
|
}
|
|
12720
12773
|
const rootTNode = getCurrentTNode();
|
|
12721
12774
|
ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
|
|
@@ -12734,7 +12787,7 @@ function createRootContext(scheduler, playerHandler) {
|
|
|
12734
12787
|
scheduler: scheduler || defaultScheduler,
|
|
12735
12788
|
clean: CLEAN_PROMISE,
|
|
12736
12789
|
playerHandler: playerHandler || null,
|
|
12737
|
-
flags: 0 /* Empty */
|
|
12790
|
+
flags: 0 /* RootContextFlags.Empty */
|
|
12738
12791
|
};
|
|
12739
12792
|
}
|
|
12740
12793
|
/**
|
|
@@ -12809,7 +12862,7 @@ function ɵɵInheritDefinitionFeature(definition) {
|
|
|
12809
12862
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
12810
12863
|
`Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
|
|
12811
12864
|
'';
|
|
12812
|
-
throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
|
|
12865
|
+
throw new RuntimeError(903 /* RuntimeErrorCode.INVALID_INHERITANCE */, errorMessage);
|
|
12813
12866
|
}
|
|
12814
12867
|
// Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
|
|
12815
12868
|
superDef = superType.ɵdir;
|
|
@@ -13757,10 +13810,10 @@ function templateFirstCreatePass(index, tView, lView, templateFn, decls, vars, t
|
|
|
13757
13810
|
ngDevMode && ngDevMode.firstCreatePass++;
|
|
13758
13811
|
const tViewConsts = tView.consts;
|
|
13759
13812
|
// TODO(pk): refactor getOrCreateTNode to have the "create" only version
|
|
13760
|
-
const tNode = getOrCreateTNode(tView, index, 4 /* Container */, tagName || null, getConstant(tViewConsts, attrsIndex));
|
|
13813
|
+
const tNode = getOrCreateTNode(tView, index, 4 /* TNodeType.Container */, tagName || null, getConstant(tViewConsts, attrsIndex));
|
|
13761
13814
|
resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
|
|
13762
13815
|
registerPostOrderHooks(tView, tNode);
|
|
13763
|
-
const embeddedTView = tNode.tViews = createTView(2 /* Embedded */, tNode, templateFn, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, tView.schemas, tViewConsts);
|
|
13816
|
+
const embeddedTView = tNode.tViews = createTView(2 /* TViewType.Embedded */, tNode, templateFn, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, tView.schemas, tViewConsts);
|
|
13764
13817
|
if (tView.queries !== null) {
|
|
13765
13818
|
tView.queries.template(tView, tNode);
|
|
13766
13819
|
embeddedTView.queries = tView.queries.embeddedTView(tNode);
|
|
@@ -13876,7 +13929,7 @@ function compileInjectable(type, meta) {
|
|
|
13876
13929
|
Object.defineProperty(type, NG_PROV_DEF, {
|
|
13877
13930
|
get: () => {
|
|
13878
13931
|
if (ngInjectableDef === null) {
|
|
13879
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'injectable', type });
|
|
13932
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });
|
|
13880
13933
|
ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getInjectableMetadata(type, meta));
|
|
13881
13934
|
}
|
|
13882
13935
|
return ngInjectableDef;
|
|
@@ -13888,7 +13941,7 @@ function compileInjectable(type, meta) {
|
|
|
13888
13941
|
Object.defineProperty(type, NG_FACTORY_DEF, {
|
|
13889
13942
|
get: () => {
|
|
13890
13943
|
if (ngFactoryDef === null) {
|
|
13891
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'injectable', type });
|
|
13944
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });
|
|
13892
13945
|
ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {
|
|
13893
13946
|
name: type.name,
|
|
13894
13947
|
type,
|
|
@@ -14857,12 +14910,27 @@ function setDirectiveInputsWhichShadowsStyling(tView, tNode, lView, value, isCla
|
|
|
14857
14910
|
* Use of this source code is governed by an MIT-style license that can be
|
|
14858
14911
|
* found in the LICENSE file at https://angular.io/license
|
|
14859
14912
|
*/
|
|
14913
|
+
let shouldThrowErrorOnUnknownElement = false;
|
|
14914
|
+
/**
|
|
14915
|
+
* Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
|
|
14916
|
+
* instead of just logging the error.
|
|
14917
|
+
* (for AOT-compiled ones this check happens at build time).
|
|
14918
|
+
*/
|
|
14919
|
+
function ɵsetUnknownElementStrictMode(shouldThrow) {
|
|
14920
|
+
shouldThrowErrorOnUnknownElement = shouldThrow;
|
|
14921
|
+
}
|
|
14922
|
+
/**
|
|
14923
|
+
* Gets the current value of the strict mode.
|
|
14924
|
+
*/
|
|
14925
|
+
function ɵgetUnknownElementStrictMode() {
|
|
14926
|
+
return shouldThrowErrorOnUnknownElement;
|
|
14927
|
+
}
|
|
14860
14928
|
function elementStartFirstCreatePass(index, tView, lView, native, name, attrsIndex, localRefsIndex) {
|
|
14861
14929
|
ngDevMode && assertFirstCreatePass(tView);
|
|
14862
14930
|
ngDevMode && ngDevMode.firstCreatePass++;
|
|
14863
14931
|
const tViewConsts = tView.consts;
|
|
14864
14932
|
const attrs = getConstant(tViewConsts, attrsIndex);
|
|
14865
|
-
const tNode = getOrCreateTNode(tView, index, 2 /* Element */, name, attrs);
|
|
14933
|
+
const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, name, attrs);
|
|
14866
14934
|
const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
|
|
14867
14935
|
ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
|
|
14868
14936
|
if (tNode.attrs !== null) {
|
|
@@ -14916,7 +14984,7 @@ function ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {
|
|
|
14916
14984
|
if (styles !== null) {
|
|
14917
14985
|
writeDirectStyle(renderer, native, styles);
|
|
14918
14986
|
}
|
|
14919
|
-
if ((tNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
|
|
14987
|
+
if ((tNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
|
|
14920
14988
|
// In the i18n case, the translation may have removed this element, so only add it if it is not
|
|
14921
14989
|
// detached. See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.
|
|
14922
14990
|
appendChild(tView, lView, native, tNode);
|
|
@@ -14955,7 +15023,7 @@ function ɵɵelementEnd() {
|
|
|
14955
15023
|
setCurrentTNode(currentTNode, false);
|
|
14956
15024
|
}
|
|
14957
15025
|
const tNode = currentTNode;
|
|
14958
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */);
|
|
15026
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
|
|
14959
15027
|
decreaseElementDepthCount();
|
|
14960
15028
|
const tView = getTView();
|
|
14961
15029
|
if (tView.firstCreatePass) {
|
|
@@ -15034,7 +15102,12 @@ function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
|
|
|
15034
15102
|
message +=
|
|
15035
15103
|
`2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;
|
|
15036
15104
|
}
|
|
15037
|
-
|
|
15105
|
+
if (shouldThrowErrorOnUnknownElement) {
|
|
15106
|
+
throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);
|
|
15107
|
+
}
|
|
15108
|
+
else {
|
|
15109
|
+
console.error(formatRuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message));
|
|
15110
|
+
}
|
|
15038
15111
|
}
|
|
15039
15112
|
}
|
|
15040
15113
|
}
|
|
@@ -15050,7 +15123,7 @@ function elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, l
|
|
|
15050
15123
|
ngDevMode && ngDevMode.firstCreatePass++;
|
|
15051
15124
|
const tViewConsts = tView.consts;
|
|
15052
15125
|
const attrs = getConstant(tViewConsts, attrsIndex);
|
|
15053
|
-
const tNode = getOrCreateTNode(tView, index, 8 /* ElementContainer */, 'ng-container', attrs);
|
|
15126
|
+
const tNode = getOrCreateTNode(tView, index, 8 /* TNodeType.ElementContainer */, 'ng-container', attrs);
|
|
15054
15127
|
// While ng-container doesn't necessarily support styling, we use the style context to identify
|
|
15055
15128
|
// and execute directives on the ng-container.
|
|
15056
15129
|
if (attrs !== null) {
|
|
@@ -15120,7 +15193,7 @@ function ɵɵelementContainerEnd() {
|
|
|
15120
15193
|
currentTNode = currentTNode.parent;
|
|
15121
15194
|
setCurrentTNode(currentTNode, false);
|
|
15122
15195
|
}
|
|
15123
|
-
ngDevMode && assertTNodeType(currentTNode, 8 /* ElementContainer */);
|
|
15196
|
+
ngDevMode && assertTNodeType(currentTNode, 8 /* TNodeType.ElementContainer */);
|
|
15124
15197
|
if (tView.firstCreatePass) {
|
|
15125
15198
|
registerPostOrderHooks(tView, currentTNode);
|
|
15126
15199
|
if (isContentQueryHost(currentTNode)) {
|
|
@@ -15288,13 +15361,13 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
15288
15361
|
// native listener or a directive output on this element. As such we we know that we will have to
|
|
15289
15362
|
// register a listener and store its cleanup function on LView.
|
|
15290
15363
|
const lCleanup = getOrCreateLViewCleanup(lView);
|
|
15291
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
|
|
15364
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
|
|
15292
15365
|
let processOutputs = true;
|
|
15293
15366
|
// Adding a native event listener is applicable when:
|
|
15294
15367
|
// - The corresponding TNode represents a DOM element.
|
|
15295
15368
|
// - The event target has a resolver (usually resulting in a global object,
|
|
15296
15369
|
// such as `window` or `document`).
|
|
15297
|
-
if ((tNode.type & 3 /* AnyRNode */) || eventTargetResolver) {
|
|
15370
|
+
if ((tNode.type & 3 /* TNodeType.AnyRNode */) || eventTargetResolver) {
|
|
15298
15371
|
const native = getNativeByTNode(tNode, lView);
|
|
15299
15372
|
const target = eventTargetResolver ? eventTargetResolver(native) : native;
|
|
15300
15373
|
const lCleanupIndex = lCleanup.length;
|
|
@@ -15380,7 +15453,7 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
15380
15453
|
}
|
|
15381
15454
|
function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
15382
15455
|
try {
|
|
15383
|
-
profiler(6 /* OutputStart */, context, listenerFn);
|
|
15456
|
+
profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);
|
|
15384
15457
|
// Only explicitly returning false from a listener should preventDefault
|
|
15385
15458
|
return listenerFn(e) !== false;
|
|
15386
15459
|
}
|
|
@@ -15389,7 +15462,7 @@ function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
|
15389
15462
|
return false;
|
|
15390
15463
|
}
|
|
15391
15464
|
finally {
|
|
15392
|
-
profiler(7 /* OutputEnd */, context, listenerFn);
|
|
15465
|
+
profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);
|
|
15393
15466
|
}
|
|
15394
15467
|
}
|
|
15395
15468
|
/**
|
|
@@ -15413,11 +15486,11 @@ function wrapListener(tNode, lView, context, listenerFn, wrapWithPreventDefault)
|
|
|
15413
15486
|
}
|
|
15414
15487
|
// In order to be backwards compatible with View Engine, events on component host nodes
|
|
15415
15488
|
// must also mark the component view itself dirty (i.e. the view that it owns).
|
|
15416
|
-
const startView = tNode.flags & 2 /* isComponentHost */ ?
|
|
15489
|
+
const startView = tNode.flags & 2 /* TNodeFlags.isComponentHost */ ?
|
|
15417
15490
|
getComponentLViewByIndex(tNode.index, lView) :
|
|
15418
15491
|
lView;
|
|
15419
15492
|
// See interfaces/view.ts for more on LViewFlags.ManualOnPush
|
|
15420
|
-
if ((lView[FLAGS] & 32 /* ManualOnPush */) === 0) {
|
|
15493
|
+
if ((lView[FLAGS] & 32 /* LViewFlags.ManualOnPush */) === 0) {
|
|
15421
15494
|
markViewDirty(startView);
|
|
15422
15495
|
}
|
|
15423
15496
|
let result = executeListenerWithErrorHandling(lView, context, listenerFn, e);
|
|
@@ -15569,13 +15642,13 @@ function ɵɵprojectionDef(projectionSlots) {
|
|
|
15569
15642
|
function ɵɵprojection(nodeIndex, selectorIndex = 0, attrs) {
|
|
15570
15643
|
const lView = getLView();
|
|
15571
15644
|
const tView = getTView();
|
|
15572
|
-
const tProjectionNode = getOrCreateTNode(tView, HEADER_OFFSET + nodeIndex, 16 /* Projection */, null, attrs || null);
|
|
15645
|
+
const tProjectionNode = getOrCreateTNode(tView, HEADER_OFFSET + nodeIndex, 16 /* TNodeType.Projection */, null, attrs || null);
|
|
15573
15646
|
// We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.
|
|
15574
15647
|
if (tProjectionNode.projection === null)
|
|
15575
15648
|
tProjectionNode.projection = selectorIndex;
|
|
15576
15649
|
// `<ng-content>` has no content
|
|
15577
15650
|
setCurrentTNodeAsNotParent();
|
|
15578
|
-
if ((tProjectionNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
|
|
15651
|
+
if ((tProjectionNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
|
|
15579
15652
|
// re-distribution of projectable nodes is stored on a component's view level
|
|
15580
15653
|
applyProjection(tView, lView, tProjectionNode);
|
|
15581
15654
|
}
|
|
@@ -16561,10 +16634,10 @@ function parseStyleNext(text, startIndex) {
|
|
|
16561
16634
|
return -1;
|
|
16562
16635
|
}
|
|
16563
16636
|
index = parserState.keyEnd = consumeStyleKey(text, index, end);
|
|
16564
|
-
index = consumeSeparator(text, index, end, 58 /* COLON */);
|
|
16637
|
+
index = consumeSeparator(text, index, end, 58 /* CharCode.COLON */);
|
|
16565
16638
|
index = parserState.value = consumeWhitespace(text, index, end);
|
|
16566
16639
|
index = parserState.valueEnd = consumeStyleValue(text, index, end);
|
|
16567
|
-
return consumeSeparator(text, index, end, 59 /* SEMI_COLON */);
|
|
16640
|
+
return consumeSeparator(text, index, end, 59 /* CharCode.SEMI_COLON */);
|
|
16568
16641
|
}
|
|
16569
16642
|
/**
|
|
16570
16643
|
* Reset the global state of the styling parser.
|
|
@@ -16587,7 +16660,7 @@ function resetParserState(text) {
|
|
|
16587
16660
|
* that location.)
|
|
16588
16661
|
*/
|
|
16589
16662
|
function consumeWhitespace(text, startIndex, endIndex) {
|
|
16590
|
-
while (startIndex < endIndex && text.charCodeAt(startIndex) <= 32 /* SPACE */) {
|
|
16663
|
+
while (startIndex < endIndex && text.charCodeAt(startIndex) <= 32 /* CharCode.SPACE */) {
|
|
16591
16664
|
startIndex++;
|
|
16592
16665
|
}
|
|
16593
16666
|
return startIndex;
|
|
@@ -16601,7 +16674,7 @@ function consumeWhitespace(text, startIndex, endIndex) {
|
|
|
16601
16674
|
* @returns Index after last char in class token.
|
|
16602
16675
|
*/
|
|
16603
16676
|
function consumeClassToken(text, startIndex, endIndex) {
|
|
16604
|
-
while (startIndex < endIndex && text.charCodeAt(startIndex) > 32 /* SPACE */) {
|
|
16677
|
+
while (startIndex < endIndex && text.charCodeAt(startIndex) > 32 /* CharCode.SPACE */) {
|
|
16605
16678
|
startIndex++;
|
|
16606
16679
|
}
|
|
16607
16680
|
return startIndex;
|
|
@@ -16617,9 +16690,9 @@ function consumeClassToken(text, startIndex, endIndex) {
|
|
|
16617
16690
|
function consumeStyleKey(text, startIndex, endIndex) {
|
|
16618
16691
|
let ch;
|
|
16619
16692
|
while (startIndex < endIndex &&
|
|
16620
|
-
((ch = text.charCodeAt(startIndex)) === 45 /* DASH */ || ch === 95 /* UNDERSCORE */ ||
|
|
16621
|
-
((ch & -33 /* UPPER_CASE */) >= 65 /* A */ && (ch & -33 /* UPPER_CASE */) <= 90 /* Z */) ||
|
|
16622
|
-
(ch >= 48 /* ZERO */ && ch <= 57 /* NINE */))) {
|
|
16693
|
+
((ch = text.charCodeAt(startIndex)) === 45 /* CharCode.DASH */ || ch === 95 /* CharCode.UNDERSCORE */ ||
|
|
16694
|
+
((ch & -33 /* CharCode.UPPER_CASE */) >= 65 /* CharCode.A */ && (ch & -33 /* CharCode.UPPER_CASE */) <= 90 /* CharCode.Z */) ||
|
|
16695
|
+
(ch >= 48 /* CharCode.ZERO */ && ch <= 57 /* CharCode.NINE */))) {
|
|
16623
16696
|
startIndex++;
|
|
16624
16697
|
}
|
|
16625
16698
|
return startIndex;
|
|
@@ -16658,25 +16731,25 @@ function consumeStyleValue(text, startIndex, endIndex) {
|
|
|
16658
16731
|
let lastChIndex = i;
|
|
16659
16732
|
while (i < endIndex) {
|
|
16660
16733
|
const ch = text.charCodeAt(i++);
|
|
16661
|
-
if (ch === 59 /* SEMI_COLON */) {
|
|
16734
|
+
if (ch === 59 /* CharCode.SEMI_COLON */) {
|
|
16662
16735
|
return lastChIndex;
|
|
16663
16736
|
}
|
|
16664
|
-
else if (ch === 34 /* DOUBLE_QUOTE */ || ch === 39 /* SINGLE_QUOTE */) {
|
|
16737
|
+
else if (ch === 34 /* CharCode.DOUBLE_QUOTE */ || ch === 39 /* CharCode.SINGLE_QUOTE */) {
|
|
16665
16738
|
lastChIndex = i = consumeQuotedText(text, ch, i, endIndex);
|
|
16666
16739
|
}
|
|
16667
16740
|
else if (startIndex ===
|
|
16668
16741
|
i - 4 && // We have seen only 4 characters so far "URL(" (Ignore "foo_URL()")
|
|
16669
|
-
ch3 === 85 /* U */ &&
|
|
16670
|
-
ch2 === 82 /* R */ && ch1 === 76 /* L */ && ch === 40 /* OPEN_PAREN */) {
|
|
16671
|
-
lastChIndex = i = consumeQuotedText(text, 41 /* CLOSE_PAREN */, i, endIndex);
|
|
16742
|
+
ch3 === 85 /* CharCode.U */ &&
|
|
16743
|
+
ch2 === 82 /* CharCode.R */ && ch1 === 76 /* CharCode.L */ && ch === 40 /* CharCode.OPEN_PAREN */) {
|
|
16744
|
+
lastChIndex = i = consumeQuotedText(text, 41 /* CharCode.CLOSE_PAREN */, i, endIndex);
|
|
16672
16745
|
}
|
|
16673
|
-
else if (ch > 32 /* SPACE */) {
|
|
16746
|
+
else if (ch > 32 /* CharCode.SPACE */) {
|
|
16674
16747
|
// if we have a non-whitespace character then capture its location
|
|
16675
16748
|
lastChIndex = i;
|
|
16676
16749
|
}
|
|
16677
16750
|
ch3 = ch2;
|
|
16678
16751
|
ch2 = ch1;
|
|
16679
|
-
ch1 = ch & -33 /* UPPER_CASE */;
|
|
16752
|
+
ch1 = ch & -33 /* CharCode.UPPER_CASE */;
|
|
16680
16753
|
}
|
|
16681
16754
|
return lastChIndex;
|
|
16682
16755
|
}
|
|
@@ -16694,10 +16767,10 @@ function consumeQuotedText(text, quoteCharCode, startIndex, endIndex) {
|
|
|
16694
16767
|
let index = startIndex;
|
|
16695
16768
|
while (index < endIndex) {
|
|
16696
16769
|
const ch = text.charCodeAt(index++);
|
|
16697
|
-
if (ch == quoteCharCode && ch1 !== 92 /* BACK_SLASH */) {
|
|
16770
|
+
if (ch == quoteCharCode && ch1 !== 92 /* CharCode.BACK_SLASH */) {
|
|
16698
16771
|
return index;
|
|
16699
16772
|
}
|
|
16700
|
-
if (ch == 92 /* BACK_SLASH */ && ch1 === 92 /* BACK_SLASH */) {
|
|
16773
|
+
if (ch == 92 /* CharCode.BACK_SLASH */ && ch1 === 92 /* CharCode.BACK_SLASH */) {
|
|
16701
16774
|
// two back slashes cancel each other out. For example `"\\"` should properly end the
|
|
16702
16775
|
// quotation. (It should not assume that the last `"` is escaped.)
|
|
16703
16776
|
ch1 = 0;
|
|
@@ -17176,8 +17249,8 @@ function collectStylingFromDirectives(hostDirectiveDef, tData, tNode, stylingKey
|
|
|
17176
17249
|
* @param isClassBased `true` if `class` (`false` if `style`)
|
|
17177
17250
|
*/
|
|
17178
17251
|
function collectStylingFromTAttrs(stylingKey, attrs, isClassBased) {
|
|
17179
|
-
const desiredMarker = isClassBased ? 1 /* Classes */ : 2 /* Styles */;
|
|
17180
|
-
let currentMarker = -1 /* ImplicitAttributes */;
|
|
17252
|
+
const desiredMarker = isClassBased ? 1 /* AttributeMarker.Classes */ : 2 /* AttributeMarker.Styles */;
|
|
17253
|
+
let currentMarker = -1 /* AttributeMarker.ImplicitAttributes */;
|
|
17181
17254
|
if (attrs !== null) {
|
|
17182
17255
|
for (let i = 0; i < attrs.length; i++) {
|
|
17183
17256
|
const item = attrs[i];
|
|
@@ -17347,7 +17420,7 @@ function updateStylingMap(tView, tNode, lView, renderer, oldKeyValueArray, newKe
|
|
|
17347
17420
|
* @param bindingIndex Binding index of the binding.
|
|
17348
17421
|
*/
|
|
17349
17422
|
function updateStyling(tView, tNode, lView, renderer, prop, value, isClassBased, bindingIndex) {
|
|
17350
|
-
if (!(tNode.type & 3 /* AnyRNode */)) {
|
|
17423
|
+
if (!(tNode.type & 3 /* TNodeType.AnyRNode */)) {
|
|
17351
17424
|
// It is possible to have styling on non-elements (such as ng-container).
|
|
17352
17425
|
// This is rare, but it does happen. In such a case, just ignore the binding.
|
|
17353
17426
|
return;
|
|
@@ -17489,7 +17562,7 @@ function normalizeSuffix(value, suffix) {
|
|
|
17489
17562
|
* @param isClassBased `true` if `class` (`false` if `style`)
|
|
17490
17563
|
*/
|
|
17491
17564
|
function hasStylingInputShadow(tNode, isClassBased) {
|
|
17492
|
-
return (tNode.flags & (isClassBased ? 16 /* hasClassInput */ : 32 /* hasStyleInput */)) !== 0;
|
|
17565
|
+
return (tNode.flags & (isClassBased ? 16 /* TNodeFlags.hasClassInput */ : 32 /* TNodeFlags.hasStyleInput */)) !== 0;
|
|
17493
17566
|
}
|
|
17494
17567
|
|
|
17495
17568
|
/**
|
|
@@ -17515,7 +17588,7 @@ function ɵɵtext(index, value = '') {
|
|
|
17515
17588
|
assertEqual(getBindingIndex(), tView.bindingStartIndex, 'text nodes should be created before any bindings');
|
|
17516
17589
|
ngDevMode && assertIndexInRange(lView, adjustedIndex);
|
|
17517
17590
|
const tNode = tView.firstCreatePass ?
|
|
17518
|
-
getOrCreateTNode(tView, adjustedIndex, 1 /* Text */, value, null) :
|
|
17591
|
+
getOrCreateTNode(tView, adjustedIndex, 1 /* TNodeType.Text */, value, null) :
|
|
17519
17592
|
tView.data[adjustedIndex];
|
|
17520
17593
|
const textNative = lView[adjustedIndex] = createTextNode(lView[RENDERER], value);
|
|
17521
17594
|
appendChild(tView, lView, textNative, tNode);
|
|
@@ -19177,11 +19250,11 @@ function processI18nInsertBefore(renderer, childTNode, lView, childRNode, parent
|
|
|
19177
19250
|
ngDevMode && assertDomNode(childRNode);
|
|
19178
19251
|
let i18nParent = childRNode;
|
|
19179
19252
|
let anchorRNode = null;
|
|
19180
|
-
if (!(childTNode.type & 3 /* AnyRNode */)) {
|
|
19253
|
+
if (!(childTNode.type & 3 /* TNodeType.AnyRNode */)) {
|
|
19181
19254
|
anchorRNode = i18nParent;
|
|
19182
19255
|
i18nParent = parentRElement;
|
|
19183
19256
|
}
|
|
19184
|
-
if (i18nParent !== null && (childTNode.flags & 2 /* isComponentHost */) === 0) {
|
|
19257
|
+
if (i18nParent !== null && (childTNode.flags & 2 /* TNodeFlags.isComponentHost */) === 0) {
|
|
19185
19258
|
for (let i = 1; i < tNodeInsertBeforeIndex.length; i++) {
|
|
19186
19259
|
// No need to `unwrapRNode` because all of the indexes point to i18n text nodes.
|
|
19187
19260
|
// see `assertDomNode` below.
|
|
@@ -19251,7 +19324,7 @@ function addTNodeAndUpdateInsertBeforeIndex(previousTNodes, newTNode) {
|
|
|
19251
19324
|
}
|
|
19252
19325
|
}
|
|
19253
19326
|
function isI18nText(tNode) {
|
|
19254
|
-
return !(tNode.type & 64 /* Placeholder */);
|
|
19327
|
+
return !(tNode.type & 64 /* TNodeType.Placeholder */);
|
|
19255
19328
|
}
|
|
19256
19329
|
function isNewTNodeCreatedBefore(existingTNode, newTNode) {
|
|
19257
19330
|
return isI18nText(newTNode) || existingTNode.index > newTNode.index;
|
|
@@ -19331,7 +19404,7 @@ function setTIcu(tView, index, tIcu) {
|
|
|
19331
19404
|
tView.data[index] = tIcu;
|
|
19332
19405
|
}
|
|
19333
19406
|
else {
|
|
19334
|
-
ngDevMode && assertTNodeType(tNode, 32 /* Icu */);
|
|
19407
|
+
ngDevMode && assertTNodeType(tNode, 32 /* TNodeType.Icu */);
|
|
19335
19408
|
tNode.value = tIcu;
|
|
19336
19409
|
}
|
|
19337
19410
|
}
|
|
@@ -19359,7 +19432,7 @@ function setTNodeInsertBeforeIndex(tNode, index) {
|
|
|
19359
19432
|
* See `TNodeType.Placeholder` for more information.
|
|
19360
19433
|
*/
|
|
19361
19434
|
function createTNodePlaceholder(tView, previousTNodes, index) {
|
|
19362
|
-
const tNode = createTNodeAtIndex(tView, index, 64 /* Placeholder */, null, null);
|
|
19435
|
+
const tNode = createTNodeAtIndex(tView, index, 64 /* TNodeType.Placeholder */, null, null);
|
|
19363
19436
|
addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tNode);
|
|
19364
19437
|
return tNode;
|
|
19365
19438
|
}
|
|
@@ -19376,18 +19449,18 @@ function getCurrentICUCaseIndex(tIcu, lView) {
|
|
|
19376
19449
|
return currentCase === null ? currentCase : (currentCase < 0 ? ~currentCase : currentCase);
|
|
19377
19450
|
}
|
|
19378
19451
|
function getParentFromIcuCreateOpCode(mergedCode) {
|
|
19379
|
-
return mergedCode >>> 17 /* SHIFT_PARENT */;
|
|
19452
|
+
return mergedCode >>> 17 /* IcuCreateOpCode.SHIFT_PARENT */;
|
|
19380
19453
|
}
|
|
19381
19454
|
function getRefFromIcuCreateOpCode(mergedCode) {
|
|
19382
|
-
return (mergedCode & 131070 /* MASK_REF */) >>> 1 /* SHIFT_REF */;
|
|
19455
|
+
return (mergedCode & 131070 /* IcuCreateOpCode.MASK_REF */) >>> 1 /* IcuCreateOpCode.SHIFT_REF */;
|
|
19383
19456
|
}
|
|
19384
19457
|
function getInstructionFromIcuCreateOpCode(mergedCode) {
|
|
19385
|
-
return mergedCode & 1 /* MASK_INSTRUCTION */;
|
|
19458
|
+
return mergedCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */;
|
|
19386
19459
|
}
|
|
19387
19460
|
function icuCreateOpCode(opCode, parentIdx, refIdx) {
|
|
19388
19461
|
ngDevMode && assertGreaterThanOrEqual(parentIdx, 0, 'Missing parent index');
|
|
19389
19462
|
ngDevMode && assertGreaterThan(refIdx, 0, 'Missing ref index');
|
|
19390
|
-
return opCode | parentIdx << 17 /* SHIFT_PARENT */ | refIdx << 1 /* SHIFT_REF */;
|
|
19463
|
+
return opCode | parentIdx << 17 /* IcuCreateOpCode.SHIFT_PARENT */ | refIdx << 1 /* IcuCreateOpCode.SHIFT_REF */;
|
|
19391
19464
|
}
|
|
19392
19465
|
|
|
19393
19466
|
/**
|
|
@@ -19504,8 +19577,8 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
|
|
|
19504
19577
|
}
|
|
19505
19578
|
}
|
|
19506
19579
|
else if (typeof opCode == 'number') {
|
|
19507
|
-
switch (opCode & 1 /* MASK_INSTRUCTION */) {
|
|
19508
|
-
case 0 /* AppendChild */:
|
|
19580
|
+
switch (opCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */) {
|
|
19581
|
+
case 0 /* IcuCreateOpCode.AppendChild */:
|
|
19509
19582
|
const parentIdx = getParentFromIcuCreateOpCode(opCode);
|
|
19510
19583
|
if (rootIdx === null) {
|
|
19511
19584
|
// The first operation should save the `rootIdx` because the first operation
|
|
@@ -19550,8 +19623,8 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
|
|
|
19550
19623
|
}
|
|
19551
19624
|
}
|
|
19552
19625
|
break;
|
|
19553
|
-
case 1 /* Attr */:
|
|
19554
|
-
const elementNodeIndex = opCode >>> 1 /* SHIFT_REF */;
|
|
19626
|
+
case 1 /* IcuCreateOpCode.Attr */:
|
|
19627
|
+
const elementNodeIndex = opCode >>> 1 /* IcuCreateOpCode.SHIFT_REF */;
|
|
19555
19628
|
const attrName = mutableOpCodes[++i];
|
|
19556
19629
|
const attrValue = mutableOpCodes[++i];
|
|
19557
19630
|
// This code is used for ICU expressions only, since we don't support
|
|
@@ -19560,7 +19633,7 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
|
|
|
19560
19633
|
break;
|
|
19561
19634
|
default:
|
|
19562
19635
|
if (ngDevMode) {
|
|
19563
|
-
throw new RuntimeError(700 /* INVALID_I18N_STRUCTURE */, `Unable to determine the type of mutate operation for "${opCode}"`);
|
|
19636
|
+
throw new RuntimeError(700 /* RuntimeErrorCode.INVALID_I18N_STRUCTURE */, `Unable to determine the type of mutate operation for "${opCode}"`);
|
|
19564
19637
|
}
|
|
19565
19638
|
}
|
|
19566
19639
|
}
|
|
@@ -19631,9 +19704,9 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
|
|
|
19631
19704
|
value += renderStringify(lView[bindingsStartIndex - opCode]);
|
|
19632
19705
|
}
|
|
19633
19706
|
else {
|
|
19634
|
-
const nodeIndex = (opCode >>> 2 /* SHIFT_REF */);
|
|
19635
|
-
switch (opCode & 3 /* MASK_OPCODE */) {
|
|
19636
|
-
case 1 /* Attr */:
|
|
19707
|
+
const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);
|
|
19708
|
+
switch (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) {
|
|
19709
|
+
case 1 /* I18nUpdateOpCode.Attr */:
|
|
19637
19710
|
const propName = updateOpCodes[++j];
|
|
19638
19711
|
const sanitizeFn = updateOpCodes[++j];
|
|
19639
19712
|
const tNodeOrTagName = tView.data[nodeIndex];
|
|
@@ -19648,14 +19721,14 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
|
|
|
19648
19721
|
elementPropertyInternal(tView, tNodeOrTagName, lView, propName, value, lView[RENDERER], sanitizeFn, false);
|
|
19649
19722
|
}
|
|
19650
19723
|
break;
|
|
19651
|
-
case 0 /* Text */:
|
|
19724
|
+
case 0 /* I18nUpdateOpCode.Text */:
|
|
19652
19725
|
const rText = lView[nodeIndex];
|
|
19653
19726
|
rText !== null && updateTextNode(lView[RENDERER], rText, value);
|
|
19654
19727
|
break;
|
|
19655
|
-
case 2 /* IcuSwitch */:
|
|
19728
|
+
case 2 /* I18nUpdateOpCode.IcuSwitch */:
|
|
19656
19729
|
applyIcuSwitchCase(tView, getTIcu(tView, nodeIndex), lView, value);
|
|
19657
19730
|
break;
|
|
19658
|
-
case 3 /* IcuUpdate */:
|
|
19731
|
+
case 3 /* I18nUpdateOpCode.IcuUpdate */:
|
|
19659
19732
|
applyIcuUpdateCase(tView, getTIcu(tView, nodeIndex), bindingsStartIndex, lView);
|
|
19660
19733
|
break;
|
|
19661
19734
|
}
|
|
@@ -19665,12 +19738,12 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
|
|
|
19665
19738
|
}
|
|
19666
19739
|
else {
|
|
19667
19740
|
const opCode = updateOpCodes[i + 1];
|
|
19668
|
-
if (opCode > 0 && (opCode & 3 /* MASK_OPCODE */) === 3 /* IcuUpdate */) {
|
|
19741
|
+
if (opCode > 0 && (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) === 3 /* I18nUpdateOpCode.IcuUpdate */) {
|
|
19669
19742
|
// Special case for the `icuUpdateCase`. It could be that the mask did not match, but
|
|
19670
19743
|
// we still need to execute `icuUpdateCase` because the case has changed recently due to
|
|
19671
19744
|
// previous `icuSwitchCase` instruction. (`icuSwitchCase` and `icuUpdateCase` always come in
|
|
19672
19745
|
// pairs.)
|
|
19673
|
-
const nodeIndex = (opCode >>> 2 /* SHIFT_REF */);
|
|
19746
|
+
const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);
|
|
19674
19747
|
const tIcu = getTIcu(tView, nodeIndex);
|
|
19675
19748
|
const currentIndex = lView[tIcu.currentCaseLViewIndex];
|
|
19676
19749
|
if (currentIndex < 0) {
|
|
@@ -19768,7 +19841,7 @@ function getCaseIndex(icuExpression, bindingValue) {
|
|
|
19768
19841
|
let index = icuExpression.cases.indexOf(bindingValue);
|
|
19769
19842
|
if (index === -1) {
|
|
19770
19843
|
switch (icuExpression.type) {
|
|
19771
|
-
case 1 /* plural */: {
|
|
19844
|
+
case 1 /* IcuType.plural */: {
|
|
19772
19845
|
const resolvedCase = getPluralCase(bindingValue, getLocaleId());
|
|
19773
19846
|
index = icuExpression.cases.indexOf(resolvedCase);
|
|
19774
19847
|
if (index === -1 && resolvedCase !== 'other') {
|
|
@@ -19776,7 +19849,7 @@ function getCaseIndex(icuExpression, bindingValue) {
|
|
|
19776
19849
|
}
|
|
19777
19850
|
break;
|
|
19778
19851
|
}
|
|
19779
|
-
case 0 /* select */: {
|
|
19852
|
+
case 0 /* IcuType.select */: {
|
|
19780
19853
|
index = icuExpression.cases.indexOf('other');
|
|
19781
19854
|
break;
|
|
19782
19855
|
}
|
|
@@ -19912,19 +19985,19 @@ function i18nUpdateOpCodesToString(opcodes) {
|
|
|
19912
19985
|
const parser = new OpCodeParser(opcodes || (Array.isArray(this) ? this : []));
|
|
19913
19986
|
let lines = [];
|
|
19914
19987
|
function consumeOpCode(value) {
|
|
19915
|
-
const ref = value >>> 2 /* SHIFT_REF */;
|
|
19916
|
-
const opCode = value & 3 /* MASK_OPCODE */;
|
|
19988
|
+
const ref = value >>> 2 /* I18nUpdateOpCode.SHIFT_REF */;
|
|
19989
|
+
const opCode = value & 3 /* I18nUpdateOpCode.MASK_OPCODE */;
|
|
19917
19990
|
switch (opCode) {
|
|
19918
|
-
case 0 /* Text */:
|
|
19991
|
+
case 0 /* I18nUpdateOpCode.Text */:
|
|
19919
19992
|
return `(lView[${ref}] as Text).textContent = $$$`;
|
|
19920
|
-
case 1 /* Attr */:
|
|
19993
|
+
case 1 /* I18nUpdateOpCode.Attr */:
|
|
19921
19994
|
const attrName = parser.consumeString();
|
|
19922
19995
|
const sanitizationFn = parser.consumeFunction();
|
|
19923
19996
|
const value = sanitizationFn ? `(${sanitizationFn})($$$)` : '$$$';
|
|
19924
19997
|
return `(lView[${ref}] as Element).setAttribute('${attrName}', ${value})`;
|
|
19925
|
-
case 2 /* IcuSwitch */:
|
|
19998
|
+
case 2 /* I18nUpdateOpCode.IcuSwitch */:
|
|
19926
19999
|
return `icuSwitchCase(${ref}, $$$)`;
|
|
19927
|
-
case 3 /* IcuUpdate */:
|
|
20000
|
+
case 3 /* I18nUpdateOpCode.IcuUpdate */:
|
|
19928
20001
|
return `icuUpdateCase(${ref})`;
|
|
19929
20002
|
}
|
|
19930
20003
|
throw new Error('unexpected OpCode');
|
|
@@ -19974,9 +20047,9 @@ function icuCreateOpCodesToString(opcodes) {
|
|
|
19974
20047
|
const parent = getParentFromIcuCreateOpCode(opCode);
|
|
19975
20048
|
const ref = getRefFromIcuCreateOpCode(opCode);
|
|
19976
20049
|
switch (getInstructionFromIcuCreateOpCode(opCode)) {
|
|
19977
|
-
case 0 /* AppendChild */:
|
|
20050
|
+
case 0 /* IcuCreateOpCode.AppendChild */:
|
|
19978
20051
|
return `(lView[${parent}] as Element).appendChild(lView[${lastRef}])`;
|
|
19979
|
-
case 1 /* Attr */:
|
|
20052
|
+
case 1 /* IcuCreateOpCode.Attr */:
|
|
19980
20053
|
return `(lView[${ref}] as Element).setAttribute("${parser.consumeString()}", "${parser.consumeString()}")`;
|
|
19981
20054
|
}
|
|
19982
20055
|
throw new Error('Unexpected OpCode: ' + getInstructionFromIcuCreateOpCode(opCode));
|
|
@@ -20166,9 +20239,9 @@ function i18nStartFirstCreatePass(tView, parentTNodeIndex, lView, index, message
|
|
|
20166
20239
|
else {
|
|
20167
20240
|
// Odd indexes are placeholders (elements and sub-templates)
|
|
20168
20241
|
// At this point value is something like: '/#1:2' (originally coming from '�/#1:2�')
|
|
20169
|
-
const isClosing = value.charCodeAt(0) === 47 /* SLASH */;
|
|
20242
|
+
const isClosing = value.charCodeAt(0) === 47 /* CharCode.SLASH */;
|
|
20170
20243
|
const type = value.charCodeAt(isClosing ? 1 : 0);
|
|
20171
|
-
ngDevMode && assertOneOf(type, 42 /* STAR */, 35 /* HASH */);
|
|
20244
|
+
ngDevMode && assertOneOf(type, 42 /* CharCode.STAR */, 35 /* CharCode.HASH */);
|
|
20172
20245
|
const index = HEADER_OFFSET + Number.parseInt(value.substring((isClosing ? 2 : 1)));
|
|
20173
20246
|
if (isClosing) {
|
|
20174
20247
|
existingTNodeStack.shift();
|
|
@@ -20222,7 +20295,7 @@ function createTNodeAndAddOpCode(tView, rootTNode, existingTNodes, lView, create
|
|
|
20222
20295
|
createOpCodes.push(opCode, text === null ? '' : text);
|
|
20223
20296
|
// We store `{{?}}` so that when looking at debug `TNodeType.template` we can see where the
|
|
20224
20297
|
// bindings are.
|
|
20225
|
-
const tNode = createTNodeAtIndex(tView, i18nNodeIdx, isICU ? 32 /* Icu */ : 1 /* Text */, text === null ? (ngDevMode ? '{{?}}' : '') : text, null);
|
|
20298
|
+
const tNode = createTNodeAtIndex(tView, i18nNodeIdx, isICU ? 32 /* TNodeType.Icu */ : 1 /* TNodeType.Text */, text === null ? (ngDevMode ? '{{?}}' : '') : text, null);
|
|
20226
20299
|
addTNodeAndUpdateInsertBeforeIndex(existingTNodes, tNode);
|
|
20227
20300
|
const tNodeIdx = tNode.index;
|
|
20228
20301
|
setCurrentTNode(tNode, false /* Text nodes are self closing */);
|
|
@@ -20328,8 +20401,8 @@ function generateBindingUpdateOpCodes(updateOpCodes, str, destinationNode, attrN
|
|
|
20328
20401
|
updateOpCodes.push(textValue);
|
|
20329
20402
|
}
|
|
20330
20403
|
}
|
|
20331
|
-
updateOpCodes.push(destinationNode << 2 /* SHIFT_REF */ |
|
|
20332
|
-
(attrName ? 1 /* Attr */ : 0 /* Text */));
|
|
20404
|
+
updateOpCodes.push(destinationNode << 2 /* I18nUpdateOpCode.SHIFT_REF */ |
|
|
20405
|
+
(attrName ? 1 /* I18nUpdateOpCode.Attr */ : 0 /* I18nUpdateOpCode.Text */));
|
|
20333
20406
|
if (attrName) {
|
|
20334
20407
|
updateOpCodes.push(attrName, sanitizeFn);
|
|
20335
20408
|
}
|
|
@@ -20480,14 +20553,14 @@ function icuStart(tView, lView, updateOpCodes, parentIdx, icuExpression, anchorI
|
|
|
20480
20553
|
function parseICUBlock(pattern) {
|
|
20481
20554
|
const cases = [];
|
|
20482
20555
|
const values = [];
|
|
20483
|
-
let icuType = 1 /* plural */;
|
|
20556
|
+
let icuType = 1 /* IcuType.plural */;
|
|
20484
20557
|
let mainBinding = 0;
|
|
20485
20558
|
pattern = pattern.replace(ICU_BLOCK_REGEXP, function (str, binding, type) {
|
|
20486
20559
|
if (type === 'select') {
|
|
20487
|
-
icuType = 0 /* select */;
|
|
20560
|
+
icuType = 0 /* IcuType.select */;
|
|
20488
20561
|
}
|
|
20489
20562
|
else {
|
|
20490
|
-
icuType = 1 /* plural */;
|
|
20563
|
+
icuType = 1 /* IcuType.plural */;
|
|
20491
20564
|
}
|
|
20492
20565
|
mainBinding = parseInt(binding.slice(1), 10);
|
|
20493
20566
|
return '';
|
|
@@ -20496,7 +20569,7 @@ function parseICUBlock(pattern) {
|
|
|
20496
20569
|
// Looking for (key block)+ sequence. One of the keys has to be "other".
|
|
20497
20570
|
for (let pos = 0; pos < parts.length;) {
|
|
20498
20571
|
let key = parts[pos++].trim();
|
|
20499
|
-
if (icuType === 1 /* plural */) {
|
|
20572
|
+
if (icuType === 1 /* IcuType.plural */) {
|
|
20500
20573
|
// Key can be "=x", we just want "x"
|
|
20501
20574
|
key = key.replace(/\s*(?:=)?(\w+)\s*/, '$1');
|
|
20502
20575
|
}
|
|
@@ -20675,19 +20748,19 @@ function addRemoveNestedIcu(remove, index, depth) {
|
|
|
20675
20748
|
}
|
|
20676
20749
|
}
|
|
20677
20750
|
function addUpdateIcuSwitch(update, icuExpression, index) {
|
|
20678
|
-
update.push(toMaskBit(icuExpression.mainBinding), 2, -1 - icuExpression.mainBinding, index << 2 /* SHIFT_REF */ | 2 /* IcuSwitch */);
|
|
20751
|
+
update.push(toMaskBit(icuExpression.mainBinding), 2, -1 - icuExpression.mainBinding, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 2 /* I18nUpdateOpCode.IcuSwitch */);
|
|
20679
20752
|
}
|
|
20680
20753
|
function addUpdateIcuUpdate(update, bindingMask, index) {
|
|
20681
|
-
update.push(bindingMask, 1, index << 2 /* SHIFT_REF */ | 3 /* IcuUpdate */);
|
|
20754
|
+
update.push(bindingMask, 1, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 3 /* I18nUpdateOpCode.IcuUpdate */);
|
|
20682
20755
|
}
|
|
20683
20756
|
function addCreateNodeAndAppend(create, marker, text, appendToParentIdx, createAtIdx) {
|
|
20684
20757
|
if (marker !== null) {
|
|
20685
20758
|
create.push(marker);
|
|
20686
20759
|
}
|
|
20687
|
-
create.push(text, createAtIdx, icuCreateOpCode(0 /* AppendChild */, appendToParentIdx, createAtIdx));
|
|
20760
|
+
create.push(text, createAtIdx, icuCreateOpCode(0 /* IcuCreateOpCode.AppendChild */, appendToParentIdx, createAtIdx));
|
|
20688
20761
|
}
|
|
20689
20762
|
function addCreateAttribute(create, newIndex, attr) {
|
|
20690
|
-
create.push(newIndex << 1 /* SHIFT_REF */ | 1 /* Attr */, attr.name, attr.value);
|
|
20763
|
+
create.push(newIndex << 1 /* IcuCreateOpCode.SHIFT_REF */ | 1 /* IcuCreateOpCode.Attr */, attr.name, attr.value);
|
|
20691
20764
|
}
|
|
20692
20765
|
|
|
20693
20766
|
/**
|
|
@@ -20858,7 +20931,7 @@ function ɵɵi18nStart(index, messageIndex, subTemplateIndex = -1) {
|
|
|
20858
20931
|
const parentRNode = getClosestRElement(tView, sameViewParentTNode, lView);
|
|
20859
20932
|
// If `parentTNode` is an `ElementContainer` than it has `<!--ng-container--->`.
|
|
20860
20933
|
// When we do inserts we have to make sure to insert in front of `<!--ng-container--->`.
|
|
20861
|
-
const insertInFrontOf = parentTNode && (parentTNode.type & 8 /* ElementContainer */) ?
|
|
20934
|
+
const insertInFrontOf = parentTNode && (parentTNode.type & 8 /* TNodeType.ElementContainer */) ?
|
|
20862
20935
|
lView[parentTNode.index] :
|
|
20863
20936
|
null;
|
|
20864
20937
|
applyCreateOpCodes(lView, tI18n.create, parentRNode, insertInFrontOf);
|
|
@@ -21029,9 +21102,9 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
21029
21102
|
let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider.provide);
|
|
21030
21103
|
let providerFactory = providerToFactory(provider);
|
|
21031
21104
|
const tNode = getCurrentTNode();
|
|
21032
|
-
const beginIndex = tNode.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
|
|
21105
|
+
const beginIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
|
|
21033
21106
|
const endIndex = tNode.directiveStart;
|
|
21034
|
-
const cptViewProvidersCount = tNode.providerIndexes >> 20 /* CptViewProvidersCountShift */;
|
|
21107
|
+
const cptViewProvidersCount = tNode.providerIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
|
|
21035
21108
|
if (isTypeProvider(provider) || !provider.multi) {
|
|
21036
21109
|
// Single provider case: the factory is created and pushed immediately
|
|
21037
21110
|
const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject);
|
|
@@ -21043,7 +21116,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
21043
21116
|
tNode.directiveStart++;
|
|
21044
21117
|
tNode.directiveEnd++;
|
|
21045
21118
|
if (isViewProvider) {
|
|
21046
|
-
tNode.providerIndexes += 1048576 /* CptViewProvidersCountShifter */;
|
|
21119
|
+
tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;
|
|
21047
21120
|
}
|
|
21048
21121
|
lInjectablesBlueprint.push(factory);
|
|
21049
21122
|
lView.push(factory);
|
|
@@ -21093,7 +21166,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
21093
21166
|
tNode.directiveStart++;
|
|
21094
21167
|
tNode.directiveEnd++;
|
|
21095
21168
|
if (isViewProvider) {
|
|
21096
|
-
tNode.providerIndexes += 1048576 /* CptViewProvidersCountShifter */;
|
|
21169
|
+
tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;
|
|
21097
21170
|
}
|
|
21098
21171
|
lInjectablesBlueprint.push(factory);
|
|
21099
21172
|
lView.push(factory);
|
|
@@ -21523,7 +21596,7 @@ class Version {
|
|
|
21523
21596
|
/**
|
|
21524
21597
|
* @publicApi
|
|
21525
21598
|
*/
|
|
21526
|
-
const VERSION = new Version('14.0.0-next.
|
|
21599
|
+
const VERSION = new Version('14.0.0-next.16');
|
|
21527
21600
|
|
|
21528
21601
|
/**
|
|
21529
21602
|
* @license
|
|
@@ -21561,7 +21634,7 @@ const NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};
|
|
|
21561
21634
|
function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
|
|
21562
21635
|
while (tNode !== null) {
|
|
21563
21636
|
ngDevMode &&
|
|
21564
|
-
assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 16 /* Projection */ | 32 /* Icu */);
|
|
21637
|
+
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
|
|
21565
21638
|
const lNode = lView[tNode.index];
|
|
21566
21639
|
if (lNode !== null) {
|
|
21567
21640
|
result.push(unwrapRNode(lNode));
|
|
@@ -21579,17 +21652,17 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
|
|
|
21579
21652
|
}
|
|
21580
21653
|
}
|
|
21581
21654
|
const tNodeType = tNode.type;
|
|
21582
|
-
if (tNodeType & 8 /* ElementContainer */) {
|
|
21655
|
+
if (tNodeType & 8 /* TNodeType.ElementContainer */) {
|
|
21583
21656
|
collectNativeNodes(tView, lView, tNode.child, result);
|
|
21584
21657
|
}
|
|
21585
|
-
else if (tNodeType & 32 /* Icu */) {
|
|
21658
|
+
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
21586
21659
|
const nextRNode = icuContainerIterate(tNode, lView);
|
|
21587
21660
|
let rNode;
|
|
21588
21661
|
while (rNode = nextRNode()) {
|
|
21589
21662
|
result.push(rNode);
|
|
21590
21663
|
}
|
|
21591
21664
|
}
|
|
21592
|
-
else if (tNodeType & 16 /* Projection */) {
|
|
21665
|
+
else if (tNodeType & 16 /* TNodeType.Projection */) {
|
|
21593
21666
|
const nodesInSlot = getProjectionNodes(lView, tNode);
|
|
21594
21667
|
if (Array.isArray(nodesInSlot)) {
|
|
21595
21668
|
result.push(...nodesInSlot);
|
|
@@ -21650,7 +21723,7 @@ class ViewRef$1 {
|
|
|
21650
21723
|
this._lView[CONTEXT] = value;
|
|
21651
21724
|
}
|
|
21652
21725
|
get destroyed() {
|
|
21653
|
-
return (this._lView[FLAGS] & 256 /* Destroyed */) === 256 /* Destroyed */;
|
|
21726
|
+
return (this._lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;
|
|
21654
21727
|
}
|
|
21655
21728
|
destroy() {
|
|
21656
21729
|
if (this._appRef) {
|
|
@@ -21763,7 +21836,7 @@ class ViewRef$1 {
|
|
|
21763
21836
|
* ```
|
|
21764
21837
|
*/
|
|
21765
21838
|
detach() {
|
|
21766
|
-
this._lView[FLAGS] &= ~128 /* Attached */;
|
|
21839
|
+
this._lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
|
|
21767
21840
|
}
|
|
21768
21841
|
/**
|
|
21769
21842
|
* Re-attaches a view to the change detection tree.
|
|
@@ -21822,7 +21895,7 @@ class ViewRef$1 {
|
|
|
21822
21895
|
* ```
|
|
21823
21896
|
*/
|
|
21824
21897
|
reattach() {
|
|
21825
|
-
this._lView[FLAGS] |= 128 /* Attached */;
|
|
21898
|
+
this._lView[FLAGS] |= 128 /* LViewFlags.Attached */;
|
|
21826
21899
|
}
|
|
21827
21900
|
/**
|
|
21828
21901
|
* Checks the view and its children.
|
|
@@ -21860,7 +21933,7 @@ class ViewRef$1 {
|
|
|
21860
21933
|
attachToViewContainerRef() {
|
|
21861
21934
|
if (this._appRef) {
|
|
21862
21935
|
const errorMessage = ngDevMode ? 'This view is already attached directly to the ApplicationRef!' : '';
|
|
21863
|
-
throw new RuntimeError(902 /* VIEW_ALREADY_ATTACHED */, errorMessage);
|
|
21936
|
+
throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, errorMessage);
|
|
21864
21937
|
}
|
|
21865
21938
|
this._attachedToViewContainer = true;
|
|
21866
21939
|
}
|
|
@@ -21871,7 +21944,7 @@ class ViewRef$1 {
|
|
|
21871
21944
|
attachToAppRef(appRef) {
|
|
21872
21945
|
if (this._attachedToViewContainer) {
|
|
21873
21946
|
const errorMessage = ngDevMode ? 'This view is already attached to a ViewContainer!' : '';
|
|
21874
|
-
throw new RuntimeError(902 /* VIEW_ALREADY_ATTACHED */, errorMessage);
|
|
21947
|
+
throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, errorMessage);
|
|
21875
21948
|
}
|
|
21876
21949
|
this._appRef = appRef;
|
|
21877
21950
|
}
|
|
@@ -21994,11 +22067,11 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
21994
22067
|
const hostRNode = rootSelectorOrNode ?
|
|
21995
22068
|
locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation) :
|
|
21996
22069
|
createElementNode(rendererFactory.createRenderer(null, this.componentDef), elementName, getNamespace(elementName));
|
|
21997
|
-
const rootFlags = this.componentDef.onPush ? 64 /* Dirty */ | 512 /* IsRoot */ :
|
|
21998
|
-
16 /* CheckAlways */ | 512 /* IsRoot */;
|
|
22070
|
+
const rootFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
|
|
22071
|
+
16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
|
|
21999
22072
|
const rootContext = createRootContext();
|
|
22000
22073
|
// Create the root view. Uses empty TView and ContentTemplate.
|
|
22001
|
-
const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
|
|
22074
|
+
const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
|
|
22002
22075
|
const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
|
|
22003
22076
|
// rootView is the parent when bootstrapping
|
|
22004
22077
|
// TODO(misko): it looks like we are entering view here but we don't really need to as
|
|
@@ -22219,9 +22292,9 @@ class StandaloneService {
|
|
|
22219
22292
|
return null;
|
|
22220
22293
|
}
|
|
22221
22294
|
if (!this.cachedInjectors.has(componentDef)) {
|
|
22222
|
-
const providers =
|
|
22295
|
+
const providers = internalImportProvidersFrom(false, componentDef.type);
|
|
22223
22296
|
const standaloneInjector = providers.length > 0 ?
|
|
22224
|
-
createEnvironmentInjector(providers, this._injector, `Standalone[${componentDef.type.name}]`) :
|
|
22297
|
+
createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) :
|
|
22225
22298
|
null;
|
|
22226
22299
|
this.cachedInjectors.set(componentDef, standaloneInjector);
|
|
22227
22300
|
}
|
|
@@ -22240,6 +22313,7 @@ class StandaloneService {
|
|
|
22240
22313
|
}
|
|
22241
22314
|
}
|
|
22242
22315
|
}
|
|
22316
|
+
/** @nocollapse */
|
|
22243
22317
|
StandaloneService.ɵprov = ɵɵdefineInjectable({
|
|
22244
22318
|
token: StandaloneService,
|
|
22245
22319
|
providedIn: 'environment',
|
|
@@ -22728,7 +22802,7 @@ function getPipeDef(name, registry) {
|
|
|
22728
22802
|
const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
|
|
22729
22803
|
const context = declarationLView[CONTEXT];
|
|
22730
22804
|
const component = context ? ` in the '${context.constructor.name}' component` : '';
|
|
22731
|
-
throw new RuntimeError(-302 /* PIPE_NOT_FOUND */, `The pipe '${name}' could not be found${component}!`);
|
|
22805
|
+
throw new RuntimeError(-302 /* RuntimeErrorCode.PIPE_NOT_FOUND */, `The pipe '${name}' could not be found${component}!`);
|
|
22732
22806
|
}
|
|
22733
22807
|
}
|
|
22734
22808
|
/**
|
|
@@ -23102,7 +23176,7 @@ const R3TemplateRef = class TemplateRef extends ViewEngineTemplateRef {
|
|
|
23102
23176
|
}
|
|
23103
23177
|
createEmbeddedView(context, injector) {
|
|
23104
23178
|
const embeddedTView = this._declarationTContainer.tViews;
|
|
23105
|
-
const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* CheckAlways */, null, embeddedTView.declTNode, null, null, null, null, injector || null);
|
|
23179
|
+
const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* LViewFlags.CheckAlways */, null, embeddedTView.declTNode, null, null, null, null, injector || null);
|
|
23106
23180
|
const declarationLContainer = this._declarationLView[this._declarationTContainer.index];
|
|
23107
23181
|
ngDevMode && assertLContainer(declarationLContainer);
|
|
23108
23182
|
embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
|
|
@@ -23130,7 +23204,7 @@ function injectTemplateRef() {
|
|
|
23130
23204
|
* @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type
|
|
23131
23205
|
*/
|
|
23132
23206
|
function createTemplateRef(hostTNode, hostLView) {
|
|
23133
|
-
if (hostTNode.type & 4 /* Container */) {
|
|
23207
|
+
if (hostTNode.type & 4 /* TNodeType.Container */) {
|
|
23134
23208
|
ngDevMode && assertDefined(hostTNode.tViews, 'TView must be allocated');
|
|
23135
23209
|
return new R3TemplateRef(hostLView, hostTNode, createElementRef(hostTNode, hostLView));
|
|
23136
23210
|
}
|
|
@@ -23199,7 +23273,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
23199
23273
|
const parentView = getParentInjectorView(parentLocation, this._hostLView);
|
|
23200
23274
|
const injectorIndex = getParentInjectorIndex(parentLocation);
|
|
23201
23275
|
ngDevMode && assertNodeInjector(parentView, injectorIndex);
|
|
23202
|
-
const parentTNode = parentView[TVIEW].data[injectorIndex + 8 /* TNODE */];
|
|
23276
|
+
const parentTNode = parentView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
|
|
23203
23277
|
return new NodeInjector(parentTNode, parentView);
|
|
23204
23278
|
}
|
|
23205
23279
|
else {
|
|
@@ -23402,7 +23476,7 @@ function getOrCreateViewRefs(lContainer) {
|
|
|
23402
23476
|
* @returns The ViewContainerRef instance to use
|
|
23403
23477
|
*/
|
|
23404
23478
|
function createContainerRef(hostTNode, hostLView) {
|
|
23405
|
-
ngDevMode && assertTNodeType(hostTNode, 12 /* AnyContainer */ | 3 /* AnyRNode */);
|
|
23479
|
+
ngDevMode && assertTNodeType(hostTNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);
|
|
23406
23480
|
let lContainer;
|
|
23407
23481
|
const slotValue = hostLView[hostTNode.index];
|
|
23408
23482
|
if (isLContainer(slotValue)) {
|
|
@@ -23415,7 +23489,7 @@ function createContainerRef(hostTNode, hostLView) {
|
|
|
23415
23489
|
// comment and we can reuse that comment as anchor element for the new LContainer.
|
|
23416
23490
|
// The comment node in question is already part of the DOM structure so we don't need to append
|
|
23417
23491
|
// it again.
|
|
23418
|
-
if (hostTNode.type & 8 /* ElementContainer */) {
|
|
23492
|
+
if (hostTNode.type & 8 /* TNodeType.ElementContainer */) {
|
|
23419
23493
|
commentNode = unwrapRNode(slotValue);
|
|
23420
23494
|
}
|
|
23421
23495
|
else {
|
|
@@ -23611,7 +23685,7 @@ class TQuery_ {
|
|
|
23611
23685
|
}
|
|
23612
23686
|
isApplyingToNode(tNode) {
|
|
23613
23687
|
if (this._appliesToNextNode &&
|
|
23614
|
-
(this.metadata.flags & 1 /* descendants */) !== 1 /* descendants */) {
|
|
23688
|
+
(this.metadata.flags & 1 /* QueryFlags.descendants */) !== 1 /* QueryFlags.descendants */) {
|
|
23615
23689
|
const declarationNodeIdx = this._declarationNodeIndex;
|
|
23616
23690
|
let parent = tNode.parent;
|
|
23617
23691
|
// Determine if a given TNode is a "direct" child of a node on which a content query was
|
|
@@ -23624,7 +23698,7 @@ class TQuery_ {
|
|
|
23624
23698
|
// - <needs-target><ng-container><i #target></i></ng-container></needs-target>: here we need
|
|
23625
23699
|
// to go past `<ng-container>` to determine <i #target> parent node (but we shouldn't traverse
|
|
23626
23700
|
// up past the query's host node!).
|
|
23627
|
-
while (parent !== null && (parent.type & 8 /* ElementContainer */) &&
|
|
23701
|
+
while (parent !== null && (parent.type & 8 /* TNodeType.ElementContainer */) &&
|
|
23628
23702
|
parent.index !== declarationNodeIdx) {
|
|
23629
23703
|
parent = parent.parent;
|
|
23630
23704
|
}
|
|
@@ -23644,7 +23718,7 @@ class TQuery_ {
|
|
|
23644
23718
|
}
|
|
23645
23719
|
else {
|
|
23646
23720
|
if (predicate === TemplateRef) {
|
|
23647
|
-
if (tNode.type & 4 /* Container */) {
|
|
23721
|
+
if (tNode.type & 4 /* TNodeType.Container */) {
|
|
23648
23722
|
this.matchTNodeWithReadOption(tView, tNode, -1);
|
|
23649
23723
|
}
|
|
23650
23724
|
}
|
|
@@ -23658,7 +23732,7 @@ class TQuery_ {
|
|
|
23658
23732
|
const read = this.metadata.read;
|
|
23659
23733
|
if (read !== null) {
|
|
23660
23734
|
if (read === ElementRef || read === ViewContainerRef ||
|
|
23661
|
-
read === TemplateRef && (tNode.type & 4 /* Container */)) {
|
|
23735
|
+
read === TemplateRef && (tNode.type & 4 /* TNodeType.Container */)) {
|
|
23662
23736
|
this.addMatch(tNode.index, -2);
|
|
23663
23737
|
}
|
|
23664
23738
|
else {
|
|
@@ -23702,10 +23776,10 @@ function getIdxOfMatchingSelector(tNode, selector) {
|
|
|
23702
23776
|
return null;
|
|
23703
23777
|
}
|
|
23704
23778
|
function createResultByTNodeType(tNode, currentView) {
|
|
23705
|
-
if (tNode.type & (3 /* AnyRNode */ | 8 /* ElementContainer */)) {
|
|
23779
|
+
if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {
|
|
23706
23780
|
return createElementRef(tNode, currentView);
|
|
23707
23781
|
}
|
|
23708
|
-
else if (tNode.type & 4 /* Container */) {
|
|
23782
|
+
else if (tNode.type & 4 /* TNodeType.Container */) {
|
|
23709
23783
|
return createTemplateRef(tNode, currentView);
|
|
23710
23784
|
}
|
|
23711
23785
|
return null;
|
|
@@ -23732,7 +23806,7 @@ function createSpecialToken(lView, tNode, read) {
|
|
|
23732
23806
|
return createTemplateRef(tNode, lView);
|
|
23733
23807
|
}
|
|
23734
23808
|
else if (read === ViewContainerRef) {
|
|
23735
|
-
ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
|
|
23809
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
|
|
23736
23810
|
return createContainerRef(tNode, lView);
|
|
23737
23811
|
}
|
|
23738
23812
|
else {
|
|
@@ -23825,7 +23899,7 @@ function ɵɵqueryRefresh(queryList) {
|
|
|
23825
23899
|
const tQuery = getTQuery(tView, queryIndex);
|
|
23826
23900
|
if (queryList.dirty &&
|
|
23827
23901
|
(isCreationMode(lView) ===
|
|
23828
|
-
((tQuery.metadata.flags & 2 /* isStatic */) === 2 /* isStatic */))) {
|
|
23902
|
+
((tQuery.metadata.flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */))) {
|
|
23829
23903
|
if (tQuery.matches === null) {
|
|
23830
23904
|
queryList.reset([]);
|
|
23831
23905
|
}
|
|
@@ -23854,7 +23928,7 @@ function ɵɵviewQuery(predicate, flags, read) {
|
|
|
23854
23928
|
const tView = getTView();
|
|
23855
23929
|
if (tView.firstCreatePass) {
|
|
23856
23930
|
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
|
|
23857
|
-
if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
|
|
23931
|
+
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
23858
23932
|
tView.staticViewQueries = true;
|
|
23859
23933
|
}
|
|
23860
23934
|
}
|
|
@@ -23879,7 +23953,7 @@ function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
|
|
|
23879
23953
|
const tNode = getCurrentTNode();
|
|
23880
23954
|
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
|
|
23881
23955
|
saveContentQueryAndDirectiveIndex(tView, directiveIndex);
|
|
23882
|
-
if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
|
|
23956
|
+
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
23883
23957
|
tView.staticContentQueries = true;
|
|
23884
23958
|
}
|
|
23885
23959
|
}
|
|
@@ -23900,7 +23974,7 @@ function loadQueryInternal(lView, queryIndex) {
|
|
|
23900
23974
|
return lView[QUERIES].queries[queryIndex].queryList;
|
|
23901
23975
|
}
|
|
23902
23976
|
function createLQuery(tView, lView, flags) {
|
|
23903
|
-
const queryList = new QueryList((flags & 4 /* emitDistinctChangesOnly */) === 4 /* emitDistinctChangesOnly */);
|
|
23977
|
+
const queryList = new QueryList((flags & 4 /* QueryFlags.emitDistinctChangesOnly */) === 4 /* QueryFlags.emitDistinctChangesOnly */);
|
|
23904
23978
|
storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
|
|
23905
23979
|
if (lView[QUERIES] === null)
|
|
23906
23980
|
lView[QUERIES] = new LQueries_();
|
|
@@ -24145,6 +24219,20 @@ function patchModuleCompilation() {
|
|
|
24145
24219
|
// Does nothing, but exists as a target for patching.
|
|
24146
24220
|
}
|
|
24147
24221
|
|
|
24222
|
+
/**
|
|
24223
|
+
* @license
|
|
24224
|
+
* Copyright Google LLC All Rights Reserved.
|
|
24225
|
+
*
|
|
24226
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
24227
|
+
* found in the LICENSE file at https://angular.io/license
|
|
24228
|
+
*/
|
|
24229
|
+
function isModuleWithProviders(value) {
|
|
24230
|
+
return value.ngModule !== undefined;
|
|
24231
|
+
}
|
|
24232
|
+
function isNgModule(value) {
|
|
24233
|
+
return !!getNgModuleDef(value);
|
|
24234
|
+
}
|
|
24235
|
+
|
|
24148
24236
|
/**
|
|
24149
24237
|
* @license
|
|
24150
24238
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -24232,7 +24320,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
|
|
|
24232
24320
|
// go into an infinite loop before we've reached the point where we throw all the errors.
|
|
24233
24321
|
throw new Error(`'${stringifyForError(moduleType)}' module can't import itself`);
|
|
24234
24322
|
}
|
|
24235
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
|
|
24323
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
|
|
24236
24324
|
ngModuleDef = compiler.compileNgModule(angularCoreEnv, `ng:///${moduleType.name}/ɵmod.js`, {
|
|
24237
24325
|
type: moduleType,
|
|
24238
24326
|
bootstrap: flatten(ngModule.bootstrap || EMPTY_ARRAY).map(resolveForwardRef),
|
|
@@ -24261,7 +24349,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
|
|
|
24261
24349
|
Object.defineProperty(moduleType, NG_FACTORY_DEF, {
|
|
24262
24350
|
get: () => {
|
|
24263
24351
|
if (ngFactoryDef === null) {
|
|
24264
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
|
|
24352
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
|
|
24265
24353
|
ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${moduleType.name}/ɵfac.js`, {
|
|
24266
24354
|
name: moduleType.name,
|
|
24267
24355
|
type: moduleType,
|
|
@@ -24290,7 +24378,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
|
|
|
24290
24378
|
(ngModule.exports || EMPTY_ARRAY).map(resolveForwardRef),
|
|
24291
24379
|
],
|
|
24292
24380
|
};
|
|
24293
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
|
|
24381
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
|
|
24294
24382
|
ngInjectorDef =
|
|
24295
24383
|
compiler.compileInjector(angularCoreEnv, `ng:///${moduleType.name}/ɵinj.js`, meta);
|
|
24296
24384
|
}
|
|
@@ -24307,7 +24395,7 @@ function isStandalone(type) {
|
|
|
24307
24395
|
function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
|
|
24308
24396
|
if (verifiedNgModule.get(moduleType))
|
|
24309
24397
|
return;
|
|
24310
|
-
// skip verifications of standalone components,
|
|
24398
|
+
// skip verifications of standalone components, directives and pipes
|
|
24311
24399
|
if (isStandalone(moduleType))
|
|
24312
24400
|
return;
|
|
24313
24401
|
verifiedNgModule.set(moduleType, true);
|
|
@@ -24332,6 +24420,7 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24332
24420
|
const exports = maybeUnwrapFn(ngModuleDef.exports);
|
|
24333
24421
|
declarations.forEach(verifyDeclarationsHaveDefinitions);
|
|
24334
24422
|
declarations.forEach(verifyDirectivesHaveSelector);
|
|
24423
|
+
declarations.forEach((declarationType) => verifyNotStandalone(declarationType, moduleType));
|
|
24335
24424
|
const combinedDeclarations = [
|
|
24336
24425
|
...declarations.map(resolveForwardRef),
|
|
24337
24426
|
...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef),
|
|
@@ -24370,6 +24459,13 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24370
24459
|
errors.push(`Directive ${stringifyForError(type)} has no selector, please add it!`);
|
|
24371
24460
|
}
|
|
24372
24461
|
}
|
|
24462
|
+
function verifyNotStandalone(type, moduleType) {
|
|
24463
|
+
type = resolveForwardRef(type);
|
|
24464
|
+
const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
|
|
24465
|
+
if (def?.standalone) {
|
|
24466
|
+
errors.push(`Unexpected "${stringifyForError(type)}" declaration in "${stringifyForError(moduleType)}" NgModule. "${stringifyForError(type)}" is marked as standalone and can't be declared in any NgModule - did you intend to import it?`);
|
|
24467
|
+
}
|
|
24468
|
+
}
|
|
24373
24469
|
function verifyExportsAreDeclaredOrReExported(type) {
|
|
24374
24470
|
type = resolveForwardRef(type);
|
|
24375
24471
|
const kind = getComponentDef(type) && 'component' || getDirectiveDef(type) && 'directive' ||
|
|
@@ -24402,7 +24498,7 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24402
24498
|
function verifyComponentIsPartOfNgModule(type) {
|
|
24403
24499
|
type = resolveForwardRef(type);
|
|
24404
24500
|
const existingModule = ownerNgModule.get(type);
|
|
24405
|
-
if (!existingModule) {
|
|
24501
|
+
if (!existingModule && !isStandalone(type)) {
|
|
24406
24502
|
errors.push(`Component ${stringifyForError(type)} is not part of any NgModule or the module has not been imported into your module.`);
|
|
24407
24503
|
}
|
|
24408
24504
|
}
|
|
@@ -24411,6 +24507,13 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24411
24507
|
if (!getComponentDef(type)) {
|
|
24412
24508
|
errors.push(`${stringifyForError(type)} cannot be used as an entry component.`);
|
|
24413
24509
|
}
|
|
24510
|
+
if (isStandalone(type)) {
|
|
24511
|
+
// Note: this error should be the same as the
|
|
24512
|
+
// `NGMODULE_BOOTSTRAP_IS_STANDALONE` one in AOT compiler.
|
|
24513
|
+
errors.push(`The \`${stringifyForError(type)}\` class is a standalone component, which can ` +
|
|
24514
|
+
`not be used in the \`@NgModule.bootstrap\` array. Use the \`bootstrapApplication\` ` +
|
|
24515
|
+
`function for bootstrap instead.`);
|
|
24516
|
+
}
|
|
24414
24517
|
}
|
|
24415
24518
|
function verifyComponentEntryComponentsIsPartOfNgModule(type) {
|
|
24416
24519
|
type = resolveForwardRef(type);
|
|
@@ -24654,12 +24757,6 @@ function expandModuleWithProviders(value) {
|
|
|
24654
24757
|
}
|
|
24655
24758
|
return value;
|
|
24656
24759
|
}
|
|
24657
|
-
function isModuleWithProviders(value) {
|
|
24658
|
-
return value.ngModule !== undefined;
|
|
24659
|
-
}
|
|
24660
|
-
function isNgModule(value) {
|
|
24661
|
-
return !!getNgModuleDef(value);
|
|
24662
|
-
}
|
|
24663
24760
|
|
|
24664
24761
|
/**
|
|
24665
24762
|
* @license
|
|
@@ -24705,7 +24802,7 @@ function compileComponent(type, metadata) {
|
|
|
24705
24802
|
Object.defineProperty(type, NG_COMP_DEF, {
|
|
24706
24803
|
get: () => {
|
|
24707
24804
|
if (ngComponentDef === null) {
|
|
24708
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'component', type: type });
|
|
24805
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'component', type: type });
|
|
24709
24806
|
if (componentNeedsResolution(metadata)) {
|
|
24710
24807
|
const error = [`Component '${type.name}' is not resolved:`];
|
|
24711
24808
|
if (metadata.templateUrl) {
|
|
@@ -24816,6 +24913,41 @@ function compileComponent(type, metadata) {
|
|
|
24816
24913
|
configurable: !!ngDevMode,
|
|
24817
24914
|
});
|
|
24818
24915
|
}
|
|
24916
|
+
function getDependencyTypeForError(type) {
|
|
24917
|
+
if (getComponentDef(type))
|
|
24918
|
+
return 'component';
|
|
24919
|
+
if (getDirectiveDef(type))
|
|
24920
|
+
return 'directive';
|
|
24921
|
+
if (getPipeDef$1(type))
|
|
24922
|
+
return 'pipe';
|
|
24923
|
+
return 'type';
|
|
24924
|
+
}
|
|
24925
|
+
function verifyStandaloneImport(depType, importingType) {
|
|
24926
|
+
if (isForwardRef(depType)) {
|
|
24927
|
+
depType = resolveForwardRef(depType);
|
|
24928
|
+
if (!depType) {
|
|
24929
|
+
throw new Error(`Expected forwardRef function, imported from "${stringifyForError(importingType)}", to return a standalone entity or NgModule but got "${stringifyForError(depType) || depType}".`);
|
|
24930
|
+
}
|
|
24931
|
+
}
|
|
24932
|
+
if (getNgModuleDef(depType) == null) {
|
|
24933
|
+
const def = getComponentDef(depType) || getDirectiveDef(depType) || getPipeDef$1(depType);
|
|
24934
|
+
if (def != null) {
|
|
24935
|
+
// if a component, directive or pipe is imported make sure that it is standalone
|
|
24936
|
+
if (!def.standalone) {
|
|
24937
|
+
throw new Error(`The "${stringifyForError(depType)}" ${getDependencyTypeForError(depType)}, imported from "${stringifyForError(importingType)}", is not standalone. Did you forget to add the standalone: true flag?`);
|
|
24938
|
+
}
|
|
24939
|
+
}
|
|
24940
|
+
else {
|
|
24941
|
+
// it can be either a module with provider or an unknown (not annotated) type
|
|
24942
|
+
if (isModuleWithProviders(depType)) {
|
|
24943
|
+
throw new Error(`A module with providers was imported from "${stringifyForError(importingType)}". Modules with providers are not supported in standalone components imports.`);
|
|
24944
|
+
}
|
|
24945
|
+
else {
|
|
24946
|
+
throw new Error(`The "${stringifyForError(depType)}" type, imported from "${stringifyForError(importingType)}", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`);
|
|
24947
|
+
}
|
|
24948
|
+
}
|
|
24949
|
+
}
|
|
24950
|
+
}
|
|
24819
24951
|
/**
|
|
24820
24952
|
* Build memoized `directiveDefs` and `pipeDefs` functions for the component definition of a
|
|
24821
24953
|
* standalone component, which process `imports` and filter out directives and pipes. The use of
|
|
@@ -24831,6 +24963,7 @@ function getStandaloneDefFunctions(type, imports) {
|
|
|
24831
24963
|
// definition in its `directiveDefs`.
|
|
24832
24964
|
cachedDirectiveDefs = [getComponentDef(type)];
|
|
24833
24965
|
for (const rawDep of imports) {
|
|
24966
|
+
ngDevMode && verifyStandaloneImport(rawDep, type);
|
|
24834
24967
|
const dep = resolveForwardRef(rawDep);
|
|
24835
24968
|
if (!!getNgModuleDef(dep)) {
|
|
24836
24969
|
const scope = transitiveScopesFor(dep);
|
|
@@ -24895,7 +25028,7 @@ function compileDirective(type, directive) {
|
|
|
24895
25028
|
// that use `@Directive()` with no selector. In that case, pass empty object to the
|
|
24896
25029
|
// `directiveMetadata` function instead of null.
|
|
24897
25030
|
const meta = getDirectiveMetadata(type, directive || {});
|
|
24898
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
|
|
25031
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
|
|
24899
25032
|
ngDirectiveDef =
|
|
24900
25033
|
compiler.compileDirective(angularCoreEnv, meta.sourceMapUrl, meta.metadata);
|
|
24901
25034
|
}
|
|
@@ -24908,7 +25041,7 @@ function compileDirective(type, directive) {
|
|
|
24908
25041
|
function getDirectiveMetadata(type, metadata) {
|
|
24909
25042
|
const name = type && type.name;
|
|
24910
25043
|
const sourceMapUrl = `ng:///${name}/ɵdir.js`;
|
|
24911
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
|
|
25044
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
|
|
24912
25045
|
const facade = directiveMetadata(type, metadata);
|
|
24913
25046
|
facade.typeSourceSpan = compiler.createParseSourceSpan('Directive', name, sourceMapUrl);
|
|
24914
25047
|
if (facade.usesInheritance) {
|
|
@@ -24922,7 +25055,7 @@ function addDirectiveFactoryDef(type, metadata) {
|
|
|
24922
25055
|
get: () => {
|
|
24923
25056
|
if (ngFactoryDef === null) {
|
|
24924
25057
|
const meta = getDirectiveMetadata(type, metadata);
|
|
24925
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
|
|
25058
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
|
|
24926
25059
|
ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${type.name}/ɵfac.js`, {
|
|
24927
25060
|
name: meta.metadata.name,
|
|
24928
25061
|
type: meta.metadata.type,
|
|
@@ -25074,7 +25207,7 @@ function compilePipe(type, meta) {
|
|
|
25074
25207
|
get: () => {
|
|
25075
25208
|
if (ngFactoryDef === null) {
|
|
25076
25209
|
const metadata = getPipeMetadata(type, meta);
|
|
25077
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'pipe', type: metadata.type });
|
|
25210
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });
|
|
25078
25211
|
ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${metadata.name}/ɵfac.js`, {
|
|
25079
25212
|
name: metadata.name,
|
|
25080
25213
|
type: metadata.type,
|
|
@@ -25092,7 +25225,7 @@ function compilePipe(type, meta) {
|
|
|
25092
25225
|
get: () => {
|
|
25093
25226
|
if (ngPipeDef === null) {
|
|
25094
25227
|
const metadata = getPipeMetadata(type, meta);
|
|
25095
|
-
const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'pipe', type: metadata.type });
|
|
25228
|
+
const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });
|
|
25096
25229
|
ngPipeDef =
|
|
25097
25230
|
compiler.compilePipe(angularCoreEnv, `ng:///${metadata.name}/ɵpipe.js`, metadata);
|
|
25098
25231
|
}
|
|
@@ -26546,7 +26679,7 @@ function compileNgModuleFactory(injector, options, moduleType) {
|
|
|
26546
26679
|
return Promise.resolve(moduleFactory);
|
|
26547
26680
|
}
|
|
26548
26681
|
const compiler = getCompilerFacade({
|
|
26549
|
-
usage: 0 /* Decorator */,
|
|
26682
|
+
usage: 0 /* JitCompilerUsage.Decorator */,
|
|
26550
26683
|
kind: 'NgModule',
|
|
26551
26684
|
type: moduleType,
|
|
26552
26685
|
});
|
|
@@ -26585,7 +26718,7 @@ function createPlatform(injector) {
|
|
|
26585
26718
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26586
26719
|
'There can be only one platform. Destroy the previous one to create a new one.' :
|
|
26587
26720
|
'';
|
|
26588
|
-
throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
|
|
26721
|
+
throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, errorMessage);
|
|
26589
26722
|
}
|
|
26590
26723
|
publishDefaultGlobalUtils();
|
|
26591
26724
|
_platformInjector = injector;
|
|
@@ -26641,7 +26774,7 @@ function bootstrapApplication(config) {
|
|
|
26641
26774
|
const appInjector = createEnvironmentInjector(allAppProviders, platformInjector, 'Environment Injector');
|
|
26642
26775
|
const exceptionHandler = appInjector.get(ErrorHandler, null);
|
|
26643
26776
|
if (NG_DEV_MODE && !exceptionHandler) {
|
|
26644
|
-
throw new RuntimeError(402 /* ERROR_HANDLER_NOT_FOUND */, 'No `ErrorHandler` found in the Dependency Injection tree.');
|
|
26777
|
+
throw new RuntimeError(402 /* RuntimeErrorCode.ERROR_HANDLER_NOT_FOUND */, 'No `ErrorHandler` found in the Dependency Injection tree.');
|
|
26645
26778
|
}
|
|
26646
26779
|
let onErrorSubscription;
|
|
26647
26780
|
ngZone.runOutsideAngular(() => {
|
|
@@ -26706,11 +26839,11 @@ function assertPlatform(requiredToken) {
|
|
|
26706
26839
|
const platform = getPlatform();
|
|
26707
26840
|
if (!platform) {
|
|
26708
26841
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ? 'No platform exists!' : '';
|
|
26709
|
-
throw new RuntimeError(401 /* PLATFORM_NOT_FOUND */, errorMessage);
|
|
26842
|
+
throw new RuntimeError(401 /* RuntimeErrorCode.PLATFORM_NOT_FOUND */, errorMessage);
|
|
26710
26843
|
}
|
|
26711
26844
|
if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
26712
26845
|
!platform.injector.get(requiredToken, null)) {
|
|
26713
|
-
throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, 'A platform with a different configuration has been created. Please destroy it first.');
|
|
26846
|
+
throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, 'A platform with a different configuration has been created. Please destroy it first.');
|
|
26714
26847
|
}
|
|
26715
26848
|
return platform;
|
|
26716
26849
|
}
|
|
@@ -26787,7 +26920,7 @@ class PlatformRef {
|
|
|
26787
26920
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26788
26921
|
'No ErrorHandler. Is platform module (BrowserModule) included?' :
|
|
26789
26922
|
'';
|
|
26790
|
-
throw new RuntimeError(402 /* ERROR_HANDLER_NOT_FOUND */, errorMessage);
|
|
26923
|
+
throw new RuntimeError(402 /* RuntimeErrorCode.ERROR_HANDLER_NOT_FOUND */, errorMessage);
|
|
26791
26924
|
}
|
|
26792
26925
|
ngZone.runOutsideAngular(() => {
|
|
26793
26926
|
const subscription = ngZone.onError.subscribe({
|
|
@@ -26848,7 +26981,7 @@ class PlatformRef {
|
|
|
26848
26981
|
`but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. ` +
|
|
26849
26982
|
`Please define one of these.` :
|
|
26850
26983
|
'';
|
|
26851
|
-
throw new RuntimeError(403 /* BOOTSTRAP_COMPONENTS_NOT_FOUND */, errorMessage);
|
|
26984
|
+
throw new RuntimeError(403 /* RuntimeErrorCode.BOOTSTRAP_COMPONENTS_NOT_FOUND */, errorMessage);
|
|
26852
26985
|
}
|
|
26853
26986
|
this._modules.push(moduleRef);
|
|
26854
26987
|
}
|
|
@@ -26874,7 +27007,7 @@ class PlatformRef {
|
|
|
26874
27007
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26875
27008
|
'The platform has already been destroyed!' :
|
|
26876
27009
|
'';
|
|
26877
|
-
throw new RuntimeError(404 /* PLATFORM_ALREADY_DESTROYED */, errorMessage);
|
|
27010
|
+
throw new RuntimeError(404 /* RuntimeErrorCode.PLATFORM_ALREADY_DESTROYED */, errorMessage);
|
|
26878
27011
|
}
|
|
26879
27012
|
this._modules.slice().forEach(module => module.destroy());
|
|
26880
27013
|
this._destroyListeners.forEach(listener => listener());
|
|
@@ -27114,6 +27247,10 @@ class ApplicationRef {
|
|
|
27114
27247
|
get destroyed() {
|
|
27115
27248
|
return this._destroyed;
|
|
27116
27249
|
}
|
|
27250
|
+
/** @internal */
|
|
27251
|
+
get injector() {
|
|
27252
|
+
return this._injector;
|
|
27253
|
+
}
|
|
27117
27254
|
/**
|
|
27118
27255
|
* Bootstrap a component onto the element identified by its selector or, optionally, to a
|
|
27119
27256
|
* specified element.
|
|
@@ -27159,7 +27296,7 @@ class ApplicationRef {
|
|
|
27159
27296
|
const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +
|
|
27160
27297
|
(standalone ? '' :
|
|
27161
27298
|
' Bootstrap components in the `ngDoBootstrap` method of the root module.');
|
|
27162
|
-
throw new RuntimeError(405 /* ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
|
|
27299
|
+
throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
|
|
27163
27300
|
}
|
|
27164
27301
|
let componentFactory;
|
|
27165
27302
|
if (isComponentFactory) {
|
|
@@ -27210,7 +27347,7 @@ class ApplicationRef {
|
|
|
27210
27347
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
27211
27348
|
'ApplicationRef.tick is called recursively' :
|
|
27212
27349
|
'';
|
|
27213
|
-
throw new RuntimeError(101 /* RECURSIVE_APPLICATION_REF_TICK */, errorMessage);
|
|
27350
|
+
throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, errorMessage);
|
|
27214
27351
|
}
|
|
27215
27352
|
try {
|
|
27216
27353
|
this._runningTick = true;
|
|
@@ -27292,9 +27429,14 @@ class ApplicationRef {
|
|
|
27292
27429
|
this._destroyListeners.push(callback);
|
|
27293
27430
|
return () => remove(this._destroyListeners, callback);
|
|
27294
27431
|
}
|
|
27432
|
+
/**
|
|
27433
|
+
* Destroys an Angular application represented by this `ApplicationRef`. Calling this function
|
|
27434
|
+
* will destroy the associated environnement injectors as well as all the bootstrapped components
|
|
27435
|
+
* with their views.
|
|
27436
|
+
*/
|
|
27295
27437
|
destroy() {
|
|
27296
27438
|
if (this._destroyed) {
|
|
27297
|
-
throw new RuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, NG_DEV_MODE && 'This instance of the `ApplicationRef` has already been destroyed.');
|
|
27439
|
+
throw new RuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, NG_DEV_MODE && 'This instance of the `ApplicationRef` has already been destroyed.');
|
|
27298
27440
|
}
|
|
27299
27441
|
const injector = this._injector;
|
|
27300
27442
|
// Check that this injector instance supports destroy operation.
|
|
@@ -27312,7 +27454,7 @@ class ApplicationRef {
|
|
|
27312
27454
|
}
|
|
27313
27455
|
warnIfDestroyed() {
|
|
27314
27456
|
if (NG_DEV_MODE && this._destroyed) {
|
|
27315
|
-
console.warn(formatRuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
27457
|
+
console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
27316
27458
|
}
|
|
27317
27459
|
}
|
|
27318
27460
|
}
|
|
@@ -27504,7 +27646,7 @@ class ChangeDetectorRef {
|
|
|
27504
27646
|
ChangeDetectorRef.__NG_ELEMENT_ID__ = injectChangeDetectorRef;
|
|
27505
27647
|
/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
|
|
27506
27648
|
function injectChangeDetectorRef(flags) {
|
|
27507
|
-
return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* ForPipe */) === 16 /* ForPipe */);
|
|
27649
|
+
return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* InternalInjectFlags.ForPipe */) === 16 /* InternalInjectFlags.ForPipe */);
|
|
27508
27650
|
}
|
|
27509
27651
|
/**
|
|
27510
27652
|
* Creates a ViewRef and stores it on the injector as ChangeDetectorRef (public alias).
|
|
@@ -27521,7 +27663,7 @@ function createViewRef(tNode, lView, isPipe) {
|
|
|
27521
27663
|
const componentView = getComponentLViewByIndex(tNode.index, lView); // look down
|
|
27522
27664
|
return new ViewRef$1(componentView, componentView);
|
|
27523
27665
|
}
|
|
27524
|
-
else if (tNode.type & (3 /* AnyRNode */ | 12 /* AnyContainer */ | 32 /* Icu */)) {
|
|
27666
|
+
else if (tNode.type & (3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */)) {
|
|
27525
27667
|
// The LView represents the location where the injection is requested from.
|
|
27526
27668
|
// We need to locate the containing LView (in case where the `lView` is an embedded view)
|
|
27527
27669
|
const hostComponentView = lView[DECLARATION_COMPONENT_VIEW]; // look up
|
|
@@ -27996,7 +28138,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
|
|
|
27996
28138
|
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
27997
28139
|
const nativeNode = getNativeByTNodeOrNull(tNode, lView);
|
|
27998
28140
|
// For each type of TNode, specific logic is executed.
|
|
27999
|
-
if (tNode.type & (3 /* AnyRNode */ | 8 /* ElementContainer */)) {
|
|
28141
|
+
if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {
|
|
28000
28142
|
// Case 1: the TNode is an element
|
|
28001
28143
|
// The native node has to be checked.
|
|
28002
28144
|
_addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
|
|
@@ -28030,7 +28172,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
|
|
|
28030
28172
|
_queryNodeChildrenInContainer(nodeOrContainer, predicate, matches, elementsOnly, rootNativeNode);
|
|
28031
28173
|
}
|
|
28032
28174
|
}
|
|
28033
|
-
else if (tNode.type & 4 /* Container */) {
|
|
28175
|
+
else if (tNode.type & 4 /* TNodeType.Container */) {
|
|
28034
28176
|
// Case 2: the TNode is a container
|
|
28035
28177
|
// The native node has to be checked.
|
|
28036
28178
|
const lContainer = lView[tNode.index];
|
|
@@ -28038,7 +28180,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
|
|
|
28038
28180
|
// Each view inside the container has to be processed.
|
|
28039
28181
|
_queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode);
|
|
28040
28182
|
}
|
|
28041
|
-
else if (tNode.type & 16 /* Projection */) {
|
|
28183
|
+
else if (tNode.type & 16 /* TNodeType.Projection */) {
|
|
28042
28184
|
// Case 3: the TNode is a projection insertion point (i.e. a <ng-content>).
|
|
28043
28185
|
// The nodes projected at this location all need to be processed.
|
|
28044
28186
|
const componentView = lView[DECLARATION_COMPONENT_VIEW];
|
|
@@ -28063,7 +28205,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
|
|
|
28063
28205
|
if (rootNativeNode !== nativeNode) {
|
|
28064
28206
|
// To determine the next node to be processed, we need to use the next or the projectionNext
|
|
28065
28207
|
// link, depending on whether the current node has been projected.
|
|
28066
|
-
const nextTNode = (tNode.flags & 4 /* isProjected */) ? tNode.projectionNext : tNode.next;
|
|
28208
|
+
const nextTNode = (tNode.flags & 4 /* TNodeFlags.isProjected */) ? tNode.projectionNext : tNode.next;
|
|
28067
28209
|
if (nextTNode) {
|
|
28068
28210
|
_queryNodeChildren(nextTNode, lView, predicate, matches, elementsOnly, rootNativeNode);
|
|
28069
28211
|
}
|
|
@@ -28334,7 +28476,7 @@ class DefaultIterableDiffer {
|
|
|
28334
28476
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
28335
28477
|
`Error trying to diff '${stringify(collection)}'. Only arrays and iterables are allowed` :
|
|
28336
28478
|
'';
|
|
28337
|
-
throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
|
|
28479
|
+
throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
|
|
28338
28480
|
}
|
|
28339
28481
|
if (this.check(collection)) {
|
|
28340
28482
|
return this;
|
|
@@ -28938,7 +29080,7 @@ class DefaultKeyValueDiffer {
|
|
|
28938
29080
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
28939
29081
|
`Error trying to diff '${stringify(map)}'. Only maps and objects are allowed` :
|
|
28940
29082
|
'';
|
|
28941
|
-
throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
|
|
29083
|
+
throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
|
|
28942
29084
|
}
|
|
28943
29085
|
return this.check(map) ? this : null;
|
|
28944
29086
|
}
|
|
@@ -29188,7 +29330,7 @@ class IterableDiffers {
|
|
|
29188
29330
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
29189
29331
|
`Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'` :
|
|
29190
29332
|
'';
|
|
29191
|
-
throw new RuntimeError(901 /* NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
|
|
29333
|
+
throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
|
|
29192
29334
|
}
|
|
29193
29335
|
}
|
|
29194
29336
|
}
|
|
@@ -29265,7 +29407,7 @@ class KeyValueDiffers {
|
|
|
29265
29407
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
29266
29408
|
`Cannot find a differ supporting object '${kv}'` :
|
|
29267
29409
|
'';
|
|
29268
|
-
throw new RuntimeError(901 /* NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
|
|
29410
|
+
throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
|
|
29269
29411
|
}
|
|
29270
29412
|
}
|
|
29271
29413
|
/** @nocollapse */
|
|
@@ -29371,7 +29513,7 @@ const ɵivyEnabled = true;
|
|
|
29371
29513
|
* @codeGenApi
|
|
29372
29514
|
*/
|
|
29373
29515
|
function ɵɵngDeclareDirective(decl) {
|
|
29374
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'directive', type: decl.type });
|
|
29516
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'directive', type: decl.type });
|
|
29375
29517
|
return compiler.compileDirectiveDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵfac.js`, decl);
|
|
29376
29518
|
}
|
|
29377
29519
|
/**
|
|
@@ -29388,7 +29530,7 @@ function ɵɵngDeclareClassMetadata(decl) {
|
|
|
29388
29530
|
* @codeGenApi
|
|
29389
29531
|
*/
|
|
29390
29532
|
function ɵɵngDeclareComponent(decl) {
|
|
29391
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'component', type: decl.type });
|
|
29533
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'component', type: decl.type });
|
|
29392
29534
|
return compiler.compileComponentDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵcmp.js`, decl);
|
|
29393
29535
|
}
|
|
29394
29536
|
/**
|
|
@@ -29398,7 +29540,7 @@ function ɵɵngDeclareComponent(decl) {
|
|
|
29398
29540
|
*/
|
|
29399
29541
|
function ɵɵngDeclareFactory(decl) {
|
|
29400
29542
|
const compiler = getCompilerFacade({
|
|
29401
|
-
usage: 1 /* PartialDeclaration */,
|
|
29543
|
+
usage: 1 /* JitCompilerUsage.PartialDeclaration */,
|
|
29402
29544
|
kind: getFactoryKind(decl.target),
|
|
29403
29545
|
type: decl.type
|
|
29404
29546
|
});
|
|
@@ -29424,7 +29566,7 @@ function getFactoryKind(target) {
|
|
|
29424
29566
|
* @codeGenApi
|
|
29425
29567
|
*/
|
|
29426
29568
|
function ɵɵngDeclareInjectable(decl) {
|
|
29427
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'injectable', type: decl.type });
|
|
29569
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'injectable', type: decl.type });
|
|
29428
29570
|
return compiler.compileInjectableDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵprov.js`, decl);
|
|
29429
29571
|
}
|
|
29430
29572
|
/**
|
|
@@ -29433,7 +29575,7 @@ function ɵɵngDeclareInjectable(decl) {
|
|
|
29433
29575
|
* @codeGenApi
|
|
29434
29576
|
*/
|
|
29435
29577
|
function ɵɵngDeclareInjector(decl) {
|
|
29436
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'NgModule', type: decl.type });
|
|
29578
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });
|
|
29437
29579
|
return compiler.compileInjectorDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵinj.js`, decl);
|
|
29438
29580
|
}
|
|
29439
29581
|
/**
|
|
@@ -29442,7 +29584,7 @@ function ɵɵngDeclareInjector(decl) {
|
|
|
29442
29584
|
* @codeGenApi
|
|
29443
29585
|
*/
|
|
29444
29586
|
function ɵɵngDeclareNgModule(decl) {
|
|
29445
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'NgModule', type: decl.type });
|
|
29587
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });
|
|
29446
29588
|
return compiler.compileNgModuleDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵmod.js`, decl);
|
|
29447
29589
|
}
|
|
29448
29590
|
/**
|
|
@@ -29451,7 +29593,7 @@ function ɵɵngDeclareNgModule(decl) {
|
|
|
29451
29593
|
* @codeGenApi
|
|
29452
29594
|
*/
|
|
29453
29595
|
function ɵɵngDeclarePipe(decl) {
|
|
29454
|
-
const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'pipe', type: decl.type });
|
|
29596
|
+
const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'pipe', type: decl.type });
|
|
29455
29597
|
return compiler.compilePipeDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵpipe.js`, decl);
|
|
29456
29598
|
}
|
|
29457
29599
|
|
|
@@ -29505,5 +29647,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
29505
29647
|
* Generated bundle index. Do not edit.
|
|
29506
29648
|
*/
|
|
29507
29649
|
|
|
29508
|
-
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, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR,
|
|
29650
|
+
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, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, 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, createEnvironmentInjector, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, 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, bootstrapApplication as ɵbootstrapApplication, 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, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, 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, renderComponent as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, 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, ɵɵStandaloneFeature, ɵɵ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, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵ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 };
|
|
29509
29651
|
//# sourceMappingURL=core.mjs.map
|