@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.
Files changed (51) hide show
  1. package/esm2022/primitives/event-dispatch/index.mjs +4 -2
  2. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +51 -35
  3. package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +8 -6
  4. package/esm2022/primitives/event-dispatch/src/event.mjs +3 -7
  5. package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +128 -0
  6. package/esm2022/primitives/event-dispatch/src/event_type.mjs +85 -1
  7. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +5 -8
  8. package/esm2022/primitives/signals/src/graph.mjs +6 -5
  9. package/esm2022/src/application/create_application.mjs +8 -3
  10. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +5 -14
  11. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  12. package/esm2022/src/core_private_export.mjs +3 -2
  13. package/esm2022/src/error_details_base_url.mjs +2 -2
  14. package/esm2022/src/errors.mjs +1 -1
  15. package/esm2022/src/event_delegation_utils.mjs +68 -0
  16. package/esm2022/src/hydration/annotate.mjs +24 -8
  17. package/esm2022/src/hydration/api.mjs +2 -2
  18. package/esm2022/src/hydration/event_replay.mjs +55 -81
  19. package/esm2022/src/hydration/tokens.mjs +6 -1
  20. package/esm2022/src/image_performance_warning.mjs +3 -3
  21. package/esm2022/src/platform/platform_ref.mjs +10 -3
  22. package/esm2022/src/render3/component_ref.mjs +1 -1
  23. package/esm2022/src/render3/instructions/listener.mjs +8 -11
  24. package/esm2022/src/render3/instructions/shared.mjs +3 -3
  25. package/esm2022/src/version.mjs +1 -1
  26. package/esm2022/testing/src/logger.mjs +3 -3
  27. package/esm2022/testing/src/test_bed_compiler.mjs +7 -3
  28. package/fesm2022/core.mjs +340 -292
  29. package/fesm2022/core.mjs.map +1 -1
  30. package/fesm2022/primitives/event-dispatch.mjs +1402 -1189
  31. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  32. package/fesm2022/primitives/signals.mjs +6 -5
  33. package/fesm2022/primitives/signals.mjs.map +1 -1
  34. package/fesm2022/rxjs-interop.mjs +1 -1
  35. package/fesm2022/testing.mjs +7 -3
  36. package/fesm2022/testing.mjs.map +1 -1
  37. package/index.d.ts +45 -3
  38. package/package.json +2 -2
  39. package/primitives/event-dispatch/index.d.ts +109 -116
  40. package/primitives/signals/index.d.ts +1 -1
  41. package/rxjs-interop/index.d.ts +1 -1
  42. package/schematics/migrations/http-providers/bundle.js +25 -17
  43. package/schematics/migrations/http-providers/bundle.js.map +2 -2
  44. package/schematics/migrations/invalid-two-way-bindings/bundle.js +337 -166
  45. package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
  46. package/schematics/ng-generate/control-flow-migration/bundle.js +361 -183
  47. package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
  48. package/schematics/ng-generate/standalone-migration/bundle.js +812 -497
  49. package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
  50. package/testing/index.d.ts +1 -1
  51. 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.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 { EventContract, EventContractContainer, Dispatcher, registerDispatcher } from '@angular/core/primitives/event-dispatch';
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.io/errors';
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 view[CLEANUP] || (view[CLEANUP] = []);
12548
+ return (view[CLEANUP] ??= []);
12543
12549
  }
12544
12550
  function getOrCreateTViewCleanup(tView) {
12545
- return tView.cleanup || (tView.cleanup = []);
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.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 disableEventReplayFn = (el, eventName, listenerFn) => { };
26388
- function setDisableEventReplayImpl(fn) {
26389
- disableEventReplayFn = fn;
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, false /** preventDefault */);
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, false /** preventDefault */);
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, wrapWithPreventDefault) {
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.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
- /** Flag to enable/disable the zoneless scheduler as default provider with zone scheduling. */
32817
- const alwaysProvideZonelessScheduler = true;
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 applcations using the Angular CLI, Zone.js is typically included in the "polyfills" section of the angular.json file.`);
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, internalProvideZoneChangeDetection({ ngZoneFactory: () => ngZone, ignoreChangesOutsideZone }));
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
- assertConsumerNode(node);
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.io/errors/NG0913`));
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.io/errors/NG0913`));
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 = [internalProvideZoneChangeDetection({}), ...(appProviders || [])];
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
- const EVENT_REPLAY_ENABLED_DEFAULT = false;
36550
- const CONTRACT_PROPERTY = 'ngContracts';
36551
- // TODO: Upstream this back into event-dispatch.
36552
- function getJsactionData(container) {
36553
- return container._ejsa;
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
- const JSACTION_ATTRIBUTE = 'jsaction';
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
- * Associates a DOM element with `jsaction` attribute to a map that contains info about all event
36558
- * types (event names) and corresponding listeners.
36611
+ * A set of DOM elements with `jsaction` attributes.
36559
36612
  */
36560
- const jsactionMap = new Map();
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
- setDisableEventReplayImpl((rEl, eventName, listenerFn) => {
36575
- if (rEl.hasAttribute(JSACTION_ATTRIBUTE)) {
36576
- const el = rEl;
36577
- // We don't immediately remove the attribute here because
36578
- // we need it for replay that happens after hydration.
36579
- if (!jsactionMap.has(el)) {
36580
- jsactionMap.set(el, new Map());
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
- const appId = injector.get(APP_ID);
36604
- // This is set in packages/platform-server/src/utils.ts
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 === 'mouseenter' ||
36660
- name === 'mouseleave' ||
36661
- name === 'pointerenter' ||
36662
- name === 'pointerleave') {
36710
+ if (!isSupportedEvent(name)) {
36663
36711
  continue;
36664
36712
  }
36665
- eventTypesToReplay.add(name);
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 = new Set();
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.size > 0 ? eventTypesToReplay : undefined;
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.io/guide/hydration.`;
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