@angular/core 18.1.0-next.0 → 18.1.0-next.2
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/esm2022/primitives/event-dispatch/index.mjs +2 -1
- package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +4 -3
- package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +4 -6
- package/esm2022/primitives/event-dispatch/src/event_type.mjs +2 -2
- package/esm2022/primitives/signals/src/graph.mjs +6 -5
- package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +2 -4
- package/esm2022/src/core.mjs +1 -1
- package/esm2022/src/core_private_export.mjs +2 -2
- package/esm2022/src/event_delegation_utils.mjs +68 -0
- package/esm2022/src/event_emitter.mjs +20 -11
- package/esm2022/src/hydration/annotate.mjs +18 -7
- package/esm2022/src/hydration/api.mjs +2 -2
- package/esm2022/src/hydration/event_replay.mjs +46 -69
- package/esm2022/src/hydration/tokens.mjs +6 -1
- package/esm2022/src/pending_tasks.mjs +15 -20
- package/esm2022/src/render3/after_render_hooks.mjs +67 -132
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/instructions/change_detection.mjs +27 -24
- package/esm2022/src/render3/instructions/listener.mjs +5 -5
- package/esm2022/src/render3/instructions/shared.mjs +3 -3
- package/esm2022/src/render3/reactive_lview_consumer.mjs +56 -3
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/logger.mjs +3 -3
- package/fesm2022/core.mjs +474 -432
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +9 -10
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +6 -5
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/index.d.ts +218 -28
- package/package.json +2 -2
- package/primitives/event-dispatch/index.d.ts +66 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/after-render-phase/bundle.js +602 -0
- package/schematics/migrations/after-render-phase/bundle.js.map +7 -0
- package/schematics/migrations/http-providers/bundle.js +10 -2
- package/schematics/migrations/http-providers/bundle.js.map +2 -2
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +177 -8
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
- package/schematics/migrations.json +5 -0
- package/schematics/ng-generate/control-flow-migration/bundle.js +192 -16
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
- package/schematics/ng-generate/standalone-migration/bundle.js +9197 -9490
- package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
- package/testing/index.d.ts +1 -1
package/fesm2022/core.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.1.0-next.
|
|
2
|
+
* @license Angular v18.1.0-next.2
|
|
3
3
|
* (c) 2010-2024 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, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1 } from '@angular/core/primitives/signals';
|
|
8
|
-
import { Subject, Subscription
|
|
8
|
+
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
|
|
9
9
|
import { map, first } from 'rxjs/operators';
|
|
10
|
+
import * as Attributes from '@angular/core/primitives/event-dispatch';
|
|
10
11
|
import { EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isSupportedEvent, isCaptureEvent } from '@angular/core/primitives/event-dispatch';
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -6916,15 +6917,102 @@ function unwrapElementRef(value) {
|
|
|
6916
6917
|
return value instanceof ElementRef ? value.nativeElement : value;
|
|
6917
6918
|
}
|
|
6918
6919
|
|
|
6920
|
+
/**
|
|
6921
|
+
* Internal implementation of the pending tasks service.
|
|
6922
|
+
*/
|
|
6923
|
+
class PendingTasks {
|
|
6924
|
+
constructor() {
|
|
6925
|
+
this.taskId = 0;
|
|
6926
|
+
this.pendingTasks = new Set();
|
|
6927
|
+
this.hasPendingTasks = new BehaviorSubject(false);
|
|
6928
|
+
}
|
|
6929
|
+
get _hasPendingTasks() {
|
|
6930
|
+
return this.hasPendingTasks.value;
|
|
6931
|
+
}
|
|
6932
|
+
add() {
|
|
6933
|
+
if (!this._hasPendingTasks) {
|
|
6934
|
+
this.hasPendingTasks.next(true);
|
|
6935
|
+
}
|
|
6936
|
+
const taskId = this.taskId++;
|
|
6937
|
+
this.pendingTasks.add(taskId);
|
|
6938
|
+
return taskId;
|
|
6939
|
+
}
|
|
6940
|
+
remove(taskId) {
|
|
6941
|
+
this.pendingTasks.delete(taskId);
|
|
6942
|
+
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
6943
|
+
this.hasPendingTasks.next(false);
|
|
6944
|
+
}
|
|
6945
|
+
}
|
|
6946
|
+
ngOnDestroy() {
|
|
6947
|
+
this.pendingTasks.clear();
|
|
6948
|
+
if (this._hasPendingTasks) {
|
|
6949
|
+
this.hasPendingTasks.next(false);
|
|
6950
|
+
}
|
|
6951
|
+
}
|
|
6952
|
+
/** @nocollapse */
|
|
6953
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
6954
|
+
token: PendingTasks,
|
|
6955
|
+
providedIn: 'root',
|
|
6956
|
+
factory: () => new PendingTasks(),
|
|
6957
|
+
}); }
|
|
6958
|
+
}
|
|
6959
|
+
/**
|
|
6960
|
+
* Experimental service that keeps track of pending tasks contributing to the stableness of Angular
|
|
6961
|
+
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
|
|
6962
|
+
* tasks influencing stability, this API gives control over stability to library and application
|
|
6963
|
+
* developers for specific cases not covered by Angular internals.
|
|
6964
|
+
*
|
|
6965
|
+
* The concept of stability comes into play in several important scenarios:
|
|
6966
|
+
* - SSR process needs to wait for the application stability before serializing and sending rendered
|
|
6967
|
+
* HTML;
|
|
6968
|
+
* - tests might want to delay assertions until the application becomes stable;
|
|
6969
|
+
*
|
|
6970
|
+
* @usageNotes
|
|
6971
|
+
* ```typescript
|
|
6972
|
+
* const pendingTasks = inject(ExperimentalPendingTasks);
|
|
6973
|
+
* const taskCleanup = pendingTasks.add();
|
|
6974
|
+
* // do work that should block application's stability and then:
|
|
6975
|
+
* taskCleanup();
|
|
6976
|
+
* ```
|
|
6977
|
+
*
|
|
6978
|
+
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
6979
|
+
* in patch versions. We will iterate on the exact API based on the feedback and our understanding
|
|
6980
|
+
* of the problem and solution space.
|
|
6981
|
+
*
|
|
6982
|
+
* @publicApi
|
|
6983
|
+
* @experimental
|
|
6984
|
+
*/
|
|
6985
|
+
class ExperimentalPendingTasks {
|
|
6986
|
+
constructor() {
|
|
6987
|
+
this.internalPendingTasks = inject(PendingTasks);
|
|
6988
|
+
}
|
|
6989
|
+
/**
|
|
6990
|
+
* Adds a new task that should block application's stability.
|
|
6991
|
+
* @returns A cleanup function that removes a task when called.
|
|
6992
|
+
*/
|
|
6993
|
+
add() {
|
|
6994
|
+
const taskId = this.internalPendingTasks.add();
|
|
6995
|
+
return () => this.internalPendingTasks.remove(taskId);
|
|
6996
|
+
}
|
|
6997
|
+
/** @nocollapse */
|
|
6998
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
6999
|
+
token: ExperimentalPendingTasks,
|
|
7000
|
+
providedIn: 'root',
|
|
7001
|
+
factory: () => new ExperimentalPendingTasks(),
|
|
7002
|
+
}); }
|
|
7003
|
+
}
|
|
7004
|
+
|
|
6919
7005
|
class EventEmitter_ extends Subject {
|
|
6920
7006
|
constructor(isAsync = false) {
|
|
6921
7007
|
super();
|
|
6922
7008
|
this.destroyRef = undefined;
|
|
7009
|
+
this.pendingTasks = undefined;
|
|
6923
7010
|
this.__isAsync = isAsync;
|
|
6924
|
-
// Attempt to retrieve a `DestroyRef` optionally.
|
|
6925
|
-
// For backwards compatibility reasons, this cannot be required
|
|
7011
|
+
// Attempt to retrieve a `DestroyRef` and `PendingTasks` optionally.
|
|
7012
|
+
// For backwards compatibility reasons, this cannot be required.
|
|
6926
7013
|
if (isInInjectionContext()) {
|
|
6927
7014
|
this.destroyRef = inject(DestroyRef, { optional: true }) ?? undefined;
|
|
7015
|
+
this.pendingTasks = inject(PendingTasks, { optional: true }) ?? undefined;
|
|
6928
7016
|
}
|
|
6929
7017
|
}
|
|
6930
7018
|
emit(value) {
|
|
@@ -6947,12 +7035,12 @@ class EventEmitter_ extends Subject {
|
|
|
6947
7035
|
completeFn = observer.complete?.bind(observer);
|
|
6948
7036
|
}
|
|
6949
7037
|
if (this.__isAsync) {
|
|
6950
|
-
errorFn =
|
|
7038
|
+
errorFn = this.wrapInTimeout(errorFn);
|
|
6951
7039
|
if (nextFn) {
|
|
6952
|
-
nextFn =
|
|
7040
|
+
nextFn = this.wrapInTimeout(nextFn);
|
|
6953
7041
|
}
|
|
6954
7042
|
if (completeFn) {
|
|
6955
|
-
completeFn =
|
|
7043
|
+
completeFn = this.wrapInTimeout(completeFn);
|
|
6956
7044
|
}
|
|
6957
7045
|
}
|
|
6958
7046
|
const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });
|
|
@@ -6961,11 +7049,17 @@ class EventEmitter_ extends Subject {
|
|
|
6961
7049
|
}
|
|
6962
7050
|
return sink;
|
|
6963
7051
|
}
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
7052
|
+
wrapInTimeout(fn) {
|
|
7053
|
+
return (value) => {
|
|
7054
|
+
const taskId = this.pendingTasks?.add();
|
|
7055
|
+
setTimeout(() => {
|
|
7056
|
+
fn(value);
|
|
7057
|
+
if (taskId !== undefined) {
|
|
7058
|
+
this.pendingTasks?.remove(taskId);
|
|
7059
|
+
}
|
|
7060
|
+
});
|
|
7061
|
+
};
|
|
7062
|
+
}
|
|
6969
7063
|
}
|
|
6970
7064
|
/**
|
|
6971
7065
|
* @publicApi
|
|
@@ -8721,6 +8815,11 @@ const IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undef
|
|
|
8721
8815
|
* is enabled.
|
|
8722
8816
|
*/
|
|
8723
8817
|
const IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_EVENT_REPLAY_ENABLED' : '');
|
|
8818
|
+
const EVENT_REPLAY_ENABLED_DEFAULT = false;
|
|
8819
|
+
/**
|
|
8820
|
+
* Internal token that indicates whether global event delegation support is enabled.
|
|
8821
|
+
*/
|
|
8822
|
+
const IS_GLOBAL_EVENT_DELEGATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_GLOBAL_EVENT_DELEGATION_ENABLED' : '');
|
|
8724
8823
|
|
|
8725
8824
|
/**
|
|
8726
8825
|
* @fileoverview
|
|
@@ -12539,10 +12638,10 @@ function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex,
|
|
|
12539
12638
|
}
|
|
12540
12639
|
function getOrCreateLViewCleanup(view) {
|
|
12541
12640
|
// top level variables should not be exported for performance reasons (PERF_NOTES.md)
|
|
12542
|
-
return
|
|
12641
|
+
return (view[CLEANUP] ??= []);
|
|
12543
12642
|
}
|
|
12544
12643
|
function getOrCreateTViewCleanup(tView) {
|
|
12545
|
-
return
|
|
12644
|
+
return (tView.cleanup ??= []);
|
|
12546
12645
|
}
|
|
12547
12646
|
/**
|
|
12548
12647
|
* There are cases where the sub component's renderer needs to be included
|
|
@@ -12889,6 +12988,59 @@ const REACTIVE_LVIEW_CONSUMER_NODE = {
|
|
|
12889
12988
|
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
|
|
12890
12989
|
},
|
|
12891
12990
|
};
|
|
12991
|
+
/**
|
|
12992
|
+
* Creates a temporary consumer for use with `LView`s that should not have consumers.
|
|
12993
|
+
* If the LView already has a consumer, returns the existing one instead.
|
|
12994
|
+
*
|
|
12995
|
+
* This is necessary because some APIs may cause change detection directly on an LView
|
|
12996
|
+
* that we do not want to have a consumer (Embedded views today). As a result, there
|
|
12997
|
+
* would be no active consumer from running change detection on its host component
|
|
12998
|
+
* and any signals in the LView template would be untracked. Instead, we create
|
|
12999
|
+
* this temporary consumer that marks the first parent that _should_ have a consumer
|
|
13000
|
+
* for refresh. Once change detection runs as part of that refresh, we throw away
|
|
13001
|
+
* this consumer because its signals will then be tracked by the parent's consumer.
|
|
13002
|
+
*/
|
|
13003
|
+
function getOrCreateTemporaryConsumer(lView) {
|
|
13004
|
+
const consumer = lView[REACTIVE_TEMPLATE_CONSUMER] ?? Object.create(TEMPORARY_CONSUMER_NODE);
|
|
13005
|
+
consumer.lView = lView;
|
|
13006
|
+
return consumer;
|
|
13007
|
+
}
|
|
13008
|
+
const TEMPORARY_CONSUMER_NODE = {
|
|
13009
|
+
...REACTIVE_NODE$1,
|
|
13010
|
+
consumerIsAlwaysLive: true,
|
|
13011
|
+
consumerMarkedDirty: (node) => {
|
|
13012
|
+
let parent = getLViewParent(node.lView);
|
|
13013
|
+
while (parent && !viewShouldHaveReactiveConsumer(parent[TVIEW])) {
|
|
13014
|
+
parent = getLViewParent(parent);
|
|
13015
|
+
}
|
|
13016
|
+
if (!parent) {
|
|
13017
|
+
// If we can't find an appropriate parent that should have a consumer, we
|
|
13018
|
+
// don't have a way of appropriately refreshing this LView as part of application synchronization.
|
|
13019
|
+
return;
|
|
13020
|
+
}
|
|
13021
|
+
markViewForRefresh(parent);
|
|
13022
|
+
},
|
|
13023
|
+
consumerOnSignalRead() {
|
|
13024
|
+
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
|
|
13025
|
+
},
|
|
13026
|
+
};
|
|
13027
|
+
/**
|
|
13028
|
+
* Indicates if the view should get its own reactive consumer node.
|
|
13029
|
+
*
|
|
13030
|
+
* In the current design, all embedded views share a consumer with the component view. This allows
|
|
13031
|
+
* us to refresh at the component level rather than at a per-view level. In addition, root views get
|
|
13032
|
+
* their own reactive node because root component will have a host view that executes the
|
|
13033
|
+
* component's host bindings. This needs to be tracked in a consumer as well.
|
|
13034
|
+
*
|
|
13035
|
+
* To get a more granular change detection than per-component, all we would just need to update the
|
|
13036
|
+
* condition here so that a given view gets a reactive consumer which can become dirty independently
|
|
13037
|
+
* from its parent component. For example embedded views for signal components could be created with
|
|
13038
|
+
* a new type "SignalEmbeddedView" and the condition here wouldn't even need updating in order to
|
|
13039
|
+
* get granular per-view change detection for signal components.
|
|
13040
|
+
*/
|
|
13041
|
+
function viewShouldHaveReactiveConsumer(tView) {
|
|
13042
|
+
return tView.type !== 2 /* TViewType.Embedded */;
|
|
13043
|
+
}
|
|
12892
13044
|
|
|
12893
13045
|
/**
|
|
12894
13046
|
* The maximum number of times the change detection traversal will rerun before throwing an error.
|
|
@@ -12987,11 +13139,29 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
12987
13139
|
// - We might already be in a reactive context if this is an embedded view of the host.
|
|
12988
13140
|
// - We might be descending into a view that needs a consumer.
|
|
12989
13141
|
enterView(lView);
|
|
13142
|
+
let returnConsumerToPool = true;
|
|
12990
13143
|
let prevConsumer = null;
|
|
12991
13144
|
let currentConsumer = null;
|
|
12992
|
-
if (!isInCheckNoChangesPass
|
|
12993
|
-
|
|
12994
|
-
|
|
13145
|
+
if (!isInCheckNoChangesPass) {
|
|
13146
|
+
if (viewShouldHaveReactiveConsumer(tView)) {
|
|
13147
|
+
currentConsumer = getOrBorrowReactiveLViewConsumer(lView);
|
|
13148
|
+
prevConsumer = consumerBeforeComputation$1(currentConsumer);
|
|
13149
|
+
}
|
|
13150
|
+
else if (getActiveConsumer$1() === null) {
|
|
13151
|
+
// If the current view should not have a reactive consumer but we don't have an active consumer,
|
|
13152
|
+
// we still need to create a temporary consumer to track any signal reads in this template.
|
|
13153
|
+
// This is a rare case that can happen with `viewContainerRef.createEmbeddedView(...).detectChanges()`.
|
|
13154
|
+
// This temporary consumer marks the first parent that _should_ have a consumer for refresh.
|
|
13155
|
+
// Once that refresh happens, the signals will be tracked in the parent consumer and we can destroy
|
|
13156
|
+
// the temporary one.
|
|
13157
|
+
returnConsumerToPool = false;
|
|
13158
|
+
currentConsumer = getOrCreateTemporaryConsumer(lView);
|
|
13159
|
+
prevConsumer = consumerBeforeComputation$1(currentConsumer);
|
|
13160
|
+
}
|
|
13161
|
+
else if (lView[REACTIVE_TEMPLATE_CONSUMER]) {
|
|
13162
|
+
consumerDestroy$1(lView[REACTIVE_TEMPLATE_CONSUMER]);
|
|
13163
|
+
lView[REACTIVE_TEMPLATE_CONSUMER] = null;
|
|
13164
|
+
}
|
|
12995
13165
|
}
|
|
12996
13166
|
try {
|
|
12997
13167
|
resetPreOrderHookFlags(lView);
|
|
@@ -13117,28 +13287,13 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
13117
13287
|
finally {
|
|
13118
13288
|
if (currentConsumer !== null) {
|
|
13119
13289
|
consumerAfterComputation$1(currentConsumer, prevConsumer);
|
|
13120
|
-
|
|
13290
|
+
if (returnConsumerToPool) {
|
|
13291
|
+
maybeReturnReactiveLViewConsumer(currentConsumer);
|
|
13292
|
+
}
|
|
13121
13293
|
}
|
|
13122
13294
|
leaveView();
|
|
13123
13295
|
}
|
|
13124
13296
|
}
|
|
13125
|
-
/**
|
|
13126
|
-
* Indicates if the view should get its own reactive consumer node.
|
|
13127
|
-
*
|
|
13128
|
-
* In the current design, all embedded views share a consumer with the component view. This allows
|
|
13129
|
-
* us to refresh at the component level rather than at a per-view level. In addition, root views get
|
|
13130
|
-
* their own reactive node because root component will have a host view that executes the
|
|
13131
|
-
* component's host bindings. This needs to be tracked in a consumer as well.
|
|
13132
|
-
*
|
|
13133
|
-
* To get a more granular change detection than per-component, all we would just need to update the
|
|
13134
|
-
* condition here so that a given view gets a reactive consumer which can become dirty independently
|
|
13135
|
-
* from its parent component. For example embedded views for signal components could be created with
|
|
13136
|
-
* a new type "SignalEmbeddedView" and the condition here wouldn't even need updating in order to
|
|
13137
|
-
* get granular per-view change detection for signal components.
|
|
13138
|
-
*/
|
|
13139
|
-
function viewShouldHaveReactiveConsumer(tView) {
|
|
13140
|
-
return tView.type !== 2 /* TViewType.Embedded */;
|
|
13141
|
-
}
|
|
13142
13297
|
/**
|
|
13143
13298
|
* Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
|
|
13144
13299
|
* them by executing an associated template function.
|
|
@@ -15875,15 +16030,17 @@ function getNgZone(ngZoneToUse = 'zone.js', options) {
|
|
|
15875
16030
|
* manual DOM access, ensuring the best experience for the end users of your application
|
|
15876
16031
|
* or library.
|
|
15877
16032
|
*
|
|
15878
|
-
* @
|
|
16033
|
+
* @deprecated Specify the phase for your callback to run in by passing a spec-object as the first
|
|
16034
|
+
* parameter to `afterRender` or `afterNextRender` insetad of a function.
|
|
15879
16035
|
*/
|
|
15880
16036
|
var AfterRenderPhase;
|
|
15881
16037
|
(function (AfterRenderPhase) {
|
|
15882
16038
|
/**
|
|
15883
16039
|
* Use `AfterRenderPhase.EarlyRead` for callbacks that only need to **read** from the
|
|
15884
16040
|
* DOM before a subsequent `AfterRenderPhase.Write` callback, for example to perform
|
|
15885
|
-
* custom layout that the browser doesn't natively support.
|
|
15886
|
-
*
|
|
16041
|
+
* custom layout that the browser doesn't natively support. Prefer the
|
|
16042
|
+
* `AfterRenderPhase.EarlyRead` phase if reading can wait until after the write phase.
|
|
16043
|
+
* **Never** write to the DOM in this phase.
|
|
15887
16044
|
*
|
|
15888
16045
|
* <div class="alert is-important">
|
|
15889
16046
|
*
|
|
@@ -15895,25 +16052,25 @@ var AfterRenderPhase;
|
|
|
15895
16052
|
AfterRenderPhase[AfterRenderPhase["EarlyRead"] = 0] = "EarlyRead";
|
|
15896
16053
|
/**
|
|
15897
16054
|
* Use `AfterRenderPhase.Write` for callbacks that only **write** to the DOM. **Never**
|
|
15898
|
-
*
|
|
16055
|
+
* read from the DOM in this phase.
|
|
15899
16056
|
*/
|
|
15900
16057
|
AfterRenderPhase[AfterRenderPhase["Write"] = 1] = "Write";
|
|
15901
16058
|
/**
|
|
15902
16059
|
* Use `AfterRenderPhase.MixedReadWrite` for callbacks that read from or write to the
|
|
15903
|
-
* DOM, that haven't been refactored to use a different phase. **Never** use this phase
|
|
15904
|
-
*
|
|
16060
|
+
* DOM, that haven't been refactored to use a different phase. **Never** use this phase if
|
|
16061
|
+
* it is possible to divide the work among the other phases instead.
|
|
15905
16062
|
*
|
|
15906
16063
|
* <div class="alert is-critical">
|
|
15907
16064
|
*
|
|
15908
16065
|
* Using this value can **significantly** degrade performance.
|
|
15909
|
-
* Instead, prefer
|
|
16066
|
+
* Instead, prefer dividing work into the appropriate phase callbacks.
|
|
15910
16067
|
*
|
|
15911
16068
|
* </div>
|
|
15912
16069
|
*/
|
|
15913
16070
|
AfterRenderPhase[AfterRenderPhase["MixedReadWrite"] = 2] = "MixedReadWrite";
|
|
15914
16071
|
/**
|
|
15915
16072
|
* Use `AfterRenderPhase.Read` for callbacks that only **read** from the DOM. **Never**
|
|
15916
|
-
*
|
|
16073
|
+
* write to the DOM in this phase.
|
|
15917
16074
|
*/
|
|
15918
16075
|
AfterRenderPhase[AfterRenderPhase["Read"] = 3] = "Read";
|
|
15919
16076
|
})(AfterRenderPhase || (AfterRenderPhase = {}));
|
|
@@ -15945,55 +16102,7 @@ function internalAfterNextRender(callback, options) {
|
|
|
15945
16102
|
const afterRenderEventManager = injector.get(AfterRenderEventManager);
|
|
15946
16103
|
afterRenderEventManager.internalCallbacks.push(callback);
|
|
15947
16104
|
}
|
|
15948
|
-
|
|
15949
|
-
* Register a callback to be invoked each time the application
|
|
15950
|
-
* finishes rendering.
|
|
15951
|
-
*
|
|
15952
|
-
* <div class="alert is-critical">
|
|
15953
|
-
*
|
|
15954
|
-
* You should always explicitly specify a non-default [phase](api/core/AfterRenderPhase), or you
|
|
15955
|
-
* risk significant performance degradation.
|
|
15956
|
-
*
|
|
15957
|
-
* </div>
|
|
15958
|
-
*
|
|
15959
|
-
* Note that the callback will run
|
|
15960
|
-
* - in the order it was registered
|
|
15961
|
-
* - once per render
|
|
15962
|
-
* - on browser platforms only
|
|
15963
|
-
*
|
|
15964
|
-
* <div class="alert is-important">
|
|
15965
|
-
*
|
|
15966
|
-
* Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.
|
|
15967
|
-
* You must use caution when directly reading or writing the DOM and layout.
|
|
15968
|
-
*
|
|
15969
|
-
* </div>
|
|
15970
|
-
*
|
|
15971
|
-
* @param callback A callback function to register
|
|
15972
|
-
*
|
|
15973
|
-
* @usageNotes
|
|
15974
|
-
*
|
|
15975
|
-
* Use `afterRender` to read or write the DOM after each render.
|
|
15976
|
-
*
|
|
15977
|
-
* ### Example
|
|
15978
|
-
* ```ts
|
|
15979
|
-
* @Component({
|
|
15980
|
-
* selector: 'my-cmp',
|
|
15981
|
-
* template: `<span #content>{{ ... }}</span>`,
|
|
15982
|
-
* })
|
|
15983
|
-
* export class MyComponent {
|
|
15984
|
-
* @ViewChild('content') contentRef: ElementRef;
|
|
15985
|
-
*
|
|
15986
|
-
* constructor() {
|
|
15987
|
-
* afterRender(() => {
|
|
15988
|
-
* console.log('content height: ' + this.contentRef.nativeElement.scrollHeight);
|
|
15989
|
-
* }, {phase: AfterRenderPhase.Read});
|
|
15990
|
-
* }
|
|
15991
|
-
* }
|
|
15992
|
-
* ```
|
|
15993
|
-
*
|
|
15994
|
-
* @developerPreview
|
|
15995
|
-
*/
|
|
15996
|
-
function afterRender(callback, options) {
|
|
16105
|
+
function afterRender(callbackOrSpec, options) {
|
|
15997
16106
|
ngDevMode &&
|
|
15998
16107
|
assertNotInReactiveContext(afterRender, 'Call `afterRender` outside of a reactive context. For example, schedule the render ' +
|
|
15999
16108
|
'callback inside the component constructor`.');
|
|
@@ -16003,101 +16112,80 @@ function afterRender(callback, options) {
|
|
|
16003
16112
|
return NOOP_AFTER_RENDER_REF;
|
|
16004
16113
|
}
|
|
16005
16114
|
performanceMarkFeature('NgAfterRender');
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
// tree-shaken if `afterRender` and `afterNextRender` aren't used.
|
|
16009
|
-
const callbackHandler = (afterRenderEventManager.handler ??=
|
|
16010
|
-
new AfterRenderCallbackHandlerImpl());
|
|
16011
|
-
const phase = options?.phase ?? AfterRenderPhase.MixedReadWrite;
|
|
16012
|
-
const destroy = () => {
|
|
16013
|
-
callbackHandler.unregister(instance);
|
|
16014
|
-
unregisterFn();
|
|
16015
|
-
};
|
|
16016
|
-
const unregisterFn = injector.get(DestroyRef).onDestroy(destroy);
|
|
16017
|
-
const instance = runInInjectionContext(injector, () => new AfterRenderCallback(phase, callback));
|
|
16018
|
-
callbackHandler.register(instance);
|
|
16019
|
-
return { destroy };
|
|
16115
|
+
return afterRenderImpl(callbackOrSpec, injector,
|
|
16116
|
+
/* once */ false, options?.phase ?? AfterRenderPhase.MixedReadWrite);
|
|
16020
16117
|
}
|
|
16021
|
-
|
|
16022
|
-
* Register a callback to be invoked the next time the application
|
|
16023
|
-
* finishes rendering.
|
|
16024
|
-
*
|
|
16025
|
-
* <div class="alert is-critical">
|
|
16026
|
-
*
|
|
16027
|
-
* You should always explicitly specify a non-default [phase](api/core/AfterRenderPhase), or you
|
|
16028
|
-
* risk significant performance degradation.
|
|
16029
|
-
*
|
|
16030
|
-
* </div>
|
|
16031
|
-
*
|
|
16032
|
-
* Note that the callback will run
|
|
16033
|
-
* - in the order it was registered
|
|
16034
|
-
* - on browser platforms only
|
|
16035
|
-
*
|
|
16036
|
-
* <div class="alert is-important">
|
|
16037
|
-
*
|
|
16038
|
-
* Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.
|
|
16039
|
-
* You must use caution when directly reading or writing the DOM and layout.
|
|
16040
|
-
*
|
|
16041
|
-
* </div>
|
|
16042
|
-
*
|
|
16043
|
-
* @param callback A callback function to register
|
|
16044
|
-
*
|
|
16045
|
-
* @usageNotes
|
|
16046
|
-
*
|
|
16047
|
-
* Use `afterNextRender` to read or write the DOM once,
|
|
16048
|
-
* for example to initialize a non-Angular library.
|
|
16049
|
-
*
|
|
16050
|
-
* ### Example
|
|
16051
|
-
* ```ts
|
|
16052
|
-
* @Component({
|
|
16053
|
-
* selector: 'my-chart-cmp',
|
|
16054
|
-
* template: `<div #chart>{{ ... }}</div>`,
|
|
16055
|
-
* })
|
|
16056
|
-
* export class MyChartCmp {
|
|
16057
|
-
* @ViewChild('chart') chartRef: ElementRef;
|
|
16058
|
-
* chart: MyChart|null;
|
|
16059
|
-
*
|
|
16060
|
-
* constructor() {
|
|
16061
|
-
* afterNextRender(() => {
|
|
16062
|
-
* this.chart = new MyChart(this.chartRef.nativeElement);
|
|
16063
|
-
* }, {phase: AfterRenderPhase.Write});
|
|
16064
|
-
* }
|
|
16065
|
-
* }
|
|
16066
|
-
* ```
|
|
16067
|
-
*
|
|
16068
|
-
* @developerPreview
|
|
16069
|
-
*/
|
|
16070
|
-
function afterNextRender(callback, options) {
|
|
16118
|
+
function afterNextRender(callbackOrSpec, options) {
|
|
16071
16119
|
!options && assertInInjectionContext(afterNextRender);
|
|
16072
16120
|
const injector = options?.injector ?? inject(Injector);
|
|
16073
16121
|
if (!isPlatformBrowser(injector)) {
|
|
16074
16122
|
return NOOP_AFTER_RENDER_REF;
|
|
16075
16123
|
}
|
|
16076
16124
|
performanceMarkFeature('NgAfterNextRender');
|
|
16125
|
+
return afterRenderImpl(callbackOrSpec, injector,
|
|
16126
|
+
/* once */ true, options?.phase ?? AfterRenderPhase.MixedReadWrite);
|
|
16127
|
+
}
|
|
16128
|
+
function getSpec(callbackOrSpec, phase) {
|
|
16129
|
+
if (callbackOrSpec instanceof Function) {
|
|
16130
|
+
switch (phase) {
|
|
16131
|
+
case AfterRenderPhase.EarlyRead:
|
|
16132
|
+
return { earlyRead: callbackOrSpec };
|
|
16133
|
+
case AfterRenderPhase.Write:
|
|
16134
|
+
return { write: callbackOrSpec };
|
|
16135
|
+
case AfterRenderPhase.MixedReadWrite:
|
|
16136
|
+
return { mixedReadWrite: callbackOrSpec };
|
|
16137
|
+
case AfterRenderPhase.Read:
|
|
16138
|
+
return { read: callbackOrSpec };
|
|
16139
|
+
}
|
|
16140
|
+
}
|
|
16141
|
+
return callbackOrSpec;
|
|
16142
|
+
}
|
|
16143
|
+
/**
|
|
16144
|
+
* Shared implementation for `afterRender` and `afterNextRender`.
|
|
16145
|
+
*/
|
|
16146
|
+
function afterRenderImpl(callbackOrSpec, injector, once, phase) {
|
|
16147
|
+
const spec = getSpec(callbackOrSpec, phase);
|
|
16077
16148
|
const afterRenderEventManager = injector.get(AfterRenderEventManager);
|
|
16078
16149
|
// Lazily initialize the handler implementation, if necessary. This is so that it can be
|
|
16079
16150
|
// tree-shaken if `afterRender` and `afterNextRender` aren't used.
|
|
16080
16151
|
const callbackHandler = (afterRenderEventManager.handler ??=
|
|
16081
16152
|
new AfterRenderCallbackHandlerImpl());
|
|
16082
|
-
const
|
|
16153
|
+
const pipelinedArgs = [];
|
|
16154
|
+
const instances = [];
|
|
16083
16155
|
const destroy = () => {
|
|
16084
|
-
|
|
16156
|
+
for (const instance of instances) {
|
|
16157
|
+
callbackHandler.unregister(instance);
|
|
16158
|
+
}
|
|
16085
16159
|
unregisterFn();
|
|
16086
16160
|
};
|
|
16087
16161
|
const unregisterFn = injector.get(DestroyRef).onDestroy(destroy);
|
|
16088
|
-
const
|
|
16089
|
-
|
|
16090
|
-
|
|
16091
|
-
|
|
16092
|
-
|
|
16162
|
+
const registerCallback = (phase, phaseCallback) => {
|
|
16163
|
+
if (!phaseCallback) {
|
|
16164
|
+
return;
|
|
16165
|
+
}
|
|
16166
|
+
const callback = once
|
|
16167
|
+
? (...args) => {
|
|
16168
|
+
destroy();
|
|
16169
|
+
phaseCallback(...args);
|
|
16170
|
+
}
|
|
16171
|
+
: phaseCallback;
|
|
16172
|
+
const instance = runInInjectionContext(injector, () => new AfterRenderCallback(phase, pipelinedArgs, callback));
|
|
16173
|
+
callbackHandler.register(instance);
|
|
16174
|
+
instances.push(instance);
|
|
16175
|
+
};
|
|
16176
|
+
registerCallback(AfterRenderPhase.EarlyRead, spec.earlyRead);
|
|
16177
|
+
registerCallback(AfterRenderPhase.Write, spec.write);
|
|
16178
|
+
registerCallback(AfterRenderPhase.MixedReadWrite, spec.mixedReadWrite);
|
|
16179
|
+
registerCallback(AfterRenderPhase.Read, spec.read);
|
|
16093
16180
|
return { destroy };
|
|
16094
16181
|
}
|
|
16095
16182
|
/**
|
|
16096
16183
|
* A wrapper around a function to be used as an after render callback.
|
|
16097
16184
|
*/
|
|
16098
16185
|
class AfterRenderCallback {
|
|
16099
|
-
constructor(phase, callbackFn) {
|
|
16186
|
+
constructor(phase, pipelinedArgs, callbackFn) {
|
|
16100
16187
|
this.phase = phase;
|
|
16188
|
+
this.pipelinedArgs = pipelinedArgs;
|
|
16101
16189
|
this.callbackFn = callbackFn;
|
|
16102
16190
|
this.zone = inject(NgZone);
|
|
16103
16191
|
this.errorHandler = inject(ErrorHandler, { optional: true });
|
|
@@ -16106,7 +16194,9 @@ class AfterRenderCallback {
|
|
|
16106
16194
|
}
|
|
16107
16195
|
invoke() {
|
|
16108
16196
|
try {
|
|
16109
|
-
this.zone.runOutsideAngular(this.callbackFn);
|
|
16197
|
+
const result = this.zone.runOutsideAngular(() => this.callbackFn.apply(null, this.pipelinedArgs));
|
|
16198
|
+
// Clear out the args and add the result which will be passed to the next phase.
|
|
16199
|
+
this.pipelinedArgs.splice(0, this.pipelinedArgs.length, result);
|
|
16110
16200
|
}
|
|
16111
16201
|
catch (err) {
|
|
16112
16202
|
this.errorHandler?.handleError(err);
|
|
@@ -16900,7 +16990,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
16900
16990
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
16901
16991
|
if (rootSelectorOrNode) {
|
|
16902
16992
|
// The placeholder will be replaced with the actual version at build time.
|
|
16903
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.0-next.
|
|
16993
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.0-next.2']);
|
|
16904
16994
|
}
|
|
16905
16995
|
else {
|
|
16906
16996
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -19042,190 +19132,6 @@ class CachedInjectorService {
|
|
|
19042
19132
|
}); }
|
|
19043
19133
|
}
|
|
19044
19134
|
|
|
19045
|
-
/**
|
|
19046
|
-
* The name of a field that Angular monkey-patches onto a component
|
|
19047
|
-
* class to store a function that loads defer-loadable dependencies
|
|
19048
|
-
* and applies metadata to a class.
|
|
19049
|
-
*/
|
|
19050
|
-
const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
|
|
19051
|
-
/**
|
|
19052
|
-
* If a given component has unresolved async metadata - returns a reference
|
|
19053
|
-
* to a function that applies component metadata after resolving defer-loadable
|
|
19054
|
-
* dependencies. Otherwise - this function returns `null`.
|
|
19055
|
-
*/
|
|
19056
|
-
function getAsyncClassMetadataFn(type) {
|
|
19057
|
-
const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
|
|
19058
|
-
return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
|
|
19059
|
-
}
|
|
19060
|
-
/**
|
|
19061
|
-
* Handles the process of applying metadata info to a component class in case
|
|
19062
|
-
* component template has defer blocks (thus some dependencies became deferrable).
|
|
19063
|
-
*
|
|
19064
|
-
* @param type Component class where metadata should be added
|
|
19065
|
-
* @param dependencyLoaderFn Function that loads dependencies
|
|
19066
|
-
* @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
|
|
19067
|
-
*/
|
|
19068
|
-
function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
|
|
19069
|
-
const componentClass = type; // cast to `any`, so that we can monkey-patch it
|
|
19070
|
-
componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then((dependencies) => {
|
|
19071
|
-
metadataSetterFn(...dependencies);
|
|
19072
|
-
// Metadata is now set, reset field value to indicate that this component
|
|
19073
|
-
// can by used/compiled synchronously.
|
|
19074
|
-
componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
|
|
19075
|
-
return dependencies;
|
|
19076
|
-
});
|
|
19077
|
-
return componentClass[ASYNC_COMPONENT_METADATA_FN];
|
|
19078
|
-
}
|
|
19079
|
-
/**
|
|
19080
|
-
* Adds decorator, constructor, and property metadata to a given type via static metadata fields
|
|
19081
|
-
* on the type.
|
|
19082
|
-
*
|
|
19083
|
-
* These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
|
|
19084
|
-
*
|
|
19085
|
-
* Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
|
|
19086
|
-
* being tree-shaken away during production builds.
|
|
19087
|
-
*/
|
|
19088
|
-
function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
|
|
19089
|
-
return noSideEffects(() => {
|
|
19090
|
-
const clazz = type;
|
|
19091
|
-
if (decorators !== null) {
|
|
19092
|
-
if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
|
|
19093
|
-
clazz.decorators.push(...decorators);
|
|
19094
|
-
}
|
|
19095
|
-
else {
|
|
19096
|
-
clazz.decorators = decorators;
|
|
19097
|
-
}
|
|
19098
|
-
}
|
|
19099
|
-
if (ctorParameters !== null) {
|
|
19100
|
-
// Rather than merging, clobber the existing parameters. If other projects exist which
|
|
19101
|
-
// use tsickle-style annotations and reflect over them in the same way, this could
|
|
19102
|
-
// cause issues, but that is vanishingly unlikely.
|
|
19103
|
-
clazz.ctorParameters = ctorParameters;
|
|
19104
|
-
}
|
|
19105
|
-
if (propDecorators !== null) {
|
|
19106
|
-
// The property decorator objects are merged as it is possible different fields have
|
|
19107
|
-
// different decorator types. Decorators on individual fields are not merged, as it's
|
|
19108
|
-
// also incredibly unlikely that a field will be decorated both with an Angular
|
|
19109
|
-
// decorator and a non-Angular decorator that's also been downleveled.
|
|
19110
|
-
if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
|
|
19111
|
-
clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
|
|
19112
|
-
}
|
|
19113
|
-
else {
|
|
19114
|
-
clazz.propDecorators = propDecorators;
|
|
19115
|
-
}
|
|
19116
|
-
}
|
|
19117
|
-
});
|
|
19118
|
-
}
|
|
19119
|
-
|
|
19120
|
-
/*
|
|
19121
|
-
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
19122
|
-
*
|
|
19123
|
-
* When the Angular compiler processes a compilation unit, it normally writes imports to
|
|
19124
|
-
* @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the
|
|
19125
|
-
* compiler writes imports to this file.
|
|
19126
|
-
*
|
|
19127
|
-
* Only a subset of such imports are supported - core is not allowed to declare components or pipes.
|
|
19128
|
-
* A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used
|
|
19129
|
-
* when compiling @angular/core and is responsible for translating an external name (prefixed with
|
|
19130
|
-
* ɵ) to the internal symbol name as exported below.
|
|
19131
|
-
*
|
|
19132
|
-
* The below symbols are used for @Injectable and @NgModule compilation.
|
|
19133
|
-
*/
|
|
19134
|
-
/**
|
|
19135
|
-
* The existence of this constant (in this particular file) informs the Angular compiler that the
|
|
19136
|
-
* current program is actually @angular/core, which needs to be compiled specially.
|
|
19137
|
-
*/
|
|
19138
|
-
const ITS_JUST_ANGULAR = true;
|
|
19139
|
-
|
|
19140
|
-
/**
|
|
19141
|
-
* Internal implementation of the pending tasks service.
|
|
19142
|
-
*/
|
|
19143
|
-
class PendingTasks {
|
|
19144
|
-
constructor() {
|
|
19145
|
-
this.taskId = 0;
|
|
19146
|
-
this.pendingTasks = new Set();
|
|
19147
|
-
this.hasPendingTasks = new BehaviorSubject(false);
|
|
19148
|
-
}
|
|
19149
|
-
get _hasPendingTasks() {
|
|
19150
|
-
return this.hasPendingTasks.value;
|
|
19151
|
-
}
|
|
19152
|
-
add() {
|
|
19153
|
-
if (!this._hasPendingTasks) {
|
|
19154
|
-
this.hasPendingTasks.next(true);
|
|
19155
|
-
}
|
|
19156
|
-
const taskId = this.taskId++;
|
|
19157
|
-
this.pendingTasks.add(taskId);
|
|
19158
|
-
return taskId;
|
|
19159
|
-
}
|
|
19160
|
-
remove(taskId) {
|
|
19161
|
-
this.pendingTasks.delete(taskId);
|
|
19162
|
-
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
19163
|
-
this.hasPendingTasks.next(false);
|
|
19164
|
-
}
|
|
19165
|
-
}
|
|
19166
|
-
ngOnDestroy() {
|
|
19167
|
-
this.pendingTasks.clear();
|
|
19168
|
-
if (this._hasPendingTasks) {
|
|
19169
|
-
this.hasPendingTasks.next(false);
|
|
19170
|
-
}
|
|
19171
|
-
}
|
|
19172
|
-
static { this.ɵfac = function PendingTasks_Factory(t) { return new (t || PendingTasks)(); }; }
|
|
19173
|
-
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PendingTasks, factory: PendingTasks.ɵfac, providedIn: 'root' }); }
|
|
19174
|
-
}
|
|
19175
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PendingTasks, [{
|
|
19176
|
-
type: Injectable,
|
|
19177
|
-
args: [{
|
|
19178
|
-
providedIn: 'root',
|
|
19179
|
-
}]
|
|
19180
|
-
}], null, null); })();
|
|
19181
|
-
/**
|
|
19182
|
-
* Experimental service that keeps track of pending tasks contributing to the stableness of Angular
|
|
19183
|
-
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
|
|
19184
|
-
* tasks influencing stability, this API gives control over stability to library and application
|
|
19185
|
-
* developers for specific cases not covered by Angular internals.
|
|
19186
|
-
*
|
|
19187
|
-
* The concept of stability comes into play in several important scenarios:
|
|
19188
|
-
* - SSR process needs to wait for the application stability before serializing and sending rendered
|
|
19189
|
-
* HTML;
|
|
19190
|
-
* - tests might want to delay assertions until the application becomes stable;
|
|
19191
|
-
*
|
|
19192
|
-
* @usageNotes
|
|
19193
|
-
* ```typescript
|
|
19194
|
-
* const pendingTasks = inject(ExperimentalPendingTasks);
|
|
19195
|
-
* const taskCleanup = pendingTasks.add();
|
|
19196
|
-
* // do work that should block application's stability and then:
|
|
19197
|
-
* taskCleanup();
|
|
19198
|
-
* ```
|
|
19199
|
-
*
|
|
19200
|
-
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
19201
|
-
* in patch versions. We will iterate on the exact API based on the feedback and our understanding
|
|
19202
|
-
* of the problem and solution space.
|
|
19203
|
-
*
|
|
19204
|
-
* @publicApi
|
|
19205
|
-
* @experimental
|
|
19206
|
-
*/
|
|
19207
|
-
class ExperimentalPendingTasks {
|
|
19208
|
-
constructor() {
|
|
19209
|
-
this.internalPendingTasks = inject(PendingTasks);
|
|
19210
|
-
}
|
|
19211
|
-
/**
|
|
19212
|
-
* Adds a new task that should block application's stability.
|
|
19213
|
-
* @returns A cleanup function that removes a task when called.
|
|
19214
|
-
*/
|
|
19215
|
-
add() {
|
|
19216
|
-
const taskId = this.internalPendingTasks.add();
|
|
19217
|
-
return () => this.internalPendingTasks.remove(taskId);
|
|
19218
|
-
}
|
|
19219
|
-
static { this.ɵfac = function ExperimentalPendingTasks_Factory(t) { return new (t || ExperimentalPendingTasks)(); }; }
|
|
19220
|
-
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ExperimentalPendingTasks, factory: ExperimentalPendingTasks.ɵfac, providedIn: 'root' }); }
|
|
19221
|
-
}
|
|
19222
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ExperimentalPendingTasks, [{
|
|
19223
|
-
type: Injectable,
|
|
19224
|
-
args: [{
|
|
19225
|
-
providedIn: 'root',
|
|
19226
|
-
}]
|
|
19227
|
-
}], null, null); })();
|
|
19228
|
-
|
|
19229
19135
|
function isIterable(obj) {
|
|
19230
19136
|
return obj !== null && typeof obj === 'object' && obj[Symbol.iterator] !== undefined;
|
|
19231
19137
|
}
|
|
@@ -26384,9 +26290,9 @@ function ɵɵi18nPostprocess(message, replacements = {}) {
|
|
|
26384
26290
|
* an actual implementation when the event replay feature is enabled via
|
|
26385
26291
|
* `withEventReplay()` call.
|
|
26386
26292
|
*/
|
|
26387
|
-
let
|
|
26388
|
-
function
|
|
26389
|
-
|
|
26293
|
+
let stashEventListener = (el, eventName, listenerFn) => { };
|
|
26294
|
+
function setStashFn(fn) {
|
|
26295
|
+
stashEventListener = fn;
|
|
26390
26296
|
}
|
|
26391
26297
|
/**
|
|
26392
26298
|
* Adds an event listener to the current node.
|
|
@@ -26492,7 +26398,6 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
26492
26398
|
const idxOrTargetGetter = eventTargetResolver
|
|
26493
26399
|
? (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index]))
|
|
26494
26400
|
: tNode.index;
|
|
26495
|
-
disableEventReplayFn(native, eventName, listenerFn);
|
|
26496
26401
|
// In order to match current behavior, native DOM event listeners must be added for all
|
|
26497
26402
|
// events (including outputs).
|
|
26498
26403
|
// There might be cases where multiple directives on the same element try to register an event
|
|
@@ -26527,6 +26432,7 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
26527
26432
|
}
|
|
26528
26433
|
else {
|
|
26529
26434
|
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
26435
|
+
stashEventListener(native, eventName, listenerFn);
|
|
26530
26436
|
const cleanupFn = renderer.listen(target, eventName, listenerFn);
|
|
26531
26437
|
ngDevMode && ngDevMode.rendererAddEventListener++;
|
|
26532
26438
|
lCleanup.push(listenerFn, cleanupFn);
|
|
@@ -28852,6 +28758,81 @@ function maybeUnwrapModuleWithProviders(value) {
|
|
|
28852
28758
|
return isModuleWithProviders(value) ? value.ngModule : value;
|
|
28853
28759
|
}
|
|
28854
28760
|
|
|
28761
|
+
/**
|
|
28762
|
+
* The name of a field that Angular monkey-patches onto a component
|
|
28763
|
+
* class to store a function that loads defer-loadable dependencies
|
|
28764
|
+
* and applies metadata to a class.
|
|
28765
|
+
*/
|
|
28766
|
+
const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
|
|
28767
|
+
/**
|
|
28768
|
+
* If a given component has unresolved async metadata - returns a reference
|
|
28769
|
+
* to a function that applies component metadata after resolving defer-loadable
|
|
28770
|
+
* dependencies. Otherwise - this function returns `null`.
|
|
28771
|
+
*/
|
|
28772
|
+
function getAsyncClassMetadataFn(type) {
|
|
28773
|
+
const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
|
|
28774
|
+
return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
|
|
28775
|
+
}
|
|
28776
|
+
/**
|
|
28777
|
+
* Handles the process of applying metadata info to a component class in case
|
|
28778
|
+
* component template has defer blocks (thus some dependencies became deferrable).
|
|
28779
|
+
*
|
|
28780
|
+
* @param type Component class where metadata should be added
|
|
28781
|
+
* @param dependencyLoaderFn Function that loads dependencies
|
|
28782
|
+
* @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
|
|
28783
|
+
*/
|
|
28784
|
+
function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
|
|
28785
|
+
const componentClass = type; // cast to `any`, so that we can monkey-patch it
|
|
28786
|
+
componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then((dependencies) => {
|
|
28787
|
+
metadataSetterFn(...dependencies);
|
|
28788
|
+
// Metadata is now set, reset field value to indicate that this component
|
|
28789
|
+
// can by used/compiled synchronously.
|
|
28790
|
+
componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
|
|
28791
|
+
return dependencies;
|
|
28792
|
+
});
|
|
28793
|
+
return componentClass[ASYNC_COMPONENT_METADATA_FN];
|
|
28794
|
+
}
|
|
28795
|
+
/**
|
|
28796
|
+
* Adds decorator, constructor, and property metadata to a given type via static metadata fields
|
|
28797
|
+
* on the type.
|
|
28798
|
+
*
|
|
28799
|
+
* These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
|
|
28800
|
+
*
|
|
28801
|
+
* Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
|
|
28802
|
+
* being tree-shaken away during production builds.
|
|
28803
|
+
*/
|
|
28804
|
+
function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
|
|
28805
|
+
return noSideEffects(() => {
|
|
28806
|
+
const clazz = type;
|
|
28807
|
+
if (decorators !== null) {
|
|
28808
|
+
if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
|
|
28809
|
+
clazz.decorators.push(...decorators);
|
|
28810
|
+
}
|
|
28811
|
+
else {
|
|
28812
|
+
clazz.decorators = decorators;
|
|
28813
|
+
}
|
|
28814
|
+
}
|
|
28815
|
+
if (ctorParameters !== null) {
|
|
28816
|
+
// Rather than merging, clobber the existing parameters. If other projects exist which
|
|
28817
|
+
// use tsickle-style annotations and reflect over them in the same way, this could
|
|
28818
|
+
// cause issues, but that is vanishingly unlikely.
|
|
28819
|
+
clazz.ctorParameters = ctorParameters;
|
|
28820
|
+
}
|
|
28821
|
+
if (propDecorators !== null) {
|
|
28822
|
+
// The property decorator objects are merged as it is possible different fields have
|
|
28823
|
+
// different decorator types. Decorators on individual fields are not merged, as it's
|
|
28824
|
+
// also incredibly unlikely that a field will be decorated both with an Angular
|
|
28825
|
+
// decorator and a non-Angular decorator that's also been downleveled.
|
|
28826
|
+
if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
|
|
28827
|
+
clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
|
|
28828
|
+
}
|
|
28829
|
+
else {
|
|
28830
|
+
clazz.propDecorators = propDecorators;
|
|
28831
|
+
}
|
|
28832
|
+
}
|
|
28833
|
+
});
|
|
28834
|
+
}
|
|
28835
|
+
|
|
28855
28836
|
/**
|
|
28856
28837
|
* Bindings for pure functions are stored after regular bindings.
|
|
28857
28838
|
*
|
|
@@ -30809,7 +30790,27 @@ class Version {
|
|
|
30809
30790
|
/**
|
|
30810
30791
|
* @publicApi
|
|
30811
30792
|
*/
|
|
30812
|
-
const VERSION = new Version('18.1.0-next.
|
|
30793
|
+
const VERSION = new Version('18.1.0-next.2');
|
|
30794
|
+
|
|
30795
|
+
/*
|
|
30796
|
+
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
30797
|
+
*
|
|
30798
|
+
* When the Angular compiler processes a compilation unit, it normally writes imports to
|
|
30799
|
+
* @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the
|
|
30800
|
+
* compiler writes imports to this file.
|
|
30801
|
+
*
|
|
30802
|
+
* Only a subset of such imports are supported - core is not allowed to declare components or pipes.
|
|
30803
|
+
* A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used
|
|
30804
|
+
* when compiling @angular/core and is responsible for translating an external name (prefixed with
|
|
30805
|
+
* ɵ) to the internal symbol name as exported below.
|
|
30806
|
+
*
|
|
30807
|
+
* The below symbols are used for @Injectable and @NgModule compilation.
|
|
30808
|
+
*/
|
|
30809
|
+
/**
|
|
30810
|
+
* The existence of this constant (in this particular file) informs the Angular compiler that the
|
|
30811
|
+
* current program is actually @angular/core, which needs to be compiled specially.
|
|
30812
|
+
*/
|
|
30813
|
+
const ITS_JUST_ANGULAR = true;
|
|
30813
30814
|
|
|
30814
30815
|
class Console {
|
|
30815
30816
|
log(message) {
|
|
@@ -32922,9 +32923,7 @@ function provideZoneChangeDetection(options) {
|
|
|
32922
32923
|
ignoreChangesOutsideZone,
|
|
32923
32924
|
});
|
|
32924
32925
|
return makeEnvironmentProviders([
|
|
32925
|
-
|
|
32926
|
-
? [{ provide: PROVIDED_NG_ZONE, useValue: true }]
|
|
32927
|
-
: [],
|
|
32926
|
+
{ provide: PROVIDED_NG_ZONE, useValue: true },
|
|
32928
32927
|
{ provide: ZONELESS_ENABLED, useValue: false },
|
|
32929
32928
|
zoneProviders,
|
|
32930
32929
|
]);
|
|
@@ -35970,8 +35969,7 @@ function consumerDestroy(node) {
|
|
|
35970
35969
|
*/
|
|
35971
35970
|
function producerAddLiveConsumer(node, consumer, indexOfThis) {
|
|
35972
35971
|
assertProducerNode(node);
|
|
35973
|
-
|
|
35974
|
-
if (node.liveConsumerNode.length === 0) {
|
|
35972
|
+
if (node.liveConsumerNode.length === 0 && isConsumerNode(node)) {
|
|
35975
35973
|
// When going from 0 to 1 live consumers, we become a live consumer to our producers.
|
|
35976
35974
|
for (let i = 0; i < node.producerNode.length; i++) {
|
|
35977
35975
|
node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);
|
|
@@ -35985,11 +35983,10 @@ function producerAddLiveConsumer(node, consumer, indexOfThis) {
|
|
|
35985
35983
|
*/
|
|
35986
35984
|
function producerRemoveLiveConsumerAtIndex(node, idx) {
|
|
35987
35985
|
assertProducerNode(node);
|
|
35988
|
-
assertConsumerNode(node);
|
|
35989
35986
|
if (typeof ngDevMode !== 'undefined' && ngDevMode && idx >= node.liveConsumerNode.length) {
|
|
35990
35987
|
throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);
|
|
35991
35988
|
}
|
|
35992
|
-
if (node.liveConsumerNode.length === 1) {
|
|
35989
|
+
if (node.liveConsumerNode.length === 1 && isConsumerNode(node)) {
|
|
35993
35990
|
// When removing the last live consumer, we will no longer be live. We need to remove
|
|
35994
35991
|
// ourselves from our producers' tracking (which may cause consumer-producers to lose
|
|
35995
35992
|
// liveness as well).
|
|
@@ -36026,6 +36023,9 @@ function assertProducerNode(node) {
|
|
|
36026
36023
|
node.liveConsumerNode ??= [];
|
|
36027
36024
|
node.liveConsumerIndexOfThis ??= [];
|
|
36028
36025
|
}
|
|
36026
|
+
function isConsumerNode(node) {
|
|
36027
|
+
return node.producerNode !== undefined;
|
|
36028
|
+
}
|
|
36029
36029
|
|
|
36030
36030
|
/**
|
|
36031
36031
|
* Create a computed signal which derives a reactive value from an expression.
|
|
@@ -36545,17 +36545,70 @@ function getDeferBlocks(lView, deferBlocks) {
|
|
|
36545
36545
|
}
|
|
36546
36546
|
}
|
|
36547
36547
|
|
|
36548
|
-
|
|
36549
|
-
|
|
36550
|
-
|
|
36551
|
-
|
|
36552
|
-
|
|
36548
|
+
// tslint:disable:no-duplicate-imports
|
|
36549
|
+
function invokeRegisteredListeners(event) {
|
|
36550
|
+
const handlerFns = event.currentTarget?.__jsaction_fns?.get(event.type);
|
|
36551
|
+
if (!handlerFns) {
|
|
36552
|
+
return;
|
|
36553
|
+
}
|
|
36554
|
+
for (const handler of handlerFns) {
|
|
36555
|
+
handler(event);
|
|
36556
|
+
}
|
|
36553
36557
|
}
|
|
36554
|
-
|
|
36558
|
+
function setJSActionAttribute(nativeElement, eventTypes) {
|
|
36559
|
+
if (!eventTypes.length) {
|
|
36560
|
+
return;
|
|
36561
|
+
}
|
|
36562
|
+
const parts = eventTypes.reduce((prev, curr) => prev + curr + ':;', '');
|
|
36563
|
+
const existingAttr = nativeElement.getAttribute(Attributes.JSACTION);
|
|
36564
|
+
// This is required to be a module accessor to appease security tests on setAttribute.
|
|
36565
|
+
nativeElement.setAttribute(Attributes.JSACTION, `${existingAttr ?? ''}${parts}`);
|
|
36566
|
+
}
|
|
36567
|
+
const sharedStashFunction = (rEl, eventType, listenerFn) => {
|
|
36568
|
+
const el = rEl;
|
|
36569
|
+
const eventListenerMap = el.__jsaction_fns ?? new Map();
|
|
36570
|
+
const eventListeners = eventListenerMap.get(eventType) ?? [];
|
|
36571
|
+
eventListeners.push(listenerFn);
|
|
36572
|
+
eventListenerMap.set(eventType, eventListeners);
|
|
36573
|
+
el.__jsaction_fns = eventListenerMap;
|
|
36574
|
+
};
|
|
36575
|
+
const removeListeners = (el) => {
|
|
36576
|
+
el.removeAttribute(Attributes.JSACTION);
|
|
36577
|
+
el.__jsaction_fns = undefined;
|
|
36578
|
+
};
|
|
36579
|
+
class GlobalEventDelegation {
|
|
36580
|
+
addEvent(el, eventName) {
|
|
36581
|
+
if (this.eventContract) {
|
|
36582
|
+
this.eventContract.addEvent(eventName);
|
|
36583
|
+
setJSActionAttribute(el, [eventName]);
|
|
36584
|
+
return true;
|
|
36585
|
+
}
|
|
36586
|
+
return false;
|
|
36587
|
+
}
|
|
36588
|
+
static { this.ɵfac = function GlobalEventDelegation_Factory(t) { return new (t || GlobalEventDelegation)(); }; }
|
|
36589
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac, providedIn: 'root' }); }
|
|
36590
|
+
}
|
|
36591
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(GlobalEventDelegation, [{
|
|
36592
|
+
type: Injectable,
|
|
36593
|
+
args: [{ providedIn: 'root' }]
|
|
36594
|
+
}], null, null); })();
|
|
36595
|
+
const initGlobalEventDelegation = (eventDelegation, injector) => {
|
|
36596
|
+
if (injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT)) {
|
|
36597
|
+
return;
|
|
36598
|
+
}
|
|
36599
|
+
eventDelegation.eventContract = new EventContract(new EventContractContainer(document.body));
|
|
36600
|
+
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36601
|
+
registerDispatcher(eventDelegation.eventContract, dispatcher);
|
|
36602
|
+
};
|
|
36603
|
+
|
|
36604
|
+
const CONTRACT_PROPERTY = 'ngContracts';
|
|
36555
36605
|
/**
|
|
36556
36606
|
* A set of DOM elements with `jsaction` attributes.
|
|
36557
36607
|
*/
|
|
36558
36608
|
const jsactionSet = new Set();
|
|
36609
|
+
function isGlobalEventDelegationEnabled(injector) {
|
|
36610
|
+
return injector.get(IS_GLOBAL_EVENT_DELEGATION_ENABLED, false);
|
|
36611
|
+
}
|
|
36559
36612
|
/**
|
|
36560
36613
|
* Returns a set of providers required to setup support for event replay.
|
|
36561
36614
|
* Requires hydration to be enabled separately.
|
|
@@ -36569,21 +36622,13 @@ function withEventReplay() {
|
|
|
36569
36622
|
{
|
|
36570
36623
|
provide: ENVIRONMENT_INITIALIZER,
|
|
36571
36624
|
useValue: () => {
|
|
36572
|
-
|
|
36573
|
-
|
|
36574
|
-
|
|
36575
|
-
|
|
36576
|
-
|
|
36577
|
-
|
|
36578
|
-
|
|
36579
|
-
el.__jsaction_fns = new Map();
|
|
36580
|
-
}
|
|
36581
|
-
const eventMap = el.__jsaction_fns;
|
|
36582
|
-
if (!eventMap.has(eventName)) {
|
|
36583
|
-
eventMap.set(eventName, []);
|
|
36584
|
-
}
|
|
36585
|
-
eventMap.get(eventName).push(listenerFn);
|
|
36586
|
-
}
|
|
36625
|
+
const injector = inject(Injector);
|
|
36626
|
+
if (isGlobalEventDelegationEnabled(injector)) {
|
|
36627
|
+
return;
|
|
36628
|
+
}
|
|
36629
|
+
setStashFn((rEl, eventName, listenerFn) => {
|
|
36630
|
+
sharedStashFunction(rEl, eventName, listenerFn);
|
|
36631
|
+
jsactionSet.add(rEl);
|
|
36587
36632
|
});
|
|
36588
36633
|
},
|
|
36589
36634
|
multi: true,
|
|
@@ -36599,31 +36644,15 @@ function withEventReplay() {
|
|
|
36599
36644
|
// of the application is completed. This timing is similar to the unclaimed
|
|
36600
36645
|
// dehydrated views cleanup timing.
|
|
36601
36646
|
whenStable(appRef).then(() => {
|
|
36602
|
-
|
|
36603
|
-
|
|
36604
|
-
// Note: globalThis[CONTRACT_PROPERTY] may be undefined in case Event Replay feature
|
|
36605
|
-
// is enabled, but there are no events configured in an application.
|
|
36606
|
-
const container = globalThis[CONTRACT_PROPERTY]?.[appId];
|
|
36607
|
-
const earlyJsactionData = getJsactionData(container);
|
|
36608
|
-
if (earlyJsactionData) {
|
|
36609
|
-
const eventContract = new EventContract(new EventContractContainer(earlyJsactionData.c));
|
|
36610
|
-
for (const et of earlyJsactionData.et) {
|
|
36611
|
-
eventContract.addEvent(et);
|
|
36612
|
-
}
|
|
36613
|
-
for (const et of earlyJsactionData.etc) {
|
|
36614
|
-
eventContract.addEvent(et);
|
|
36615
|
-
}
|
|
36616
|
-
eventContract.replayEarlyEvents(container);
|
|
36617
|
-
const dispatcher = new EventDispatcher(handleEvent);
|
|
36618
|
-
registerDispatcher(eventContract, dispatcher);
|
|
36619
|
-
for (const el of jsactionSet) {
|
|
36620
|
-
el.removeAttribute(JSACTION_ATTRIBUTE);
|
|
36621
|
-
el.__jsaction_fns = undefined;
|
|
36622
|
-
}
|
|
36623
|
-
// After hydration, we shouldn't need to do anymore work related to
|
|
36624
|
-
// event replay anymore.
|
|
36625
|
-
setDisableEventReplayImpl(() => { });
|
|
36647
|
+
if (isGlobalEventDelegationEnabled(injector)) {
|
|
36648
|
+
return;
|
|
36626
36649
|
}
|
|
36650
|
+
const globalEventDelegation = injector.get(GlobalEventDelegation);
|
|
36651
|
+
initEventReplay(globalEventDelegation, injector);
|
|
36652
|
+
jsactionSet.forEach(removeListeners);
|
|
36653
|
+
// After hydration, we shouldn't need to do anymore work related to
|
|
36654
|
+
// event replay anymore.
|
|
36655
|
+
setStashFn(() => { });
|
|
36627
36656
|
});
|
|
36628
36657
|
};
|
|
36629
36658
|
}
|
|
@@ -36633,6 +36662,28 @@ function withEventReplay() {
|
|
|
36633
36662
|
},
|
|
36634
36663
|
];
|
|
36635
36664
|
}
|
|
36665
|
+
// TODO: Upstream this back into event-dispatch.
|
|
36666
|
+
function getJsactionData(container) {
|
|
36667
|
+
return container._ejsa;
|
|
36668
|
+
}
|
|
36669
|
+
const initEventReplay = (eventDelegation, injector) => {
|
|
36670
|
+
const appId = injector.get(APP_ID);
|
|
36671
|
+
// This is set in packages/platform-server/src/utils.ts
|
|
36672
|
+
// Note: globalThis[CONTRACT_PROPERTY] may be undefined in case Event Replay feature
|
|
36673
|
+
// is enabled, but there are no events configured in an application.
|
|
36674
|
+
const container = globalThis[CONTRACT_PROPERTY]?.[appId];
|
|
36675
|
+
const earlyJsactionData = getJsactionData(container);
|
|
36676
|
+
const eventContract = (eventDelegation.eventContract = new EventContract(new EventContractContainer(earlyJsactionData.c)));
|
|
36677
|
+
for (const et of earlyJsactionData.et) {
|
|
36678
|
+
eventContract.addEvent(et);
|
|
36679
|
+
}
|
|
36680
|
+
for (const et of earlyJsactionData.etc) {
|
|
36681
|
+
eventContract.addEvent(et);
|
|
36682
|
+
}
|
|
36683
|
+
eventContract.replayEarlyEvents(container);
|
|
36684
|
+
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36685
|
+
registerDispatcher(eventContract, dispatcher);
|
|
36686
|
+
};
|
|
36636
36687
|
/**
|
|
36637
36688
|
* Extracts information about all DOM events (added in a template) registered on elements in a give
|
|
36638
36689
|
* LView. Maps collected events to a corresponding DOM element (an element is used as a key).
|
|
@@ -36679,25 +36730,6 @@ function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
|
|
|
36679
36730
|
}
|
|
36680
36731
|
return events;
|
|
36681
36732
|
}
|
|
36682
|
-
function setJSActionAttribute(tNode, rNode, nativeElementToEvents) {
|
|
36683
|
-
if (tNode.type & 2 /* TNodeType.Element */) {
|
|
36684
|
-
const nativeElement = unwrapRNode(rNode);
|
|
36685
|
-
const events = nativeElementToEvents.get(nativeElement) ?? [];
|
|
36686
|
-
const parts = events.map((event) => `${event}:`);
|
|
36687
|
-
if (parts.length > 0) {
|
|
36688
|
-
nativeElement.setAttribute(JSACTION_ATTRIBUTE, parts.join(';'));
|
|
36689
|
-
}
|
|
36690
|
-
}
|
|
36691
|
-
}
|
|
36692
|
-
function handleEvent(event) {
|
|
36693
|
-
const handlerFns = event.currentTarget?.__jsaction_fns?.get(event.type);
|
|
36694
|
-
if (!handlerFns) {
|
|
36695
|
-
return;
|
|
36696
|
-
}
|
|
36697
|
-
for (const handler of handlerFns) {
|
|
36698
|
-
handler(event);
|
|
36699
|
-
}
|
|
36700
|
-
}
|
|
36701
36733
|
|
|
36702
36734
|
/**
|
|
36703
36735
|
* A collection that tracks all serialized views (`ngh` DOM annotations)
|
|
@@ -36783,6 +36815,13 @@ function annotateLContainerForHydration(lContainer, context) {
|
|
|
36783
36815
|
const componentLView = unwrapLView(lContainer[HOST]);
|
|
36784
36816
|
// Serialize the root component itself.
|
|
36785
36817
|
const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context);
|
|
36818
|
+
if (componentLViewNghIndex === null) {
|
|
36819
|
+
// Component was not serialized (for example, if hydration was skipped by adding
|
|
36820
|
+
// the `ngSkipHydration` attribute or this component uses i18n blocks in the template,
|
|
36821
|
+
// but `withI18nSupport()` was not added), avoid annotating host element with the `ngh`
|
|
36822
|
+
// attribute.
|
|
36823
|
+
return;
|
|
36824
|
+
}
|
|
36786
36825
|
const hostElement = unwrapRNode(componentLView[HOST]);
|
|
36787
36826
|
// Serialize all views within this view container.
|
|
36788
36827
|
const rootLView = lContainer[PARENT];
|
|
@@ -37001,10 +37040,13 @@ function serializeLView(lView, context) {
|
|
|
37001
37040
|
appendDisconnectedNodeIndex(ngh, tNode);
|
|
37002
37041
|
continue;
|
|
37003
37042
|
}
|
|
37004
|
-
|
|
37005
|
-
|
|
37006
|
-
|
|
37007
|
-
|
|
37043
|
+
// Attach `jsaction` attribute to elements that have registered listeners,
|
|
37044
|
+
// thus potentially having a need to do an event replay.
|
|
37045
|
+
if (nativeElementsToEventTypes && tNode.type & 2 /* TNodeType.Element */) {
|
|
37046
|
+
const nativeElement = unwrapRNode(lView[i]);
|
|
37047
|
+
if (nativeElementsToEventTypes.has(nativeElement)) {
|
|
37048
|
+
setJSActionAttribute(nativeElement, nativeElementsToEventTypes.get(nativeElement));
|
|
37049
|
+
}
|
|
37008
37050
|
}
|
|
37009
37051
|
if (Array.isArray(tNode.projection)) {
|
|
37010
37052
|
for (const projectionHeadTNode of tNode.projection) {
|
|
@@ -37273,7 +37315,7 @@ function printHydrationStats(injector) {
|
|
|
37273
37315
|
const message = `Angular hydrated ${ngDevMode.hydratedComponents} component(s) ` +
|
|
37274
37316
|
`and ${ngDevMode.hydratedNodes} node(s), ` +
|
|
37275
37317
|
`${ngDevMode.componentsSkippedHydration} component(s) were skipped. ` +
|
|
37276
|
-
`Learn more at https://angular.
|
|
37318
|
+
`Learn more at https://angular.dev/guide/hydration.`;
|
|
37277
37319
|
// tslint:disable-next-line:no-console
|
|
37278
37320
|
console.log(message);
|
|
37279
37321
|
}
|
|
@@ -38016,5 +38058,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
38016
38058
|
* Generated bundle index. Do not edit.
|
|
38017
38059
|
*/
|
|
38018
38060
|
|
|
38019
|
-
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, ExperimentalPendingTasks, 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, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, 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, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, 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, 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, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, 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, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks 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, internalAfterNextRender as ɵinternalAfterNextRender, 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, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, queueStateUpdate as ɵqueueStateUpdate, 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, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵ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, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
38061
|
+
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, ExperimentalPendingTasks, 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, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, 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, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, 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, 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, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, 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, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks 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, internalAfterNextRender as ɵinternalAfterNextRender, 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, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, queueStateUpdate as ɵqueueStateUpdate, 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, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵ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, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
38020
38062
|
//# sourceMappingURL=core.mjs.map
|