@angular/core 18.2.0-next.0 → 18.2.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/primitives/event-dispatch/contract_binary.mjs +3 -3
  2. package/esm2022/primitives/event-dispatch/index.mjs +6 -7
  3. package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +1 -1
  4. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +1 -1
  5. package/esm2022/primitives/event-dispatch/src/bootstrap_app_scoped.mjs +29 -0
  6. package/esm2022/primitives/event-dispatch/src/bootstrap_global.mjs +21 -0
  7. package/esm2022/primitives/event-dispatch/src/cache.mjs +10 -21
  8. package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +32 -21
  9. package/esm2022/primitives/event-dispatch/src/event.mjs +3 -3
  10. package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +1 -6
  11. package/esm2022/primitives/event-dispatch/src/event_type.mjs +19 -21
  12. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +6 -8
  13. package/esm2022/primitives/event-dispatch/src/property.mjs +1 -1
  14. package/esm2022/src/event_delegation_utils.mjs +10 -10
  15. package/esm2022/src/hydration/event_replay.mjs +17 -22
  16. package/esm2022/src/render3/after_render_hooks.mjs +7 -2
  17. package/esm2022/src/render3/component_ref.mjs +1 -1
  18. package/esm2022/src/version.mjs +1 -1
  19. package/esm2022/testing/src/logger.mjs +3 -3
  20. package/event-dispatch-contract.min.js +1 -1
  21. package/fesm2022/core.mjs +33 -33
  22. package/fesm2022/core.mjs.map +1 -1
  23. package/fesm2022/primitives/event-dispatch.mjs +452 -529
  24. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  25. package/fesm2022/primitives/signals.mjs +1 -1
  26. package/fesm2022/rxjs-interop.mjs +1 -1
  27. package/fesm2022/testing.mjs +1 -1
  28. package/index.d.ts +4 -4
  29. package/package.json +1 -1
  30. package/primitives/event-dispatch/index.d.ts +23 -37
  31. package/primitives/signals/index.d.ts +1 -1
  32. package/rxjs-interop/index.d.ts +1 -1
  33. package/schematics/migrations/invalid-two-way-bindings/bundle.js +40 -31
  34. package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +2 -2
  35. package/schematics/ng-generate/control-flow-migration/bundle.js +47 -31
  36. package/schematics/ng-generate/control-flow-migration/bundle.js.map +2 -2
  37. package/schematics/ng-generate/standalone-migration/bundle.js +611 -65
  38. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  39. package/testing/index.d.ts +1 -1
  40. package/esm2022/primitives/event-dispatch/src/register_events.mjs +0 -31
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.0-next.0
2
+ * @license Angular v18.2.0-next.1
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -7,7 +7,7 @@
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 { BehaviorSubject, Subject, Subscription } from 'rxjs';
9
9
  import { map, first } from 'rxjs/operators';
10
- import { Attribute as Attribute$1, isSupportedEvent, registerEventType, unregisterEventType, EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isCaptureEvent } from '@angular/core/primitives/event-dispatch';
10
+ import { Attribute as Attribute$1, isEarlyEventType, getActionCache, EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isCaptureEventType } from '@angular/core/primitives/event-dispatch';
11
11
 
12
12
  /**
13
13
  * Base URL for the error details page.
@@ -16381,19 +16381,24 @@ function afterRenderImpl(callbackOrSpec, injector, once, phase) {
16381
16381
  unregisterFn();
16382
16382
  };
16383
16383
  const unregisterFn = injector.get(DestroyRef).onDestroy(destroy);
16384
+ let callbacksLeftToRun = 0;
16384
16385
  const registerCallback = (phase, phaseCallback) => {
16385
16386
  if (!phaseCallback) {
16386
16387
  return;
16387
16388
  }
16388
16389
  const callback = once
16389
16390
  ? (...args) => {
16390
- destroy();
16391
+ callbacksLeftToRun--;
16392
+ if (callbacksLeftToRun < 1) {
16393
+ destroy();
16394
+ }
16391
16395
  phaseCallback(...args);
16392
16396
  }
16393
16397
  : phaseCallback;
16394
16398
  const instance = runInInjectionContext(injector, () => new AfterRenderCallback(phase, pipelinedArgs, callback));
16395
16399
  callbackHandler.register(instance);
16396
16400
  instances.push(instance);
16401
+ callbacksLeftToRun++;
16397
16402
  };
16398
16403
  registerCallback(AfterRenderPhase.EarlyRead, spec.earlyRead);
16399
16404
  registerCallback(AfterRenderPhase.Write, spec.write);
@@ -17200,7 +17205,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
17200
17205
  function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
17201
17206
  if (rootSelectorOrNode) {
17202
17207
  // The placeholder will be replaced with the actual version at build time.
17203
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.2.0-next.0']);
17208
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.2.0-next.1']);
17204
17209
  }
17205
17210
  else {
17206
17211
  // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
@@ -30998,7 +31003,7 @@ class Version {
30998
31003
  /**
30999
31004
  * @publicApi
31000
31005
  */
31001
- const VERSION = new Version('18.2.0-next.0');
31006
+ const VERSION = new Version('18.2.0-next.1');
31002
31007
 
31003
31008
  /*
31004
31009
  * This file exists to support compilation of @angular/core in Ivy mode.
@@ -36814,16 +36819,16 @@ class GlobalEventDelegation {
36814
36819
  ngOnDestroy() {
36815
36820
  this.eventContractDetails.instance?.cleanUp();
36816
36821
  }
36817
- supports(eventName) {
36818
- return isSupportedEvent(eventName);
36822
+ supports(eventType) {
36823
+ return isEarlyEventType(eventType);
36819
36824
  }
36820
- addEventListener(element, eventName, handler) {
36821
- this.eventContractDetails.instance.addEvent(eventName);
36822
- registerEventType(element, eventName, '');
36823
- return () => this.removeEventListener(element, eventName, handler);
36825
+ addEventListener(element, eventType, handler) {
36826
+ this.eventContractDetails.instance.addEvent(eventType);
36827
+ getActionCache(element)[eventType] = '';
36828
+ return () => this.removeEventListener(element, eventType, handler);
36824
36829
  }
36825
- removeEventListener(element, eventName, callback) {
36826
- unregisterEventType(element, eventName);
36830
+ removeEventListener(element, eventType, callback) {
36831
+ getActionCache(element)[eventType] = undefined;
36827
36832
  }
36828
36833
  static { this.ɵfac = function GlobalEventDelegation_Factory(t) { return new (t || GlobalEventDelegation)(); }; }
36829
36834
  static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac }); }
@@ -36841,7 +36846,6 @@ const initGlobalEventDelegation = (eventContractDetails, injector) => {
36841
36846
  registerDispatcher(eventContract, dispatcher);
36842
36847
  };
36843
36848
 
36844
- const CONTRACT_PROPERTY = 'ngContracts';
36845
36849
  /**
36846
36850
  * A set of DOM elements with `jsaction` attributes.
36847
36851
  */
@@ -36871,7 +36875,7 @@ function withEventReplay() {
36871
36875
  // is enabled, but there are no events configured in this application, in which case
36872
36876
  // we don't activate this feature, since there are no events to replay.
36873
36877
  const appId = inject(APP_ID);
36874
- isEnabled = !!globalThis[CONTRACT_PROPERTY]?.[appId];
36878
+ isEnabled = !!window._ejsas?.[appId];
36875
36879
  }
36876
36880
  if (isEnabled) {
36877
36881
  performanceMarkFeature('NgEventReplay');
@@ -36921,15 +36925,10 @@ function withEventReplay() {
36921
36925
  },
36922
36926
  ];
36923
36927
  }
36924
- // TODO: Upstream this back into event-dispatch.
36925
- function getJsactionData(container) {
36926
- return container._ejsa;
36927
- }
36928
36928
  const initEventReplay = (eventDelegation, injector) => {
36929
36929
  const appId = injector.get(APP_ID);
36930
36930
  // This is set in packages/platform-server/src/utils.ts
36931
- const container = globalThis[CONTRACT_PROPERTY]?.[appId];
36932
- const earlyJsactionData = getJsactionData(container);
36931
+ const earlyJsactionData = window._ejsas[appId];
36933
36932
  const eventContract = (eventDelegation.instance = new EventContract(new EventContractContainer(earlyJsactionData.c),
36934
36933
  /* useActionResolver= */ false));
36935
36934
  for (const et of earlyJsactionData.et) {
@@ -36938,7 +36937,8 @@ const initEventReplay = (eventDelegation, injector) => {
36938
36937
  for (const et of earlyJsactionData.etc) {
36939
36938
  eventContract.addEvent(et);
36940
36939
  }
36941
- eventContract.replayEarlyEvents(container);
36940
+ eventContract.replayEarlyEvents(earlyJsactionData);
36941
+ window._ejsas[appId] = undefined;
36942
36942
  const dispatcher = new EventDispatcher(invokeRegisteredListeners);
36943
36943
  registerDispatcher(eventContract, dispatcher);
36944
36944
  };
@@ -36947,11 +36947,11 @@ const initEventReplay = (eventDelegation, injector) => {
36947
36947
  * LView. Maps collected events to a corresponding DOM element (an element is used as a key).
36948
36948
  */
36949
36949
  function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
36950
- const events = new Map();
36950
+ const domEventsInfo = new Map();
36951
36951
  const lCleanup = lView[CLEANUP];
36952
36952
  const tCleanup = tView.cleanup;
36953
36953
  if (!tCleanup || !lCleanup) {
36954
- return events;
36954
+ return domEventsInfo;
36955
36955
  }
36956
36956
  for (let i = 0; i < tCleanup.length;) {
36957
36957
  const firstParam = tCleanup[i++];
@@ -36959,15 +36959,15 @@ function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
36959
36959
  if (typeof firstParam !== 'string') {
36960
36960
  continue;
36961
36961
  }
36962
- const name = firstParam;
36963
- if (!isSupportedEvent(name)) {
36962
+ const eventType = firstParam;
36963
+ if (!isEarlyEventType(eventType)) {
36964
36964
  continue;
36965
36965
  }
36966
- if (isCaptureEvent(name)) {
36967
- eventTypesToReplay.capture.add(name);
36966
+ if (isCaptureEventType(eventType)) {
36967
+ eventTypesToReplay.capture.add(eventType);
36968
36968
  }
36969
36969
  else {
36970
- eventTypesToReplay.regular.add(name);
36970
+ eventTypesToReplay.regular.add(eventType);
36971
36971
  }
36972
36972
  const listenerElement = unwrapRNode(lView[secondParam]);
36973
36973
  i++; // move the cursor to the next position (location of the listener idx)
@@ -36979,14 +36979,14 @@ function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
36979
36979
  if (!isDomEvent) {
36980
36980
  continue;
36981
36981
  }
36982
- if (!events.has(listenerElement)) {
36983
- events.set(listenerElement, [name]);
36982
+ if (!domEventsInfo.has(listenerElement)) {
36983
+ domEventsInfo.set(listenerElement, [eventType]);
36984
36984
  }
36985
36985
  else {
36986
- events.get(listenerElement).push(name);
36986
+ domEventsInfo.get(listenerElement).push(eventType);
36987
36987
  }
36988
36988
  }
36989
- return events;
36989
+ return domEventsInfo;
36990
36990
  }
36991
36991
 
36992
36992
  /**