@angular/core 18.0.0 → 18.0.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 +4 -2
- package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +51 -35
- package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +8 -6
- package/esm2022/primitives/event-dispatch/src/event.mjs +3 -7
- package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +128 -0
- package/esm2022/primitives/event-dispatch/src/event_type.mjs +85 -1
- package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +5 -8
- package/esm2022/primitives/signals/src/graph.mjs +6 -5
- package/esm2022/src/application/create_application.mjs +8 -3
- package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +5 -14
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
- package/esm2022/src/core_private_export.mjs +3 -2
- package/esm2022/src/error_details_base_url.mjs +2 -2
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/event_delegation_utils.mjs +68 -0
- package/esm2022/src/hydration/annotate.mjs +24 -8
- package/esm2022/src/hydration/api.mjs +2 -2
- package/esm2022/src/hydration/event_replay.mjs +55 -81
- package/esm2022/src/hydration/tokens.mjs +6 -1
- package/esm2022/src/image_performance_warning.mjs +3 -3
- package/esm2022/src/platform/platform_ref.mjs +10 -3
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/instructions/listener.mjs +8 -11
- package/esm2022/src/render3/instructions/shared.mjs +3 -3
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/logger.mjs +3 -3
- package/esm2022/testing/src/test_bed_compiler.mjs +7 -3
- package/fesm2022/core.mjs +340 -292
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1402 -1189
- 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 +7 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +45 -3
- package/package.json +2 -2
- package/primitives/event-dispatch/index.d.ts +109 -116
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/http-providers/bundle.js +25 -17
- package/schematics/migrations/http-providers/bundle.js.map +2 -2
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +337 -166
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
- package/schematics/ng-generate/control-flow-migration/bundle.js +361 -183
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
- package/schematics/ng-generate/standalone-migration/bundle.js +812 -497
- package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
- package/testing/index.d.ts +1 -1
- package/esm2022/src/change_detection/scheduling/flags.mjs +0 -10
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.0.
|
|
2
|
+
* @license Angular v18.0.2
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,7 +7,8 @@
|
|
|
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
8
|
import { Subject, Subscription, BehaviorSubject } from 'rxjs';
|
|
9
9
|
import { map, first } from 'rxjs/operators';
|
|
10
|
-
import
|
|
10
|
+
import * as Attributes from '@angular/core/primitives/event-dispatch';
|
|
11
|
+
import { EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isSupportedEvent, isCaptureEvent } from '@angular/core/primitives/event-dispatch';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Base URL for the error details page.
|
|
@@ -16,7 +17,7 @@ import { EventContract, EventContractContainer, Dispatcher, registerDispatcher }
|
|
|
16
17
|
* - packages/compiler-cli/src/ngtsc/diagnostics/src/error_details_base_url.ts
|
|
17
18
|
* - packages/core/src/error_details_base_url.ts
|
|
18
19
|
*/
|
|
19
|
-
const ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.
|
|
20
|
+
const ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.dev/errors';
|
|
20
21
|
/**
|
|
21
22
|
* URL for the XSS security documentation.
|
|
22
23
|
*/
|
|
@@ -8721,6 +8722,11 @@ const IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undef
|
|
|
8721
8722
|
* is enabled.
|
|
8722
8723
|
*/
|
|
8723
8724
|
const IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_EVENT_REPLAY_ENABLED' : '');
|
|
8725
|
+
const EVENT_REPLAY_ENABLED_DEFAULT = false;
|
|
8726
|
+
/**
|
|
8727
|
+
* Internal token that indicates whether global event delegation support is enabled.
|
|
8728
|
+
*/
|
|
8729
|
+
const IS_GLOBAL_EVENT_DELEGATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_GLOBAL_EVENT_DELEGATION_ENABLED' : '');
|
|
8724
8730
|
|
|
8725
8731
|
/**
|
|
8726
8732
|
* @fileoverview
|
|
@@ -12539,10 +12545,10 @@ function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex,
|
|
|
12539
12545
|
}
|
|
12540
12546
|
function getOrCreateLViewCleanup(view) {
|
|
12541
12547
|
// top level variables should not be exported for performance reasons (PERF_NOTES.md)
|
|
12542
|
-
return
|
|
12548
|
+
return (view[CLEANUP] ??= []);
|
|
12543
12549
|
}
|
|
12544
12550
|
function getOrCreateTViewCleanup(tView) {
|
|
12545
|
-
return
|
|
12551
|
+
return (tView.cleanup ??= []);
|
|
12546
12552
|
}
|
|
12547
12553
|
/**
|
|
12548
12554
|
* There are cases where the sub component's renderer needs to be included
|
|
@@ -16900,7 +16906,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
16900
16906
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
16901
16907
|
if (rootSelectorOrNode) {
|
|
16902
16908
|
// The placeholder will be replaced with the actual version at build time.
|
|
16903
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.0.
|
|
16909
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.0.2']);
|
|
16904
16910
|
}
|
|
16905
16911
|
else {
|
|
16906
16912
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -26384,9 +26390,9 @@ function ɵɵi18nPostprocess(message, replacements = {}) {
|
|
|
26384
26390
|
* an actual implementation when the event replay feature is enabled via
|
|
26385
26391
|
* `withEventReplay()` call.
|
|
26386
26392
|
*/
|
|
26387
|
-
let
|
|
26388
|
-
function
|
|
26389
|
-
|
|
26393
|
+
let stashEventListener = (el, eventName, listenerFn) => { };
|
|
26394
|
+
function setStashFn(fn) {
|
|
26395
|
+
stashEventListener = fn;
|
|
26390
26396
|
}
|
|
26391
26397
|
/**
|
|
26392
26398
|
* Adds an event listener to the current node.
|
|
@@ -26492,7 +26498,6 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
26492
26498
|
const idxOrTargetGetter = eventTargetResolver
|
|
26493
26499
|
? (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index]))
|
|
26494
26500
|
: tNode.index;
|
|
26495
|
-
disableEventReplayFn(native, eventName, listenerFn);
|
|
26496
26501
|
// In order to match current behavior, native DOM event listeners must be added for all
|
|
26497
26502
|
// events (including outputs).
|
|
26498
26503
|
// There might be cases where multiple directives on the same element try to register an event
|
|
@@ -26526,7 +26531,8 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
26526
26531
|
processOutputs = false;
|
|
26527
26532
|
}
|
|
26528
26533
|
else {
|
|
26529
|
-
listenerFn = wrapListener(tNode, lView, context, listenerFn
|
|
26534
|
+
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
26535
|
+
stashEventListener(native, eventName, listenerFn);
|
|
26530
26536
|
const cleanupFn = renderer.listen(target, eventName, listenerFn);
|
|
26531
26537
|
ngDevMode && ngDevMode.rendererAddEventListener++;
|
|
26532
26538
|
lCleanup.push(listenerFn, cleanupFn);
|
|
@@ -26536,7 +26542,7 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
|
|
|
26536
26542
|
else {
|
|
26537
26543
|
// Even if there is no native listener to add, we still need to wrap the listener so that OnPush
|
|
26538
26544
|
// ancestors are marked dirty when an event occurs.
|
|
26539
|
-
listenerFn = wrapListener(tNode, lView, context, listenerFn
|
|
26545
|
+
listenerFn = wrapListener(tNode, lView, context, listenerFn);
|
|
26540
26546
|
}
|
|
26541
26547
|
// subscribe to directive outputs
|
|
26542
26548
|
const outputs = tNode.outputs;
|
|
@@ -26587,7 +26593,7 @@ function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
|
26587
26593
|
* @param wrapWithPreventDefault Whether or not to prevent default behavior
|
|
26588
26594
|
* (the procedural renderer does this already, so in those cases, we should skip)
|
|
26589
26595
|
*/
|
|
26590
|
-
function wrapListener(tNode, lView, context, listenerFn
|
|
26596
|
+
function wrapListener(tNode, lView, context, listenerFn) {
|
|
26591
26597
|
// Note: we are performing most of the work in the listener function itself
|
|
26592
26598
|
// to optimize listener registration.
|
|
26593
26599
|
return function wrapListenerIn_markDirtyAndPreventDefault(e) {
|
|
@@ -26609,9 +26615,6 @@ function wrapListener(tNode, lView, context, listenerFn, wrapWithPreventDefault)
|
|
|
26609
26615
|
result = executeListenerWithErrorHandling(lView, context, nextListenerFn, e) && result;
|
|
26610
26616
|
nextListenerFn = nextListenerFn.__ngNextListenerFn__;
|
|
26611
26617
|
}
|
|
26612
|
-
if (wrapWithPreventDefault && result === false) {
|
|
26613
|
-
e.preventDefault();
|
|
26614
|
-
}
|
|
26615
26618
|
return result;
|
|
26616
26619
|
};
|
|
26617
26620
|
}
|
|
@@ -30812,7 +30815,7 @@ class Version {
|
|
|
30812
30815
|
/**
|
|
30813
30816
|
* @publicApi
|
|
30814
30817
|
*/
|
|
30815
|
-
const VERSION = new Version('18.0.
|
|
30818
|
+
const VERSION = new Version('18.0.2');
|
|
30816
30819
|
|
|
30817
30820
|
class Console {
|
|
30818
30821
|
log(message) {
|
|
@@ -32813,8 +32816,179 @@ function _lastDefined(args) {
|
|
|
32813
32816
|
return undefined;
|
|
32814
32817
|
}
|
|
32815
32818
|
|
|
32816
|
-
|
|
32817
|
-
|
|
32819
|
+
class NgZoneChangeDetectionScheduler {
|
|
32820
|
+
constructor() {
|
|
32821
|
+
this.zone = inject(NgZone);
|
|
32822
|
+
this.changeDetectionScheduler = inject(ChangeDetectionScheduler);
|
|
32823
|
+
this.applicationRef = inject(ApplicationRef);
|
|
32824
|
+
}
|
|
32825
|
+
initialize() {
|
|
32826
|
+
if (this._onMicrotaskEmptySubscription) {
|
|
32827
|
+
return;
|
|
32828
|
+
}
|
|
32829
|
+
this._onMicrotaskEmptySubscription = this.zone.onMicrotaskEmpty.subscribe({
|
|
32830
|
+
next: () => {
|
|
32831
|
+
// `onMicroTaskEmpty` can happen _during_ the zoneless scheduler change detection because
|
|
32832
|
+
// zone.run(() => {}) will result in `checkStable` at the end of the `zone.run` closure
|
|
32833
|
+
// and emit `onMicrotaskEmpty` synchronously if run coalsecing is false.
|
|
32834
|
+
if (this.changeDetectionScheduler.runningTick) {
|
|
32835
|
+
return;
|
|
32836
|
+
}
|
|
32837
|
+
this.zone.run(() => {
|
|
32838
|
+
this.applicationRef.tick();
|
|
32839
|
+
});
|
|
32840
|
+
},
|
|
32841
|
+
});
|
|
32842
|
+
}
|
|
32843
|
+
ngOnDestroy() {
|
|
32844
|
+
this._onMicrotaskEmptySubscription?.unsubscribe();
|
|
32845
|
+
}
|
|
32846
|
+
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(t) { return new (t || NgZoneChangeDetectionScheduler)(); }; }
|
|
32847
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }
|
|
32848
|
+
}
|
|
32849
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{
|
|
32850
|
+
type: Injectable,
|
|
32851
|
+
args: [{ providedIn: 'root' }]
|
|
32852
|
+
}], null, null); })();
|
|
32853
|
+
/**
|
|
32854
|
+
* Internal token used to verify that `provideZoneChangeDetection` is not used
|
|
32855
|
+
* with the bootstrapModule API.
|
|
32856
|
+
*/
|
|
32857
|
+
const PROVIDED_NG_ZONE = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'provideZoneChangeDetection token' : '', { factory: () => false });
|
|
32858
|
+
function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsideZone, }) {
|
|
32859
|
+
ngZoneFactory ??= () => new NgZone(getNgZoneOptions());
|
|
32860
|
+
return [
|
|
32861
|
+
{ provide: NgZone, useFactory: ngZoneFactory },
|
|
32862
|
+
{
|
|
32863
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
32864
|
+
multi: true,
|
|
32865
|
+
useFactory: () => {
|
|
32866
|
+
const ngZoneChangeDetectionScheduler = inject(NgZoneChangeDetectionScheduler, {
|
|
32867
|
+
optional: true,
|
|
32868
|
+
});
|
|
32869
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
32870
|
+
ngZoneChangeDetectionScheduler === null) {
|
|
32871
|
+
throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, `A required Injectable was not found in the dependency injection tree. ` +
|
|
32872
|
+
'If you are bootstrapping an NgModule, make sure that the `BrowserModule` is imported.');
|
|
32873
|
+
}
|
|
32874
|
+
return () => ngZoneChangeDetectionScheduler.initialize();
|
|
32875
|
+
},
|
|
32876
|
+
},
|
|
32877
|
+
{
|
|
32878
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
32879
|
+
multi: true,
|
|
32880
|
+
useFactory: () => {
|
|
32881
|
+
const service = inject(ZoneStablePendingTask);
|
|
32882
|
+
return () => {
|
|
32883
|
+
service.initialize();
|
|
32884
|
+
};
|
|
32885
|
+
},
|
|
32886
|
+
},
|
|
32887
|
+
{ provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },
|
|
32888
|
+
// Always disable scheduler whenever explicitly disabled, even if another place called
|
|
32889
|
+
// `provideZoneChangeDetection` without the 'ignore' option.
|
|
32890
|
+
ignoreChangesOutsideZone === true ? { provide: ZONELESS_SCHEDULER_DISABLED, useValue: true } : [],
|
|
32891
|
+
];
|
|
32892
|
+
}
|
|
32893
|
+
function ngZoneApplicationErrorHandlerFactory() {
|
|
32894
|
+
const zone = inject(NgZone);
|
|
32895
|
+
const userErrorHandler = inject(ErrorHandler);
|
|
32896
|
+
return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));
|
|
32897
|
+
}
|
|
32898
|
+
/**
|
|
32899
|
+
* Provides `NgZone`-based change detection for the application bootstrapped using
|
|
32900
|
+
* `bootstrapApplication`.
|
|
32901
|
+
*
|
|
32902
|
+
* `NgZone` is already provided in applications by default. This provider allows you to configure
|
|
32903
|
+
* options like `eventCoalescing` in the `NgZone`.
|
|
32904
|
+
* This provider is not available for `platformBrowser().bootstrapModule`, which uses
|
|
32905
|
+
* `BootstrapOptions` instead.
|
|
32906
|
+
*
|
|
32907
|
+
* @usageNotes
|
|
32908
|
+
* ```typescript
|
|
32909
|
+
* bootstrapApplication(MyApp, {providers: [
|
|
32910
|
+
* provideZoneChangeDetection({eventCoalescing: true}),
|
|
32911
|
+
* ]});
|
|
32912
|
+
* ```
|
|
32913
|
+
*
|
|
32914
|
+
* @publicApi
|
|
32915
|
+
* @see {@link bootstrapApplication}
|
|
32916
|
+
* @see {@link NgZoneOptions}
|
|
32917
|
+
*/
|
|
32918
|
+
function provideZoneChangeDetection(options) {
|
|
32919
|
+
const ignoreChangesOutsideZone = options?.ignoreChangesOutsideZone;
|
|
32920
|
+
const zoneProviders = internalProvideZoneChangeDetection({
|
|
32921
|
+
ngZoneFactory: () => {
|
|
32922
|
+
const ngZoneOptions = getNgZoneOptions(options);
|
|
32923
|
+
if (ngZoneOptions.shouldCoalesceEventChangeDetection) {
|
|
32924
|
+
performanceMarkFeature('NgZone_CoalesceEvent');
|
|
32925
|
+
}
|
|
32926
|
+
return new NgZone(ngZoneOptions);
|
|
32927
|
+
},
|
|
32928
|
+
ignoreChangesOutsideZone,
|
|
32929
|
+
});
|
|
32930
|
+
return makeEnvironmentProviders([
|
|
32931
|
+
{ provide: PROVIDED_NG_ZONE, useValue: true },
|
|
32932
|
+
{ provide: ZONELESS_ENABLED, useValue: false },
|
|
32933
|
+
zoneProviders,
|
|
32934
|
+
]);
|
|
32935
|
+
}
|
|
32936
|
+
// Transforms a set of `BootstrapOptions` (supported by the NgModule-based bootstrap APIs) ->
|
|
32937
|
+
// `NgZoneOptions` that are recognized by the NgZone constructor. Passing no options will result in
|
|
32938
|
+
// a set of default options returned.
|
|
32939
|
+
function getNgZoneOptions(options) {
|
|
32940
|
+
return {
|
|
32941
|
+
enableLongStackTrace: typeof ngDevMode === 'undefined' ? false : !!ngDevMode,
|
|
32942
|
+
shouldCoalesceEventChangeDetection: options?.eventCoalescing ?? false,
|
|
32943
|
+
shouldCoalesceRunChangeDetection: options?.runCoalescing ?? false,
|
|
32944
|
+
};
|
|
32945
|
+
}
|
|
32946
|
+
class ZoneStablePendingTask {
|
|
32947
|
+
constructor() {
|
|
32948
|
+
this.subscription = new Subscription();
|
|
32949
|
+
this.initialized = false;
|
|
32950
|
+
this.zone = inject(NgZone);
|
|
32951
|
+
this.pendingTasks = inject(PendingTasks);
|
|
32952
|
+
}
|
|
32953
|
+
initialize() {
|
|
32954
|
+
if (this.initialized) {
|
|
32955
|
+
return;
|
|
32956
|
+
}
|
|
32957
|
+
this.initialized = true;
|
|
32958
|
+
let task = null;
|
|
32959
|
+
if (!this.zone.isStable && !this.zone.hasPendingMacrotasks && !this.zone.hasPendingMicrotasks) {
|
|
32960
|
+
task = this.pendingTasks.add();
|
|
32961
|
+
}
|
|
32962
|
+
this.zone.runOutsideAngular(() => {
|
|
32963
|
+
this.subscription.add(this.zone.onStable.subscribe(() => {
|
|
32964
|
+
NgZone.assertNotInAngularZone();
|
|
32965
|
+
// Check whether there are no pending macro/micro tasks in the next tick
|
|
32966
|
+
// to allow for NgZone to update the state.
|
|
32967
|
+
queueMicrotask(() => {
|
|
32968
|
+
if (task !== null &&
|
|
32969
|
+
!this.zone.hasPendingMacrotasks &&
|
|
32970
|
+
!this.zone.hasPendingMicrotasks) {
|
|
32971
|
+
this.pendingTasks.remove(task);
|
|
32972
|
+
task = null;
|
|
32973
|
+
}
|
|
32974
|
+
});
|
|
32975
|
+
}));
|
|
32976
|
+
});
|
|
32977
|
+
this.subscription.add(this.zone.onUnstable.subscribe(() => {
|
|
32978
|
+
NgZone.assertInAngularZone();
|
|
32979
|
+
task ??= this.pendingTasks.add();
|
|
32980
|
+
}));
|
|
32981
|
+
}
|
|
32982
|
+
ngOnDestroy() {
|
|
32983
|
+
this.subscription.unsubscribe();
|
|
32984
|
+
}
|
|
32985
|
+
static { this.ɵfac = function ZoneStablePendingTask_Factory(t) { return new (t || ZoneStablePendingTask)(); }; }
|
|
32986
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ZoneStablePendingTask, factory: ZoneStablePendingTask.ɵfac, providedIn: 'root' }); }
|
|
32987
|
+
}
|
|
32988
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ZoneStablePendingTask, [{
|
|
32989
|
+
type: Injectable,
|
|
32990
|
+
args: [{ providedIn: 'root' }]
|
|
32991
|
+
}], null, null); })();
|
|
32818
32992
|
|
|
32819
32993
|
const CONSECUTIVE_MICROTASK_NOTIFICATION_LIMIT = 100;
|
|
32820
32994
|
let consecutiveMicrotaskNotifications = 0;
|
|
@@ -33063,7 +33237,7 @@ function provideExperimentalZonelessChangeDetection() {
|
|
|
33063
33237
|
if ((typeof ngDevMode === 'undefined' || ngDevMode) && typeof Zone !== 'undefined' && Zone) {
|
|
33064
33238
|
const message = formatRuntimeError(914 /* RuntimeErrorCode.UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE */, `The application is using zoneless change detection, but is still loading Zone.js.` +
|
|
33065
33239
|
`Consider removing Zone.js to get the full benefits of zoneless. ` +
|
|
33066
|
-
`In
|
|
33240
|
+
`In applications using the Angular CLI, Zone.js is typically included in the "polyfills" section of the angular.json file.`);
|
|
33067
33241
|
console.warn(message);
|
|
33068
33242
|
}
|
|
33069
33243
|
return makeEnvironmentProviders([
|
|
@@ -33076,187 +33250,6 @@ function provideExperimentalZonelessChangeDetection() {
|
|
|
33076
33250
|
]);
|
|
33077
33251
|
}
|
|
33078
33252
|
|
|
33079
|
-
class NgZoneChangeDetectionScheduler {
|
|
33080
|
-
constructor() {
|
|
33081
|
-
this.zone = inject(NgZone);
|
|
33082
|
-
this.changeDetectionScheduler = inject(ChangeDetectionScheduler, { optional: true });
|
|
33083
|
-
this.applicationRef = inject(ApplicationRef);
|
|
33084
|
-
}
|
|
33085
|
-
initialize() {
|
|
33086
|
-
if (this._onMicrotaskEmptySubscription) {
|
|
33087
|
-
return;
|
|
33088
|
-
}
|
|
33089
|
-
this._onMicrotaskEmptySubscription = this.zone.onMicrotaskEmpty.subscribe({
|
|
33090
|
-
next: () => {
|
|
33091
|
-
// `onMicroTaskEmpty` can happen _during_ the zoneless scheduler change detection because
|
|
33092
|
-
// zone.run(() => {}) will result in `checkStable` at the end of the `zone.run` closure
|
|
33093
|
-
// and emit `onMicrotaskEmpty` synchronously if run coalsecing is false.
|
|
33094
|
-
if (this.changeDetectionScheduler?.runningTick) {
|
|
33095
|
-
return;
|
|
33096
|
-
}
|
|
33097
|
-
this.zone.run(() => {
|
|
33098
|
-
this.applicationRef.tick();
|
|
33099
|
-
});
|
|
33100
|
-
},
|
|
33101
|
-
});
|
|
33102
|
-
}
|
|
33103
|
-
ngOnDestroy() {
|
|
33104
|
-
this._onMicrotaskEmptySubscription?.unsubscribe();
|
|
33105
|
-
}
|
|
33106
|
-
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(t) { return new (t || NgZoneChangeDetectionScheduler)(); }; }
|
|
33107
|
-
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }
|
|
33108
|
-
}
|
|
33109
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{
|
|
33110
|
-
type: Injectable,
|
|
33111
|
-
args: [{ providedIn: 'root' }]
|
|
33112
|
-
}], null, null); })();
|
|
33113
|
-
/**
|
|
33114
|
-
* Internal token used to verify that `provideZoneChangeDetection` is not used
|
|
33115
|
-
* with the bootstrapModule API.
|
|
33116
|
-
*/
|
|
33117
|
-
const PROVIDED_NG_ZONE = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'provideZoneChangeDetection token' : '', { factory: () => false });
|
|
33118
|
-
function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsideZone, }) {
|
|
33119
|
-
ngZoneFactory ??= () => new NgZone(getNgZoneOptions());
|
|
33120
|
-
return [
|
|
33121
|
-
{ provide: NgZone, useFactory: ngZoneFactory },
|
|
33122
|
-
{
|
|
33123
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
33124
|
-
multi: true,
|
|
33125
|
-
useFactory: () => {
|
|
33126
|
-
const ngZoneChangeDetectionScheduler = inject(NgZoneChangeDetectionScheduler, {
|
|
33127
|
-
optional: true,
|
|
33128
|
-
});
|
|
33129
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
33130
|
-
ngZoneChangeDetectionScheduler === null) {
|
|
33131
|
-
throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, `A required Injectable was not found in the dependency injection tree. ` +
|
|
33132
|
-
'If you are bootstrapping an NgModule, make sure that the `BrowserModule` is imported.');
|
|
33133
|
-
}
|
|
33134
|
-
return () => ngZoneChangeDetectionScheduler.initialize();
|
|
33135
|
-
},
|
|
33136
|
-
},
|
|
33137
|
-
{
|
|
33138
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
33139
|
-
multi: true,
|
|
33140
|
-
useFactory: () => {
|
|
33141
|
-
const service = inject(ZoneStablePendingTask);
|
|
33142
|
-
return () => {
|
|
33143
|
-
service.initialize();
|
|
33144
|
-
};
|
|
33145
|
-
},
|
|
33146
|
-
},
|
|
33147
|
-
{ provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },
|
|
33148
|
-
// Always disable scheduler whenever explicitly disabled, even if another place called
|
|
33149
|
-
// `provideZoneChangeDetection` without the 'ignore' option.
|
|
33150
|
-
ignoreChangesOutsideZone === true ? { provide: ZONELESS_SCHEDULER_DISABLED, useValue: true } : [],
|
|
33151
|
-
// TODO(atscott): This should move to the same places that zone change detection is provided by
|
|
33152
|
-
// default instead of being in the zone scheduling providers.
|
|
33153
|
-
alwaysProvideZonelessScheduler || ignoreChangesOutsideZone === false
|
|
33154
|
-
? { provide: ChangeDetectionScheduler, useExisting: ChangeDetectionSchedulerImpl }
|
|
33155
|
-
: [],
|
|
33156
|
-
];
|
|
33157
|
-
}
|
|
33158
|
-
function ngZoneApplicationErrorHandlerFactory() {
|
|
33159
|
-
const zone = inject(NgZone);
|
|
33160
|
-
const userErrorHandler = inject(ErrorHandler);
|
|
33161
|
-
return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));
|
|
33162
|
-
}
|
|
33163
|
-
/**
|
|
33164
|
-
* Provides `NgZone`-based change detection for the application bootstrapped using
|
|
33165
|
-
* `bootstrapApplication`.
|
|
33166
|
-
*
|
|
33167
|
-
* `NgZone` is already provided in applications by default. This provider allows you to configure
|
|
33168
|
-
* options like `eventCoalescing` in the `NgZone`.
|
|
33169
|
-
* This provider is not available for `platformBrowser().bootstrapModule`, which uses
|
|
33170
|
-
* `BootstrapOptions` instead.
|
|
33171
|
-
*
|
|
33172
|
-
* @usageNotes
|
|
33173
|
-
* ```typescript
|
|
33174
|
-
* bootstrapApplication(MyApp, {providers: [
|
|
33175
|
-
* provideZoneChangeDetection({eventCoalescing: true}),
|
|
33176
|
-
* ]});
|
|
33177
|
-
* ```
|
|
33178
|
-
*
|
|
33179
|
-
* @publicApi
|
|
33180
|
-
* @see {@link bootstrapApplication}
|
|
33181
|
-
* @see {@link NgZoneOptions}
|
|
33182
|
-
*/
|
|
33183
|
-
function provideZoneChangeDetection(options) {
|
|
33184
|
-
const ignoreChangesOutsideZone = options?.ignoreChangesOutsideZone;
|
|
33185
|
-
const zoneProviders = internalProvideZoneChangeDetection({
|
|
33186
|
-
ngZoneFactory: () => {
|
|
33187
|
-
const ngZoneOptions = getNgZoneOptions(options);
|
|
33188
|
-
if (ngZoneOptions.shouldCoalesceEventChangeDetection) {
|
|
33189
|
-
performanceMarkFeature('NgZone_CoalesceEvent');
|
|
33190
|
-
}
|
|
33191
|
-
return new NgZone(ngZoneOptions);
|
|
33192
|
-
},
|
|
33193
|
-
ignoreChangesOutsideZone,
|
|
33194
|
-
});
|
|
33195
|
-
return makeEnvironmentProviders([
|
|
33196
|
-
typeof ngDevMode === 'undefined' || ngDevMode
|
|
33197
|
-
? [{ provide: PROVIDED_NG_ZONE, useValue: true }]
|
|
33198
|
-
: [],
|
|
33199
|
-
{ provide: ZONELESS_ENABLED, useValue: false },
|
|
33200
|
-
zoneProviders,
|
|
33201
|
-
]);
|
|
33202
|
-
}
|
|
33203
|
-
// Transforms a set of `BootstrapOptions` (supported by the NgModule-based bootstrap APIs) ->
|
|
33204
|
-
// `NgZoneOptions` that are recognized by the NgZone constructor. Passing no options will result in
|
|
33205
|
-
// a set of default options returned.
|
|
33206
|
-
function getNgZoneOptions(options) {
|
|
33207
|
-
return {
|
|
33208
|
-
enableLongStackTrace: typeof ngDevMode === 'undefined' ? false : !!ngDevMode,
|
|
33209
|
-
shouldCoalesceEventChangeDetection: options?.eventCoalescing ?? false,
|
|
33210
|
-
shouldCoalesceRunChangeDetection: options?.runCoalescing ?? false,
|
|
33211
|
-
};
|
|
33212
|
-
}
|
|
33213
|
-
class ZoneStablePendingTask {
|
|
33214
|
-
constructor() {
|
|
33215
|
-
this.subscription = new Subscription();
|
|
33216
|
-
this.initialized = false;
|
|
33217
|
-
this.zone = inject(NgZone);
|
|
33218
|
-
this.pendingTasks = inject(PendingTasks);
|
|
33219
|
-
}
|
|
33220
|
-
initialize() {
|
|
33221
|
-
if (this.initialized) {
|
|
33222
|
-
return;
|
|
33223
|
-
}
|
|
33224
|
-
this.initialized = true;
|
|
33225
|
-
let task = null;
|
|
33226
|
-
if (!this.zone.isStable && !this.zone.hasPendingMacrotasks && !this.zone.hasPendingMicrotasks) {
|
|
33227
|
-
task = this.pendingTasks.add();
|
|
33228
|
-
}
|
|
33229
|
-
this.zone.runOutsideAngular(() => {
|
|
33230
|
-
this.subscription.add(this.zone.onStable.subscribe(() => {
|
|
33231
|
-
NgZone.assertNotInAngularZone();
|
|
33232
|
-
// Check whether there are no pending macro/micro tasks in the next tick
|
|
33233
|
-
// to allow for NgZone to update the state.
|
|
33234
|
-
queueMicrotask(() => {
|
|
33235
|
-
if (task !== null &&
|
|
33236
|
-
!this.zone.hasPendingMacrotasks &&
|
|
33237
|
-
!this.zone.hasPendingMicrotasks) {
|
|
33238
|
-
this.pendingTasks.remove(task);
|
|
33239
|
-
task = null;
|
|
33240
|
-
}
|
|
33241
|
-
});
|
|
33242
|
-
}));
|
|
33243
|
-
});
|
|
33244
|
-
this.subscription.add(this.zone.onUnstable.subscribe(() => {
|
|
33245
|
-
NgZone.assertInAngularZone();
|
|
33246
|
-
task ??= this.pendingTasks.add();
|
|
33247
|
-
}));
|
|
33248
|
-
}
|
|
33249
|
-
ngOnDestroy() {
|
|
33250
|
-
this.subscription.unsubscribe();
|
|
33251
|
-
}
|
|
33252
|
-
static { this.ɵfac = function ZoneStablePendingTask_Factory(t) { return new (t || ZoneStablePendingTask)(); }; }
|
|
33253
|
-
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ZoneStablePendingTask, factory: ZoneStablePendingTask.ɵfac, providedIn: 'root' }); }
|
|
33254
|
-
}
|
|
33255
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ZoneStablePendingTask, [{
|
|
33256
|
-
type: Injectable,
|
|
33257
|
-
args: [{ providedIn: 'root' }]
|
|
33258
|
-
}], null, null); })();
|
|
33259
|
-
|
|
33260
33253
|
/**
|
|
33261
33254
|
* Work out the locale from the potential global properties.
|
|
33262
33255
|
*
|
|
@@ -33476,7 +33469,13 @@ class PlatformRef {
|
|
|
33476
33469
|
// created outside of the Angular zone.
|
|
33477
33470
|
return ngZone.run(() => {
|
|
33478
33471
|
const ignoreChangesOutsideZone = options?.ignoreChangesOutsideZone;
|
|
33479
|
-
const moduleRef = createNgModuleRefWithProviders(moduleFactory.moduleType, this.injector,
|
|
33472
|
+
const moduleRef = createNgModuleRefWithProviders(moduleFactory.moduleType, this.injector, [
|
|
33473
|
+
...internalProvideZoneChangeDetection({
|
|
33474
|
+
ngZoneFactory: () => ngZone,
|
|
33475
|
+
ignoreChangesOutsideZone,
|
|
33476
|
+
}),
|
|
33477
|
+
{ provide: ChangeDetectionScheduler, useExisting: ChangeDetectionSchedulerImpl },
|
|
33478
|
+
]);
|
|
33480
33479
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
33481
33480
|
if (moduleRef.injector.get(PROVIDED_NG_ZONE)) {
|
|
33482
33481
|
throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, '`bootstrapModule` does not support `provideZoneChangeDetection`. Use `BootstrapOptions` instead.');
|
|
@@ -35975,8 +35974,7 @@ function consumerDestroy(node) {
|
|
|
35975
35974
|
*/
|
|
35976
35975
|
function producerAddLiveConsumer(node, consumer, indexOfThis) {
|
|
35977
35976
|
assertProducerNode(node);
|
|
35978
|
-
|
|
35979
|
-
if (node.liveConsumerNode.length === 0) {
|
|
35977
|
+
if (node.liveConsumerNode.length === 0 && isConsumerNode(node)) {
|
|
35980
35978
|
// When going from 0 to 1 live consumers, we become a live consumer to our producers.
|
|
35981
35979
|
for (let i = 0; i < node.producerNode.length; i++) {
|
|
35982
35980
|
node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);
|
|
@@ -35990,11 +35988,10 @@ function producerAddLiveConsumer(node, consumer, indexOfThis) {
|
|
|
35990
35988
|
*/
|
|
35991
35989
|
function producerRemoveLiveConsumerAtIndex(node, idx) {
|
|
35992
35990
|
assertProducerNode(node);
|
|
35993
|
-
assertConsumerNode(node);
|
|
35994
35991
|
if (typeof ngDevMode !== 'undefined' && ngDevMode && idx >= node.liveConsumerNode.length) {
|
|
35995
35992
|
throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);
|
|
35996
35993
|
}
|
|
35997
|
-
if (node.liveConsumerNode.length === 1) {
|
|
35994
|
+
if (node.liveConsumerNode.length === 1 && isConsumerNode(node)) {
|
|
35998
35995
|
// When removing the last live consumer, we will no longer be live. We need to remove
|
|
35999
35996
|
// ourselves from our producers' tracking (which may cause consumer-producers to lose
|
|
36000
35997
|
// liveness as well).
|
|
@@ -36031,6 +36028,9 @@ function assertProducerNode(node) {
|
|
|
36031
36028
|
node.liveConsumerNode ??= [];
|
|
36032
36029
|
node.liveConsumerIndexOfThis ??= [];
|
|
36033
36030
|
}
|
|
36031
|
+
function isConsumerNode(node) {
|
|
36032
|
+
return node.producerNode !== undefined;
|
|
36033
|
+
}
|
|
36034
36034
|
|
|
36035
36035
|
/**
|
|
36036
36036
|
* Create a computed signal which derives a reactive value from an expression.
|
|
@@ -36417,13 +36417,13 @@ function logLazyLCPWarning(src) {
|
|
|
36417
36417
|
`changing the loading value of the LCP image to "eager", or by using the ` +
|
|
36418
36418
|
`NgOptimizedImage directive's prioritization utilities. For more ` +
|
|
36419
36419
|
`information about addressing or disabling this warning, see ` +
|
|
36420
|
-
`https://angular.
|
|
36420
|
+
`https://angular.dev/errors/NG0913`));
|
|
36421
36421
|
}
|
|
36422
36422
|
function logOversizedImageWarning(src) {
|
|
36423
36423
|
console.warn(formatRuntimeError(-913 /* RuntimeErrorCode.IMAGE_PERFORMANCE_WARNING */, `An image with src ${src} has intrinsic file dimensions much larger than its ` +
|
|
36424
36424
|
`rendered size. This can negatively impact application loading performance. ` +
|
|
36425
36425
|
`For more information about addressing or disabling this warning, see ` +
|
|
36426
|
-
`https://angular.
|
|
36426
|
+
`https://angular.dev/errors/NG0913`));
|
|
36427
36427
|
}
|
|
36428
36428
|
|
|
36429
36429
|
/**
|
|
@@ -36446,7 +36446,11 @@ function internalCreateApplication(config) {
|
|
|
36446
36446
|
const platformInjector = createOrReusePlatformInjector(platformProviders);
|
|
36447
36447
|
// Create root application injector based on a set of providers configured at the platform
|
|
36448
36448
|
// bootstrap level as well as providers passed to the bootstrap call by a user.
|
|
36449
|
-
const allAppProviders = [
|
|
36449
|
+
const allAppProviders = [
|
|
36450
|
+
internalProvideZoneChangeDetection({}),
|
|
36451
|
+
{ provide: ChangeDetectionScheduler, useExisting: ChangeDetectionSchedulerImpl },
|
|
36452
|
+
...(appProviders || []),
|
|
36453
|
+
];
|
|
36450
36454
|
const adapter = new EnvironmentNgModuleRefAdapter({
|
|
36451
36455
|
providers: allAppProviders,
|
|
36452
36456
|
parent: platformInjector,
|
|
@@ -36546,18 +36550,70 @@ function getDeferBlocks(lView, deferBlocks) {
|
|
|
36546
36550
|
}
|
|
36547
36551
|
}
|
|
36548
36552
|
|
|
36549
|
-
|
|
36550
|
-
|
|
36551
|
-
|
|
36552
|
-
|
|
36553
|
-
|
|
36553
|
+
// tslint:disable:no-duplicate-imports
|
|
36554
|
+
function invokeRegisteredListeners(event) {
|
|
36555
|
+
const handlerFns = event.currentTarget?.__jsaction_fns?.get(event.type);
|
|
36556
|
+
if (!handlerFns) {
|
|
36557
|
+
return;
|
|
36558
|
+
}
|
|
36559
|
+
for (const handler of handlerFns) {
|
|
36560
|
+
handler(event);
|
|
36561
|
+
}
|
|
36554
36562
|
}
|
|
36555
|
-
|
|
36563
|
+
function setJSActionAttribute(nativeElement, eventTypes) {
|
|
36564
|
+
if (!eventTypes.length) {
|
|
36565
|
+
return;
|
|
36566
|
+
}
|
|
36567
|
+
const parts = eventTypes.reduce((prev, curr) => prev + curr + ':;', '');
|
|
36568
|
+
const existingAttr = nativeElement.getAttribute(Attributes.JSACTION);
|
|
36569
|
+
// This is required to be a module accessor to appease security tests on setAttribute.
|
|
36570
|
+
nativeElement.setAttribute(Attributes.JSACTION, `${existingAttr ?? ''}${parts}`);
|
|
36571
|
+
}
|
|
36572
|
+
const sharedStashFunction = (rEl, eventType, listenerFn) => {
|
|
36573
|
+
const el = rEl;
|
|
36574
|
+
const eventListenerMap = el.__jsaction_fns ?? new Map();
|
|
36575
|
+
const eventListeners = eventListenerMap.get(eventType) ?? [];
|
|
36576
|
+
eventListeners.push(listenerFn);
|
|
36577
|
+
eventListenerMap.set(eventType, eventListeners);
|
|
36578
|
+
el.__jsaction_fns = eventListenerMap;
|
|
36579
|
+
};
|
|
36580
|
+
const removeListeners = (el) => {
|
|
36581
|
+
el.removeAttribute(Attributes.JSACTION);
|
|
36582
|
+
el.__jsaction_fns = undefined;
|
|
36583
|
+
};
|
|
36584
|
+
class GlobalEventDelegation {
|
|
36585
|
+
addEvent(el, eventName) {
|
|
36586
|
+
if (this.eventContract) {
|
|
36587
|
+
this.eventContract.addEvent(eventName);
|
|
36588
|
+
setJSActionAttribute(el, [eventName]);
|
|
36589
|
+
return true;
|
|
36590
|
+
}
|
|
36591
|
+
return false;
|
|
36592
|
+
}
|
|
36593
|
+
static { this.ɵfac = function GlobalEventDelegation_Factory(t) { return new (t || GlobalEventDelegation)(); }; }
|
|
36594
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac, providedIn: 'root' }); }
|
|
36595
|
+
}
|
|
36596
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(GlobalEventDelegation, [{
|
|
36597
|
+
type: Injectable,
|
|
36598
|
+
args: [{ providedIn: 'root' }]
|
|
36599
|
+
}], null, null); })();
|
|
36600
|
+
const initGlobalEventDelegation = (eventDelegation, injector) => {
|
|
36601
|
+
if (injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT)) {
|
|
36602
|
+
return;
|
|
36603
|
+
}
|
|
36604
|
+
eventDelegation.eventContract = new EventContract(new EventContractContainer(document.body));
|
|
36605
|
+
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36606
|
+
registerDispatcher(eventDelegation.eventContract, dispatcher);
|
|
36607
|
+
};
|
|
36608
|
+
|
|
36609
|
+
const CONTRACT_PROPERTY = 'ngContracts';
|
|
36556
36610
|
/**
|
|
36557
|
-
*
|
|
36558
|
-
* types (event names) and corresponding listeners.
|
|
36611
|
+
* A set of DOM elements with `jsaction` attributes.
|
|
36559
36612
|
*/
|
|
36560
|
-
const
|
|
36613
|
+
const jsactionSet = new Set();
|
|
36614
|
+
function isGlobalEventDelegationEnabled(injector) {
|
|
36615
|
+
return injector.get(IS_GLOBAL_EVENT_DELEGATION_ENABLED, false);
|
|
36616
|
+
}
|
|
36561
36617
|
/**
|
|
36562
36618
|
* Returns a set of providers required to setup support for event replay.
|
|
36563
36619
|
* Requires hydration to be enabled separately.
|
|
@@ -36571,20 +36627,13 @@ function withEventReplay() {
|
|
|
36571
36627
|
{
|
|
36572
36628
|
provide: ENVIRONMENT_INITIALIZER,
|
|
36573
36629
|
useValue: () => {
|
|
36574
|
-
|
|
36575
|
-
|
|
36576
|
-
|
|
36577
|
-
|
|
36578
|
-
|
|
36579
|
-
|
|
36580
|
-
|
|
36581
|
-
}
|
|
36582
|
-
const eventMap = jsactionMap.get(el);
|
|
36583
|
-
if (!eventMap.has(eventName)) {
|
|
36584
|
-
eventMap.set(eventName, []);
|
|
36585
|
-
}
|
|
36586
|
-
eventMap.get(eventName).push(listenerFn);
|
|
36587
|
-
}
|
|
36630
|
+
const injector = inject(Injector);
|
|
36631
|
+
if (isGlobalEventDelegationEnabled(injector)) {
|
|
36632
|
+
return;
|
|
36633
|
+
}
|
|
36634
|
+
setStashFn((rEl, eventName, listenerFn) => {
|
|
36635
|
+
sharedStashFunction(rEl, eventName, listenerFn);
|
|
36636
|
+
jsactionSet.add(rEl);
|
|
36588
36637
|
});
|
|
36589
36638
|
},
|
|
36590
36639
|
multi: true,
|
|
@@ -36600,35 +36649,15 @@ function withEventReplay() {
|
|
|
36600
36649
|
// of the application is completed. This timing is similar to the unclaimed
|
|
36601
36650
|
// dehydrated views cleanup timing.
|
|
36602
36651
|
whenStable(appRef).then(() => {
|
|
36603
|
-
|
|
36604
|
-
|
|
36605
|
-
// Note: globalThis[CONTRACT_PROPERTY] may be undefined in case Event Replay feature
|
|
36606
|
-
// is enabled, but there are no events configured in an application.
|
|
36607
|
-
const container = globalThis[CONTRACT_PROPERTY]?.[appId];
|
|
36608
|
-
const earlyJsactionData = getJsactionData(container);
|
|
36609
|
-
if (earlyJsactionData) {
|
|
36610
|
-
const eventContract = new EventContract(new EventContractContainer(earlyJsactionData.c));
|
|
36611
|
-
for (const et of earlyJsactionData.et) {
|
|
36612
|
-
eventContract.addEvent(et);
|
|
36613
|
-
}
|
|
36614
|
-
for (const et of earlyJsactionData.etc) {
|
|
36615
|
-
eventContract.addEvent(et);
|
|
36616
|
-
}
|
|
36617
|
-
eventContract.replayEarlyEvents(container);
|
|
36618
|
-
const dispatcher = new Dispatcher(() => { }, {
|
|
36619
|
-
eventReplayer: (queue) => {
|
|
36620
|
-
for (const event of queue) {
|
|
36621
|
-
handleEvent(event);
|
|
36622
|
-
}
|
|
36623
|
-
jsactionMap.clear();
|
|
36624
|
-
queue.length = 0;
|
|
36625
|
-
},
|
|
36626
|
-
});
|
|
36627
|
-
registerDispatcher(eventContract, dispatcher);
|
|
36628
|
-
for (const el of jsactionMap.keys()) {
|
|
36629
|
-
el.removeAttribute(JSACTION_ATTRIBUTE);
|
|
36630
|
-
}
|
|
36652
|
+
if (isGlobalEventDelegationEnabled(injector)) {
|
|
36653
|
+
return;
|
|
36631
36654
|
}
|
|
36655
|
+
const globalEventDelegation = injector.get(GlobalEventDelegation);
|
|
36656
|
+
initEventReplay(globalEventDelegation, injector);
|
|
36657
|
+
jsactionSet.forEach(removeListeners);
|
|
36658
|
+
// After hydration, we shouldn't need to do anymore work related to
|
|
36659
|
+
// event replay anymore.
|
|
36660
|
+
setStashFn(() => { });
|
|
36632
36661
|
});
|
|
36633
36662
|
};
|
|
36634
36663
|
}
|
|
@@ -36638,6 +36667,28 @@ function withEventReplay() {
|
|
|
36638
36667
|
},
|
|
36639
36668
|
];
|
|
36640
36669
|
}
|
|
36670
|
+
// TODO: Upstream this back into event-dispatch.
|
|
36671
|
+
function getJsactionData(container) {
|
|
36672
|
+
return container._ejsa;
|
|
36673
|
+
}
|
|
36674
|
+
const initEventReplay = (eventDelegation, injector) => {
|
|
36675
|
+
const appId = injector.get(APP_ID);
|
|
36676
|
+
// This is set in packages/platform-server/src/utils.ts
|
|
36677
|
+
// Note: globalThis[CONTRACT_PROPERTY] may be undefined in case Event Replay feature
|
|
36678
|
+
// is enabled, but there are no events configured in an application.
|
|
36679
|
+
const container = globalThis[CONTRACT_PROPERTY]?.[appId];
|
|
36680
|
+
const earlyJsactionData = getJsactionData(container);
|
|
36681
|
+
const eventContract = (eventDelegation.eventContract = new EventContract(new EventContractContainer(earlyJsactionData.c)));
|
|
36682
|
+
for (const et of earlyJsactionData.et) {
|
|
36683
|
+
eventContract.addEvent(et);
|
|
36684
|
+
}
|
|
36685
|
+
for (const et of earlyJsactionData.etc) {
|
|
36686
|
+
eventContract.addEvent(et);
|
|
36687
|
+
}
|
|
36688
|
+
eventContract.replayEarlyEvents(container);
|
|
36689
|
+
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36690
|
+
registerDispatcher(eventContract, dispatcher);
|
|
36691
|
+
};
|
|
36641
36692
|
/**
|
|
36642
36693
|
* Extracts information about all DOM events (added in a template) registered on elements in a give
|
|
36643
36694
|
* LView. Maps collected events to a corresponding DOM element (an element is used as a key).
|
|
@@ -36656,13 +36707,15 @@ function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
|
|
|
36656
36707
|
continue;
|
|
36657
36708
|
}
|
|
36658
36709
|
const name = firstParam;
|
|
36659
|
-
if (name
|
|
36660
|
-
name === 'mouseleave' ||
|
|
36661
|
-
name === 'pointerenter' ||
|
|
36662
|
-
name === 'pointerleave') {
|
|
36710
|
+
if (!isSupportedEvent(name)) {
|
|
36663
36711
|
continue;
|
|
36664
36712
|
}
|
|
36665
|
-
|
|
36713
|
+
if (isCaptureEvent(name)) {
|
|
36714
|
+
eventTypesToReplay.capture.add(name);
|
|
36715
|
+
}
|
|
36716
|
+
else {
|
|
36717
|
+
eventTypesToReplay.regular.add(name);
|
|
36718
|
+
}
|
|
36666
36719
|
const listenerElement = unwrapRNode(lView[secondParam]);
|
|
36667
36720
|
i++; // move the cursor to the next position (location of the listener idx)
|
|
36668
36721
|
const useCaptureOrIndx = tCleanup[i++];
|
|
@@ -36682,26 +36735,6 @@ function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
|
|
|
36682
36735
|
}
|
|
36683
36736
|
return events;
|
|
36684
36737
|
}
|
|
36685
|
-
function setJSActionAttribute(tNode, rNode, nativeElementToEvents) {
|
|
36686
|
-
if (tNode.type & 2 /* TNodeType.Element */) {
|
|
36687
|
-
const nativeElement = unwrapRNode(rNode);
|
|
36688
|
-
const events = nativeElementToEvents.get(nativeElement) ?? [];
|
|
36689
|
-
const parts = events.map((event) => `${event}:`);
|
|
36690
|
-
if (parts.length > 0) {
|
|
36691
|
-
nativeElement.setAttribute(JSACTION_ATTRIBUTE, parts.join(';'));
|
|
36692
|
-
}
|
|
36693
|
-
}
|
|
36694
|
-
}
|
|
36695
|
-
function handleEvent(event) {
|
|
36696
|
-
const nativeElement = event.getAction().element;
|
|
36697
|
-
const handlerFns = jsactionMap.get(nativeElement)?.get(event.getEventType());
|
|
36698
|
-
if (!handlerFns) {
|
|
36699
|
-
return;
|
|
36700
|
-
}
|
|
36701
|
-
for (const handler of handlerFns) {
|
|
36702
|
-
handler(event.getEvent());
|
|
36703
|
-
}
|
|
36704
|
-
}
|
|
36705
36738
|
|
|
36706
36739
|
/**
|
|
36707
36740
|
* A collection that tracks all serialized views (`ngh` DOM annotations)
|
|
@@ -36787,6 +36820,13 @@ function annotateLContainerForHydration(lContainer, context) {
|
|
|
36787
36820
|
const componentLView = unwrapLView(lContainer[HOST]);
|
|
36788
36821
|
// Serialize the root component itself.
|
|
36789
36822
|
const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context);
|
|
36823
|
+
if (componentLViewNghIndex === null) {
|
|
36824
|
+
// Component was not serialized (for example, if hydration was skipped by adding
|
|
36825
|
+
// the `ngSkipHydration` attribute or this component uses i18n blocks in the template,
|
|
36826
|
+
// but `withI18nSupport()` was not added), avoid annotating host element with the `ngh`
|
|
36827
|
+
// attribute.
|
|
36828
|
+
return;
|
|
36829
|
+
}
|
|
36790
36830
|
const hostElement = unwrapRNode(componentLView[HOST]);
|
|
36791
36831
|
// Serialize all views within this view container.
|
|
36792
36832
|
const rootLView = lContainer[PARENT];
|
|
@@ -36820,7 +36860,10 @@ function annotateForHydration(appRef, doc) {
|
|
|
36820
36860
|
const corruptedTextNodes = new Map();
|
|
36821
36861
|
const viewRefs = appRef._views;
|
|
36822
36862
|
const shouldReplayEvents = injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT);
|
|
36823
|
-
const eventTypesToReplay =
|
|
36863
|
+
const eventTypesToReplay = {
|
|
36864
|
+
regular: new Set(),
|
|
36865
|
+
capture: new Set(),
|
|
36866
|
+
};
|
|
36824
36867
|
for (const viewRef of viewRefs) {
|
|
36825
36868
|
const lNode = getLNodeForHydration(viewRef);
|
|
36826
36869
|
// An `lView` might be `null` if a `ViewRef` represents
|
|
@@ -36851,7 +36894,7 @@ function annotateForHydration(appRef, doc) {
|
|
|
36851
36894
|
const serializedViews = serializedViewCollection.getAll();
|
|
36852
36895
|
const transferState = injector.get(TransferState);
|
|
36853
36896
|
transferState.set(NGH_DATA_KEY, serializedViews);
|
|
36854
|
-
return eventTypesToReplay
|
|
36897
|
+
return eventTypesToReplay;
|
|
36855
36898
|
}
|
|
36856
36899
|
/**
|
|
36857
36900
|
* Serializes the lContainer data into a list of SerializedView objects,
|
|
@@ -36968,9 +37011,6 @@ function serializeLView(lView, context) {
|
|
|
36968
37011
|
for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {
|
|
36969
37012
|
const tNode = tView.data[i];
|
|
36970
37013
|
const noOffsetIndex = i - HEADER_OFFSET;
|
|
36971
|
-
if (nativeElementsToEventTypes) {
|
|
36972
|
-
setJSActionAttribute(tNode, lView[i], nativeElementsToEventTypes);
|
|
36973
|
-
}
|
|
36974
37014
|
// Attempt to serialize any i18n data for the given slot. We do this first, as i18n
|
|
36975
37015
|
// has its own process for serialization.
|
|
36976
37016
|
const i18nData = trySerializeI18nBlock(lView, i, context);
|
|
@@ -37005,6 +37045,14 @@ function serializeLView(lView, context) {
|
|
|
37005
37045
|
appendDisconnectedNodeIndex(ngh, tNode);
|
|
37006
37046
|
continue;
|
|
37007
37047
|
}
|
|
37048
|
+
// Attach `jsaction` attribute to elements that have registered listeners,
|
|
37049
|
+
// thus potentially having a need to do an event replay.
|
|
37050
|
+
if (nativeElementsToEventTypes && tNode.type & 2 /* TNodeType.Element */) {
|
|
37051
|
+
const nativeElement = unwrapRNode(lView[i]);
|
|
37052
|
+
if (nativeElementsToEventTypes.has(nativeElement)) {
|
|
37053
|
+
setJSActionAttribute(nativeElement, nativeElementsToEventTypes.get(nativeElement));
|
|
37054
|
+
}
|
|
37055
|
+
}
|
|
37008
37056
|
if (Array.isArray(tNode.projection)) {
|
|
37009
37057
|
for (const projectionHeadTNode of tNode.projection) {
|
|
37010
37058
|
// We may have `null`s in slots with no projected content.
|
|
@@ -37272,7 +37320,7 @@ function printHydrationStats(injector) {
|
|
|
37272
37320
|
const message = `Angular hydrated ${ngDevMode.hydratedComponents} component(s) ` +
|
|
37273
37321
|
`and ${ngDevMode.hydratedNodes} node(s), ` +
|
|
37274
37322
|
`${ngDevMode.componentsSkippedHydration} component(s) were skipped. ` +
|
|
37275
|
-
`Learn more at https://angular.
|
|
37323
|
+
`Learn more at https://angular.dev/guide/hydration.`;
|
|
37276
37324
|
// tslint:disable-next-line:no-console
|
|
37277
37325
|
console.log(message);
|
|
37278
37326
|
}
|
|
@@ -38015,5 +38063,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
38015
38063
|
* Generated bundle index. Do not edit.
|
|
38016
38064
|
*/
|
|
38017
38065
|
|
|
38018
|
-
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, 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 };
|
|
38066
|
+
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 };
|
|
38019
38067
|
//# sourceMappingURL=core.mjs.map
|