@angular/core 20.2.0-next.3 → 20.2.0-next.4

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 (69) 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 +7 -1
  4. package/event_dispatcher.d.d.ts +1 -1
  5. package/fesm2022/attribute.mjs +1 -1
  6. package/fesm2022/attribute.mjs.map +1 -1
  7. package/fesm2022/core.mjs +34 -9
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/debug_node.mjs +223 -95
  10. package/fesm2022/debug_node.mjs.map +1 -1
  11. package/fesm2022/not_found.mjs +1 -1
  12. package/fesm2022/not_found.mjs.map +1 -1
  13. package/fesm2022/primitives/di.mjs +1 -1
  14. package/fesm2022/primitives/di.mjs.map +1 -1
  15. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  16. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  17. package/fesm2022/primitives/signals.mjs +1 -1
  18. package/fesm2022/primitives/signals.mjs.map +1 -1
  19. package/fesm2022/resource.mjs +1 -1
  20. package/fesm2022/resource.mjs.map +1 -1
  21. package/fesm2022/root_effect_scheduler.mjs +1 -1
  22. package/fesm2022/root_effect_scheduler.mjs.map +1 -1
  23. package/fesm2022/rxjs-interop.mjs +1 -1
  24. package/fesm2022/rxjs-interop.mjs.map +1 -1
  25. package/fesm2022/signal.mjs +1 -1
  26. package/fesm2022/signal.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +1 -1
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/fesm2022/untracked.mjs +1 -1
  30. package/fesm2022/untracked.mjs.map +1 -1
  31. package/fesm2022/weak_ref.mjs +1 -1
  32. package/fesm2022/weak_ref.mjs.map +1 -1
  33. package/graph.d.d.ts +1 -1
  34. package/index.d.ts +21 -7
  35. package/package.json +2 -2
  36. package/primitives/di/index.d.ts +1 -1
  37. package/primitives/event-dispatch/index.d.ts +1 -1
  38. package/primitives/signals/index.d.ts +1 -1
  39. package/rxjs-interop/index.d.ts +1 -1
  40. package/schematics/bundles/{apply_import_manager-C9H5B66Q.cjs → apply_import_manager-Doo9rveC.cjs} +4 -4
  41. package/schematics/bundles/cleanup-unused-imports.cjs +7 -8
  42. package/schematics/bundles/{compiler_host-DTywrGR6.cjs → compiler_host-Dtf8fsIr.cjs} +3 -3
  43. package/schematics/bundles/control-flow-migration.cjs +18 -19
  44. package/schematics/bundles/document-core.cjs +6 -7
  45. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  46. package/schematics/bundles/{index-DvIl8s8s.cjs → index-B10puRUY.cjs} +49 -49
  47. package/schematics/bundles/{index-DWQ8GMRM.cjs → index-DHoQSprx.cjs} +1261 -1253
  48. package/schematics/bundles/inject-flags.cjs +6 -7
  49. package/schematics/bundles/inject-migration.cjs +6 -7
  50. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  51. package/schematics/bundles/{migrate_ts_type_references-BFb3oiAk.cjs → migrate_ts_type_references-Cr2742bs.cjs} +14 -14
  52. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  53. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  54. package/schematics/bundles/output-migration.cjs +20 -21
  55. package/schematics/bundles/{project_paths-Cuim0I7i.cjs → project_paths-CrqHneU0.cjs} +16 -17
  56. package/schematics/bundles/{checker-DBomdQHo.cjs → project_tsconfig_paths-BGhHq5-d.cjs} +139 -24
  57. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  58. package/schematics/bundles/route-lazy-loading.cjs +6 -7
  59. package/schematics/bundles/self-closing-tags-migration.cjs +10 -11
  60. package/schematics/bundles/signal-input-migration.cjs +21 -22
  61. package/schematics/bundles/signal-queries-migration.cjs +31 -32
  62. package/schematics/bundles/signals.cjs +8 -9
  63. package/schematics/bundles/standalone-migration.cjs +10 -11
  64. package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
  65. package/schematics/bundles/test-bed-get.cjs +4 -5
  66. package/signal.d.d.ts +1 -1
  67. package/testing/index.d.ts +1 -1
  68. package/weak_ref.d.d.ts +1 -1
  69. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +0 -90
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-next.3
2
+ * @license Angular v20.2.0-next.4
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -3811,7 +3811,7 @@ const DEFER_HYDRATE_TRIGGERS = 't';
3811
3811
  * Internal token that specifies whether DOM reuse logic
3812
3812
  * during hydration is enabled.
3813
3813
  */
3814
- const IS_HYDRATION_DOM_REUSE_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_HYDRATION_DOM_REUSE_ENABLED' : '');
3814
+ const IS_HYDRATION_DOM_REUSE_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'IS_HYDRATION_DOM_REUSE_ENABLED' : '');
3815
3815
  // By default (in client rendering mode), we remove all the contents
3816
3816
  // of the host element and render an application after that.
3817
3817
  const PRESERVE_HOST_CONTENT_DEFAULT = false;
@@ -3819,7 +3819,7 @@ const PRESERVE_HOST_CONTENT_DEFAULT = false;
3819
3819
  * Internal token that indicates whether host element content should be
3820
3820
  * retained during the bootstrap.
3821
3821
  */
3822
- const PRESERVE_HOST_CONTENT = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'PRESERVE_HOST_CONTENT' : '', {
3822
+ const PRESERVE_HOST_CONTENT = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'PRESERVE_HOST_CONTENT' : '', {
3823
3823
  providedIn: 'root',
3824
3824
  factory: () => PRESERVE_HOST_CONTENT_DEFAULT,
3825
3825
  });
@@ -3827,18 +3827,18 @@ const PRESERVE_HOST_CONTENT = new InjectionToken(typeof ngDevMode === 'undefined
3827
3827
  * Internal token that indicates whether hydration support for i18n
3828
3828
  * is enabled.
3829
3829
  */
3830
- const IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_I18N_HYDRATION_ENABLED' : '');
3830
+ const IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'IS_I18N_HYDRATION_ENABLED' : '');
3831
3831
  /**
3832
3832
  * Internal token that indicates whether event replay support for SSR
3833
3833
  * is enabled.
3834
3834
  */
3835
- const IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_EVENT_REPLAY_ENABLED' : '');
3835
+ const IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'IS_EVENT_REPLAY_ENABLED' : '');
3836
3836
  const EVENT_REPLAY_ENABLED_DEFAULT = false;
3837
3837
  /**
3838
3838
  * Internal token that indicates whether incremental hydration support
3839
3839
  * is enabled.
3840
3840
  */
3841
- const IS_INCREMENTAL_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_INCREMENTAL_HYDRATION_ENABLED' : '');
3841
+ const IS_INCREMENTAL_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'IS_INCREMENTAL_HYDRATION_ENABLED' : '');
3842
3842
  /**
3843
3843
  * A map of DOM elements with `jsaction` attributes grouped by action names.
3844
3844
  */
@@ -3846,6 +3846,10 @@ const JSACTION_BLOCK_ELEMENT_MAP = new InjectionToken(ngDevMode ? 'JSACTION_BLOC
3846
3846
  providedIn: 'root',
3847
3847
  factory: () => new Map(),
3848
3848
  });
3849
+ /**
3850
+ * Internal token that indicates whether the initial navigation is blocking in the application.
3851
+ */
3852
+ const IS_ENABLED_BLOCKING_INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'IS_ENABLED_BLOCKING_INITIAL_NAVIGATION' : '');
3849
3853
 
3850
3854
  /*!
3851
3855
  * @license
@@ -13511,7 +13515,7 @@ class ComponentFactory extends ComponentFactory$1 {
13511
13515
  }
13512
13516
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
13513
13517
  const tAttributes = rootSelectorOrNode
13514
- ? ['ng-version', '20.2.0-next.3']
13518
+ ? ['ng-version', '20.2.0-next.4']
13515
13519
  : // Extract attributes and classes from the first selector only to match VE behavior.
13516
13520
  extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
13517
13521
  let creationBindings = null;
@@ -14654,7 +14658,7 @@ function resolveComponentResources(resourceResolver) {
14654
14658
  let promise = urlMap.get(url);
14655
14659
  if (!promise) {
14656
14660
  const resp = resourceResolver(url);
14657
- urlMap.set(url, (promise = resp.then(unwrapResponse)));
14661
+ urlMap.set(url, (promise = resp.then((res) => unwrapResponse(url, res))));
14658
14662
  }
14659
14663
  return promise;
14660
14664
  }
@@ -14727,8 +14731,14 @@ function restoreComponentResolutionQueue(queue) {
14727
14731
  function isComponentResourceResolutionQueueEmpty() {
14728
14732
  return componentResourceResolutionQueue.size === 0;
14729
14733
  }
14730
- function unwrapResponse(response) {
14731
- return typeof response == 'string' ? response : response.text();
14734
+ function unwrapResponse(url, response) {
14735
+ if (typeof response === 'string') {
14736
+ return response;
14737
+ }
14738
+ if (response.status !== undefined && response.status !== 200) {
14739
+ return Promise.reject(new RuntimeError(918 /* RuntimeErrorCode.EXTERNAL_RESOURCE_LOADING_FAILED */, ngDevMode && `Could not load resource: ${url}. Response status: ${response.status}`));
14740
+ }
14741
+ return response.text();
14732
14742
  }
14733
14743
  function componentDefResolved(type) {
14734
14744
  componentDefPendingResolution.delete(type);
@@ -19065,6 +19075,9 @@ function getNodesAndEdgesFromSignalMap(signalMap) {
19065
19075
  label: consumer.debugName ?? consumer.lView?.[HOST]?.tagName?.toLowerCase?.(),
19066
19076
  kind: consumer.kind,
19067
19077
  epoch: consumer.version,
19078
+ // The `lView[CONTEXT]` is a reference to an instance of the component's class.
19079
+ // We get the constructor so that `inspect(.constructor)` shows the component class.
19080
+ debuggableFn: consumer.lView?.[CONTEXT]?.constructor,
19068
19081
  id,
19069
19082
  });
19070
19083
  }
@@ -21707,17 +21720,25 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
21707
21720
  /**
21708
21721
  * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
21709
21722
  */
21710
- const ANIMATIONS_DISABLED = new InjectionToken(ngDevMode ? 'AnimationsDisabled' : '', {
21723
+ const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
21711
21724
  providedIn: 'root',
21712
21725
  factory: () => false,
21713
21726
  });
21714
21727
  /**
21715
- * Animation removal functions have a four second long maximum duration timeout.
21716
- * This value mirrors from Chrome's cross document navigation view transition timeout.
21717
- * It's intended to prevent people from accidentally forgetting to call the removal
21718
- * function in their callback.
21728
+ * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
21729
+ * before element removal. The default value mirrors from Chrome's cross document
21730
+ * navigation view transition timeout. It's intended to prevent people from accidentally
21731
+ * forgetting to call the removal function in their callback. Also serves as a delay
21732
+ * for when stylesheets are pruned.
21733
+ *
21734
+ * @publicApi 20.2
21719
21735
  */
21720
- const MAX_ANIMATION_TIMEOUT = 4000;
21736
+ const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
21737
+ providedIn: 'root',
21738
+ factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
21739
+ });
21740
+ const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
21741
+
21721
21742
  /**
21722
21743
  * Registers elements for delayed removal action for animation in the case
21723
21744
  * that `animate.leave` is used. This stores the target element and any
@@ -21733,7 +21754,9 @@ class ElementRegistry {
21733
21754
  }
21734
21755
  /** Used when animate.leave is only applying classes */
21735
21756
  trackClasses(details, classes) {
21736
- const classList = typeof classes === 'string' ? [classes] : classes;
21757
+ const classList = getClassListFromValue(classes);
21758
+ if (!classList)
21759
+ return;
21737
21760
  for (let klass of classList) {
21738
21761
  details.classes?.add(klass);
21739
21762
  }
@@ -21784,7 +21807,7 @@ class ElementRegistry {
21784
21807
  * using the animateFn stored in the registry. The DOM renderer passes in
21785
21808
  * the removal function to be fired off when the animation finishes.
21786
21809
  */
21787
- animate(el, removeFn) {
21810
+ animate(el, removeFn, maxAnimationTimeout) {
21788
21811
  if (!this.outElements.has(el))
21789
21812
  return removeFn();
21790
21813
  const details = this.outElements.get(el);
@@ -21803,18 +21826,134 @@ class ElementRegistry {
21803
21826
  // this timeout is used to ensure elements actually get removed in the case
21804
21827
  // that the user forgot to call the remove callback. The timeout is cleared
21805
21828
  // in the DOM renderer during the remove child process.
21806
- timeoutId = setTimeout(remove, MAX_ANIMATION_TIMEOUT);
21829
+ timeoutId = setTimeout(remove, maxAnimationTimeout);
21807
21830
  details.animateFn(remove);
21808
21831
  }
21809
21832
  }
21833
+ function getClassListFromValue(value) {
21834
+ const classes = typeof value === 'function' ? value() : value;
21835
+ let classList = Array.isArray(classes) ? classes : null;
21836
+ if (typeof classes === 'string') {
21837
+ classList = classes
21838
+ .trim()
21839
+ .split(/\s+/)
21840
+ .filter((k) => k);
21841
+ }
21842
+ return classList;
21843
+ }
21844
+
21845
+ /** Parses a CSS time value to milliseconds. */
21846
+ function parseCssTimeUnitsToMs(value) {
21847
+ // Some browsers will return it in seconds, whereas others will return milliseconds.
21848
+ const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
21849
+ return parseFloat(value) * multiplier;
21850
+ }
21851
+ /** Parses out multiple values from a computed style into an array. */
21852
+ function parseCssPropertyValue(computedStyle, name) {
21853
+ const value = computedStyle.getPropertyValue(name);
21854
+ return value.split(',').map((part) => part.trim());
21855
+ }
21856
+ /** Gets the transform transition duration, including the delay, of an element in milliseconds. */
21857
+ function getLongestComputedTransition(computedStyle) {
21858
+ const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');
21859
+ const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');
21860
+ const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');
21861
+ const longest = { propertyName: '', duration: 0, animationName: undefined };
21862
+ for (let i = 0; i < transitionedProperties.length; i++) {
21863
+ const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
21864
+ if (duration > longest.duration) {
21865
+ longest.propertyName = transitionedProperties[i];
21866
+ longest.duration = duration;
21867
+ }
21868
+ }
21869
+ return longest;
21870
+ }
21871
+ function getLongestComputedAnimation(computedStyle) {
21872
+ const rawNames = parseCssPropertyValue(computedStyle, 'animation-name');
21873
+ const rawDelays = parseCssPropertyValue(computedStyle, 'animation-delay');
21874
+ const rawDurations = parseCssPropertyValue(computedStyle, 'animation-duration');
21875
+ const longest = { animationName: '', propertyName: undefined, duration: 0 };
21876
+ for (let i = 0; i < rawNames.length; i++) {
21877
+ const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
21878
+ if (duration > longest.duration) {
21879
+ longest.animationName = rawNames[i];
21880
+ longest.duration = duration;
21881
+ }
21882
+ }
21883
+ return longest;
21884
+ }
21885
+ /**
21886
+ * Determines the longest animation, but with `getComputedStyles` instead of `getAnimations`. This
21887
+ * is ultimately safer than getAnimations because it can be used when recalculations are in
21888
+ * progress. `getAnimations()` will be empty in that case.
21889
+ */
21890
+ function determineLongestAnimationFromComputedStyles(el, animationsMap) {
21891
+ const computedStyle = getComputedStyle(el);
21892
+ const longestAnimation = getLongestComputedAnimation(computedStyle);
21893
+ const longestTransition = getLongestComputedTransition(computedStyle);
21894
+ const longest = longestAnimation.duration > longestTransition.duration ? longestAnimation : longestTransition;
21895
+ if (animationsMap.has(el) && animationsMap.get(el).duration > longest.duration) {
21896
+ return;
21897
+ }
21898
+ animationsMap.set(el, longest);
21899
+ }
21900
+ /**
21901
+ * Multiple animations can be set on an element. This grabs an element and
21902
+ * determines which of those will be the longest duration. If we didn't do
21903
+ * this, elements would be removed whenever the first animation completes.
21904
+ * This ensures we get the longest running animation and only remove when
21905
+ * that animation completes.
21906
+ */
21907
+ function determineLongestAnimation(event, el, animationsMap, areAnimationSupported) {
21908
+ if (!areAnimationSupported || !(event.target instanceof Element) || event.target !== el)
21909
+ return;
21910
+ const animations = el.getAnimations();
21911
+ return animations.length === 0
21912
+ ? // fallback to computed styles if getAnimations is empty. This would happen if styles are
21913
+ // currently recalculating due to a reflow happening elsewhere.
21914
+ determineLongestAnimationFromComputedStyles(el, animationsMap)
21915
+ : determineLongestAnimationFromElementAnimations(el, animationsMap, animations);
21916
+ }
21917
+ function determineLongestAnimationFromElementAnimations(el, animationsMap, animations) {
21918
+ let currentLongest = {
21919
+ animationName: undefined,
21920
+ propertyName: undefined,
21921
+ duration: 0,
21922
+ };
21923
+ for (const animation of animations) {
21924
+ const timing = animation.effect?.getTiming();
21925
+ // duration can be a string 'auto' or a number.
21926
+ const animDuration = typeof timing?.duration === 'number' ? timing.duration : 0;
21927
+ let duration = (timing?.delay ?? 0) + animDuration;
21928
+ let propertyName;
21929
+ let animationName;
21930
+ if (animation.animationName) {
21931
+ animationName = animation.animationName;
21932
+ }
21933
+ else {
21934
+ // Check for CSSTransition specific property
21935
+ propertyName = animation.transitionProperty;
21936
+ }
21937
+ if (duration >= currentLongest.duration) {
21938
+ currentLongest = { animationName, propertyName, duration };
21939
+ }
21940
+ }
21941
+ if (animationsMap.has(el) && animationsMap.get(el).duration > currentLongest.duration) {
21942
+ return;
21943
+ }
21944
+ animationsMap.set(el, currentLongest);
21945
+ }
21810
21946
 
21811
21947
  const DEFAULT_ANIMATIONS_DISABLED = false;
21812
- const WS_REGEXP = /\s+/;
21813
21948
  const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
21814
21949
  typeof document !== 'undefined' &&
21815
21950
  // tslint:disable-next-line:no-toplevel-property-access
21816
21951
  typeof document?.documentElement?.getAnimations === 'function';
21817
21952
  const noOpAnimationComplete = () => { };
21953
+ // Tracks the list of classes added to a DOM node from `animate.enter` calls to ensure
21954
+ // we remove all of the classes in the case of animation composition via host bindings.
21955
+ const enterClassMap = new WeakMap();
21956
+ const longestAnimations = new WeakMap();
21818
21957
  /**
21819
21958
  * Instruction to handle the `animate.enter` behavior for class bindings.
21820
21959
  *
@@ -21842,15 +21981,14 @@ function ɵɵanimateEnter(value) {
21842
21981
  // Retrieve the actual class list from the value. This will resolve any resolver functions from
21843
21982
  // bindings.
21844
21983
  const activeClasses = getClassListFromValue(value);
21845
- let longestAnimation;
21846
21984
  const cleanupFns = [];
21847
21985
  // In the case where multiple animations are happening on the element, we need
21848
21986
  // to get the longest animation to ensure we don't complete animations early.
21849
21987
  // This also allows us to setup cancellation of animations in progress if the
21850
21988
  // gets removed early.
21851
21989
  const handleAnimationStart = (event) => {
21852
- setupAnimationCancel(event, activeClasses, renderer);
21853
- longestAnimation = getLongestAnimation(event);
21990
+ determineLongestAnimation(event, nativeElement, longestAnimations, areAnimationSupported);
21991
+ setupAnimationCancel(event, renderer);
21854
21992
  const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
21855
21993
  ngZone.runOutsideAngular(() => {
21856
21994
  cleanupFns.push(renderer.listen(nativeElement, eventName, handleInAnimationEnd));
@@ -21858,7 +21996,7 @@ function ɵɵanimateEnter(value) {
21858
21996
  };
21859
21997
  // When the longest animation ends, we can remove all the classes
21860
21998
  const handleInAnimationEnd = (event) => {
21861
- animationEnd(event, nativeElement, longestAnimation, activeClasses, renderer, cleanupFns);
21999
+ animationEnd(event, nativeElement, renderer, cleanupFns);
21862
22000
  };
21863
22001
  // We only need to add these event listeners if there are actual classes to apply
21864
22002
  if (activeClasses && activeClasses.length > 0) {
@@ -21866,12 +22004,33 @@ function ɵɵanimateEnter(value) {
21866
22004
  cleanupFns.push(renderer.listen(nativeElement, 'animationstart', handleAnimationStart));
21867
22005
  cleanupFns.push(renderer.listen(nativeElement, 'transitionstart', handleAnimationStart));
21868
22006
  });
22007
+ trackEnterClasses(nativeElement, activeClasses, cleanupFns);
21869
22008
  for (const klass of activeClasses) {
21870
22009
  renderer.addClass(nativeElement, klass);
21871
22010
  }
21872
22011
  }
21873
22012
  return ɵɵanimateEnter; // For chaining
21874
22013
  }
22014
+ /**
22015
+ * trackEnterClasses is necessary in the case of composition where animate.enter
22016
+ * is used on the same element in multiple places, like on the element and in a
22017
+ * host binding. When removing classes, we need the entire list of animation classes
22018
+ * added to properly remove them when the longest animation fires.
22019
+ */
22020
+ function trackEnterClasses(el, classList, cleanupFns) {
22021
+ const elementData = enterClassMap.get(el);
22022
+ if (elementData) {
22023
+ for (const klass of classList) {
22024
+ elementData.classList.push(klass);
22025
+ }
22026
+ for (const fn of cleanupFns) {
22027
+ elementData.cleanupFns.push(fn);
22028
+ }
22029
+ }
22030
+ else {
22031
+ enterClassMap.set(el, { classList, cleanupFns });
22032
+ }
22033
+ }
21875
22034
  /**
21876
22035
  * Instruction to handle the `(animate.enter)` behavior for event bindings, aka when
21877
22036
  * a user wants to use a custom animation function rather than a class.
@@ -22021,87 +22180,55 @@ function getClassList(value, resolvers) {
22021
22180
  }
22022
22181
  return classList;
22023
22182
  }
22024
- function cancelAnimationsIfRunning(element) {
22025
- if (areAnimationSupported) {
22183
+ function cancelAnimationsIfRunning(element, renderer) {
22184
+ if (!areAnimationSupported)
22185
+ return;
22186
+ const elementData = enterClassMap.get(element);
22187
+ if (element.getAnimations().length > 0) {
22026
22188
  for (const animation of element.getAnimations()) {
22027
22189
  if (animation.playState === 'running') {
22028
22190
  animation.cancel();
22029
22191
  }
22030
22192
  }
22031
22193
  }
22032
- }
22033
- /**
22034
- * Multiple animations can be set on an element. This grabs an element and
22035
- * determines which of those will be the longest duration. If we didn't do
22036
- * this, elements would be removed whenever the first animation completes.
22037
- * This ensures we get the longest running animation and only remove when
22038
- * that animation completes.
22039
- */
22040
- function getLongestAnimation(event) {
22041
- if (!areAnimationSupported || !(event.target instanceof Element))
22042
- return;
22043
- const nativeElement = event.target;
22044
- const animations = nativeElement.getAnimations();
22045
- if (animations.length === 0)
22046
- return;
22047
- let currentLongest = {
22048
- animationName: undefined,
22049
- propertyName: undefined,
22050
- duration: 0,
22051
- };
22052
- for (const animation of animations) {
22053
- const timing = animation.effect?.getTiming();
22054
- // duration can be a string 'auto' or a number.
22055
- const animDuration = typeof timing?.duration === 'number' ? timing.duration : 0;
22056
- let duration = (timing?.delay ?? 0) + animDuration;
22057
- let propertyName;
22058
- let animationName;
22059
- if (animation.animationName) {
22060
- animationName = animation.animationName;
22061
- }
22062
- else {
22063
- // Check for CSSTransition specific property
22064
- propertyName = animation.transitionProperty;
22065
- }
22066
- if (duration >= currentLongest.duration) {
22067
- currentLongest = { animationName, propertyName, duration };
22194
+ else {
22195
+ if (elementData) {
22196
+ for (const klass of elementData.classList) {
22197
+ renderer.removeClass(element, klass);
22198
+ }
22068
22199
  }
22069
22200
  }
22070
- return currentLongest;
22071
- }
22072
- function getClassListFromValue(value) {
22073
- const classes = typeof value === 'function' ? value() : value;
22074
- let classList = classes instanceof Array ? classes : null;
22075
- if (typeof classes === 'string') {
22076
- classList = classes
22077
- .trim()
22078
- .split(WS_REGEXP)
22079
- .filter((k) => k);
22201
+ // We need to prevent any enter animation listeners from firing if they exist.
22202
+ if (elementData) {
22203
+ for (const fn of elementData.cleanupFns) {
22204
+ fn();
22205
+ }
22080
22206
  }
22081
- return classList;
22207
+ longestAnimations.delete(element);
22208
+ enterClassMap.delete(element);
22082
22209
  }
22083
- function setupAnimationCancel(event, classList, renderer) {
22210
+ function setupAnimationCancel(event, renderer) {
22084
22211
  if (!(event.target instanceof Element))
22085
22212
  return;
22086
22213
  const nativeElement = event.target;
22087
22214
  if (areAnimationSupported) {
22215
+ const elementData = enterClassMap.get(nativeElement);
22088
22216
  const animations = nativeElement.getAnimations();
22089
22217
  if (animations.length === 0)
22090
22218
  return;
22091
22219
  for (let animation of animations) {
22092
22220
  animation.addEventListener('cancel', (event) => {
22093
- if (nativeElement === event.target) {
22094
- if (classList !== null) {
22095
- for (const klass of classList) {
22096
- renderer.removeClass(nativeElement, klass);
22097
- }
22221
+ if (nativeElement === event.target && elementData?.classList) {
22222
+ for (const klass of elementData.classList) {
22223
+ renderer.removeClass(nativeElement, klass);
22098
22224
  }
22099
22225
  }
22100
22226
  });
22101
22227
  }
22102
22228
  }
22103
22229
  }
22104
- function isLongestAnimation(event, nativeElement, longestAnimation) {
22230
+ function isLongestAnimation(event, nativeElement) {
22231
+ const longestAnimation = longestAnimations.get(nativeElement);
22105
22232
  return (nativeElement === event.target &&
22106
22233
  longestAnimation !== undefined &&
22107
22234
  ((longestAnimation.animationName !== undefined &&
@@ -22109,18 +22236,21 @@ function isLongestAnimation(event, nativeElement, longestAnimation) {
22109
22236
  (longestAnimation.propertyName !== undefined &&
22110
22237
  event.propertyName === longestAnimation.propertyName)));
22111
22238
  }
22112
- function animationEnd(event, nativeElement, longestAnimation, classList, renderer, cleanupFns) {
22113
- if (isLongestAnimation(event, nativeElement, longestAnimation)) {
22239
+ function animationEnd(event, nativeElement, renderer, cleanupFns) {
22240
+ const elementData = enterClassMap.get(nativeElement);
22241
+ if (!elementData)
22242
+ return;
22243
+ if (isLongestAnimation(event, nativeElement)) {
22114
22244
  // Now that we've found the longest animation, there's no need
22115
22245
  // to keep bubbling up this event as it's not going to apply to
22116
22246
  // other elements further up. We don't want it to inadvertently
22117
22247
  // affect any other animations on the page.
22118
22248
  event.stopImmediatePropagation();
22119
- if (classList !== null) {
22120
- for (const klass of classList) {
22121
- renderer.removeClass(nativeElement, klass);
22122
- }
22249
+ for (const klass of elementData.classList) {
22250
+ renderer.removeClass(nativeElement, klass);
22123
22251
  }
22252
+ enterClassMap.delete(nativeElement);
22253
+ longestAnimations.delete(nativeElement);
22124
22254
  for (const fn of cleanupFns) {
22125
22255
  fn();
22126
22256
  }
@@ -22137,20 +22267,21 @@ function assertAnimationTypes(value, instruction) {
22137
22267
  */
22138
22268
  function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animationsDisabled, ngZone) {
22139
22269
  if (animationsDisabled) {
22270
+ longestAnimations.delete(el);
22140
22271
  finalRemoveFn();
22141
22272
  }
22142
- cancelAnimationsIfRunning(el);
22143
- let longestAnimation;
22273
+ cancelAnimationsIfRunning(el, renderer);
22144
22274
  const handleAnimationStart = (event) => {
22145
- longestAnimation = getLongestAnimation(event);
22275
+ determineLongestAnimation(event, el, longestAnimations, areAnimationSupported);
22146
22276
  };
22147
22277
  const handleOutAnimationEnd = (event) => {
22148
- if (isLongestAnimation(event, el, longestAnimation)) {
22278
+ if (isLongestAnimation(event, el)) {
22149
22279
  // Now that we've found the longest animation, there's no need
22150
22280
  // to keep bubbling up this event as it's not going to apply to
22151
22281
  // other elements further up. We don't want it to inadvertently
22152
22282
  // affect any other animations on the page.
22153
22283
  event.stopImmediatePropagation();
22284
+ longestAnimations.delete(el);
22154
22285
  finalRemoveFn();
22155
22286
  }
22156
22287
  };
@@ -30813,11 +30944,8 @@ class ChangeDetectionSchedulerImpl {
30813
30944
  * ]});
30814
30945
  * ```
30815
30946
  *
30816
- * This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
30817
- * in patch versions. There are known feature gaps and API ergonomic considerations. We will iterate
30818
- * on the exact API based on the feedback and our understanding of the problem and solution space.
30947
+ * @publicApi 20.2
30819
30948
  *
30820
- * @developerPreview 20.0
30821
30949
  * @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication}
30822
30950
  */
30823
30951
  function provideZonelessChangeDetection() {
@@ -31608,5 +31736,5 @@ function getDebugNode(nativeNode) {
31608
31736
  return null;
31609
31737
  }
31610
31738
 
31611
- export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, ElementRef, ElementRegistry, EnvironmentNgModuleRefAdapter, EventEmitter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, NgProbeToken, NgZone, NoopNgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, PROVIDED_NG_ZONE, Pipe, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getNgZone, getNgZoneOptions, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, internalProvideZoneChangeDetection, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZoneChangeDetection, provideZonelessChangeDetection, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵAnimationsFeature, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
31739
+ export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, ElementRef, ElementRegistry, EnvironmentNgModuleRefAdapter, EventEmitter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, NgProbeToken, NgZone, NoopNgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, PROVIDED_NG_ZONE, Pipe, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getNgZone, getNgZoneOptions, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, internalProvideZoneChangeDetection, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZoneChangeDetection, provideZonelessChangeDetection, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵAnimationsFeature, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
31612
31740
  //# sourceMappingURL=debug_node.mjs.map