@angular/core 20.2.0-next.6 → 20.2.0-rc.0

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 (57) hide show
  1. package/api.d.d.ts +1 -1
  2. package/chrome_dev_tools_performance.d.d.ts +1 -1
  3. package/discovery.d.d.ts +1 -1
  4. package/event_dispatcher.d.d.ts +1 -1
  5. package/fesm2022/attribute.mjs +1 -1
  6. package/fesm2022/core.mjs +12 -5
  7. package/fesm2022/core.mjs.map +1 -1
  8. package/fesm2022/debug_node.mjs +29 -5
  9. package/fesm2022/debug_node.mjs.map +1 -1
  10. package/fesm2022/not_found.mjs +1 -1
  11. package/fesm2022/primitives/di.mjs +1 -1
  12. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  13. package/fesm2022/primitives/signals.mjs +1 -1
  14. package/fesm2022/resource.mjs +1 -1
  15. package/fesm2022/root_effect_scheduler.mjs +1 -1
  16. package/fesm2022/rxjs-interop.mjs +1 -1
  17. package/fesm2022/signal.mjs +1 -1
  18. package/fesm2022/testing.mjs +1 -1
  19. package/fesm2022/untracked.mjs +1 -1
  20. package/fesm2022/weak_ref.mjs +1 -1
  21. package/graph.d.d.ts +1 -1
  22. package/index.d.ts +1 -1
  23. package/package.json +2 -2
  24. package/primitives/di/index.d.ts +1 -1
  25. package/primitives/event-dispatch/index.d.ts +1 -1
  26. package/primitives/signals/index.d.ts +1 -1
  27. package/rxjs-interop/index.d.ts +1 -1
  28. package/schematics/bundles/{apply_import_manager-DDzBE76c.cjs → apply_import_manager-BDpMzDvN.cjs} +3 -3
  29. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  30. package/schematics/bundles/{compiler_host-PbDBLXD_.cjs → compiler_host-GNtX_RDe.cjs} +2 -2
  31. package/schematics/bundles/control-flow-migration.cjs +3 -3
  32. package/schematics/bundles/document-core.cjs +5 -5
  33. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  34. package/schematics/bundles/{index-bNLbdiQu.cjs → index-BrQFpkJq.cjs} +12 -12
  35. package/schematics/bundles/{index-HnBPwNoT.cjs → index-czXpbmcu.cjs} +4 -4
  36. package/schematics/bundles/inject-flags.cjs +5 -5
  37. package/schematics/bundles/inject-migration.cjs +3 -3
  38. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  39. package/schematics/bundles/{migrate_ts_type_references-DvNm2DJd.cjs → migrate_ts_type_references-DLVVfu8Y.cjs} +5 -5
  40. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  41. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  42. package/schematics/bundles/output-migration.cjs +6 -6
  43. package/schematics/bundles/{project_paths-WYk3KB4n.cjs → project_paths-pSh0WpBI.cjs} +3 -3
  44. package/schematics/bundles/{project_tsconfig_paths-iei5hRhJ.cjs → project_tsconfig_paths-Cy7U7awR.cjs} +35 -23
  45. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  46. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  47. package/schematics/bundles/router-current-navigation.cjs +4 -4
  48. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  49. package/schematics/bundles/signal-input-migration.cjs +7 -7
  50. package/schematics/bundles/signal-queries-migration.cjs +7 -7
  51. package/schematics/bundles/signals.cjs +7 -7
  52. package/schematics/bundles/standalone-migration.cjs +4 -4
  53. package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
  54. package/schematics/bundles/test-bed-get.cjs +4 -4
  55. package/signal.d.d.ts +1 -1
  56. package/testing/index.d.ts +1 -1
  57. package/weak_ref.d.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-next.6
2
+ * @license Angular v20.2.0-rc.0
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -13523,7 +13523,7 @@ class ComponentFactory extends ComponentFactory$1 {
13523
13523
  }
13524
13524
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
13525
13525
  const tAttributes = rootSelectorOrNode
13526
- ? ['ng-version', '20.2.0-next.6']
13526
+ ? ['ng-version', '20.2.0-rc.0']
13527
13527
  : // Extract attributes and classes from the first selector only to match VE behavior.
13528
13528
  extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
13529
13529
  let creationBindings = null;
@@ -21962,6 +21962,10 @@ const noOpAnimationComplete = () => { };
21962
21962
  // we remove all of the classes in the case of animation composition via host bindings.
21963
21963
  const enterClassMap = new WeakMap();
21964
21964
  const longestAnimations = new WeakMap();
21965
+ // Tracks nodes that are animating away for the duration of the animation. This is
21966
+ // used to prevent duplicate nodes from showing up when nodes have been toggled quickly
21967
+ // from an `@if` or `@for`.
21968
+ const leavingNodes = new WeakMap();
21965
21969
  /**
21966
21970
  * Instruction to handle the `animate.enter` behavior for class bindings.
21967
21971
  *
@@ -22012,6 +22016,14 @@ function ɵɵanimateEnter(value) {
22012
22016
  cleanupFns.push(renderer.listen(nativeElement, 'animationstart', handleAnimationStart));
22013
22017
  cleanupFns.push(renderer.listen(nativeElement, 'transitionstart', handleAnimationStart));
22014
22018
  });
22019
+ // In the case that we have an existing node that's animating away, like when
22020
+ // an `@if` toggles quickly or `@for` adds and removes elements quickly, we
22021
+ // need to end the animation for the former node and remove it right away to
22022
+ // prevent duplicate nodes showing up.
22023
+ leavingNodes
22024
+ .get(tNode)
22025
+ ?.pop()
22026
+ ?.dispatchEvent(new CustomEvent('animationend', { detail: { cancel: true } }));
22015
22027
  trackEnterClasses(nativeElement, activeClasses, cleanupFns);
22016
22028
  for (const klass of activeClasses) {
22017
22029
  renderer.addClass(nativeElement, klass);
@@ -22099,7 +22111,7 @@ function ɵɵanimateLeave(value) {
22099
22111
  // begins.
22100
22112
  const animate = (el, value, resolvers) => {
22101
22113
  return (removalFn) => {
22102
- animateLeaveClassRunner(el, getClassList(value, resolvers), removalFn, renderer, animationsDisabled, ngZone);
22114
+ animateLeaveClassRunner(el, tNode, getClassList(value, resolvers), removalFn, renderer, animationsDisabled, ngZone);
22103
22115
  };
22104
22116
  };
22105
22117
  // Ensure cleanup if the LView is destroyed before the animation runs.
@@ -22273,7 +22285,7 @@ function assertAnimationTypes(value, instruction) {
22273
22285
  * This function actually adds the classes that animate element that's leaving the DOM.
22274
22286
  * Once it finishes, it calls the remove function that was provided by the DOM renderer.
22275
22287
  */
22276
- function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animationsDisabled, ngZone) {
22288
+ function animateLeaveClassRunner(el, tNode, classList, finalRemoveFn, renderer, animationsDisabled, ngZone) {
22277
22289
  if (animationsDisabled) {
22278
22290
  longestAnimations.delete(el);
22279
22291
  finalRemoveFn();
@@ -22283,13 +22295,16 @@ function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animati
22283
22295
  determineLongestAnimation(event, el, longestAnimations, areAnimationSupported);
22284
22296
  };
22285
22297
  const handleOutAnimationEnd = (event) => {
22286
- if (isLongestAnimation(event, el)) {
22298
+ if (event instanceof CustomEvent || isLongestAnimation(event, el)) {
22287
22299
  // Now that we've found the longest animation, there's no need
22288
22300
  // to keep bubbling up this event as it's not going to apply to
22289
22301
  // other elements further up. We don't want it to inadvertently
22290
22302
  // affect any other animations on the page.
22291
22303
  event.stopImmediatePropagation();
22292
22304
  longestAnimations.delete(el);
22305
+ if (leavingNodes.get(tNode)?.length === 0) {
22306
+ leavingNodes.delete(tNode);
22307
+ }
22293
22308
  finalRemoveFn();
22294
22309
  }
22295
22310
  };
@@ -22300,6 +22315,15 @@ function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animati
22300
22315
  renderer.listen(el, 'animationend', handleOutAnimationEnd);
22301
22316
  renderer.listen(el, 'transitionend', handleOutAnimationEnd);
22302
22317
  });
22318
+ // We need to track this tNode's element just to be sure we don't add
22319
+ // a new RNode for this TNode while this one is still animating away.
22320
+ // once the animation is complete, we remove this reference.
22321
+ if (leavingNodes.has(tNode)) {
22322
+ leavingNodes.get(tNode)?.push(el);
22323
+ }
22324
+ else {
22325
+ leavingNodes.set(tNode, [el]);
22326
+ }
22303
22327
  for (const item of classList) {
22304
22328
  renderer.addClass(el, item);
22305
22329
  }