@angular/core 20.0.0-next.2 → 20.0.0-next.3
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 +413 -365
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/di.mjs +3 -2
- package/fesm2022/primitives/di.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +28 -7
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -8
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +2 -10
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/weak_ref-DrMdAIDh.mjs +1 -1
- package/index.d.ts +7523 -7489
- package/navigation_types.d-u4EOrrdZ.d.ts +1 -1
- package/package.json +2 -2
- package/primitives/di/index.d.ts +25 -10
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +9 -6
- package/rxjs-interop/index.d.ts +1 -10
- package/schematics/bundles/{apply_import_manager-CyRT0UvU.js → apply_import_manager-BXQEjo09.js} +6 -6
- package/schematics/bundles/{checker-DF8ZaFW5.js → checker-BHb19MHt.js} +629 -71
- package/schematics/bundles/cleanup-unused-imports.js +42 -69
- package/schematics/bundles/{compiler_host-Da636uJ8.js → compiler_host-Bk3repE2.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/imports-CIX-JgAN.js +1 -1
- package/schematics/bundles/{index-DnkWgagp.js → index-BL9kAIe5.js} +11 -11
- package/schematics/bundles/{program-BZk27Ndu.js → index-I8VbxQcO.js} +2234 -2097
- package/schematics/bundles/inject-flags.js +18 -52
- package/schematics/bundles/inject-migration.js +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-DtkOnnv0.js → migrate_ts_type_references-KlOTWeDl.js} +20 -20
- package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
- package/schematics/bundles/nodes-B16H9JUd.js +1 -1
- package/schematics/bundles/output-migration.js +62 -90
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
- package/schematics/bundles/route-lazy-loading.js +3 -3
- package/schematics/bundles/{project_paths-Jtbi76Bs.js → run_in_devkit-C0JPtK2u.js} +262 -197
- package/schematics/bundles/self-closing-tags-migration.js +41 -71
- package/schematics/bundles/signal-input-migration.js +69 -97
- package/schematics/bundles/signal-queries-migration.js +80 -108
- package/schematics/bundles/signals.js +11 -11
- package/schematics/bundles/standalone-migration.js +8 -22
- package/schematics/bundles/symbol-VPWguRxr.js +25 -0
- package/schematics/bundles/test-bed-get.js +98 -0
- package/schematics/migrations.json +5 -0
- package/testing/index.d.ts +1 -3
- package/weak_ref.d-ttyj86RV.d.ts +1 -1
- package/schematics/bundles/index-vGJcp5M7.js +0 -30
package/fesm2022/core.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.0.0-next.
|
|
2
|
+
* @license Angular v20.0.0-next.3
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { SIGNAL_NODE, signalSetFn, SIGNAL, producerAccessed, getActiveConsumer, setActiveConsumer, createSignal, signalUpdateFn, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError, isInNotificationPhase, createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn } from '@angular/core/primitives/signals';
|
|
7
|
+
import { SIGNAL_NODE, signalSetFn, SIGNAL, producerAccessed, getActiveConsumer, setActiveConsumer, createSignal, signalUpdateFn, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError, untracked as untracked$1, isInNotificationPhase, createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn } from '@angular/core/primitives/signals';
|
|
8
8
|
export { SIGNAL as ɵSIGNAL } from '@angular/core/primitives/signals';
|
|
9
9
|
import { getCurrentInjector, setCurrentInjector } from '@angular/core/primitives/di';
|
|
10
10
|
export { setCurrentInjector as ɵsetCurrentInjector } from '@angular/core/primitives/di';
|
|
@@ -99,7 +99,12 @@ function createInputSignal(initialValue, options) {
|
|
|
99
99
|
// Record that someone looked at this signal.
|
|
100
100
|
producerAccessed(node);
|
|
101
101
|
if (node.value === REQUIRED_UNSET_VALUE) {
|
|
102
|
-
|
|
102
|
+
let message = null;
|
|
103
|
+
if (ngDevMode) {
|
|
104
|
+
const name = options?.debugName ?? options?.alias;
|
|
105
|
+
message = `Input${name ? ` "${name}"` : ''} is required but no value is available yet.`;
|
|
106
|
+
}
|
|
107
|
+
throw new RuntimeError(-950 /* RuntimeErrorCode.REQUIRED_INPUT_NO_VALUE */, message);
|
|
103
108
|
}
|
|
104
109
|
return node.value;
|
|
105
110
|
}
|
|
@@ -506,6 +511,11 @@ function assertGreaterThanOrEqual(actual, expected, msg) {
|
|
|
506
511
|
throwError(msg, actual, expected, '>=');
|
|
507
512
|
}
|
|
508
513
|
}
|
|
514
|
+
function assertNotDefined(actual, msg) {
|
|
515
|
+
if (actual != null) {
|
|
516
|
+
throwError(msg, actual, null, '==');
|
|
517
|
+
}
|
|
518
|
+
}
|
|
509
519
|
function assertDefined(actual, msg) {
|
|
510
520
|
if (actual == null) {
|
|
511
521
|
throwError(msg, actual, null, '!=');
|
|
@@ -6263,11 +6273,8 @@ function ɵunwrapWritableSignal(value) {
|
|
|
6263
6273
|
* Create a `Signal` that can be set or updated directly.
|
|
6264
6274
|
*/
|
|
6265
6275
|
function signal(initialValue, options) {
|
|
6266
|
-
const signalFn = createSignal(initialValue);
|
|
6276
|
+
const signalFn = createSignal(initialValue, options?.equal);
|
|
6267
6277
|
const node = signalFn[SIGNAL];
|
|
6268
|
-
if (options?.equal) {
|
|
6269
|
-
node.equal = options.equal;
|
|
6270
|
-
}
|
|
6271
6278
|
signalFn.set = (newValue) => signalSetFn(node, newValue);
|
|
6272
6279
|
signalFn.update = (updateFn) => signalUpdateFn(node, updateFn);
|
|
6273
6280
|
signalFn.asReadonly = signalAsReadonlyFn.bind(signalFn);
|
|
@@ -7300,7 +7307,7 @@ function sortListeners(a, b) {
|
|
|
7300
7307
|
function isDirectiveDefHack(obj) {
|
|
7301
7308
|
return (obj.type !== undefined &&
|
|
7302
7309
|
obj.declaredInputs !== undefined &&
|
|
7303
|
-
obj.
|
|
7310
|
+
obj.resolveHostDirectives !== undefined);
|
|
7304
7311
|
}
|
|
7305
7312
|
/** Asserts that a value is a DOM Element. */
|
|
7306
7313
|
function assertDomElement(value) {
|
|
@@ -9947,6 +9954,56 @@ function processBlockData(injector) {
|
|
|
9947
9954
|
}
|
|
9948
9955
|
return blockDetails;
|
|
9949
9956
|
}
|
|
9957
|
+
function isSsrContentsIntegrity(node) {
|
|
9958
|
+
return (!!node &&
|
|
9959
|
+
node.nodeType === Node.COMMENT_NODE &&
|
|
9960
|
+
node.textContent?.trim() === SSR_CONTENT_INTEGRITY_MARKER);
|
|
9961
|
+
}
|
|
9962
|
+
function skipTextNodes(node) {
|
|
9963
|
+
// Ignore whitespace. Before the <body>, we shouldn't find text nodes that aren't whitespace.
|
|
9964
|
+
while (node && node.nodeType === Node.TEXT_NODE) {
|
|
9965
|
+
node = node.previousSibling;
|
|
9966
|
+
}
|
|
9967
|
+
return node;
|
|
9968
|
+
}
|
|
9969
|
+
/**
|
|
9970
|
+
* Verifies whether the DOM contains a special marker added during SSR time to make sure
|
|
9971
|
+
* there is no SSR'ed contents transformations happen after SSR is completed. Typically that
|
|
9972
|
+
* happens either by CDN or during the build process as an optimization to remove comment nodes.
|
|
9973
|
+
* Hydration process requires comment nodes produced by Angular to locate correct DOM segments.
|
|
9974
|
+
* When this special marker is *not* present - throw an error and do not proceed with hydration,
|
|
9975
|
+
* since it will not be able to function correctly.
|
|
9976
|
+
*
|
|
9977
|
+
* Note: this function is invoked only on the client, so it's safe to use DOM APIs.
|
|
9978
|
+
*/
|
|
9979
|
+
function verifySsrContentsIntegrity(doc) {
|
|
9980
|
+
for (const node of doc.body.childNodes) {
|
|
9981
|
+
if (isSsrContentsIntegrity(node)) {
|
|
9982
|
+
return;
|
|
9983
|
+
}
|
|
9984
|
+
}
|
|
9985
|
+
// Check if the HTML parser may have moved the marker to just before the <body> tag,
|
|
9986
|
+
// e.g. because the body tag was implicit and not present in the markup. An implicit body
|
|
9987
|
+
// tag is unlikely to interfer with whitespace/comments inside of the app's root element.
|
|
9988
|
+
// Case 1: Implicit body. Example:
|
|
9989
|
+
// <!doctype html><head><title>Hi</title></head><!--nghm--><app-root></app-root>
|
|
9990
|
+
const beforeBody = skipTextNodes(doc.body.previousSibling);
|
|
9991
|
+
if (isSsrContentsIntegrity(beforeBody)) {
|
|
9992
|
+
return;
|
|
9993
|
+
}
|
|
9994
|
+
// Case 2: Implicit body & head. Example:
|
|
9995
|
+
// <!doctype html><head><title>Hi</title><!--nghm--><app-root></app-root>
|
|
9996
|
+
let endOfHead = skipTextNodes(doc.head.lastChild);
|
|
9997
|
+
if (isSsrContentsIntegrity(endOfHead)) {
|
|
9998
|
+
return;
|
|
9999
|
+
}
|
|
10000
|
+
throw new RuntimeError(-507 /* RuntimeErrorCode.MISSING_SSR_CONTENT_INTEGRITY_MARKER */, typeof ngDevMode !== 'undefined' &&
|
|
10001
|
+
ngDevMode &&
|
|
10002
|
+
'Angular hydration logic detected that HTML content of this page was modified after it ' +
|
|
10003
|
+
'was produced during server side rendering. Make sure that there are no optimizations ' +
|
|
10004
|
+
'that remove comment nodes from HTML enabled on your CDN. Angular hydration ' +
|
|
10005
|
+
'relies on HTML produced by the server, including whitespaces and comment nodes.');
|
|
10006
|
+
}
|
|
9950
10007
|
|
|
9951
10008
|
/** Refreshes all content queries declared by directives in a given view */
|
|
9952
10009
|
function refreshContentQueries(tView, lView) {
|
|
@@ -12704,17 +12761,6 @@ function handleUncaughtError(lView, error) {
|
|
|
12704
12761
|
const errorHandler = injector.get(INTERNAL_APPLICATION_ERROR_HANDLER, null);
|
|
12705
12762
|
errorHandler?.(error);
|
|
12706
12763
|
}
|
|
12707
|
-
/**
|
|
12708
|
-
* Handles an error thrown in an LView.
|
|
12709
|
-
* @deprecated Use handleUncaughtError to report to application error handler
|
|
12710
|
-
*/
|
|
12711
|
-
function handleError(lView, error) {
|
|
12712
|
-
const injector = lView[INJECTOR];
|
|
12713
|
-
if (!injector) {
|
|
12714
|
-
return;
|
|
12715
|
-
}
|
|
12716
|
-
injector.get(ErrorHandler, null)?.handleError(error);
|
|
12717
|
-
}
|
|
12718
12764
|
/**
|
|
12719
12765
|
* Set all directive inputs with the specific public name on the node.
|
|
12720
12766
|
*
|
|
@@ -17283,15 +17329,15 @@ function resolveDirectives(tView, lView, tNode, localRefs, directiveMatcher) {
|
|
|
17283
17329
|
const exportsMap = localRefs === null ? null : { '': -1 };
|
|
17284
17330
|
const matchedDirectiveDefs = directiveMatcher(tView, tNode);
|
|
17285
17331
|
if (matchedDirectiveDefs !== null) {
|
|
17286
|
-
let directiveDefs;
|
|
17332
|
+
let directiveDefs = matchedDirectiveDefs;
|
|
17287
17333
|
let hostDirectiveDefs = null;
|
|
17288
17334
|
let hostDirectiveRanges = null;
|
|
17289
|
-
const
|
|
17290
|
-
|
|
17291
|
-
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
|
|
17335
|
+
for (const def of matchedDirectiveDefs) {
|
|
17336
|
+
if (def.resolveHostDirectives !== null) {
|
|
17337
|
+
[directiveDefs, hostDirectiveDefs, hostDirectiveRanges] =
|
|
17338
|
+
def.resolveHostDirectives(matchedDirectiveDefs);
|
|
17339
|
+
break;
|
|
17340
|
+
}
|
|
17295
17341
|
}
|
|
17296
17342
|
ngDevMode && assertNoDuplicateDirectives(directiveDefs);
|
|
17297
17343
|
initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs, hostDirectiveRanges);
|
|
@@ -17313,67 +17359,6 @@ function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
|
|
|
17313
17359
|
localNames.push(localRefs[i], index);
|
|
17314
17360
|
}
|
|
17315
17361
|
}
|
|
17316
|
-
function resolveHostDirectives(matches) {
|
|
17317
|
-
let componentDef = null;
|
|
17318
|
-
let hasHostDirectives = false;
|
|
17319
|
-
// Having host directives is the less common scenario. Make an initial
|
|
17320
|
-
// validation pass so we don't allocate memory unnecessarily.
|
|
17321
|
-
for (let i = 0; i < matches.length; i++) {
|
|
17322
|
-
const def = matches[i];
|
|
17323
|
-
// Given that we may need this further down, we can resolve it already while validating.
|
|
17324
|
-
if (i === 0 && isComponentDef(def)) {
|
|
17325
|
-
componentDef = def;
|
|
17326
|
-
}
|
|
17327
|
-
if (def.findHostDirectiveDefs !== null) {
|
|
17328
|
-
hasHostDirectives = true;
|
|
17329
|
-
break;
|
|
17330
|
-
}
|
|
17331
|
-
}
|
|
17332
|
-
// If there's at least one def with host directive, we can't bail out of this function.
|
|
17333
|
-
if (!hasHostDirectives) {
|
|
17334
|
-
return null;
|
|
17335
|
-
}
|
|
17336
|
-
const allDirectiveDefs = [];
|
|
17337
|
-
let hostDirectiveDefs = null;
|
|
17338
|
-
let hostDirectiveRanges = null;
|
|
17339
|
-
// Components are inserted at the front of the matches array so that their lifecycle
|
|
17340
|
-
// hooks run before any directive lifecycle hooks. This appears to be for ViewEngine
|
|
17341
|
-
// compatibility. This logic doesn't make sense with host directives, because it
|
|
17342
|
-
// would allow the host directives to undo any overrides the host may have made.
|
|
17343
|
-
// To handle this case, the host directives of components are inserted at the beginning
|
|
17344
|
-
// of the array, followed by the component. As such, the insertion order is as follows:
|
|
17345
|
-
// 1. Host directives belonging to the selector-matched component.
|
|
17346
|
-
// 2. Selector-matched component.
|
|
17347
|
-
// 3. Host directives belonging to selector-matched directives.
|
|
17348
|
-
// 4. Selector-matched dir
|
|
17349
|
-
for (const def of matches) {
|
|
17350
|
-
if (def.findHostDirectiveDefs !== null) {
|
|
17351
|
-
hostDirectiveDefs ??= new Map();
|
|
17352
|
-
hostDirectiveRanges ??= new Map();
|
|
17353
|
-
resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs);
|
|
17354
|
-
}
|
|
17355
|
-
// Component definition needs to be pushed early to maintain the correct ordering.
|
|
17356
|
-
if (def === componentDef) {
|
|
17357
|
-
allDirectiveDefs.push(def);
|
|
17358
|
-
}
|
|
17359
|
-
}
|
|
17360
|
-
if (componentDef === null) {
|
|
17361
|
-
allDirectiveDefs.push(...matches);
|
|
17362
|
-
}
|
|
17363
|
-
else {
|
|
17364
|
-
allDirectiveDefs.push(...matches.slice(1));
|
|
17365
|
-
}
|
|
17366
|
-
return [allDirectiveDefs, hostDirectiveDefs, hostDirectiveRanges];
|
|
17367
|
-
}
|
|
17368
|
-
function resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs) {
|
|
17369
|
-
ngDevMode && assertDefined(def.findHostDirectiveDefs, 'Expected host directive resolve function');
|
|
17370
|
-
const start = allDirectiveDefs.length;
|
|
17371
|
-
// TODO(pk): probably could return matches instead of taking in an array to fill in?
|
|
17372
|
-
def.findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs);
|
|
17373
|
-
// Note that these indexes are within the offset by `directiveStart`. We can't do the
|
|
17374
|
-
// offsetting here, because `directiveStart` hasn't been initialized on the TNode yet.
|
|
17375
|
-
hostDirectiveRanges.set(def, [start, allDirectiveDefs.length - 1]);
|
|
17376
|
-
}
|
|
17377
17362
|
/**
|
|
17378
17363
|
* Marks a given TNode as a component's host. This consists of:
|
|
17379
17364
|
* - setting the component offset on the TNode.
|
|
@@ -17887,213 +17872,6 @@ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
|
|
|
17887
17872
|
return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
|
|
17888
17873
|
}
|
|
17889
17874
|
|
|
17890
|
-
/**
|
|
17891
|
-
* Contains a reference to a function that disables event replay feature
|
|
17892
|
-
* for server-side rendered applications. This function is overridden with
|
|
17893
|
-
* an actual implementation when the event replay feature is enabled via
|
|
17894
|
-
* `withEventReplay()` call.
|
|
17895
|
-
*/
|
|
17896
|
-
let stashEventListener = (el, eventName, listenerFn) => { };
|
|
17897
|
-
function setStashFn(fn) {
|
|
17898
|
-
stashEventListener = fn;
|
|
17899
|
-
}
|
|
17900
|
-
/**
|
|
17901
|
-
* Adds an event listener to the current node.
|
|
17902
|
-
*
|
|
17903
|
-
* If an output exists on one of the node's directives, it also subscribes to the output
|
|
17904
|
-
* and saves the subscription for later cleanup.
|
|
17905
|
-
*
|
|
17906
|
-
* @param eventName Name of the event
|
|
17907
|
-
* @param listenerFn The function to be called when event emits
|
|
17908
|
-
* @param useCapture Whether or not to use capture in event listener - this argument is a reminder
|
|
17909
|
-
* from the Renderer3 infrastructure and should be removed from the instruction arguments
|
|
17910
|
-
* @param eventTargetResolver Function that returns global target information in case this listener
|
|
17911
|
-
* should be attached to a global object like window, document or body
|
|
17912
|
-
*
|
|
17913
|
-
* @codeGenApi
|
|
17914
|
-
*/
|
|
17915
|
-
function ɵɵlistener(eventName, listenerFn, useCapture, eventTargetResolver) {
|
|
17916
|
-
const lView = getLView();
|
|
17917
|
-
const tView = getTView();
|
|
17918
|
-
const tNode = getCurrentTNode();
|
|
17919
|
-
listenerInternal(tView, lView, lView[RENDERER], tNode, eventName, listenerFn, eventTargetResolver);
|
|
17920
|
-
return ɵɵlistener;
|
|
17921
|
-
}
|
|
17922
|
-
/**
|
|
17923
|
-
* Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
|
|
17924
|
-
*
|
|
17925
|
-
* This instruction is for compatibility purposes and is designed to ensure that a
|
|
17926
|
-
* synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
|
|
17927
|
-
* in the component's renderer. Normally all host listeners are evaluated with the
|
|
17928
|
-
* parent component's renderer, but, in the case of animation @triggers, they need
|
|
17929
|
-
* to be evaluated with the sub component's renderer (because that's where the
|
|
17930
|
-
* animation triggers are defined).
|
|
17931
|
-
*
|
|
17932
|
-
* Do not use this instruction as a replacement for `listener`. This instruction
|
|
17933
|
-
* only exists to ensure compatibility with the ViewEngine's host binding behavior.
|
|
17934
|
-
*
|
|
17935
|
-
* @param eventName Name of the event
|
|
17936
|
-
* @param listenerFn The function to be called when event emits
|
|
17937
|
-
* @param useCapture Whether or not to use capture in event listener
|
|
17938
|
-
* @param eventTargetResolver Function that returns global target information in case this listener
|
|
17939
|
-
* should be attached to a global object like window, document or body
|
|
17940
|
-
*
|
|
17941
|
-
* @codeGenApi
|
|
17942
|
-
*/
|
|
17943
|
-
function ɵɵsyntheticHostListener(eventName, listenerFn) {
|
|
17944
|
-
const tNode = getCurrentTNode();
|
|
17945
|
-
const lView = getLView();
|
|
17946
|
-
const tView = getTView();
|
|
17947
|
-
const currentDef = getCurrentDirectiveDef(tView.data);
|
|
17948
|
-
const renderer = loadComponentRenderer(currentDef, tNode, lView);
|
|
17949
|
-
listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn);
|
|
17950
|
-
return ɵɵsyntheticHostListener;
|
|
17951
|
-
}
|
|
17952
|
-
/**
|
|
17953
|
-
* A utility function that checks if a given element has already an event handler registered for an
|
|
17954
|
-
* event with a specified name. The TView.cleanup data structure is used to find out which events
|
|
17955
|
-
* are registered for a given element.
|
|
17956
|
-
*/
|
|
17957
|
-
function findExistingListener(tView, lView, eventName, tNodeIdx) {
|
|
17958
|
-
const tCleanup = tView.cleanup;
|
|
17959
|
-
if (tCleanup != null) {
|
|
17960
|
-
for (let i = 0; i < tCleanup.length - 1; i += 2) {
|
|
17961
|
-
const cleanupEventName = tCleanup[i];
|
|
17962
|
-
if (cleanupEventName === eventName && tCleanup[i + 1] === tNodeIdx) {
|
|
17963
|
-
// We have found a matching event name on the same node but it might not have been
|
|
17964
|
-
// registered yet, so we must explicitly verify entries in the LView cleanup data
|
|
17965
|
-
// structures.
|
|
17966
|
-
const lCleanup = lView[CLEANUP];
|
|
17967
|
-
const listenerIdxInLCleanup = tCleanup[i + 2];
|
|
17968
|
-
return lCleanup.length > listenerIdxInLCleanup ? lCleanup[listenerIdxInLCleanup] : null;
|
|
17969
|
-
}
|
|
17970
|
-
// TView.cleanup can have a mix of 4-elements entries (for event handler cleanups) or
|
|
17971
|
-
// 2-element entries (for directive and queries destroy hooks). As such we can encounter
|
|
17972
|
-
// blocks of 4 or 2 items in the tView.cleanup and this is why we iterate over 2 elements
|
|
17973
|
-
// first and jump another 2 elements if we detect listeners cleanup (4 elements). Also check
|
|
17974
|
-
// documentation of TView.cleanup for more details of this data structure layout.
|
|
17975
|
-
if (typeof cleanupEventName === 'string') {
|
|
17976
|
-
i += 2;
|
|
17977
|
-
}
|
|
17978
|
-
}
|
|
17979
|
-
}
|
|
17980
|
-
return null;
|
|
17981
|
-
}
|
|
17982
|
-
function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, eventTargetResolver) {
|
|
17983
|
-
const isTNodeDirectiveHost = isDirectiveHost(tNode);
|
|
17984
|
-
const firstCreatePass = tView.firstCreatePass;
|
|
17985
|
-
const tCleanup = firstCreatePass ? getOrCreateTViewCleanup(tView) : null;
|
|
17986
|
-
const context = lView[CONTEXT];
|
|
17987
|
-
// When the ɵɵlistener instruction was generated and is executed we know that there is either a
|
|
17988
|
-
// native listener or a directive output on this element. As such we we know that we will have to
|
|
17989
|
-
// register a listener and store its cleanup function on LView.
|
|
17990
|
-
const lCleanup = getOrCreateLViewCleanup(lView);
|
|
17991
|
-
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
|
|
17992
|
-
let processOutputs = true;
|
|
17993
|
-
// Adding a native event listener is applicable when:
|
|
17994
|
-
// - The corresponding TNode represents a DOM element.
|
|
17995
|
-
// - The event target has a resolver (usually resulting in a global object,
|
|
17996
|
-
// such as `window` or `document`).
|
|
17997
|
-
if (tNode.type & 3 /* TNodeType.AnyRNode */ || eventTargetResolver) {
|
|
17998
|
-
const native = getNativeByTNode(tNode, lView);
|
|
17999
|
-
const target = eventTargetResolver ? eventTargetResolver(native) : native;
|
|
18000
|
-
const lCleanupIndex = lCleanup.length;
|
|
18001
|
-
const idxOrTargetGetter = eventTargetResolver
|
|
18002
|
-
? (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index]))
|
|
18003
|
-
: tNode.index;
|
|
18004
|
-
// In order to match current behavior, native DOM event listeners must be added for all
|
|
18005
|
-
// events (including outputs).
|
|
18006
|
-
// There might be cases where multiple directives on the same element try to register an event
|
|
18007
|
-
// handler function for the same event. In this situation we want to avoid registration of
|
|
18008
|
-
// several native listeners as each registration would be intercepted by NgZone and
|
|
18009
|
-
// trigger change detection. This would mean that a single user action would result in several
|
|
18010
|
-
// change detections being invoked. To avoid this situation we want to have only one call to
|
|
18011
|
-
// native handler registration (for the same element and same type of event).
|
|
18012
|
-
//
|
|
18013
|
-
// In order to have just one native event handler in presence of multiple handler functions,
|
|
18014
|
-
// we just register a first handler function as a native event listener and then chain
|
|
18015
|
-
// (coalesce) other handler functions on top of the first native handler function.
|
|
18016
|
-
let existingListener = null;
|
|
18017
|
-
// Please note that the coalescing described here doesn't happen for events specifying an
|
|
18018
|
-
// alternative target (ex. (document:click)) - this is to keep backward compatibility with the
|
|
18019
|
-
// view engine.
|
|
18020
|
-
// Also, we don't have to search for existing listeners is there are no directives
|
|
18021
|
-
// matching on a given node as we can't register multiple event handlers for the same event in
|
|
18022
|
-
// a template (this would mean having duplicate attributes).
|
|
18023
|
-
if (!eventTargetResolver && isTNodeDirectiveHost) {
|
|
18024
|
-
existingListener = findExistingListener(tView, lView, eventName, tNode.index);
|
|
18025
|
-
}
|
|
18026
|
-
if (existingListener !== null) {
|
|
18027
|
-
// Attach a new listener to coalesced listeners list, maintaining the order in which
|
|
18028
|
-
// listeners are registered. For performance reasons, we keep a reference to the last
|
|
18029
|
-
// listener in that list (in `__ngLastListenerFn__` field), so we can avoid going through
|
|
18030
|
-
// the entire set each time we need to add a new listener.
|
|
18031
|
-
const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;
|
|
18032
|
-
lastListenerFn.__ngNextListenerFn__ = listenerFn;
|
|
18033
|
-
existingListener.__ngLastListenerFn__ = listenerFn;
|
|
18034
|
-
processOutputs = false;
|
|
18035
|
-
}
|
|
18036
|
-
else {
|
|
18037
|
-
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
18038
|
-
stashEventListener(target, eventName, listenerFn);
|
|
18039
|
-
const cleanupFn = renderer.listen(target, eventName, listenerFn);
|
|
18040
|
-
lCleanup.push(listenerFn, cleanupFn);
|
|
18041
|
-
tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, lCleanupIndex + 1);
|
|
18042
|
-
}
|
|
18043
|
-
}
|
|
18044
|
-
else {
|
|
18045
|
-
// Even if there is no native listener to add, we still need to wrap the listener so that OnPush
|
|
18046
|
-
// ancestors are marked dirty when an event occurs.
|
|
18047
|
-
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
18048
|
-
}
|
|
18049
|
-
if (processOutputs) {
|
|
18050
|
-
const outputConfig = tNode.outputs?.[eventName];
|
|
18051
|
-
const hostDirectiveOutputConfig = tNode.hostDirectiveOutputs?.[eventName];
|
|
18052
|
-
if (hostDirectiveOutputConfig && hostDirectiveOutputConfig.length) {
|
|
18053
|
-
for (let i = 0; i < hostDirectiveOutputConfig.length; i += 2) {
|
|
18054
|
-
const index = hostDirectiveOutputConfig[i];
|
|
18055
|
-
const lookupName = hostDirectiveOutputConfig[i + 1];
|
|
18056
|
-
listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup);
|
|
18057
|
-
}
|
|
18058
|
-
}
|
|
18059
|
-
if (outputConfig && outputConfig.length) {
|
|
18060
|
-
for (const index of outputConfig) {
|
|
18061
|
-
listenToOutput(tNode, tView, lView, index, eventName, eventName, listenerFn, lCleanup, tCleanup);
|
|
18062
|
-
}
|
|
18063
|
-
}
|
|
18064
|
-
}
|
|
18065
|
-
}
|
|
18066
|
-
function listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup) {
|
|
18067
|
-
ngDevMode && assertIndexInRange(lView, index);
|
|
18068
|
-
const instance = lView[index];
|
|
18069
|
-
const def = tView.data[index];
|
|
18070
|
-
const propertyName = def.outputs[lookupName];
|
|
18071
|
-
const output = instance[propertyName];
|
|
18072
|
-
if (ngDevMode && !isOutputSubscribable(output)) {
|
|
18073
|
-
throw new Error(`@Output ${propertyName} not initialized in '${instance.constructor.name}'.`);
|
|
18074
|
-
}
|
|
18075
|
-
const subscription = output.subscribe(listenerFn);
|
|
18076
|
-
const idx = lCleanup.length;
|
|
18077
|
-
lCleanup.push(listenerFn, subscription);
|
|
18078
|
-
tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));
|
|
18079
|
-
}
|
|
18080
|
-
function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
18081
|
-
const prevConsumer = setActiveConsumer(null);
|
|
18082
|
-
try {
|
|
18083
|
-
profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);
|
|
18084
|
-
// Only explicitly returning false from a listener should preventDefault
|
|
18085
|
-
return listenerFn(e) !== false;
|
|
18086
|
-
}
|
|
18087
|
-
catch (error) {
|
|
18088
|
-
// TODO(atscott): This should report to the application error handler, not the ErrorHandler on LView injector
|
|
18089
|
-
handleError(lView, error);
|
|
18090
|
-
return false;
|
|
18091
|
-
}
|
|
18092
|
-
finally {
|
|
18093
|
-
profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);
|
|
18094
|
-
setActiveConsumer(prevConsumer);
|
|
18095
|
-
}
|
|
18096
|
-
}
|
|
18097
17875
|
/**
|
|
18098
17876
|
* Wraps an event listener with a function that marks ancestors dirty and prevents default behavior,
|
|
18099
17877
|
* if applicable.
|
|
@@ -18129,14 +17907,43 @@ function wrapListener(tNode, lView, context, listenerFn) {
|
|
|
18129
17907
|
return result;
|
|
18130
17908
|
};
|
|
18131
17909
|
}
|
|
17910
|
+
function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
17911
|
+
const prevConsumer = setActiveConsumer(null);
|
|
17912
|
+
try {
|
|
17913
|
+
profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);
|
|
17914
|
+
// Only explicitly returning false from a listener should preventDefault
|
|
17915
|
+
return listenerFn(e) !== false;
|
|
17916
|
+
}
|
|
17917
|
+
catch (error) {
|
|
17918
|
+
// TODO(atscott): This should report to the application error handler, not the ErrorHandler on LView injector
|
|
17919
|
+
handleError(lView, error);
|
|
17920
|
+
return false;
|
|
17921
|
+
}
|
|
17922
|
+
finally {
|
|
17923
|
+
profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);
|
|
17924
|
+
setActiveConsumer(prevConsumer);
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
18132
17927
|
/**
|
|
18133
|
-
*
|
|
18134
|
-
*
|
|
18135
|
-
* For example, an `EventEmitter, a `Subject`, an `Observable` or an
|
|
18136
|
-
* `OutputEmitter`.
|
|
17928
|
+
* Handles an error thrown in an LView.
|
|
17929
|
+
* @deprecated Use handleUncaughtError to report to application error handler
|
|
18137
17930
|
*/
|
|
18138
|
-
function
|
|
18139
|
-
|
|
17931
|
+
function handleError(lView, error) {
|
|
17932
|
+
const injector = lView[INJECTOR];
|
|
17933
|
+
if (!injector) {
|
|
17934
|
+
return;
|
|
17935
|
+
}
|
|
17936
|
+
injector.get(ErrorHandler, null)?.handleError(error);
|
|
17937
|
+
}
|
|
17938
|
+
|
|
17939
|
+
function createOutputListener(tNode, lView, listenerFn, targetDef, eventName) {
|
|
17940
|
+
// TODO(pk): decouple checks from the actual binding
|
|
17941
|
+
const wrappedListener = wrapListener(tNode, lView, lView[CONTEXT], listenerFn);
|
|
17942
|
+
// TODO(pk): simplify signature of listenToDirectiveOutput
|
|
17943
|
+
const hasBound = listenToDirectiveOutput(tNode, lView[TVIEW], lView, targetDef, eventName, wrappedListener);
|
|
17944
|
+
if (!hasBound && ngDevMode) {
|
|
17945
|
+
throw new RuntimeError(316 /* RuntimeErrorCode.INVALID_BINDING_TARGET */, `${stringifyForError(targetDef.type)} does not have an output with a public name of "${eventName}".`);
|
|
17946
|
+
}
|
|
18140
17947
|
}
|
|
18141
17948
|
/** Listens to an output on a specific directive. */
|
|
18142
17949
|
function listenToDirectiveOutput(tNode, tView, lView, target, eventName, listenerFn) {
|
|
@@ -18172,13 +17979,36 @@ function listenToDirectiveOutput(tNode, tView, lView, target, eventName, listene
|
|
|
18172
17979
|
}
|
|
18173
17980
|
}
|
|
18174
17981
|
}
|
|
18175
|
-
if (
|
|
17982
|
+
if (target.outputs.hasOwnProperty(eventName)) {
|
|
18176
17983
|
ngDevMode && assertIndexInRange(lView, hostIndex);
|
|
18177
17984
|
hasOutput = true;
|
|
18178
17985
|
listenToOutput(tNode, tView, lView, hostIndex, eventName, eventName, listenerFn, lCleanup, tCleanup);
|
|
18179
17986
|
}
|
|
18180
17987
|
return hasOutput;
|
|
18181
17988
|
}
|
|
17989
|
+
function listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup) {
|
|
17990
|
+
ngDevMode && assertIndexInRange(lView, index);
|
|
17991
|
+
const instance = lView[index];
|
|
17992
|
+
const def = tView.data[index];
|
|
17993
|
+
const propertyName = def.outputs[lookupName];
|
|
17994
|
+
const output = instance[propertyName];
|
|
17995
|
+
if (ngDevMode && !isOutputSubscribable(output)) {
|
|
17996
|
+
throw new Error(`@Output ${propertyName} not initialized in '${instance.constructor.name}'.`);
|
|
17997
|
+
}
|
|
17998
|
+
const subscription = output.subscribe(listenerFn);
|
|
17999
|
+
const idx = lCleanup.length;
|
|
18000
|
+
lCleanup.push(listenerFn, subscription);
|
|
18001
|
+
tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));
|
|
18002
|
+
}
|
|
18003
|
+
/**
|
|
18004
|
+
* Whether the given value represents a subscribable output.
|
|
18005
|
+
*
|
|
18006
|
+
* For example, an `EventEmitter, a `Subject`, an `Observable` or an
|
|
18007
|
+
* `OutputEmitter`.
|
|
18008
|
+
*/
|
|
18009
|
+
function isOutputSubscribable(value) {
|
|
18010
|
+
return (value != null && typeof value.subscribe === 'function');
|
|
18011
|
+
}
|
|
18182
18012
|
|
|
18183
18013
|
/*!
|
|
18184
18014
|
* @license
|
|
@@ -18272,18 +18102,53 @@ function outputBinding(eventName, listener) {
|
|
|
18272
18102
|
throw new RuntimeError(315 /* RuntimeErrorCode.NO_BINDING_TARGET */, `Output binding to "${eventName}" does not have a target.`);
|
|
18273
18103
|
}
|
|
18274
18104
|
const lView = getLView();
|
|
18275
|
-
const tView = getTView();
|
|
18276
18105
|
const tNode = getCurrentTNode();
|
|
18277
|
-
|
|
18278
|
-
const wrappedListener = wrapListener(tNode, lView, context, listener);
|
|
18279
|
-
const hasBound = listenToDirectiveOutput(tNode, tView, lView, target, eventName, wrappedListener);
|
|
18280
|
-
if (!hasBound && ngDevMode) {
|
|
18281
|
-
throw new RuntimeError(316 /* RuntimeErrorCode.INVALID_BINDING_TARGET */, `${stringifyForError(target.type)} does not have an output with a public name of "${eventName}".`);
|
|
18282
|
-
}
|
|
18106
|
+
createOutputListener(tNode, lView, listener, target, eventName);
|
|
18283
18107
|
},
|
|
18284
18108
|
};
|
|
18285
18109
|
return binding;
|
|
18286
18110
|
}
|
|
18111
|
+
/**
|
|
18112
|
+
* Creates a two-way binding.
|
|
18113
|
+
* @param eventName Public name of the two-way compatible input.
|
|
18114
|
+
* @param value Writable signal from which to get the current value and to which to write new
|
|
18115
|
+
* values.
|
|
18116
|
+
*
|
|
18117
|
+
* ### Usage example
|
|
18118
|
+
* In this example we create an instance of the `MyCheckbox` component and bind to its `value`
|
|
18119
|
+
* input using a two-way binding.
|
|
18120
|
+
*
|
|
18121
|
+
* ```
|
|
18122
|
+
* const checkboxValue = signal('');
|
|
18123
|
+
*
|
|
18124
|
+
* createComponent(MyCheckbox, {
|
|
18125
|
+
* bindings: [
|
|
18126
|
+
* twoWayBinding('value', checkboxValue),
|
|
18127
|
+
* ],
|
|
18128
|
+
* });
|
|
18129
|
+
* ```
|
|
18130
|
+
*/
|
|
18131
|
+
function twoWayBinding(publicName, value) {
|
|
18132
|
+
const input = inputBinding(publicName, value);
|
|
18133
|
+
const output = outputBinding(publicName + 'Change', (eventValue) => value.set(eventValue));
|
|
18134
|
+
// We take advantage of inputs only having a `create` block and outputs only having an `update`
|
|
18135
|
+
// block by passing them through directly instead of creating dedicated functions here. This
|
|
18136
|
+
// assumption can break down if one of them starts targeting both blocks. These assertions
|
|
18137
|
+
// are here to help us catch it if something changes in the future.
|
|
18138
|
+
ngDevMode && assertNotDefined(input.create, 'Unexpected `create` callback in inputBinding');
|
|
18139
|
+
ngDevMode && assertNotDefined(output.update, 'Unexpected `update` callback in outputBinding');
|
|
18140
|
+
return {
|
|
18141
|
+
[BINDING]: {
|
|
18142
|
+
kind: 'twoWay',
|
|
18143
|
+
requiredVars: input[BINDING].requiredVars + output[BINDING].requiredVars,
|
|
18144
|
+
},
|
|
18145
|
+
set target(target) {
|
|
18146
|
+
input.target = output.target = target;
|
|
18147
|
+
},
|
|
18148
|
+
create: output.create,
|
|
18149
|
+
update: input.update,
|
|
18150
|
+
};
|
|
18151
|
+
}
|
|
18287
18152
|
|
|
18288
18153
|
class ComponentFactoryResolver extends ComponentFactoryResolver$1 {
|
|
18289
18154
|
ngModule;
|
|
@@ -18476,7 +18341,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
18476
18341
|
}
|
|
18477
18342
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
18478
18343
|
const tAttributes = rootSelectorOrNode
|
|
18479
|
-
? ['ng-version', '20.0.0-next.
|
|
18344
|
+
? ['ng-version', '20.0.0-next.3']
|
|
18480
18345
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
18481
18346
|
extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
18482
18347
|
let creationBindings = null;
|
|
@@ -18534,7 +18399,8 @@ function getRootTViewTemplate(creationBindings, updateBindings) {
|
|
|
18534
18399
|
};
|
|
18535
18400
|
}
|
|
18536
18401
|
function isInputBinding(binding) {
|
|
18537
|
-
|
|
18402
|
+
const kind = binding[BINDING].kind;
|
|
18403
|
+
return kind === 'input' || kind === 'twoWay';
|
|
18538
18404
|
}
|
|
18539
18405
|
/**
|
|
18540
18406
|
* Represents an instance of a Component created via a {@link ComponentFactory}.
|
|
@@ -18566,7 +18432,7 @@ class ComponentRef extends ComponentRef$1 {
|
|
|
18566
18432
|
}
|
|
18567
18433
|
setInput(name, value) {
|
|
18568
18434
|
if (this._hasInputBindings && ngDevMode) {
|
|
18569
|
-
throw new RuntimeError(317 /* RuntimeErrorCode.INVALID_SET_INPUT_CALL */, 'Cannot call `setInput` on a component that is using the `inputBinding`
|
|
18435
|
+
throw new RuntimeError(317 /* RuntimeErrorCode.INVALID_SET_INPUT_CALL */, 'Cannot call `setInput` on a component that is using the `inputBinding` or `twoWayBinding` functions.');
|
|
18570
18436
|
}
|
|
18571
18437
|
const tNode = this._tNode;
|
|
18572
18438
|
this.previousInputValues ??= new Map();
|
|
@@ -20520,7 +20386,7 @@ function getNgDirectiveDef(directiveDefinition) {
|
|
|
20520
20386
|
viewQuery: directiveDefinition.viewQuery || null,
|
|
20521
20387
|
features: directiveDefinition.features || null,
|
|
20522
20388
|
setInput: null,
|
|
20523
|
-
|
|
20389
|
+
resolveHostDirectives: null,
|
|
20524
20390
|
hostDirectives: null,
|
|
20525
20391
|
inputs: parseAndConvertInputsForDefinition(directiveDefinition.inputs, declaredInputs),
|
|
20526
20392
|
outputs: parseAndConvertOutputsForDefinition(directiveDefinition.outputs),
|
|
@@ -20878,7 +20744,7 @@ function ɵɵHostDirectivesFeature(rawHostDirectives) {
|
|
|
20878
20744
|
const feature = (definition) => {
|
|
20879
20745
|
const isEager = Array.isArray(rawHostDirectives);
|
|
20880
20746
|
if (definition.hostDirectives === null) {
|
|
20881
|
-
definition.
|
|
20747
|
+
definition.resolveHostDirectives = resolveHostDirectives;
|
|
20882
20748
|
definition.hostDirectives = isEager
|
|
20883
20749
|
? rawHostDirectives.map(createHostDirectiveDef)
|
|
20884
20750
|
: [rawHostDirectives];
|
|
@@ -20893,6 +20759,50 @@ function ɵɵHostDirectivesFeature(rawHostDirectives) {
|
|
|
20893
20759
|
feature.ngInherit = true;
|
|
20894
20760
|
return feature;
|
|
20895
20761
|
}
|
|
20762
|
+
/**
|
|
20763
|
+
* Function that will be patched onto a definition to enable host directives. It is intended to
|
|
20764
|
+
* be called once during directive matching and is the same for all definitions.
|
|
20765
|
+
* @param matches Directives resolved through selector matching.
|
|
20766
|
+
*/
|
|
20767
|
+
function resolveHostDirectives(matches) {
|
|
20768
|
+
const allDirectiveDefs = [];
|
|
20769
|
+
let hasComponent = false;
|
|
20770
|
+
let hostDirectiveDefs = null;
|
|
20771
|
+
let hostDirectiveRanges = null;
|
|
20772
|
+
// Components are inserted at the front of the matches array so that their lifecycle
|
|
20773
|
+
// hooks run before any directive lifecycle hooks. This appears to be for ViewEngine
|
|
20774
|
+
// compatibility. This logic doesn't make sense with host directives, because it
|
|
20775
|
+
// would allow the host directives to undo any overrides the host may have made.
|
|
20776
|
+
// To handle this case, the host directives of components are inserted at the beginning
|
|
20777
|
+
// of the array, followed by the component. As such, the insertion order is as follows:
|
|
20778
|
+
// 1. Host directives belonging to the selector-matched component.
|
|
20779
|
+
// 2. Selector-matched component.
|
|
20780
|
+
// 3. Host directives belonging to selector-matched directives.
|
|
20781
|
+
// 4. Selector-matched dir
|
|
20782
|
+
for (let i = 0; i < matches.length; i++) {
|
|
20783
|
+
const def = matches[i];
|
|
20784
|
+
if (def.hostDirectives !== null) {
|
|
20785
|
+
const start = allDirectiveDefs.length;
|
|
20786
|
+
hostDirectiveDefs ??= new Map();
|
|
20787
|
+
hostDirectiveRanges ??= new Map();
|
|
20788
|
+
// TODO(pk): probably could return matches instead of taking in an array to fill in?
|
|
20789
|
+
findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs);
|
|
20790
|
+
// Note that these indexes are within the offset by `directiveStart`. We can't do the
|
|
20791
|
+
// offsetting here, because `directiveStart` hasn't been initialized on the TNode yet.
|
|
20792
|
+
hostDirectiveRanges.set(def, [start, allDirectiveDefs.length - 1]);
|
|
20793
|
+
}
|
|
20794
|
+
// Component definition is always first and needs to be
|
|
20795
|
+
// pushed early to maintain the correct ordering.
|
|
20796
|
+
if (i === 0 && isComponentDef(def)) {
|
|
20797
|
+
hasComponent = true;
|
|
20798
|
+
allDirectiveDefs.push(def);
|
|
20799
|
+
}
|
|
20800
|
+
}
|
|
20801
|
+
for (let i = hasComponent ? 1 : 0; i < matches.length; i++) {
|
|
20802
|
+
allDirectiveDefs.push(matches[i]);
|
|
20803
|
+
}
|
|
20804
|
+
return [allDirectiveDefs, hostDirectiveDefs, hostDirectiveRanges];
|
|
20805
|
+
}
|
|
20896
20806
|
function findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {
|
|
20897
20807
|
if (currentDef.hostDirectives !== null) {
|
|
20898
20808
|
for (const configOrFn of currentDef.hostDirectives) {
|
|
@@ -21283,8 +21193,9 @@ function onTimer(delay) {
|
|
|
21283
21193
|
*/
|
|
21284
21194
|
function scheduleTimerTrigger(delay, callback, injector) {
|
|
21285
21195
|
const scheduler = injector.get(TimerScheduler);
|
|
21196
|
+
const ngZone = injector.get(NgZone);
|
|
21286
21197
|
const cleanupFn = () => scheduler.remove(callback);
|
|
21287
|
-
scheduler.add(delay, callback);
|
|
21198
|
+
scheduler.add(delay, callback, ngZone);
|
|
21288
21199
|
return cleanupFn;
|
|
21289
21200
|
}
|
|
21290
21201
|
/**
|
|
@@ -21310,10 +21221,10 @@ class TimerScheduler {
|
|
|
21310
21221
|
// the current callback invocation. The shape of this list is the same
|
|
21311
21222
|
// as the shape of the `current` list.
|
|
21312
21223
|
deferred = [];
|
|
21313
|
-
add(delay, callback) {
|
|
21224
|
+
add(delay, callback, ngZone) {
|
|
21314
21225
|
const target = this.executingCallbacks ? this.deferred : this.current;
|
|
21315
21226
|
this.addToQueue(target, Date.now() + delay, callback);
|
|
21316
|
-
this.scheduleTimer();
|
|
21227
|
+
this.scheduleTimer(ngZone);
|
|
21317
21228
|
}
|
|
21318
21229
|
remove(callback) {
|
|
21319
21230
|
const { current, deferred } = this;
|
|
@@ -21359,7 +21270,7 @@ class TimerScheduler {
|
|
|
21359
21270
|
}
|
|
21360
21271
|
return index;
|
|
21361
21272
|
}
|
|
21362
|
-
scheduleTimer() {
|
|
21273
|
+
scheduleTimer(ngZone) {
|
|
21363
21274
|
const callback = () => {
|
|
21364
21275
|
this.clearTimeout();
|
|
21365
21276
|
this.executingCallbacks = true;
|
|
@@ -21409,7 +21320,7 @@ class TimerScheduler {
|
|
|
21409
21320
|
}
|
|
21410
21321
|
this.deferred.length = 0;
|
|
21411
21322
|
}
|
|
21412
|
-
this.scheduleTimer();
|
|
21323
|
+
this.scheduleTimer(ngZone);
|
|
21413
21324
|
};
|
|
21414
21325
|
// Avoid running timer callbacks more than once per
|
|
21415
21326
|
// average frame duration. This is needed for better
|
|
@@ -21432,7 +21343,9 @@ class TimerScheduler {
|
|
|
21432
21343
|
this.clearTimeout();
|
|
21433
21344
|
const timeout = Math.max(invokeAt - now, FRAME_DURATION_MS);
|
|
21434
21345
|
this.invokeTimerAt = invokeAt;
|
|
21435
|
-
this.timeoutId =
|
|
21346
|
+
this.timeoutId = ngZone.runOutsideAngular(() => {
|
|
21347
|
+
return setTimeout(() => ngZone.run(callback), timeout);
|
|
21348
|
+
});
|
|
21436
21349
|
}
|
|
21437
21350
|
}
|
|
21438
21351
|
}
|
|
@@ -30446,6 +30359,181 @@ function ɵɵi18nPostprocess(message, replacements = {}) {
|
|
|
30446
30359
|
return i18nPostprocess(message, replacements);
|
|
30447
30360
|
}
|
|
30448
30361
|
|
|
30362
|
+
/**
|
|
30363
|
+
* Contains a reference to a function that disables event replay feature
|
|
30364
|
+
* for server-side rendered applications. This function is overridden with
|
|
30365
|
+
* an actual implementation when the event replay feature is enabled via
|
|
30366
|
+
* `withEventReplay()` call.
|
|
30367
|
+
*/
|
|
30368
|
+
let stashEventListener = (el, eventName, listenerFn) => { };
|
|
30369
|
+
function setStashFn(fn) {
|
|
30370
|
+
stashEventListener = fn;
|
|
30371
|
+
}
|
|
30372
|
+
/**
|
|
30373
|
+
* Adds an event listener to the current node.
|
|
30374
|
+
*
|
|
30375
|
+
* If an output exists on one of the node's directives, it also subscribes to the output
|
|
30376
|
+
* and saves the subscription for later cleanup.
|
|
30377
|
+
*
|
|
30378
|
+
* @param eventName Name of the event
|
|
30379
|
+
* @param listenerFn The function to be called when event emits
|
|
30380
|
+
* @param eventTargetResolver Function that returns global target information in case this listener
|
|
30381
|
+
* should be attached to a global object like window, document or body
|
|
30382
|
+
*
|
|
30383
|
+
* @codeGenApi
|
|
30384
|
+
*/
|
|
30385
|
+
function ɵɵlistener(eventName, listenerFn, eventTargetResolver) {
|
|
30386
|
+
const lView = getLView();
|
|
30387
|
+
const tView = getTView();
|
|
30388
|
+
const tNode = getCurrentTNode();
|
|
30389
|
+
listenerInternal(tView, lView, lView[RENDERER], tNode, eventName, listenerFn, eventTargetResolver);
|
|
30390
|
+
return ɵɵlistener;
|
|
30391
|
+
}
|
|
30392
|
+
/**
|
|
30393
|
+
* Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
|
|
30394
|
+
*
|
|
30395
|
+
* This instruction is for compatibility purposes and is designed to ensure that a
|
|
30396
|
+
* synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
|
|
30397
|
+
* in the component's renderer. Normally all host listeners are evaluated with the
|
|
30398
|
+
* parent component's renderer, but, in the case of animation @triggers, they need
|
|
30399
|
+
* to be evaluated with the sub component's renderer (because that's where the
|
|
30400
|
+
* animation triggers are defined).
|
|
30401
|
+
*
|
|
30402
|
+
* Do not use this instruction as a replacement for `listener`. This instruction
|
|
30403
|
+
* only exists to ensure compatibility with the ViewEngine's host binding behavior.
|
|
30404
|
+
*
|
|
30405
|
+
* @param eventName Name of the event
|
|
30406
|
+
* @param listenerFn The function to be called when event emits
|
|
30407
|
+
* @param useCapture Whether or not to use capture in event listener
|
|
30408
|
+
* @param eventTargetResolver Function that returns global target information in case this listener
|
|
30409
|
+
* should be attached to a global object like window, document or body
|
|
30410
|
+
*
|
|
30411
|
+
* @codeGenApi
|
|
30412
|
+
*/
|
|
30413
|
+
function ɵɵsyntheticHostListener(eventName, listenerFn) {
|
|
30414
|
+
const tNode = getCurrentTNode();
|
|
30415
|
+
const lView = getLView();
|
|
30416
|
+
const tView = getTView();
|
|
30417
|
+
const currentDef = getCurrentDirectiveDef(tView.data);
|
|
30418
|
+
const renderer = loadComponentRenderer(currentDef, tNode, lView);
|
|
30419
|
+
listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn);
|
|
30420
|
+
return ɵɵsyntheticHostListener;
|
|
30421
|
+
}
|
|
30422
|
+
/**
|
|
30423
|
+
* A utility function that checks if a given element has already an event handler registered for an
|
|
30424
|
+
* event with a specified name. The TView.cleanup data structure is used to find out which events
|
|
30425
|
+
* are registered for a given element.
|
|
30426
|
+
*/
|
|
30427
|
+
function findExistingListener(tView, lView, eventName, tNodeIdx) {
|
|
30428
|
+
const tCleanup = tView.cleanup;
|
|
30429
|
+
if (tCleanup != null) {
|
|
30430
|
+
for (let i = 0; i < tCleanup.length - 1; i += 2) {
|
|
30431
|
+
const cleanupEventName = tCleanup[i];
|
|
30432
|
+
if (cleanupEventName === eventName && tCleanup[i + 1] === tNodeIdx) {
|
|
30433
|
+
// We have found a matching event name on the same node but it might not have been
|
|
30434
|
+
// registered yet, so we must explicitly verify entries in the LView cleanup data
|
|
30435
|
+
// structures.
|
|
30436
|
+
const lCleanup = lView[CLEANUP];
|
|
30437
|
+
const listenerIdxInLCleanup = tCleanup[i + 2];
|
|
30438
|
+
return lCleanup.length > listenerIdxInLCleanup ? lCleanup[listenerIdxInLCleanup] : null;
|
|
30439
|
+
}
|
|
30440
|
+
// TView.cleanup can have a mix of 4-elements entries (for event handler cleanups) or
|
|
30441
|
+
// 2-element entries (for directive and queries destroy hooks). As such we can encounter
|
|
30442
|
+
// blocks of 4 or 2 items in the tView.cleanup and this is why we iterate over 2 elements
|
|
30443
|
+
// first and jump another 2 elements if we detect listeners cleanup (4 elements). Also check
|
|
30444
|
+
// documentation of TView.cleanup for more details of this data structure layout.
|
|
30445
|
+
if (typeof cleanupEventName === 'string') {
|
|
30446
|
+
i += 2;
|
|
30447
|
+
}
|
|
30448
|
+
}
|
|
30449
|
+
}
|
|
30450
|
+
return null;
|
|
30451
|
+
}
|
|
30452
|
+
function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, eventTargetResolver) {
|
|
30453
|
+
const isTNodeDirectiveHost = isDirectiveHost(tNode);
|
|
30454
|
+
const firstCreatePass = tView.firstCreatePass;
|
|
30455
|
+
const tCleanup = firstCreatePass ? getOrCreateTViewCleanup(tView) : null;
|
|
30456
|
+
const context = lView[CONTEXT];
|
|
30457
|
+
// When the ɵɵlistener instruction was generated and is executed we know that there is either a
|
|
30458
|
+
// native listener or a directive output on this element. As such we we know that we will have to
|
|
30459
|
+
// register a listener and store its cleanup function on LView.
|
|
30460
|
+
const lCleanup = getOrCreateLViewCleanup(lView);
|
|
30461
|
+
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
|
|
30462
|
+
let processOutputs = true;
|
|
30463
|
+
// Adding a native event listener is applicable when:
|
|
30464
|
+
// - The corresponding TNode represents a DOM element.
|
|
30465
|
+
// - The event target has a resolver (usually resulting in a global object,
|
|
30466
|
+
// such as `window` or `document`).
|
|
30467
|
+
if (tNode.type & 3 /* TNodeType.AnyRNode */ || eventTargetResolver) {
|
|
30468
|
+
const native = getNativeByTNode(tNode, lView);
|
|
30469
|
+
const target = eventTargetResolver ? eventTargetResolver(native) : native;
|
|
30470
|
+
const lCleanupIndex = lCleanup.length;
|
|
30471
|
+
const idxOrTargetGetter = eventTargetResolver
|
|
30472
|
+
? (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index]))
|
|
30473
|
+
: tNode.index;
|
|
30474
|
+
// In order to match current behavior, native DOM event listeners must be added for all
|
|
30475
|
+
// events (including outputs).
|
|
30476
|
+
// There might be cases where multiple directives on the same element try to register an event
|
|
30477
|
+
// handler function for the same event. In this situation we want to avoid registration of
|
|
30478
|
+
// several native listeners as each registration would be intercepted by NgZone and
|
|
30479
|
+
// trigger change detection. This would mean that a single user action would result in several
|
|
30480
|
+
// change detections being invoked. To avoid this situation we want to have only one call to
|
|
30481
|
+
// native handler registration (for the same element and same type of event).
|
|
30482
|
+
//
|
|
30483
|
+
// In order to have just one native event handler in presence of multiple handler functions,
|
|
30484
|
+
// we just register a first handler function as a native event listener and then chain
|
|
30485
|
+
// (coalesce) other handler functions on top of the first native handler function.
|
|
30486
|
+
let existingListener = null;
|
|
30487
|
+
// Please note that the coalescing described here doesn't happen for events specifying an
|
|
30488
|
+
// alternative target (ex. (document:click)) - this is to keep backward compatibility with the
|
|
30489
|
+
// view engine.
|
|
30490
|
+
// Also, we don't have to search for existing listeners is there are no directives
|
|
30491
|
+
// matching on a given node as we can't register multiple event handlers for the same event in
|
|
30492
|
+
// a template (this would mean having duplicate attributes).
|
|
30493
|
+
if (!eventTargetResolver && isTNodeDirectiveHost) {
|
|
30494
|
+
existingListener = findExistingListener(tView, lView, eventName, tNode.index);
|
|
30495
|
+
}
|
|
30496
|
+
if (existingListener !== null) {
|
|
30497
|
+
// Attach a new listener to coalesced listeners list, maintaining the order in which
|
|
30498
|
+
// listeners are registered. For performance reasons, we keep a reference to the last
|
|
30499
|
+
// listener in that list (in `__ngLastListenerFn__` field), so we can avoid going through
|
|
30500
|
+
// the entire set each time we need to add a new listener.
|
|
30501
|
+
const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;
|
|
30502
|
+
lastListenerFn.__ngNextListenerFn__ = listenerFn;
|
|
30503
|
+
existingListener.__ngLastListenerFn__ = listenerFn;
|
|
30504
|
+
processOutputs = false;
|
|
30505
|
+
}
|
|
30506
|
+
else {
|
|
30507
|
+
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
30508
|
+
stashEventListener(target, eventName, listenerFn);
|
|
30509
|
+
const cleanupFn = renderer.listen(target, eventName, listenerFn);
|
|
30510
|
+
lCleanup.push(listenerFn, cleanupFn);
|
|
30511
|
+
tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, lCleanupIndex + 1);
|
|
30512
|
+
}
|
|
30513
|
+
}
|
|
30514
|
+
else {
|
|
30515
|
+
// Even if there is no native listener to add, we still need to wrap the listener so that OnPush
|
|
30516
|
+
// ancestors are marked dirty when an event occurs.
|
|
30517
|
+
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
30518
|
+
}
|
|
30519
|
+
if (processOutputs) {
|
|
30520
|
+
const outputConfig = tNode.outputs?.[eventName];
|
|
30521
|
+
const hostDirectiveOutputConfig = tNode.hostDirectiveOutputs?.[eventName];
|
|
30522
|
+
if (hostDirectiveOutputConfig && hostDirectiveOutputConfig.length) {
|
|
30523
|
+
for (let i = 0; i < hostDirectiveOutputConfig.length; i += 2) {
|
|
30524
|
+
const index = hostDirectiveOutputConfig[i];
|
|
30525
|
+
const lookupName = hostDirectiveOutputConfig[i + 1];
|
|
30526
|
+
listenToOutput(tNode, tView, lView, index, lookupName, eventName, listenerFn, lCleanup, tCleanup);
|
|
30527
|
+
}
|
|
30528
|
+
}
|
|
30529
|
+
if (outputConfig && outputConfig.length) {
|
|
30530
|
+
for (const index of outputConfig) {
|
|
30531
|
+
listenToOutput(tNode, tView, lView, index, eventName, eventName, listenerFn, lCleanup, tCleanup);
|
|
30532
|
+
}
|
|
30533
|
+
}
|
|
30534
|
+
}
|
|
30535
|
+
}
|
|
30536
|
+
|
|
30449
30537
|
/**
|
|
30450
30538
|
* Retrieves a context at the level specified and saves it as the global, contextViewData.
|
|
30451
30539
|
* Will get the next level up if level is not specified.
|
|
@@ -34814,7 +34902,7 @@ class Version {
|
|
|
34814
34902
|
/**
|
|
34815
34903
|
* @publicApi
|
|
34816
34904
|
*/
|
|
34817
|
-
const VERSION = new Version('20.0.0-next.
|
|
34905
|
+
const VERSION = new Version('20.0.0-next.3');
|
|
34818
34906
|
|
|
34819
34907
|
/**
|
|
34820
34908
|
* Combination of NgModuleFactory and ComponentFactories.
|
|
@@ -35070,7 +35158,7 @@ function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsid
|
|
|
35070
35158
|
* ```
|
|
35071
35159
|
*
|
|
35072
35160
|
* @publicApi
|
|
35073
|
-
* @see {@link /api/
|
|
35161
|
+
* @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication}
|
|
35074
35162
|
* @see {@link NgZoneOptions}
|
|
35075
35163
|
*/
|
|
35076
35164
|
function provideZoneChangeDetection(options) {
|
|
@@ -39325,7 +39413,7 @@ function withDomHydration() {
|
|
|
39325
39413
|
return;
|
|
39326
39414
|
}
|
|
39327
39415
|
if (inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {
|
|
39328
|
-
verifySsrContentsIntegrity();
|
|
39416
|
+
verifySsrContentsIntegrity(getDocument());
|
|
39329
39417
|
enableHydrationRuntimeSupport();
|
|
39330
39418
|
}
|
|
39331
39419
|
else if (typeof ngDevMode !== 'undefined' && ngDevMode && !isClientRenderModeEnabled()) {
|
|
@@ -39467,35 +39555,6 @@ function logWarningOnStableTimedout(time, console) {
|
|
|
39467
39555
|
`as a signal to complete hydration process.`;
|
|
39468
39556
|
console.warn(formatRuntimeError(-506 /* RuntimeErrorCode.HYDRATION_STABLE_TIMEDOUT */, message));
|
|
39469
39557
|
}
|
|
39470
|
-
/**
|
|
39471
|
-
* Verifies whether the DOM contains a special marker added during SSR time to make sure
|
|
39472
|
-
* there is no SSR'ed contents transformations happen after SSR is completed. Typically that
|
|
39473
|
-
* happens either by CDN or during the build process as an optimization to remove comment nodes.
|
|
39474
|
-
* Hydration process requires comment nodes produced by Angular to locate correct DOM segments.
|
|
39475
|
-
* When this special marker is *not* present - throw an error and do not proceed with hydration,
|
|
39476
|
-
* since it will not be able to function correctly.
|
|
39477
|
-
*
|
|
39478
|
-
* Note: this function is invoked only on the client, so it's safe to use DOM APIs.
|
|
39479
|
-
*/
|
|
39480
|
-
function verifySsrContentsIntegrity() {
|
|
39481
|
-
const doc = getDocument();
|
|
39482
|
-
let hydrationMarker;
|
|
39483
|
-
for (const node of doc.body.childNodes) {
|
|
39484
|
-
if (node.nodeType === Node.COMMENT_NODE &&
|
|
39485
|
-
node.textContent?.trim() === SSR_CONTENT_INTEGRITY_MARKER) {
|
|
39486
|
-
hydrationMarker = node;
|
|
39487
|
-
break;
|
|
39488
|
-
}
|
|
39489
|
-
}
|
|
39490
|
-
if (!hydrationMarker) {
|
|
39491
|
-
throw new RuntimeError(-507 /* RuntimeErrorCode.MISSING_SSR_CONTENT_INTEGRITY_MARKER */, typeof ngDevMode !== 'undefined' &&
|
|
39492
|
-
ngDevMode &&
|
|
39493
|
-
'Angular hydration logic detected that HTML content of this page was modified after it ' +
|
|
39494
|
-
'was produced during server side rendering. Make sure that there are no optimizations ' +
|
|
39495
|
-
'that remove comment nodes from HTML enabled on your CDN. Angular hydration ' +
|
|
39496
|
-
'relies on HTML produced by the server, including whitespaces and comment nodes.');
|
|
39497
|
-
}
|
|
39498
|
-
}
|
|
39499
39558
|
|
|
39500
39559
|
/**
|
|
39501
39560
|
* Transforms a value (typically a string) to a boolean.
|
|
@@ -39596,25 +39655,14 @@ function disableProfiling() {
|
|
|
39596
39655
|
* can, optionally, return a value.
|
|
39597
39656
|
*/
|
|
39598
39657
|
function untracked(nonReactiveReadsFn) {
|
|
39599
|
-
|
|
39600
|
-
// We are not trying to catch any particular errors here, just making sure that the consumers
|
|
39601
|
-
// stack is restored in case of errors.
|
|
39602
|
-
try {
|
|
39603
|
-
return nonReactiveReadsFn();
|
|
39604
|
-
}
|
|
39605
|
-
finally {
|
|
39606
|
-
setActiveConsumer(prevConsumer);
|
|
39607
|
-
}
|
|
39658
|
+
return untracked$1(nonReactiveReadsFn);
|
|
39608
39659
|
}
|
|
39609
39660
|
|
|
39610
39661
|
/**
|
|
39611
39662
|
* Create a computed `Signal` which derives a reactive value from an expression.
|
|
39612
39663
|
*/
|
|
39613
39664
|
function computed(computation, options) {
|
|
39614
|
-
const getter = createComputed(computation);
|
|
39615
|
-
if (options?.equal) {
|
|
39616
|
-
getter[SIGNAL].equal = options.equal;
|
|
39617
|
-
}
|
|
39665
|
+
const getter = createComputed(computation, options?.equal);
|
|
39618
39666
|
if (ngDevMode) {
|
|
39619
39667
|
getter.toString = () => `[Computed: ${getter()}]`;
|
|
39620
39668
|
getter[SIGNAL].debugName = options?.debugName;
|
|
@@ -40672,5 +40720,5 @@ const REQUEST_CONTEXT = new InjectionToken(typeof ngDevMode === 'undefined' || n
|
|
|
40672
40720
|
factory: () => null,
|
|
40673
40721
|
});
|
|
40674
40722
|
|
|
40675
|
-
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, 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, inputBinding, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, outputBinding, 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, 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, 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, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, 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 };
|
|
40723
|
+
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, 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, inputBinding, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, outputBinding, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, twoWayBinding, 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, 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, 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, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, 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 };
|
|
40676
40724
|
//# sourceMappingURL=core.mjs.map
|