@angular/core 19.2.0-rc.0 → 19.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/core.mjs +510 -335
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/di.mjs +45 -0
- package/fesm2022/primitives/di.mjs.map +1 -0
- package/fesm2022/primitives/event-dispatch.mjs +2 -2
- package/fesm2022/primitives/signals.mjs +2 -2
- package/fesm2022/rxjs-interop.mjs +2 -2
- package/fesm2022/testing.mjs +858 -6
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +221 -48
- package/package.json +5 -1
- package/primitives/di/index.d.ts +99 -0
- package/primitives/event-dispatch/index.d.ts +2 -2
- package/primitives/signals/index.d.ts +2 -2
- package/rxjs-interop/index.d.ts +2 -2
- package/schematics/bundles/{apply_import_manager-a930fcf1.js → apply_import_manager-b8d6885d.js} +4 -4
- package/schematics/bundles/{checker-2eecc677.js → checker-89987c98.js} +11 -15
- package/schematics/bundles/cleanup-unused-imports.js +8 -8
- package/schematics/bundles/{compiler_host-c280a924.js → compiler_host-2398e4ca.js} +3 -3
- package/schematics/bundles/control-flow-migration.js +4 -4
- package/schematics/bundles/explicit-standalone-flag.js +6 -6
- package/schematics/bundles/{imports-abe29092.js → imports-047fbbc8.js} +2 -2
- package/schematics/bundles/{index-3891dd55.js → index-10911843.js} +5 -5
- package/schematics/bundles/{index-24a2ad1e.js → index-e0b2e4a7.js} +5 -5
- package/schematics/bundles/inject-migration.js +8 -8
- package/schematics/bundles/{leading_space-d190b83b.js → leading_space-f8944434.js} +2 -2
- package/schematics/bundles/{migrate_ts_type_references-71b3a951.js → migrate_ts_type_references-52508cd4.js} +7 -7
- package/schematics/bundles/{ng_decorators-e699c081.js → ng_decorators-b0d8b324.js} +3 -3
- package/schematics/bundles/{nodes-a535b2be.js → nodes-7758dbf6.js} +2 -2
- package/schematics/bundles/output-migration.js +8 -8
- package/schematics/bundles/pending-tasks.js +6 -6
- package/schematics/bundles/{program-24da9092.js → program-0e1d4f10.js} +13 -13
- package/schematics/bundles/{project_paths-b073c4d6.js → project_paths-c48796dd.js} +4 -4
- package/schematics/bundles/{project_tsconfig_paths-e9ccccbf.js → project_tsconfig_paths-b558633b.js} +2 -2
- package/schematics/bundles/{property_name-7c8433f5.js → property_name-ac18447e.js} +2 -2
- package/schematics/bundles/provide-initializer.js +6 -6
- package/schematics/bundles/route-lazy-loading.js +6 -6
- package/schematics/bundles/self-closing-tags-migration.js +44 -28
- package/schematics/bundles/signal-input-migration.js +10 -10
- package/schematics/bundles/signal-queries-migration.js +10 -10
- package/schematics/bundles/signals.js +10 -10
- package/schematics/bundles/standalone-migration.js +10 -10
- package/testing/index.d.ts +309 -2
package/fesm2022/core.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.2.
|
|
3
|
-
* (c) 2010-
|
|
2
|
+
* @license Angular v19.2.1
|
|
3
|
+
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, getActiveConsumer as getActiveConsumer$1, setActiveConsumer as setActiveConsumer$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1, isInNotificationPhase as isInNotificationPhase$1, createLinkedSignal as createLinkedSignal$1, linkedSignalSetFn as linkedSignalSetFn$1, linkedSignalUpdateFn as linkedSignalUpdateFn$1 } from '@angular/core/primitives/signals';
|
|
8
8
|
export { SIGNAL as ɵSIGNAL } from '@angular/core/primitives/signals';
|
|
9
|
+
import * as di from '@angular/core/primitives/di';
|
|
9
10
|
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
|
|
10
11
|
import { Attribute as Attribute$1, clearAppScopedEarlyEventContract, EventContract, EventContractContainer, getAppScopedQueuedEventInfos, EventDispatcher, registerDispatcher, isEarlyEventType, isCaptureEventType, EventPhase } from '@angular/core/primitives/event-dispatch';
|
|
11
12
|
import { map } from 'rxjs/operators';
|
|
@@ -967,8 +968,9 @@ function stringifyTypeFromDebugInfo(debugInfo) {
|
|
|
967
968
|
|
|
968
969
|
/** Called when directives inject each other (creating a circular dependency) */
|
|
969
970
|
function throwCyclicDependencyError(token, path) {
|
|
970
|
-
|
|
971
|
-
|
|
971
|
+
throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, ngDevMode
|
|
972
|
+
? `Circular dependency in DI detected for ${token}${path ? `. Dependency path: ${path.join(' > ')} > ${token}` : ''}`
|
|
973
|
+
: token);
|
|
972
974
|
}
|
|
973
975
|
function throwMixedMultiProviderError() {
|
|
974
976
|
throw new Error(`Cannot mix multi providers and regular providers`);
|
|
@@ -1077,6 +1079,12 @@ function assertInjectImplementationNotEqual(fn) {
|
|
|
1077
1079
|
|
|
1078
1080
|
const _THROW_IF_NOT_FOUND = {};
|
|
1079
1081
|
const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
|
|
1082
|
+
function getCurrentInjector() {
|
|
1083
|
+
return di.getCurrentInjector();
|
|
1084
|
+
}
|
|
1085
|
+
function setCurrentInjector(injector) {
|
|
1086
|
+
return di.setCurrentInjector(injector);
|
|
1087
|
+
}
|
|
1080
1088
|
/*
|
|
1081
1089
|
* Name of a property (that we patch onto DI decorator), which is used as an annotation of which
|
|
1082
1090
|
* InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators
|
|
@@ -1088,31 +1096,16 @@ const NG_TOKEN_PATH = 'ngTokenPath';
|
|
|
1088
1096
|
const NEW_LINE = /\n/gm;
|
|
1089
1097
|
const NO_NEW_LINE = 'ɵ';
|
|
1090
1098
|
const SOURCE = '__source';
|
|
1091
|
-
/**
|
|
1092
|
-
* Current injector value used by `inject`.
|
|
1093
|
-
* - `undefined`: it is an error to call `inject`
|
|
1094
|
-
* - `null`: `inject` can be called but there is no injector (limp-mode).
|
|
1095
|
-
* - Injector instance: Use the injector for resolution.
|
|
1096
|
-
*/
|
|
1097
|
-
let _currentInjector = undefined;
|
|
1098
|
-
function getCurrentInjector() {
|
|
1099
|
-
return _currentInjector;
|
|
1100
|
-
}
|
|
1101
|
-
function setCurrentInjector(injector) {
|
|
1102
|
-
const former = _currentInjector;
|
|
1103
|
-
_currentInjector = injector;
|
|
1104
|
-
return former;
|
|
1105
|
-
}
|
|
1106
1099
|
function injectInjectorOnly(token, flags = InjectFlags.Default) {
|
|
1107
|
-
if (
|
|
1100
|
+
if (getCurrentInjector() === undefined) {
|
|
1108
1101
|
throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
|
|
1109
1102
|
`inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`);
|
|
1110
1103
|
}
|
|
1111
|
-
else if (
|
|
1104
|
+
else if (getCurrentInjector() === null) {
|
|
1112
1105
|
return injectRootLimpMode(token, undefined, flags);
|
|
1113
1106
|
}
|
|
1114
1107
|
else {
|
|
1115
|
-
const value =
|
|
1108
|
+
const value = getCurrentInjector().get(token, flags & InjectFlags.Optional ? null : undefined, flags);
|
|
1116
1109
|
ngDevMode && emitInjectEvent(token, value, flags);
|
|
1117
1110
|
return value;
|
|
1118
1111
|
}
|
|
@@ -2311,7 +2304,7 @@ class R3Injector extends EnvironmentInjector {
|
|
|
2311
2304
|
hydrate(token, record) {
|
|
2312
2305
|
const prevConsumer = setActiveConsumer$1(null);
|
|
2313
2306
|
try {
|
|
2314
|
-
if (
|
|
2307
|
+
if (record.value === CIRCULAR) {
|
|
2315
2308
|
throwCyclicDependencyError(stringify(token));
|
|
2316
2309
|
}
|
|
2317
2310
|
else if (record.value === NOT_YET) {
|
|
@@ -4494,9 +4487,6 @@ class NodeInjectorFactory {
|
|
|
4494
4487
|
this.injectImpl = injectImplementation;
|
|
4495
4488
|
}
|
|
4496
4489
|
}
|
|
4497
|
-
function isFactory(obj) {
|
|
4498
|
-
return obj instanceof NodeInjectorFactory;
|
|
4499
|
-
}
|
|
4500
4490
|
|
|
4501
4491
|
/**
|
|
4502
4492
|
* Converts `TNodeType` into human readable text.
|
|
@@ -5434,7 +5424,7 @@ function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders,
|
|
|
5434
5424
|
function getNodeInjectable(lView, tView, index, tNode) {
|
|
5435
5425
|
let value = lView[index];
|
|
5436
5426
|
const tData = tView.data;
|
|
5437
|
-
if (
|
|
5427
|
+
if (value instanceof NodeInjectorFactory) {
|
|
5438
5428
|
const factory = value;
|
|
5439
5429
|
if (factory.resolving) {
|
|
5440
5430
|
throwCyclicDependencyError(stringifyForError(tData[index]));
|
|
@@ -7106,23 +7096,6 @@ function unwrapElementRef(value) {
|
|
|
7106
7096
|
return value instanceof ElementRef ? value.nativeElement : value;
|
|
7107
7097
|
}
|
|
7108
7098
|
|
|
7109
|
-
const markedFeatures = new Set();
|
|
7110
|
-
// tslint:disable:ban
|
|
7111
|
-
/**
|
|
7112
|
-
* A guarded `performance.mark` for feature marking.
|
|
7113
|
-
*
|
|
7114
|
-
* This method exists because while all supported browser and node.js version supported by Angular
|
|
7115
|
-
* support performance.mark API. This is not the case for other environments such as JSDOM and
|
|
7116
|
-
* Cloudflare workers.
|
|
7117
|
-
*/
|
|
7118
|
-
function performanceMarkFeature(feature) {
|
|
7119
|
-
if (markedFeatures.has(feature)) {
|
|
7120
|
-
return;
|
|
7121
|
-
}
|
|
7122
|
-
markedFeatures.add(feature);
|
|
7123
|
-
performance?.mark?.('mark_feature_usage', { detail: { feature } });
|
|
7124
|
-
}
|
|
7125
|
-
|
|
7126
7099
|
/**
|
|
7127
7100
|
* Checks if the given `value` is a reactive `Signal`.
|
|
7128
7101
|
*/
|
|
@@ -7145,7 +7118,6 @@ function ɵunwrapWritableSignal(value) {
|
|
|
7145
7118
|
* Create a `Signal` that can be set or updated directly.
|
|
7146
7119
|
*/
|
|
7147
7120
|
function signal(initialValue, options) {
|
|
7148
|
-
performanceMarkFeature('NgSignals');
|
|
7149
7121
|
const signalFn = createSignal$1(initialValue);
|
|
7150
7122
|
const node = signalFn[SIGNAL$1];
|
|
7151
7123
|
if (options?.equal) {
|
|
@@ -7404,8 +7376,8 @@ function isI18nInSkipHydrationBlock(parentTNode) {
|
|
|
7404
7376
|
* The strategy that the default change detector uses to detect changes.
|
|
7405
7377
|
* When set, takes effect the next time change detection is triggered.
|
|
7406
7378
|
*
|
|
7407
|
-
* @see
|
|
7408
|
-
* @see
|
|
7379
|
+
* @see {@link /api/core/ChangeDetectorRef?tab=usage-notes Change detection usage}
|
|
7380
|
+
* @see {@link /best-practices/skipping-subtrees Skipping component subtrees}
|
|
7409
7381
|
*
|
|
7410
7382
|
* @publicApi
|
|
7411
7383
|
*/
|
|
@@ -8625,9 +8597,26 @@ var TracingAction;
|
|
|
8625
8597
|
*/
|
|
8626
8598
|
const TracingService = new InjectionToken(ngDevMode ? 'TracingService' : '');
|
|
8627
8599
|
|
|
8600
|
+
const markedFeatures = new Set();
|
|
8601
|
+
// tslint:disable:ban
|
|
8602
|
+
/**
|
|
8603
|
+
* A guarded `performance.mark` for feature marking.
|
|
8604
|
+
*
|
|
8605
|
+
* This method exists because while all supported browser and node.js version supported by Angular
|
|
8606
|
+
* support performance.mark API. This is not the case for other environments such as JSDOM and
|
|
8607
|
+
* Cloudflare workers.
|
|
8608
|
+
*/
|
|
8609
|
+
function performanceMarkFeature(feature) {
|
|
8610
|
+
if (markedFeatures.has(feature)) {
|
|
8611
|
+
return;
|
|
8612
|
+
}
|
|
8613
|
+
markedFeatures.add(feature);
|
|
8614
|
+
performance?.mark?.('mark_feature_usage', { detail: { feature } });
|
|
8615
|
+
}
|
|
8616
|
+
|
|
8628
8617
|
/**
|
|
8629
8618
|
* Asserts that the current stack frame is not within a reactive context. Useful
|
|
8630
|
-
* to disallow certain code from running inside a reactive context (see {@link toSignal})
|
|
8619
|
+
* to disallow certain code from running inside a reactive context (see {@link /api/core/rxjs/toSignal toSignal})
|
|
8631
8620
|
*
|
|
8632
8621
|
* @param debugFn a reference to the function making the assertion (used for the error message).
|
|
8633
8622
|
*
|
|
@@ -9469,15 +9458,6 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
|
|
|
9469
9458
|
}
|
|
9470
9459
|
|
|
9471
9460
|
const DEFER_BLOCK_SSR_ID_ATTRIBUTE = 'ngb';
|
|
9472
|
-
function invokeRegisteredDelegationListeners(event) {
|
|
9473
|
-
const handlerFns = event.currentTarget?.__jsaction_fns?.get(event.type);
|
|
9474
|
-
if (!handlerFns) {
|
|
9475
|
-
return;
|
|
9476
|
-
}
|
|
9477
|
-
for (const handler of handlerFns) {
|
|
9478
|
-
handler(event);
|
|
9479
|
-
}
|
|
9480
|
-
}
|
|
9481
9461
|
function setJSActionAttributes(nativeElement, eventTypes, parentDeferBlockId = null) {
|
|
9482
9462
|
// jsaction attributes specifically should be applied to elements and not comment nodes.
|
|
9483
9463
|
// Comment nodes also have no setAttribute function. So this avoids errors.
|
|
@@ -9508,8 +9488,8 @@ const sharedStashFunction = (rEl, eventType, listenerFn) => {
|
|
|
9508
9488
|
el.__jsaction_fns = eventListenerMap;
|
|
9509
9489
|
};
|
|
9510
9490
|
const sharedMapFunction = (rEl, jsActionMap) => {
|
|
9511
|
-
let blockName = rEl.getAttribute(DEFER_BLOCK_SSR_ID_ATTRIBUTE) ?? '';
|
|
9512
9491
|
const el = rEl;
|
|
9492
|
+
let blockName = el.getAttribute(DEFER_BLOCK_SSR_ID_ATTRIBUTE) ?? '';
|
|
9513
9493
|
const blockSet = jsActionMap.get(blockName) ?? new Set();
|
|
9514
9494
|
if (!blockSet.has(el)) {
|
|
9515
9495
|
blockSet.add(el);
|
|
@@ -9539,7 +9519,7 @@ const JSACTION_EVENT_CONTRACT = new InjectionToken(ngDevMode ? 'EVENT_CONTRACT_D
|
|
|
9539
9519
|
});
|
|
9540
9520
|
function invokeListeners(event, currentTarget) {
|
|
9541
9521
|
const handlerFns = currentTarget?.__jsaction_fns?.get(event.type);
|
|
9542
|
-
if (!handlerFns) {
|
|
9522
|
+
if (!handlerFns || !currentTarget?.isConnected) {
|
|
9543
9523
|
return;
|
|
9544
9524
|
}
|
|
9545
9525
|
for (const handler of handlerFns) {
|
|
@@ -10188,7 +10168,7 @@ function executeContentQueries(tView, tNode, lView) {
|
|
|
10188
10168
|
}
|
|
10189
10169
|
|
|
10190
10170
|
/**
|
|
10191
|
-
* Defines the CSS styles encapsulation policies for the {@link Component} decorator's
|
|
10171
|
+
* Defines the CSS styles encapsulation policies for the {@link /api/core/Component Component} decorator's
|
|
10192
10172
|
* `encapsulation` option.
|
|
10193
10173
|
*
|
|
10194
10174
|
* See {@link Component#encapsulation encapsulation}.
|
|
@@ -12500,7 +12480,7 @@ function writeToDirectiveInput(def, instance, publicName, value) {
|
|
|
12500
12480
|
// Usually we resolve the directive instance using `LView[someIndex]` before writing to an
|
|
12501
12481
|
// input, however if the read happens to early, the `LView[someIndex]` might actually be a
|
|
12502
12482
|
// `NodeInjectorFactory`. Check for this specific case here since it can break in subtle ways.
|
|
12503
|
-
if (
|
|
12483
|
+
if (instance instanceof NodeInjectorFactory) {
|
|
12504
12484
|
throw new Error(`ASSERTION ERROR: Cannot write input to factory for type ${def.type.name}. Directive has not been created yet.`);
|
|
12505
12485
|
}
|
|
12506
12486
|
}
|
|
@@ -12559,15 +12539,6 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
|
12559
12539
|
profiler(postHookType, context);
|
|
12560
12540
|
}
|
|
12561
12541
|
}
|
|
12562
|
-
/**
|
|
12563
|
-
* Creates directive instances.
|
|
12564
|
-
*/
|
|
12565
|
-
function createDirectivesInstancesInInstruction(tView, lView, tNode) {
|
|
12566
|
-
if (!getBindingsEnabled())
|
|
12567
|
-
return;
|
|
12568
|
-
attachPatchData(getNativeByTNode(tNode, lView), lView);
|
|
12569
|
-
createDirectivesInstances(tView, lView, tNode);
|
|
12570
|
-
}
|
|
12571
12542
|
/**
|
|
12572
12543
|
* Creates directive instances.
|
|
12573
12544
|
*/
|
|
@@ -12685,17 +12656,15 @@ function mapPropName(name) {
|
|
|
12685
12656
|
}
|
|
12686
12657
|
function elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) {
|
|
12687
12658
|
ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
|
|
12688
|
-
|
|
12689
|
-
|
|
12690
|
-
|
|
12691
|
-
|
|
12692
|
-
|
|
12693
|
-
|
|
12694
|
-
if (ngDevMode) {
|
|
12695
|
-
setNgReflectProperties(lView, tView, tNode, dataValue, value);
|
|
12659
|
+
if (!nativeOnly) {
|
|
12660
|
+
const hasSetInput = setAllInputsForProperty(tNode, tView, lView, propName, value);
|
|
12661
|
+
if (hasSetInput) {
|
|
12662
|
+
isComponentHost(tNode) && markDirtyIfOnPush(lView, tNode.index);
|
|
12663
|
+
ngDevMode && setNgReflectProperties(lView, tView, tNode, propName, value);
|
|
12664
|
+
return; // Stop propcessing if we've matched at least one input.
|
|
12696
12665
|
}
|
|
12697
12666
|
}
|
|
12698
|
-
|
|
12667
|
+
if (tNode.type & 3 /* TNodeType.AnyRNode */) {
|
|
12699
12668
|
const element = getNativeByTNode(tNode, lView);
|
|
12700
12669
|
propName = mapPropName(propName);
|
|
12701
12670
|
if (ngDevMode) {
|
|
@@ -12744,14 +12713,25 @@ function setNgReflectProperty(lView, tNode, attrName, value) {
|
|
|
12744
12713
|
renderer.setValue(element, textContent);
|
|
12745
12714
|
}
|
|
12746
12715
|
}
|
|
12747
|
-
function setNgReflectProperties(lView, tView, tNode,
|
|
12748
|
-
if (tNode.type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {
|
|
12749
|
-
|
|
12750
|
-
|
|
12751
|
-
|
|
12752
|
-
|
|
12716
|
+
function setNgReflectProperties(lView, tView, tNode, publicName, value) {
|
|
12717
|
+
if (!(tNode.type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */))) {
|
|
12718
|
+
return;
|
|
12719
|
+
}
|
|
12720
|
+
const inputConfig = tNode.inputs?.[publicName];
|
|
12721
|
+
const hostInputConfig = tNode.hostDirectiveInputs?.[publicName];
|
|
12722
|
+
if (hostInputConfig) {
|
|
12723
|
+
for (let i = 0; i < hostInputConfig.length; i += 2) {
|
|
12724
|
+
const index = hostInputConfig[i];
|
|
12725
|
+
const publicName = hostInputConfig[i + 1];
|
|
12753
12726
|
const def = tView.data[index];
|
|
12754
|
-
setNgReflectProperty(lView, tNode, def.inputs[
|
|
12727
|
+
setNgReflectProperty(lView, tNode, def.inputs[publicName][0], value);
|
|
12728
|
+
}
|
|
12729
|
+
}
|
|
12730
|
+
// Note: we set the private name of the input as the reflected property, not the public one.
|
|
12731
|
+
if (inputConfig) {
|
|
12732
|
+
for (const index of inputConfig) {
|
|
12733
|
+
const def = tView.data[index];
|
|
12734
|
+
setNgReflectProperty(lView, tNode, def.inputs[publicName][0], value);
|
|
12755
12735
|
}
|
|
12756
12736
|
}
|
|
12757
12737
|
}
|
|
@@ -12920,7 +12900,7 @@ function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex,
|
|
|
12920
12900
|
// Since we don't have a concept of the "first update pass" we need to check for presence of the
|
|
12921
12901
|
// binding meta-data to decide if one should be stored (or if was stored already).
|
|
12922
12902
|
if (tData[bindingIndex] === null) {
|
|
12923
|
-
if (tNode.inputs
|
|
12903
|
+
if (!tNode.inputs?.[propertyName] && !tNode.hostDirectiveInputs?.[propertyName]) {
|
|
12924
12904
|
const propBindingIdxs = tNode.propertyBindings || (tNode.propertyBindings = []);
|
|
12925
12905
|
propBindingIdxs.push(bindingIndex);
|
|
12926
12906
|
let bindingMetadata = propertyName;
|
|
@@ -12955,23 +12935,88 @@ function handleError(lView, error) {
|
|
|
12955
12935
|
errorHandler && errorHandler.handleError(error);
|
|
12956
12936
|
}
|
|
12957
12937
|
/**
|
|
12958
|
-
* Set
|
|
12938
|
+
* Set all directive inputs with the specific public name on the node.
|
|
12959
12939
|
*
|
|
12960
|
-
* @param
|
|
12961
|
-
* @param
|
|
12962
|
-
* @param
|
|
12963
|
-
*
|
|
12940
|
+
* @param tNode TNode on which the input is being set.
|
|
12941
|
+
* @param tView Current TView
|
|
12942
|
+
* @param lView `LView` which contains the directives.
|
|
12943
|
+
* @param publicName Public name of the input being set.
|
|
12964
12944
|
* @param value Value to set.
|
|
12965
12945
|
*/
|
|
12966
|
-
function
|
|
12967
|
-
|
|
12968
|
-
|
|
12969
|
-
|
|
12970
|
-
|
|
12971
|
-
|
|
12972
|
-
|
|
12973
|
-
|
|
12946
|
+
function setAllInputsForProperty(tNode, tView, lView, publicName, value) {
|
|
12947
|
+
const inputs = tNode.inputs?.[publicName];
|
|
12948
|
+
const hostDirectiveInputs = tNode.hostDirectiveInputs?.[publicName];
|
|
12949
|
+
let hasMatch = false;
|
|
12950
|
+
if (hostDirectiveInputs) {
|
|
12951
|
+
for (let i = 0; i < hostDirectiveInputs.length; i += 2) {
|
|
12952
|
+
const index = hostDirectiveInputs[i];
|
|
12953
|
+
ngDevMode && assertIndexInRange(lView, index);
|
|
12954
|
+
const publicName = hostDirectiveInputs[i + 1];
|
|
12955
|
+
const def = tView.data[index];
|
|
12956
|
+
writeToDirectiveInput(def, lView[index], publicName, value);
|
|
12957
|
+
hasMatch = true;
|
|
12958
|
+
}
|
|
12974
12959
|
}
|
|
12960
|
+
if (inputs) {
|
|
12961
|
+
for (const index of inputs) {
|
|
12962
|
+
ngDevMode && assertIndexInRange(lView, index);
|
|
12963
|
+
const instance = lView[index];
|
|
12964
|
+
const def = tView.data[index];
|
|
12965
|
+
writeToDirectiveInput(def, instance, publicName, value);
|
|
12966
|
+
hasMatch = true;
|
|
12967
|
+
}
|
|
12968
|
+
}
|
|
12969
|
+
return hasMatch;
|
|
12970
|
+
}
|
|
12971
|
+
/**
|
|
12972
|
+
* Sets an input value only on a specific directive and its host directives.
|
|
12973
|
+
* @param tNode TNode on which the input is being set.
|
|
12974
|
+
* @param tView Current TView
|
|
12975
|
+
* @param lView `LView` which contains the directives.
|
|
12976
|
+
* @param target Directive on which to set the input.
|
|
12977
|
+
* @param publicName Public name of the input being set.
|
|
12978
|
+
* @param value Value to set.
|
|
12979
|
+
*/
|
|
12980
|
+
function setDirectiveInput(tNode, tView, lView, target, publicName, value) {
|
|
12981
|
+
let hostIndex = null;
|
|
12982
|
+
let hostDirectivesStart = null;
|
|
12983
|
+
let hostDirectivesEnd = null;
|
|
12984
|
+
let hasSet = false;
|
|
12985
|
+
if (ngDevMode && !tNode.directiveToIndex?.has(target.type)) {
|
|
12986
|
+
throw new Error(`Node does not have a directive with type ${target.type.name}`);
|
|
12987
|
+
}
|
|
12988
|
+
const data = tNode.directiveToIndex.get(target.type);
|
|
12989
|
+
if (typeof data === 'number') {
|
|
12990
|
+
hostIndex = data;
|
|
12991
|
+
}
|
|
12992
|
+
else {
|
|
12993
|
+
[hostIndex, hostDirectivesStart, hostDirectivesEnd] = data;
|
|
12994
|
+
}
|
|
12995
|
+
if (hostDirectivesStart !== null &&
|
|
12996
|
+
hostDirectivesEnd !== null &&
|
|
12997
|
+
tNode.hostDirectiveInputs?.hasOwnProperty(publicName)) {
|
|
12998
|
+
const hostDirectiveInputs = tNode.hostDirectiveInputs[publicName];
|
|
12999
|
+
for (let i = 0; i < hostDirectiveInputs.length; i += 2) {
|
|
13000
|
+
const index = hostDirectiveInputs[i];
|
|
13001
|
+
if (index >= hostDirectivesStart && index <= hostDirectivesEnd) {
|
|
13002
|
+
ngDevMode && assertIndexInRange(lView, index);
|
|
13003
|
+
const def = tView.data[index];
|
|
13004
|
+
const hostDirectivePublicName = hostDirectiveInputs[i + 1];
|
|
13005
|
+
writeToDirectiveInput(def, lView[index], hostDirectivePublicName, value);
|
|
13006
|
+
hasSet = true;
|
|
13007
|
+
}
|
|
13008
|
+
else if (index > hostDirectivesEnd) {
|
|
13009
|
+
// Directives here are in ascending order so we can stop looking once we're past the range.
|
|
13010
|
+
break;
|
|
13011
|
+
}
|
|
13012
|
+
}
|
|
13013
|
+
}
|
|
13014
|
+
if (hostIndex !== null) {
|
|
13015
|
+
ngDevMode && assertIndexInRange(lView, hostIndex);
|
|
13016
|
+
writeToDirectiveInput(target, lView[hostIndex], publicName, value);
|
|
13017
|
+
hasSet = true;
|
|
13018
|
+
}
|
|
13019
|
+
return hasSet;
|
|
12975
13020
|
}
|
|
12976
13021
|
|
|
12977
13022
|
function renderComponent(hostLView, componentHostIdx) {
|
|
@@ -14753,13 +14798,6 @@ class ViewRef$1 {
|
|
|
14753
14798
|
get context() {
|
|
14754
14799
|
return this._lView[CONTEXT];
|
|
14755
14800
|
}
|
|
14756
|
-
/**
|
|
14757
|
-
* Reports whether the given view is considered dirty according to the different marking mechanisms.
|
|
14758
|
-
*/
|
|
14759
|
-
get dirty() {
|
|
14760
|
-
return (!!(this._lView[FLAGS] &
|
|
14761
|
-
(64 /* LViewFlags.Dirty */ | 1024 /* LViewFlags.RefreshView */ | 8192 /* LViewFlags.HasChildViewsToRefresh */)) || !!this._lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty);
|
|
14762
|
-
}
|
|
14763
14801
|
/**
|
|
14764
14802
|
* @deprecated Replacing the full context object is not supported. Modify the context
|
|
14765
14803
|
* directly, or consider using a `Proxy` if you need to replace the full object.
|
|
@@ -14833,9 +14871,6 @@ class ViewRef$1 {
|
|
|
14833
14871
|
markForCheck() {
|
|
14834
14872
|
markViewDirty(this._cdRefInjectingView || this._lView, 4 /* NotificationSource.MarkForCheck */);
|
|
14835
14873
|
}
|
|
14836
|
-
markForRefresh() {
|
|
14837
|
-
markViewForRefresh(this._cdRefInjectingView || this._lView);
|
|
14838
|
-
}
|
|
14839
14874
|
/**
|
|
14840
14875
|
* Detaches the view from the change detection tree.
|
|
14841
14876
|
*
|
|
@@ -15021,6 +15056,15 @@ class ViewRef$1 {
|
|
|
15021
15056
|
updateAncestorTraversalFlagsOnAttach(this._lView);
|
|
15022
15057
|
}
|
|
15023
15058
|
}
|
|
15059
|
+
/**
|
|
15060
|
+
* Reports whether the given view is considered dirty according to the different marking mechanisms.
|
|
15061
|
+
*/
|
|
15062
|
+
function isViewDirty(view) {
|
|
15063
|
+
return requiresRefreshOrTraversal(view._lView) || !!(view._lView[FLAGS] & 64 /* LViewFlags.Dirty */);
|
|
15064
|
+
}
|
|
15065
|
+
function markForRefresh(view) {
|
|
15066
|
+
markViewForRefresh(view['_cdRefInjectingView'] || view._lView);
|
|
15067
|
+
}
|
|
15024
15068
|
|
|
15025
15069
|
/**
|
|
15026
15070
|
* Represents an embedded template that can be used to instantiate embedded views.
|
|
@@ -15624,9 +15668,12 @@ function createTNode(tView, tParent, type, index, value, attrs) {
|
|
|
15624
15668
|
attrs: attrs,
|
|
15625
15669
|
mergedAttrs: null,
|
|
15626
15670
|
localNames: null,
|
|
15627
|
-
initialInputs:
|
|
15671
|
+
initialInputs: null,
|
|
15628
15672
|
inputs: null,
|
|
15673
|
+
hostDirectiveInputs: null,
|
|
15629
15674
|
outputs: null,
|
|
15675
|
+
hostDirectiveOutputs: null,
|
|
15676
|
+
directiveToIndex: null,
|
|
15630
15677
|
tView: null,
|
|
15631
15678
|
next: null,
|
|
15632
15679
|
prev: null,
|
|
@@ -15934,7 +15981,7 @@ function createIcuIterator(tIcu, lView) {
|
|
|
15934
15981
|
* - the `b` char which indicates that the lookup should start from the `document.body`
|
|
15935
15982
|
* - the `h` char to start lookup from the component host node (`lView[HOST]`)
|
|
15936
15983
|
*/
|
|
15937
|
-
const REF_EXTRACTOR_REGEXP = new RegExp(`^(\\d+)*(${REFERENCE_NODE_BODY}|${REFERENCE_NODE_HOST})*(.*)`);
|
|
15984
|
+
const REF_EXTRACTOR_REGEXP = /* @__PURE__ */ new RegExp(`^(\\d+)*(${REFERENCE_NODE_BODY}|${REFERENCE_NODE_HOST})*(.*)`);
|
|
15938
15985
|
/**
|
|
15939
15986
|
* Helper function that takes a reference node location and a set of navigation steps
|
|
15940
15987
|
* (from the reference node) to a target node and outputs a string that represents
|
|
@@ -16814,6 +16861,18 @@ function removeDehydratedViews(lContainer) {
|
|
|
16814
16861
|
// once again in case a `ViewContainerRef` is created later).
|
|
16815
16862
|
lContainer[DEHYDRATED_VIEWS] = retainedViews;
|
|
16816
16863
|
}
|
|
16864
|
+
function removeDehydratedViewList(deferBlock) {
|
|
16865
|
+
const { lContainer } = deferBlock;
|
|
16866
|
+
const dehydratedViews = lContainer[DEHYDRATED_VIEWS];
|
|
16867
|
+
if (dehydratedViews === null)
|
|
16868
|
+
return;
|
|
16869
|
+
const parentLView = lContainer[PARENT];
|
|
16870
|
+
const renderer = parentLView[RENDERER];
|
|
16871
|
+
for (const view of dehydratedViews) {
|
|
16872
|
+
removeDehydratedView(view, renderer);
|
|
16873
|
+
ngDevMode && ngDevMode.dehydratedViewsRemoved++;
|
|
16874
|
+
}
|
|
16875
|
+
}
|
|
16817
16876
|
/**
|
|
16818
16877
|
* Helper function to remove all nodes from a dehydrated view.
|
|
16819
16878
|
*/
|
|
@@ -17453,14 +17512,22 @@ function ɵɵinvalidFactory() {
|
|
|
17453
17512
|
* Resolve the matched directives on a node.
|
|
17454
17513
|
*/
|
|
17455
17514
|
function resolveDirectives(tView, lView, tNode, localRefs, directiveMatcher) {
|
|
17456
|
-
// Please make sure to have explicit type for `exportsMap`. Inferred type triggers bug in
|
|
17457
|
-
// tsickle.
|
|
17515
|
+
// Please make sure to have explicit type for `exportsMap`. Inferred type triggers bug in tsickle.
|
|
17458
17516
|
ngDevMode && assertFirstCreatePass(tView);
|
|
17459
17517
|
const exportsMap = localRefs === null ? null : { '': -1 };
|
|
17460
17518
|
const matchedDirectiveDefs = directiveMatcher(tView, tNode);
|
|
17461
17519
|
if (matchedDirectiveDefs !== null) {
|
|
17462
|
-
|
|
17463
|
-
|
|
17520
|
+
let directiveDefs;
|
|
17521
|
+
let hostDirectiveDefs = null;
|
|
17522
|
+
let hostDirectiveRanges = null;
|
|
17523
|
+
const hostDirectiveResolution = resolveHostDirectives(matchedDirectiveDefs);
|
|
17524
|
+
if (hostDirectiveResolution === null) {
|
|
17525
|
+
directiveDefs = matchedDirectiveDefs;
|
|
17526
|
+
}
|
|
17527
|
+
else {
|
|
17528
|
+
[directiveDefs, hostDirectiveDefs, hostDirectiveRanges] = hostDirectiveResolution;
|
|
17529
|
+
}
|
|
17530
|
+
initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs, hostDirectiveRanges);
|
|
17464
17531
|
}
|
|
17465
17532
|
if (exportsMap !== null && localRefs !== null) {
|
|
17466
17533
|
cacheMatchingLocalNames(tNode, localRefs, exportsMap);
|
|
@@ -17479,40 +17546,63 @@ function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
|
|
|
17479
17546
|
localNames.push(localRefs[i], index);
|
|
17480
17547
|
}
|
|
17481
17548
|
}
|
|
17482
|
-
function resolveHostDirectives(
|
|
17483
|
-
|
|
17549
|
+
function resolveHostDirectives(matches) {
|
|
17550
|
+
let componentDef = null;
|
|
17551
|
+
let hasHostDirectives = false;
|
|
17552
|
+
for (let i = 0; i < matches.length; i++) {
|
|
17553
|
+
const def = matches[i];
|
|
17554
|
+
if (i === 0 && isComponentDef(def)) {
|
|
17555
|
+
componentDef = def;
|
|
17556
|
+
}
|
|
17557
|
+
if (def.findHostDirectiveDefs !== null) {
|
|
17558
|
+
hasHostDirectives = true;
|
|
17559
|
+
break;
|
|
17560
|
+
}
|
|
17561
|
+
}
|
|
17562
|
+
if (!hasHostDirectives) {
|
|
17563
|
+
return null;
|
|
17564
|
+
}
|
|
17565
|
+
let allDirectiveDefs = null;
|
|
17484
17566
|
let hostDirectiveDefs = null;
|
|
17567
|
+
let hostDirectiveRanges = null;
|
|
17568
|
+
// Components are inserted at the front of the matches array so that their lifecycle
|
|
17569
|
+
// hooks run before any directive lifecycle hooks. This appears to be for ViewEngine
|
|
17570
|
+
// compatibility. This logic doesn't make sense with host directives, because it
|
|
17571
|
+
// would allow the host directives to undo any overrides the host may have made.
|
|
17572
|
+
// To handle this case, the host directives of components are inserted at the beginning
|
|
17573
|
+
// of the array, followed by the component. As such, the insertion order is as follows:
|
|
17574
|
+
// 1. Host directives belonging to the selector-matched component.
|
|
17575
|
+
// 2. Selector-matched component.
|
|
17576
|
+
// 3. Host directives belonging to selector-matched directives.
|
|
17577
|
+
// 4. Selector-matched dir
|
|
17485
17578
|
for (const def of matches) {
|
|
17486
17579
|
if (def.findHostDirectiveDefs !== null) {
|
|
17487
|
-
|
|
17580
|
+
allDirectiveDefs ??= [];
|
|
17488
17581
|
hostDirectiveDefs ??= new Map();
|
|
17489
|
-
|
|
17490
|
-
|
|
17491
|
-
// compatibility. This logic doesn't make sense with host directives, because it
|
|
17492
|
-
// would allow the host directives to undo any overrides the host may have made.
|
|
17493
|
-
// To handle this case, the host directives of components are inserted at the beginning
|
|
17494
|
-
// of the array, followed by the component. As such, the insertion order is as follows:
|
|
17495
|
-
// 1. Host directives belonging to the selector-matched component.
|
|
17496
|
-
// 2. Selector-matched component.
|
|
17497
|
-
// 3. Host directives belonging to selector-matched directives.
|
|
17498
|
-
// 4. Selector-matched directives.
|
|
17499
|
-
def.findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs);
|
|
17582
|
+
hostDirectiveRanges ??= new Map();
|
|
17583
|
+
resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs);
|
|
17500
17584
|
}
|
|
17501
|
-
|
|
17585
|
+
// Component definition needs to be pushed early to maintain the correct ordering.
|
|
17586
|
+
if (def === componentDef) {
|
|
17587
|
+
allDirectiveDefs ??= [];
|
|
17502
17588
|
allDirectiveDefs.push(def);
|
|
17503
|
-
markAsComponentHost(tView, tNode, allDirectiveDefs.length - 1);
|
|
17504
17589
|
}
|
|
17505
17590
|
}
|
|
17506
|
-
if (
|
|
17507
|
-
allDirectiveDefs.push(...matches.slice(1));
|
|
17508
|
-
|
|
17509
|
-
|
|
17510
|
-
allDirectiveDefs.push(...matches);
|
|
17591
|
+
if (allDirectiveDefs !== null) {
|
|
17592
|
+
allDirectiveDefs.push(...(componentDef === null ? matches : matches.slice(1)));
|
|
17593
|
+
ngDevMode && assertNoDuplicateDirectives(allDirectiveDefs);
|
|
17594
|
+
return [allDirectiveDefs, hostDirectiveDefs, hostDirectiveRanges];
|
|
17511
17595
|
}
|
|
17512
|
-
|
|
17513
|
-
|
|
17514
|
-
|
|
17515
|
-
|
|
17596
|
+
return null;
|
|
17597
|
+
}
|
|
17598
|
+
function resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs) {
|
|
17599
|
+
ngDevMode && assertDefined(def.findHostDirectiveDefs, 'Expected host directive resolve function');
|
|
17600
|
+
const start = allDirectiveDefs.length;
|
|
17601
|
+
// TODO(pk): probably could return matches instead of taking in an array to fill in?
|
|
17602
|
+
def.findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs);
|
|
17603
|
+
// Note that these indexes are within the offset by `directiveStart`. We can't do the
|
|
17604
|
+
// offsetting here, because `directiveStart` hasn't been initialized on the TNode yet.
|
|
17605
|
+
hostDirectiveRanges.set(def, [start, allDirectiveDefs.length - 1]);
|
|
17516
17606
|
}
|
|
17517
17607
|
/**
|
|
17518
17608
|
* Marks a given TNode as a component's host. This consists of:
|
|
@@ -17526,37 +17616,62 @@ function markAsComponentHost(tView, hostTNode, componentOffset) {
|
|
|
17526
17616
|
(tView.components ??= []).push(hostTNode.index);
|
|
17527
17617
|
}
|
|
17528
17618
|
/** Initializes the data structures necessary for a list of directives to be instantiated. */
|
|
17529
|
-
function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs) {
|
|
17619
|
+
function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs, hostDirectiveRanges) {
|
|
17530
17620
|
ngDevMode && assertFirstCreatePass(tView);
|
|
17621
|
+
const directivesLength = directives.length;
|
|
17622
|
+
let hasSeenComponent = false;
|
|
17531
17623
|
// Publishes the directive types to DI so they can be injected. Needs to
|
|
17532
17624
|
// happen in a separate pass before the TNode flags have been initialized.
|
|
17533
|
-
for (let i = 0; i <
|
|
17534
|
-
|
|
17625
|
+
for (let i = 0; i < directivesLength; i++) {
|
|
17626
|
+
const def = directives[i];
|
|
17627
|
+
if (!hasSeenComponent && isComponentDef(def)) {
|
|
17628
|
+
hasSeenComponent = true;
|
|
17629
|
+
markAsComponentHost(tView, tNode, i);
|
|
17630
|
+
}
|
|
17631
|
+
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, def.type);
|
|
17535
17632
|
}
|
|
17536
|
-
initTNodeFlags(tNode, tView.data.length,
|
|
17633
|
+
initTNodeFlags(tNode, tView.data.length, directivesLength);
|
|
17537
17634
|
// When the same token is provided by several directives on the same node, some rules apply in
|
|
17538
17635
|
// the viewEngine:
|
|
17539
17636
|
// - viewProviders have priority over providers
|
|
17540
17637
|
// - the last directive in NgModule.declarations has priority over the previous one
|
|
17541
17638
|
// So to match these rules, the order in which providers are added in the arrays is very
|
|
17542
17639
|
// important.
|
|
17543
|
-
for (let i = 0; i <
|
|
17640
|
+
for (let i = 0; i < directivesLength; i++) {
|
|
17544
17641
|
const def = directives[i];
|
|
17545
17642
|
if (def.providersResolver)
|
|
17546
17643
|
def.providersResolver(def);
|
|
17547
17644
|
}
|
|
17548
17645
|
let preOrderHooksFound = false;
|
|
17549
17646
|
let preOrderCheckHooksFound = false;
|
|
17550
|
-
let directiveIdx = allocExpando(tView, lView,
|
|
17647
|
+
let directiveIdx = allocExpando(tView, lView, directivesLength, null);
|
|
17551
17648
|
ngDevMode &&
|
|
17552
17649
|
assertSame(directiveIdx, tNode.directiveStart, 'TNode.directiveStart should point to just allocated space');
|
|
17553
|
-
|
|
17650
|
+
// If there's at least one directive, we'll have to track it so initialize the map.
|
|
17651
|
+
if (directivesLength > 0) {
|
|
17652
|
+
tNode.directiveToIndex = new Map();
|
|
17653
|
+
}
|
|
17654
|
+
for (let i = 0; i < directivesLength; i++) {
|
|
17554
17655
|
const def = directives[i];
|
|
17555
17656
|
// Merge the attrs in the order of matches. This assumes that the first directive is the
|
|
17556
17657
|
// component itself, so that the component has the least priority.
|
|
17557
17658
|
tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, def.hostAttrs);
|
|
17558
17659
|
configureViewWithDirective(tView, tNode, lView, directiveIdx, def);
|
|
17559
17660
|
saveNameToExportMap(directiveIdx, def, exportsMap);
|
|
17661
|
+
// If a directive has host directives, we need to track both its index and the range within
|
|
17662
|
+
// the host directives are declared. Host directives are not tracked, but should be resolved
|
|
17663
|
+
// by looking up the host and getting its indexes from there.
|
|
17664
|
+
if (hostDirectiveRanges !== null && hostDirectiveRanges.has(def)) {
|
|
17665
|
+
const [start, end] = hostDirectiveRanges.get(def);
|
|
17666
|
+
tNode.directiveToIndex.set(def.type, [
|
|
17667
|
+
directiveIdx,
|
|
17668
|
+
start + tNode.directiveStart,
|
|
17669
|
+
end + tNode.directiveStart,
|
|
17670
|
+
]);
|
|
17671
|
+
}
|
|
17672
|
+
else if (hostDirectiveDefs === null || !hostDirectiveDefs.has(def)) {
|
|
17673
|
+
tNode.directiveToIndex.set(def.type, directiveIdx);
|
|
17674
|
+
}
|
|
17560
17675
|
if (def.contentQueries !== null)
|
|
17561
17676
|
tNode.flags |= 4 /* TNodeFlags.hasContentQuery */;
|
|
17562
17677
|
if (def.hostBindings !== null || def.hostAttrs !== null || def.hostVars !== 0)
|
|
@@ -17584,87 +17699,84 @@ function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostD
|
|
|
17584
17699
|
* Initializes data structures required to work with directive inputs and outputs.
|
|
17585
17700
|
* Initialization is done for all directives matched on a given TNode.
|
|
17586
17701
|
*/
|
|
17587
|
-
function initializeInputAndOutputAliases(tView, tNode,
|
|
17702
|
+
function initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs) {
|
|
17588
17703
|
ngDevMode && assertFirstCreatePass(tView);
|
|
17589
|
-
|
|
17590
|
-
|
|
17591
|
-
|
|
17592
|
-
|
|
17593
|
-
|
|
17594
|
-
|
|
17595
|
-
let outputsStore = null;
|
|
17596
|
-
for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
|
|
17597
|
-
const directiveDef = tViewData[directiveIndex];
|
|
17598
|
-
const aliasData = hostDirectiveDefinitionMap
|
|
17599
|
-
? hostDirectiveDefinitionMap.get(directiveDef)
|
|
17600
|
-
: null;
|
|
17601
|
-
const aliasedInputs = aliasData ? aliasData.inputs : null;
|
|
17602
|
-
const aliasedOutputs = aliasData ? aliasData.outputs : null;
|
|
17603
|
-
inputsStore = captureNodeBindings(0 /* CaptureNodeBindingMode.Inputs */, directiveDef.inputs, directiveIndex, inputsStore, aliasedInputs);
|
|
17604
|
-
outputsStore = captureNodeBindings(1 /* CaptureNodeBindingMode.Outputs */, directiveDef.outputs, directiveIndex, outputsStore, aliasedOutputs);
|
|
17605
|
-
// Do not use unbound attributes as inputs to structural directives, since structural
|
|
17606
|
-
// directive inputs can only be set using microsyntax (e.g. `<div *dir="exp">`).
|
|
17607
|
-
const initialInputs = inputsStore !== null && tNodeAttrs !== null && !isInlineTemplate(tNode)
|
|
17608
|
-
? generateInitialInputs(inputsStore, directiveIndex, tNodeAttrs)
|
|
17609
|
-
: null;
|
|
17610
|
-
inputsFromAttrs.push(initialInputs);
|
|
17611
|
-
}
|
|
17612
|
-
if (inputsStore !== null) {
|
|
17613
|
-
if (inputsStore.hasOwnProperty('class')) {
|
|
17614
|
-
tNode.flags |= 8 /* TNodeFlags.hasClassInput */;
|
|
17704
|
+
for (let index = tNode.directiveStart; index < tNode.directiveEnd; index++) {
|
|
17705
|
+
const directiveDef = tView.data[index];
|
|
17706
|
+
if (hostDirectiveDefs === null || !hostDirectiveDefs.has(directiveDef)) {
|
|
17707
|
+
setupSelectorMatchedInputsOrOutputs(0 /* BindingType.Inputs */, tNode, directiveDef, index);
|
|
17708
|
+
setupSelectorMatchedInputsOrOutputs(1 /* BindingType.Outputs */, tNode, directiveDef, index);
|
|
17709
|
+
setupInitialInputs(tNode, index, false);
|
|
17615
17710
|
}
|
|
17616
|
-
|
|
17617
|
-
|
|
17711
|
+
else {
|
|
17712
|
+
const hostDirectiveDef = hostDirectiveDefs.get(directiveDef);
|
|
17713
|
+
setupHostDirectiveInputsOrOutputs(0 /* BindingType.Inputs */, tNode, hostDirectiveDef, index);
|
|
17714
|
+
setupHostDirectiveInputsOrOutputs(1 /* BindingType.Outputs */, tNode, hostDirectiveDef, index);
|
|
17715
|
+
setupInitialInputs(tNode, index, true);
|
|
17618
17716
|
}
|
|
17619
17717
|
}
|
|
17620
|
-
tNode.initialInputs = inputsFromAttrs;
|
|
17621
|
-
tNode.inputs = inputsStore;
|
|
17622
|
-
tNode.outputs = outputsStore;
|
|
17623
17718
|
}
|
|
17624
|
-
|
|
17625
|
-
|
|
17626
|
-
|
|
17627
|
-
|
|
17628
|
-
|
|
17629
|
-
|
|
17630
|
-
|
|
17631
|
-
|
|
17632
|
-
|
|
17633
|
-
|
|
17634
|
-
|
|
17635
|
-
|
|
17636
|
-
|
|
17637
|
-
|
|
17638
|
-
|
|
17639
|
-
|
|
17640
|
-
let finalPublicName = publicName;
|
|
17641
|
-
if (hostDirectiveAliasMap !== null) {
|
|
17642
|
-
// If there is no mapping, it's not part of the allowlist and this input/output
|
|
17643
|
-
// is not captured and should be ignored.
|
|
17644
|
-
if (!hostDirectiveAliasMap.hasOwnProperty(publicName)) {
|
|
17645
|
-
continue;
|
|
17719
|
+
/**
|
|
17720
|
+
* Sets up the input/output bindings for a directive that was matched in the template through its
|
|
17721
|
+
* selector. This method is called repeatedly to build up all of the available inputs on a node.
|
|
17722
|
+
*
|
|
17723
|
+
* @param mode Whether inputs or outputs are being contructed.
|
|
17724
|
+
* @param tNode Node on which the bindings are being set up.
|
|
17725
|
+
* @param def Directive definition for which the bindings are being set up.
|
|
17726
|
+
* @param directiveIndex Index at which the directive instance will be stored in the LView.
|
|
17727
|
+
*/
|
|
17728
|
+
function setupSelectorMatchedInputsOrOutputs(mode, tNode, def, directiveIndex) {
|
|
17729
|
+
const aliasMap = mode === 0 /* BindingType.Inputs */ ? def.inputs : def.outputs;
|
|
17730
|
+
for (const publicName in aliasMap) {
|
|
17731
|
+
if (aliasMap.hasOwnProperty(publicName)) {
|
|
17732
|
+
let bindings;
|
|
17733
|
+
if (mode === 0 /* BindingType.Inputs */) {
|
|
17734
|
+
bindings = tNode.inputs ??= {};
|
|
17646
17735
|
}
|
|
17647
|
-
|
|
17648
|
-
|
|
17649
|
-
|
|
17650
|
-
|
|
17736
|
+
else {
|
|
17737
|
+
bindings = tNode.outputs ??= {};
|
|
17738
|
+
}
|
|
17739
|
+
bindings[publicName] ??= [];
|
|
17740
|
+
bindings[publicName].push(directiveIndex);
|
|
17741
|
+
setShadowStylingInputFlags(tNode, publicName);
|
|
17651
17742
|
}
|
|
17652
|
-
|
|
17653
|
-
|
|
17743
|
+
}
|
|
17744
|
+
}
|
|
17745
|
+
/**
|
|
17746
|
+
* Sets up input/output bindings that were defined through host directives on a specific node.
|
|
17747
|
+
* @param mode Whether inputs or outputs are being contructed.
|
|
17748
|
+
* @param tNode Node on which the bindings are being set up.
|
|
17749
|
+
* @param config Host directive definition that is being set up.
|
|
17750
|
+
* @param directiveIndex Index at which the directive instance will be stored in the LView.
|
|
17751
|
+
*/
|
|
17752
|
+
function setupHostDirectiveInputsOrOutputs(mode, tNode, config, directiveIndex) {
|
|
17753
|
+
const aliasMap = mode === 0 /* BindingType.Inputs */ ? config.inputs : config.outputs;
|
|
17754
|
+
for (const initialName in aliasMap) {
|
|
17755
|
+
if (aliasMap.hasOwnProperty(initialName)) {
|
|
17756
|
+
const publicName = aliasMap[initialName];
|
|
17757
|
+
let bindings;
|
|
17758
|
+
if (mode === 0 /* BindingType.Inputs */) {
|
|
17759
|
+
bindings = tNode.hostDirectiveInputs ??= {};
|
|
17760
|
+
}
|
|
17761
|
+
else {
|
|
17762
|
+
bindings = tNode.hostDirectiveOutputs ??= {};
|
|
17763
|
+
}
|
|
17764
|
+
bindings[publicName] ??= [];
|
|
17765
|
+
bindings[publicName].push(directiveIndex, initialName);
|
|
17766
|
+
setShadowStylingInputFlags(tNode, publicName);
|
|
17654
17767
|
}
|
|
17655
17768
|
}
|
|
17656
|
-
return bindingsResult;
|
|
17657
17769
|
}
|
|
17658
|
-
function
|
|
17659
|
-
if (
|
|
17660
|
-
|
|
17770
|
+
function setShadowStylingInputFlags(tNode, publicName) {
|
|
17771
|
+
if (publicName === 'class') {
|
|
17772
|
+
tNode.flags |= 8 /* TNodeFlags.hasClassInput */;
|
|
17661
17773
|
}
|
|
17662
|
-
else {
|
|
17663
|
-
|
|
17774
|
+
else if (publicName === 'style') {
|
|
17775
|
+
tNode.flags |= 16 /* TNodeFlags.hasStyleInput */;
|
|
17664
17776
|
}
|
|
17665
17777
|
}
|
|
17666
17778
|
/**
|
|
17667
|
-
*
|
|
17779
|
+
* Sets up the initialInputData for a node and stores it in the template's static storage
|
|
17668
17780
|
* so subsequent template invocations don't have to recalculate it.
|
|
17669
17781
|
*
|
|
17670
17782
|
* initialInputData is an array containing values that need to be set as input properties
|
|
@@ -17674,11 +17786,21 @@ function addPropertyBinding(bindings, directiveIndex, publicName, lookupName) {
|
|
|
17674
17786
|
*
|
|
17675
17787
|
* <my-component name="Bess"></my-component>
|
|
17676
17788
|
*
|
|
17677
|
-
* @param
|
|
17789
|
+
* @param tNode TNode on which to set up the initial inputs.
|
|
17678
17790
|
* @param directiveIndex Index of the directive that is currently being processed.
|
|
17679
|
-
* @param attrs Static attrs on this node.
|
|
17680
17791
|
*/
|
|
17681
|
-
function
|
|
17792
|
+
function setupInitialInputs(tNode, directiveIndex, isHostDirective) {
|
|
17793
|
+
const { attrs, inputs, hostDirectiveInputs } = tNode;
|
|
17794
|
+
if (attrs === null ||
|
|
17795
|
+
(!isHostDirective && inputs === null) ||
|
|
17796
|
+
(isHostDirective && hostDirectiveInputs === null) ||
|
|
17797
|
+
// Do not use unbound attributes as inputs to structural directives, since structural
|
|
17798
|
+
// directive inputs can only be set using microsyntax (e.g. `<div *dir="exp">`).
|
|
17799
|
+
isInlineTemplate(tNode)) {
|
|
17800
|
+
tNode.initialInputs ??= [];
|
|
17801
|
+
tNode.initialInputs.push(null);
|
|
17802
|
+
return;
|
|
17803
|
+
}
|
|
17682
17804
|
let inputsToStore = null;
|
|
17683
17805
|
let i = 0;
|
|
17684
17806
|
while (i < attrs.length) {
|
|
@@ -17693,26 +17815,38 @@ function generateInitialInputs(inputs, directiveIndex, attrs) {
|
|
|
17693
17815
|
i += 2;
|
|
17694
17816
|
continue;
|
|
17695
17817
|
}
|
|
17696
|
-
|
|
17697
|
-
|
|
17818
|
+
else if (typeof attrName === 'number') {
|
|
17819
|
+
// If we hit any other attribute markers, we're done anyway. None of those are valid inputs.
|
|
17698
17820
|
break;
|
|
17699
|
-
|
|
17821
|
+
}
|
|
17822
|
+
if (!isHostDirective && inputs.hasOwnProperty(attrName)) {
|
|
17700
17823
|
// Find the input's public name from the input store. Note that we can be found easier
|
|
17701
17824
|
// through the directive def, but we want to do it using the inputs store so that it can
|
|
17702
17825
|
// account for host directive aliases.
|
|
17703
17826
|
const inputConfig = inputs[attrName];
|
|
17704
|
-
for (
|
|
17705
|
-
if (
|
|
17827
|
+
for (const index of inputConfig) {
|
|
17828
|
+
if (index === directiveIndex) {
|
|
17706
17829
|
inputsToStore ??= [];
|
|
17707
|
-
inputsToStore.push(
|
|
17830
|
+
inputsToStore.push(attrName, attrs[i + 1]);
|
|
17708
17831
|
// A directive can't have multiple inputs with the same name so we can break here.
|
|
17709
17832
|
break;
|
|
17710
17833
|
}
|
|
17711
17834
|
}
|
|
17712
17835
|
}
|
|
17836
|
+
else if (isHostDirective && hostDirectiveInputs.hasOwnProperty(attrName)) {
|
|
17837
|
+
const config = hostDirectiveInputs[attrName];
|
|
17838
|
+
for (let j = 0; j < config.length; j += 2) {
|
|
17839
|
+
if (config[j] === directiveIndex) {
|
|
17840
|
+
inputsToStore ??= [];
|
|
17841
|
+
inputsToStore.push(config[j + 1], attrs[i + 1]);
|
|
17842
|
+
break;
|
|
17843
|
+
}
|
|
17844
|
+
}
|
|
17845
|
+
}
|
|
17713
17846
|
i += 2;
|
|
17714
17847
|
}
|
|
17715
|
-
|
|
17848
|
+
tNode.initialInputs ??= [];
|
|
17849
|
+
tNode.initialInputs.push(inputsToStore);
|
|
17716
17850
|
}
|
|
17717
17851
|
/**
|
|
17718
17852
|
* Setup directive for instantiation.
|
|
@@ -17946,11 +18080,15 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
17946
18080
|
componentType;
|
|
17947
18081
|
ngContentSelectors;
|
|
17948
18082
|
isBoundToModule;
|
|
18083
|
+
cachedInputs = null;
|
|
18084
|
+
cachedOutputs = null;
|
|
17949
18085
|
get inputs() {
|
|
17950
|
-
|
|
18086
|
+
this.cachedInputs ??= toInputRefArray(this.componentDef.inputs);
|
|
18087
|
+
return this.cachedInputs;
|
|
17951
18088
|
}
|
|
17952
18089
|
get outputs() {
|
|
17953
|
-
|
|
18090
|
+
this.cachedOutputs ??= toOutputRefArray(this.componentDef.outputs);
|
|
18091
|
+
return this.cachedOutputs;
|
|
17954
18092
|
}
|
|
17955
18093
|
/**
|
|
17956
18094
|
* @param componentDef The component definition.
|
|
@@ -17972,7 +18110,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
17972
18110
|
const cmpDef = this.componentDef;
|
|
17973
18111
|
ngDevMode && verifyNotAnOrphanComponent(cmpDef);
|
|
17974
18112
|
const tAttributes = rootSelectorOrNode
|
|
17975
|
-
? ['ng-version', '19.2.
|
|
18113
|
+
? ['ng-version', '19.2.1']
|
|
17976
18114
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
17977
18115
|
extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
|
|
17978
18116
|
// Create the root view. Uses empty TView and ContentTemplate.
|
|
@@ -18061,29 +18199,24 @@ class ComponentRef extends ComponentRef$1 {
|
|
|
18061
18199
|
this.componentType = componentType;
|
|
18062
18200
|
}
|
|
18063
18201
|
setInput(name, value) {
|
|
18064
|
-
const
|
|
18065
|
-
|
|
18066
|
-
if
|
|
18067
|
-
|
|
18068
|
-
|
|
18069
|
-
|
|
18070
|
-
|
|
18071
|
-
Object.is(this.previousInputValues.get(name), value)) {
|
|
18072
|
-
return;
|
|
18073
|
-
}
|
|
18074
|
-
const lView = this._rootLView;
|
|
18075
|
-
setInputsForProperty(lView[TVIEW], lView, dataValue, name, value);
|
|
18076
|
-
this.previousInputValues.set(name, value);
|
|
18077
|
-
const childComponentLView = getComponentLViewByIndex(this._tNode.index, lView);
|
|
18078
|
-
markViewDirty(childComponentLView, 1 /* NotificationSource.SetInput */);
|
|
18202
|
+
const tNode = this._tNode;
|
|
18203
|
+
this.previousInputValues ??= new Map();
|
|
18204
|
+
// Do not set the input if it is the same as the last value
|
|
18205
|
+
// This behavior matches `bindingUpdated` when binding inputs in templates.
|
|
18206
|
+
if (this.previousInputValues.has(name) &&
|
|
18207
|
+
Object.is(this.previousInputValues.get(name), value)) {
|
|
18208
|
+
return;
|
|
18079
18209
|
}
|
|
18080
|
-
|
|
18081
|
-
|
|
18082
|
-
|
|
18083
|
-
|
|
18084
|
-
|
|
18085
|
-
|
|
18086
|
-
|
|
18210
|
+
const lView = this._rootLView;
|
|
18211
|
+
const hasSetInput = setAllInputsForProperty(tNode, lView[TVIEW], lView, name, value);
|
|
18212
|
+
this.previousInputValues.set(name, value);
|
|
18213
|
+
const childComponentLView = getComponentLViewByIndex(tNode.index, lView);
|
|
18214
|
+
markViewDirty(childComponentLView, 1 /* NotificationSource.SetInput */);
|
|
18215
|
+
if (ngDevMode && !hasSetInput) {
|
|
18216
|
+
const cmpNameForError = stringifyForError(this.componentType);
|
|
18217
|
+
let message = `Can't set value of the '${name}' input on the '${cmpNameForError}' component. `;
|
|
18218
|
+
message += `Make sure that the '${name}' property is annotated with @Input() or a mapped @Input('${name}') exists.`;
|
|
18219
|
+
reportUnknownPropertyError(message);
|
|
18087
18220
|
}
|
|
18088
18221
|
}
|
|
18089
18222
|
get injector() {
|
|
@@ -20705,7 +20838,7 @@ function declareTemplate(declarationLView, declarationTView, index, templateFn,
|
|
|
20705
20838
|
// In client-only mode, this function is a noop.
|
|
20706
20839
|
populateDehydratedViewsInLContainer(lContainer, tNode, declarationLView);
|
|
20707
20840
|
if (isDirectiveHost(tNode)) {
|
|
20708
|
-
|
|
20841
|
+
createDirectivesInstances(declarationTView, declarationLView, tNode);
|
|
20709
20842
|
}
|
|
20710
20843
|
if (localRefsIndex != null) {
|
|
20711
20844
|
saveResolvedLocalsInData(declarationLView, tNode, localRefExtractor);
|
|
@@ -21240,8 +21373,9 @@ function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling
|
|
|
21240
21373
|
}
|
|
21241
21374
|
}
|
|
21242
21375
|
function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
|
|
21243
|
-
|
|
21244
|
-
|
|
21376
|
+
const dehydratedViewIx = lContainer[DEHYDRATED_VIEWS]?.findIndex((view) => view.data[DEFER_BLOCK_STATE$1] === lDetails[DEFER_BLOCK_STATE]) ?? -1;
|
|
21377
|
+
const dehydratedView = dehydratedViewIx > -1 ? lContainer[DEHYDRATED_VIEWS][dehydratedViewIx] : null;
|
|
21378
|
+
return { dehydratedView, dehydratedViewIx };
|
|
21245
21379
|
}
|
|
21246
21380
|
/**
|
|
21247
21381
|
* Applies changes to the DOM to reflect a given state.
|
|
@@ -21273,21 +21407,23 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
|
|
|
21273
21407
|
injector = createDeferBlockInjector(hostLView[INJECTOR], tDetails, providers);
|
|
21274
21408
|
}
|
|
21275
21409
|
}
|
|
21276
|
-
const dehydratedView = findMatchingDehydratedViewForDeferBlock(lContainer, lDetails);
|
|
21277
|
-
// Erase dehydrated view info, so that it's not removed later
|
|
21278
|
-
// by post-hydration cleanup process.
|
|
21279
|
-
lContainer[DEHYDRATED_VIEWS] = null;
|
|
21410
|
+
const { dehydratedView, dehydratedViewIx } = findMatchingDehydratedViewForDeferBlock(lContainer, lDetails);
|
|
21280
21411
|
const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, {
|
|
21281
21412
|
injector,
|
|
21282
21413
|
dehydratedView,
|
|
21283
21414
|
});
|
|
21284
21415
|
addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
|
|
21285
21416
|
markViewDirty(embeddedLView, 2 /* NotificationSource.DeferBlockStateUpdate */);
|
|
21286
|
-
|
|
21287
|
-
|
|
21288
|
-
|
|
21289
|
-
|
|
21290
|
-
|
|
21417
|
+
if (dehydratedViewIx > -1) {
|
|
21418
|
+
// Erase dehydrated view info in a given LContainer, so that the view is not
|
|
21419
|
+
// removed later by post-hydration cleanup process (which iterates over all
|
|
21420
|
+
// dehydrated views in component tree). This clears only the dehydrated view
|
|
21421
|
+
// that was found for this render, which in most cases will be the only view.
|
|
21422
|
+
// In the case that there was control flow that changed, there may be either
|
|
21423
|
+
// more than one or the views would not match up due to the server rendered
|
|
21424
|
+
// content being a different branch of the control flow.
|
|
21425
|
+
lContainer[DEHYDRATED_VIEWS]?.splice(dehydratedViewIx, 1);
|
|
21426
|
+
}
|
|
21291
21427
|
if ((newState === DeferBlockState.Complete || newState === DeferBlockState.Error) &&
|
|
21292
21428
|
Array.isArray(lDetails[ON_COMPLETE_FNS])) {
|
|
21293
21429
|
for (const callback of lDetails[ON_COMPLETE_FNS]) {
|
|
@@ -21788,7 +21924,7 @@ function canBeHeldWeakly(value) {
|
|
|
21788
21924
|
* Marks a component for check (in case of OnPush components) and synchronously
|
|
21789
21925
|
* performs change detection on the application this component belongs to.
|
|
21790
21926
|
*
|
|
21791
|
-
* @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}
|
|
21927
|
+
* @param component Component to {@link /api/core/ChangeDetectorRef#markForCheck mark for check}
|
|
21792
21928
|
*
|
|
21793
21929
|
* @publicApi
|
|
21794
21930
|
*/
|
|
@@ -23346,7 +23482,6 @@ function optionsReducer(dst, objs) {
|
|
|
23346
23482
|
* A reference to an Angular application running on a page.
|
|
23347
23483
|
*
|
|
23348
23484
|
* @usageNotes
|
|
23349
|
-
* {@a is-stable-examples}
|
|
23350
23485
|
* ### isStable examples and caveats
|
|
23351
23486
|
*
|
|
23352
23487
|
* Note two important points about `isStable`, demonstrated in the examples below:
|
|
@@ -24136,16 +24271,36 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
|
|
|
24136
24271
|
await parentBlockPromise;
|
|
24137
24272
|
}
|
|
24138
24273
|
// Actually do the triggering and hydration of the queue of blocks
|
|
24139
|
-
for (
|
|
24140
|
-
|
|
24141
|
-
|
|
24142
|
-
|
|
24143
|
-
|
|
24144
|
-
|
|
24145
|
-
|
|
24146
|
-
|
|
24147
|
-
|
|
24148
|
-
|
|
24274
|
+
for (let blockQueueIdx = 0; blockQueueIdx < hydrationQueue.length; blockQueueIdx++) {
|
|
24275
|
+
const dehydratedBlockId = hydrationQueue[blockQueueIdx];
|
|
24276
|
+
const dehydratedDeferBlock = dehydratedBlockRegistry.get(dehydratedBlockId);
|
|
24277
|
+
if (dehydratedDeferBlock != null) {
|
|
24278
|
+
// trigger the block resources and await next render for hydration. This should result
|
|
24279
|
+
// in the next block ɵɵdefer instruction being called and that block being added to the dehydrated registry.
|
|
24280
|
+
await triggerResourceLoadingForHydration(dehydratedDeferBlock);
|
|
24281
|
+
await nextRender(injector);
|
|
24282
|
+
// if the content has changed since server rendering, we need to check for the expected block
|
|
24283
|
+
// being in the registry or if errors occurred. In that case, we need to clean up the remaining expected
|
|
24284
|
+
// content that won't be rendered or fetched.
|
|
24285
|
+
if (deferBlockHasErrored(dehydratedDeferBlock)) {
|
|
24286
|
+
// Either the expected block has not yet had its ɵɵdefer instruction called or the block errored out when fetching
|
|
24287
|
+
// resources. In the former case, either we're hydrating too soon or the client and server differ. In both cases,
|
|
24288
|
+
// we need to clean up child content and promises.
|
|
24289
|
+
removeDehydratedViewList(dehydratedDeferBlock);
|
|
24290
|
+
cleanupRemainingHydrationQueue(hydrationQueue.slice(blockQueueIdx), dehydratedBlockRegistry);
|
|
24291
|
+
break;
|
|
24292
|
+
}
|
|
24293
|
+
// The defer block has not errored and we've finished fetching resources and rendering.
|
|
24294
|
+
// At this point it is safe to resolve the hydration promise.
|
|
24295
|
+
blocksBeingHydrated.get(dehydratedBlockId).resolve();
|
|
24296
|
+
}
|
|
24297
|
+
else {
|
|
24298
|
+
// The expected block has not yet had its ɵɵdefer instruction called. This is likely due to content changing between
|
|
24299
|
+
// client and server. We need to clean up the dehydrated DOM in the container since it no longer is valid.
|
|
24300
|
+
cleanupParentContainer(blockQueueIdx, hydrationQueue, dehydratedBlockRegistry);
|
|
24301
|
+
cleanupRemainingHydrationQueue(hydrationQueue.slice(blockQueueIdx), dehydratedBlockRegistry);
|
|
24302
|
+
break;
|
|
24303
|
+
}
|
|
24149
24304
|
}
|
|
24150
24305
|
// Await hydration completion for the requested block.
|
|
24151
24306
|
await blocksBeingHydrated.get(blockName)?.promise;
|
|
@@ -24158,6 +24313,33 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
|
|
|
24158
24313
|
// Cleanup after hydration of all affected defer blocks.
|
|
24159
24314
|
cleanupHydratedDeferBlocks(dehydratedBlockRegistry.get(blockName), hydrationQueue, dehydratedBlockRegistry, injector.get(ApplicationRef));
|
|
24160
24315
|
}
|
|
24316
|
+
function deferBlockHasErrored(deferBlock) {
|
|
24317
|
+
return (getLDeferBlockDetails(deferBlock.lView, deferBlock.tNode)[DEFER_BLOCK_STATE] ===
|
|
24318
|
+
DeferBlockState.Error);
|
|
24319
|
+
}
|
|
24320
|
+
/**
|
|
24321
|
+
* Clean up the parent container of a block where content changed between server and client.
|
|
24322
|
+
* The parent of a block going through `triggerHydrationFromBlockName` will contain the
|
|
24323
|
+
* dehydrated content that needs to be cleaned up. So we have to do the clean up from that location
|
|
24324
|
+
* in the tree.
|
|
24325
|
+
*/
|
|
24326
|
+
function cleanupParentContainer(currentBlockIdx, hydrationQueue, dehydratedBlockRegistry) {
|
|
24327
|
+
// If a parent block exists, it's in the hydration queue in front of the current block.
|
|
24328
|
+
const parentDeferBlockIdx = currentBlockIdx - 1;
|
|
24329
|
+
const parentDeferBlock = parentDeferBlockIdx > -1
|
|
24330
|
+
? dehydratedBlockRegistry.get(hydrationQueue[parentDeferBlockIdx])
|
|
24331
|
+
: null;
|
|
24332
|
+
if (parentDeferBlock) {
|
|
24333
|
+
cleanupLContainer(parentDeferBlock.lContainer);
|
|
24334
|
+
}
|
|
24335
|
+
}
|
|
24336
|
+
function cleanupRemainingHydrationQueue(hydrationQueue, dehydratedBlockRegistry) {
|
|
24337
|
+
const blocksBeingHydrated = dehydratedBlockRegistry.hydrating;
|
|
24338
|
+
for (const dehydratedBlockId in hydrationQueue) {
|
|
24339
|
+
blocksBeingHydrated.get(dehydratedBlockId)?.reject();
|
|
24340
|
+
}
|
|
24341
|
+
dehydratedBlockRegistry.cleanup(hydrationQueue);
|
|
24342
|
+
}
|
|
24161
24343
|
/**
|
|
24162
24344
|
* Generates a new promise for every defer block in the hydrating queue
|
|
24163
24345
|
*/
|
|
@@ -24170,18 +24352,8 @@ function populateHydratingStateForQueue(registry, queue) {
|
|
|
24170
24352
|
function nextRender(injector) {
|
|
24171
24353
|
return new Promise((resolveFn) => afterNextRender(resolveFn, { injector }));
|
|
24172
24354
|
}
|
|
24173
|
-
async function triggerResourceLoadingForHydration(
|
|
24174
|
-
const
|
|
24175
|
-
// Since we trigger hydration for nested defer blocks in a sequence (parent -> child),
|
|
24176
|
-
// there is a chance that a defer block may not be present at hydration time. For example,
|
|
24177
|
-
// when a nested block was in an `@if` condition, which has changed.
|
|
24178
|
-
if (deferBlock === null) {
|
|
24179
|
-
// TODO(incremental-hydration): handle the cleanup for cases when
|
|
24180
|
-
// defer block is no longer present during hydration (e.g. `@if` condition
|
|
24181
|
-
// has changed during hydration/rendering).
|
|
24182
|
-
return;
|
|
24183
|
-
}
|
|
24184
|
-
const { tNode, lView } = deferBlock;
|
|
24355
|
+
async function triggerResourceLoadingForHydration(dehydratedBlock) {
|
|
24356
|
+
const { tNode, lView } = dehydratedBlock;
|
|
24185
24357
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24186
24358
|
return new Promise((resolve) => {
|
|
24187
24359
|
onDeferBlockCompletion(lDetails, resolve);
|
|
@@ -26234,10 +26406,8 @@ function ɵɵproperty(propName, value, sanitizer) {
|
|
|
26234
26406
|
* directive input.
|
|
26235
26407
|
*/
|
|
26236
26408
|
function setDirectiveInputsWhichShadowsStyling(tView, tNode, lView, value, isClassBased) {
|
|
26237
|
-
const inputs = tNode.inputs;
|
|
26238
|
-
const property = isClassBased ? 'class' : 'style';
|
|
26239
26409
|
// We support both 'class' and `className` hence the fallback.
|
|
26240
|
-
|
|
26410
|
+
setAllInputsForProperty(tNode, tView, lView, isClassBased ? 'class' : 'style', value);
|
|
26241
26411
|
}
|
|
26242
26412
|
|
|
26243
26413
|
/**
|
|
@@ -28061,12 +28231,12 @@ function ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {
|
|
|
28061
28231
|
// any immediate children of a component or template container must be pre-emptively
|
|
28062
28232
|
// monkey-patched with the component view data so that the element can be inspected
|
|
28063
28233
|
// later on using any element discovery utility methods (see `element_discovery.ts`)
|
|
28064
|
-
if (getElementDepthCount() === 0) {
|
|
28234
|
+
if (getElementDepthCount() === 0 || hasDirectives) {
|
|
28065
28235
|
attachPatchData(native, lView);
|
|
28066
28236
|
}
|
|
28067
28237
|
increaseElementDepthCount();
|
|
28068
28238
|
if (hasDirectives) {
|
|
28069
|
-
|
|
28239
|
+
createDirectivesInstances(tView, lView, tNode);
|
|
28070
28240
|
executeContentQueries(tView, tNode, lView);
|
|
28071
28241
|
}
|
|
28072
28242
|
if (localRefsIndex !== null) {
|
|
@@ -28238,7 +28408,7 @@ function ɵɵelementContainerStart(index, attrsIndex, localRefsIndex) {
|
|
|
28238
28408
|
}
|
|
28239
28409
|
attachPatchData(comment, lView);
|
|
28240
28410
|
if (isDirectiveHost(tNode)) {
|
|
28241
|
-
|
|
28411
|
+
createDirectivesInstances(tView, lView, tNode);
|
|
28242
28412
|
executeContentQueries(tView, tNode, lView);
|
|
28243
28413
|
}
|
|
28244
28414
|
if (localRefsIndex != null) {
|
|
@@ -30293,7 +30463,7 @@ function findExistingListener(tView, lView, eventName, tNodeIdx) {
|
|
|
30293
30463
|
function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, eventTargetResolver) {
|
|
30294
30464
|
const isTNodeDirectiveHost = isDirectiveHost(tNode);
|
|
30295
30465
|
const firstCreatePass = tView.firstCreatePass;
|
|
30296
|
-
const tCleanup = firstCreatePass
|
|
30466
|
+
const tCleanup = firstCreatePass ? getOrCreateTViewCleanup(tView) : null;
|
|
30297
30467
|
const context = lView[CONTEXT];
|
|
30298
30468
|
// When the ɵɵlistener instruction was generated and is executed we know that there is either a
|
|
30299
30469
|
// native listener or a directive output on this element. As such we we know that we will have to
|
|
@@ -30346,7 +30516,7 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
30346
30516
|
}
|
|
30347
30517
|
else {
|
|
30348
30518
|
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
30349
|
-
stashEventListener(
|
|
30519
|
+
stashEventListener(target, eventName, listenerFn);
|
|
30350
30520
|
const cleanupFn = renderer.listen(target, eventName, listenerFn);
|
|
30351
30521
|
ngDevMode && ngDevMode.rendererAddEventListener++;
|
|
30352
30522
|
lCleanup.push(listenerFn, cleanupFn);
|
|
@@ -30358,29 +30528,37 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
30358
30528
|
// ancestors are marked dirty when an event occurs.
|
|
30359
30529
|
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
30360
30530
|
}
|
|
30361
|
-
|
|
30362
|
-
|
|
30363
|
-
|
|
30364
|
-
|
|
30365
|
-
|
|
30366
|
-
|
|
30367
|
-
|
|
30368
|
-
|
|
30369
|
-
|
|
30370
|
-
|
|
30371
|
-
|
|
30372
|
-
|
|
30373
|
-
|
|
30374
|
-
throw new Error(`@Output ${minifiedName} not initialized in '${directiveInstance.constructor.name}'.`);
|
|
30375
|
-
}
|
|
30376
|
-
const subscription = output.subscribe(listenerFn);
|
|
30377
|
-
const idx = lCleanup.length;
|
|
30378
|
-
lCleanup.push(listenerFn, subscription);
|
|
30379
|
-
tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));
|
|
30531
|
+
if (processOutputs) {
|
|
30532
|
+
const outputConfig = tNode.outputs?.[eventName];
|
|
30533
|
+
const hostDirectiveOutputConfig = tNode.hostDirectiveOutputs?.[eventName];
|
|
30534
|
+
if (hostDirectiveOutputConfig && hostDirectiveOutputConfig.length) {
|
|
30535
|
+
for (let i = 0; i < hostDirectiveOutputConfig.length; i += 2) {
|
|
30536
|
+
const index = hostDirectiveOutputConfig[i];
|
|
30537
|
+
const lookupName = hostDirectiveOutputConfig[i + 1];
|
|
30538
|
+
listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup);
|
|
30539
|
+
}
|
|
30540
|
+
}
|
|
30541
|
+
if (outputConfig && outputConfig.length) {
|
|
30542
|
+
for (const index of outputConfig) {
|
|
30543
|
+
listenToOutput(tNode, tView, lView, index, eventName, eventName, listenerFn, lCleanup, tCleanup);
|
|
30380
30544
|
}
|
|
30381
30545
|
}
|
|
30382
30546
|
}
|
|
30383
30547
|
}
|
|
30548
|
+
function listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup) {
|
|
30549
|
+
ngDevMode && assertIndexInRange(lView, index);
|
|
30550
|
+
const instance = lView[index];
|
|
30551
|
+
const def = tView.data[index];
|
|
30552
|
+
const propertyName = def.outputs[lookupName];
|
|
30553
|
+
const output = instance[propertyName];
|
|
30554
|
+
if (ngDevMode && !isOutputSubscribable(output)) {
|
|
30555
|
+
throw new Error(`@Output ${propertyName} not initialized in '${instance.constructor.name}'.`);
|
|
30556
|
+
}
|
|
30557
|
+
const subscription = output.subscribe(listenerFn);
|
|
30558
|
+
const idx = lCleanup.length;
|
|
30559
|
+
lCleanup.push(listenerFn, subscription);
|
|
30560
|
+
tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));
|
|
30561
|
+
}
|
|
30384
30562
|
function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
30385
30563
|
const prevConsumer = setActiveConsumer$1(null);
|
|
30386
30564
|
try {
|
|
@@ -33544,11 +33722,12 @@ function executeWithInvalidateFallback(importMeta, id, callback) {
|
|
|
33544
33722
|
callback();
|
|
33545
33723
|
}
|
|
33546
33724
|
catch (e) {
|
|
33547
|
-
const
|
|
33725
|
+
const error = e;
|
|
33548
33726
|
// If we have all the necessary information and APIs to send off the invalidation
|
|
33549
33727
|
// request, send it before rethrowing so the dev server can decide what to do.
|
|
33550
|
-
if (id !== null &&
|
|
33551
|
-
|
|
33728
|
+
if (id !== null && error.message) {
|
|
33729
|
+
const toLog = error.message + (error.stack ? '\n' + error.stack : '');
|
|
33730
|
+
importMeta?.hot?.send?.('angular:invalidate', { id, message: toLog, error: true });
|
|
33552
33731
|
}
|
|
33553
33732
|
// Throw the error in case the page doesn't get refreshed.
|
|
33554
33733
|
throw e;
|
|
@@ -34978,7 +35157,7 @@ class Version {
|
|
|
34978
35157
|
/**
|
|
34979
35158
|
* @publicApi
|
|
34980
35159
|
*/
|
|
34981
|
-
const VERSION = new Version('19.2.
|
|
35160
|
+
const VERSION = new Version('19.2.1');
|
|
34982
35161
|
|
|
34983
35162
|
/**
|
|
34984
35163
|
* Combination of NgModuleFactory and ComponentFactories.
|
|
@@ -35220,7 +35399,7 @@ function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsid
|
|
|
35220
35399
|
* ```
|
|
35221
35400
|
*
|
|
35222
35401
|
* @publicApi
|
|
35223
|
-
* @see {@link bootstrapApplication}
|
|
35402
|
+
* @see {@link /api/core/bootstrapApplication bootstrapApplication}
|
|
35224
35403
|
* @see {@link NgZoneOptions}
|
|
35225
35404
|
*/
|
|
35226
35405
|
function provideZoneChangeDetection(options) {
|
|
@@ -35606,7 +35785,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35606
35785
|
*
|
|
35607
35786
|
* @publicApi
|
|
35608
35787
|
* @experimental
|
|
35609
|
-
* @see
|
|
35788
|
+
* @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication}
|
|
35610
35789
|
*/
|
|
35611
35790
|
function provideExperimentalZonelessChangeDetection() {
|
|
35612
35791
|
performanceMarkFeature('NgZoneless');
|
|
@@ -35691,11 +35870,7 @@ const LOCALE_ID = new InjectionToken(ngDevMode ? 'LocaleId' : '', {
|
|
|
35691
35870
|
*
|
|
35692
35871
|
* <div class="docs-alert docs-alert-helpful">
|
|
35693
35872
|
*
|
|
35694
|
-
*
|
|
35695
|
-
*
|
|
35696
|
-
* The default currency code is currently always `USD` but this is deprecated from v9.
|
|
35697
|
-
*
|
|
35698
|
-
* **In v10 the default currency code will be taken from the current locale.**
|
|
35873
|
+
* The default currency code is currently always `USD`.
|
|
35699
35874
|
*
|
|
35700
35875
|
* If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
|
|
35701
35876
|
* your application `NgModule`:
|
|
@@ -35812,10 +35987,9 @@ class ImagePerformanceWarning {
|
|
|
35812
35987
|
window = null;
|
|
35813
35988
|
observer = null;
|
|
35814
35989
|
options = inject(IMAGE_CONFIG);
|
|
35815
|
-
isBrowser = inject(PLATFORM_ID) === 'browser';
|
|
35816
35990
|
lcpImageUrl;
|
|
35817
35991
|
start() {
|
|
35818
|
-
if (
|
|
35992
|
+
if ((typeof ngServerMode !== 'undefined' && ngServerMode) ||
|
|
35819
35993
|
typeof PerformanceObserver === 'undefined' ||
|
|
35820
35994
|
(this.options?.disableImageSizeWarning && this.options?.disableImageLazyLoadWarning)) {
|
|
35821
35995
|
return;
|
|
@@ -35823,7 +35997,7 @@ class ImagePerformanceWarning {
|
|
|
35823
35997
|
this.observer = this.initPerformanceObserver();
|
|
35824
35998
|
const doc = getDocument();
|
|
35825
35999
|
const win = doc.defaultView;
|
|
35826
|
-
if (
|
|
36000
|
+
if (win) {
|
|
35827
36001
|
this.window = win;
|
|
35828
36002
|
// Wait to avoid race conditions where LCP image triggers
|
|
35829
36003
|
// load event before it's recorded by the performance observer
|
|
@@ -36541,7 +36715,7 @@ function exhaustiveCheckNoChangesInterval(interval, checkNoChangesMode) {
|
|
|
36541
36715
|
*
|
|
36542
36716
|
* By default, this is true, unless `enableProdMode` is invoked prior to calling this method or the
|
|
36543
36717
|
* application is built using the Angular CLI with the `optimization` option.
|
|
36544
|
-
* @see {@link cli/build ng build}
|
|
36718
|
+
* @see {@link /cli/build ng build}
|
|
36545
36719
|
*
|
|
36546
36720
|
* @publicApi
|
|
36547
36721
|
*/
|
|
@@ -36558,7 +36732,7 @@ function isDevMode() {
|
|
|
36558
36732
|
*
|
|
36559
36733
|
* Using this method is discouraged as the Angular CLI will set production mode when using the
|
|
36560
36734
|
* `optimization` option.
|
|
36561
|
-
* @see {@link cli/build ng build}
|
|
36735
|
+
* @see {@link /cli/build ng build}
|
|
36562
36736
|
*
|
|
36563
36737
|
* @publicApi
|
|
36564
36738
|
*/
|
|
@@ -36684,7 +36858,7 @@ function createViewRef(tNode, lView, isPipe) {
|
|
|
36684
36858
|
/**
|
|
36685
36859
|
* Represents an Angular view.
|
|
36686
36860
|
*
|
|
36687
|
-
* @see
|
|
36861
|
+
* @see {@link /api/core/ChangeDetectorRef?tab=usage-notes Change detection usage}
|
|
36688
36862
|
*
|
|
36689
36863
|
* @publicApi
|
|
36690
36864
|
*/
|
|
@@ -39163,6 +39337,11 @@ function withEventReplay() {
|
|
|
39163
39337
|
const jsActionMap = inject(JSACTION_BLOCK_ELEMENT_MAP);
|
|
39164
39338
|
if (shouldEnableEventReplay(injector)) {
|
|
39165
39339
|
setStashFn((rEl, eventName, listenerFn) => {
|
|
39340
|
+
// If a user binds to a ng-container and uses a directive that binds using a host listener,
|
|
39341
|
+
// this element could be a comment node. So we need to ensure we have an actual element
|
|
39342
|
+
// node before stashing anything.
|
|
39343
|
+
if (rEl.nodeType !== Node.ELEMENT_NODE)
|
|
39344
|
+
return;
|
|
39166
39345
|
sharedStashFunction(rEl, eventName, listenerFn);
|
|
39167
39346
|
sharedMapFunction(rEl, jsActionMap);
|
|
39168
39347
|
});
|
|
@@ -40428,7 +40607,6 @@ function untracked(nonReactiveReadsFn) {
|
|
|
40428
40607
|
* Create a computed `Signal` which derives a reactive value from an expression.
|
|
40429
40608
|
*/
|
|
40430
40609
|
function computed(computation, options) {
|
|
40431
|
-
performanceMarkFeature('NgSignals');
|
|
40432
40610
|
const getter = createComputed$1(computation);
|
|
40433
40611
|
if (options?.equal) {
|
|
40434
40612
|
getter[SIGNAL$1].equal = options.equal;
|
|
@@ -40526,7 +40704,6 @@ function effect$1() { }
|
|
|
40526
40704
|
* Create a global `Effect` for the given reactive function.
|
|
40527
40705
|
*/
|
|
40528
40706
|
function microtaskEffect(effectFn, options) {
|
|
40529
|
-
performanceMarkFeature('NgSignals');
|
|
40530
40707
|
ngDevMode &&
|
|
40531
40708
|
assertNotInReactiveContext(effect$1, 'Call `effect` outside of a reactive context. For example, schedule the ' +
|
|
40532
40709
|
'effect inside the component constructor.');
|
|
@@ -40599,7 +40776,6 @@ function effect(effectFn, options) {
|
|
|
40599
40776
|
}
|
|
40600
40777
|
return microtaskEffect(effectFn, options);
|
|
40601
40778
|
}
|
|
40602
|
-
performanceMarkFeature('NgSignals');
|
|
40603
40779
|
ngDevMode &&
|
|
40604
40780
|
assertNotInReactiveContext(effect, 'Call `effect` outside of a reactive context. For example, schedule the ' +
|
|
40605
40781
|
'effect inside the component constructor.');
|
|
@@ -40796,7 +40972,6 @@ var ResourceStatus;
|
|
|
40796
40972
|
|
|
40797
40973
|
const identityFn = (v) => v;
|
|
40798
40974
|
function linkedSignal(optionsOrComputation, options) {
|
|
40799
|
-
performanceMarkFeature('NgSignals');
|
|
40800
40975
|
if (typeof optionsOrComputation === 'function') {
|
|
40801
40976
|
const getter = createLinkedSignal$1(optionsOrComputation, (identityFn), options?.equal);
|
|
40802
40977
|
return upgradeLinkedSignalGetter(getter);
|
|
@@ -41660,5 +41835,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
41660
41835
|
* Generated bundle index. Do not edit.
|
|
41661
41836
|
*/
|
|
41662
41837
|
|
|
41663
|
-
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, 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, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as 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, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵ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, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41838
|
+
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, 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, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as 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, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵ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, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41664
41839
|
//# sourceMappingURL=core.mjs.map
|