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

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 (71) 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 +14 -2
  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 +40 -12
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/debug_node.mjs +234 -97
  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 +23 -8
  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-Bf0h419q.cjs} +4 -4
  41. package/schematics/bundles/cleanup-unused-imports.cjs +7 -8
  42. package/schematics/bundles/{compiler_host-DTywrGR6.cjs → compiler_host-CpG50gww.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-DTWyGOPM.cjs} +49 -49
  47. package/schematics/bundles/{index-DWQ8GMRM.cjs → index-Dl0zaIBS.cjs} +1263 -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-BlMDltWE.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-0E6AzVkB.cjs} +16 -17
  56. package/schematics/bundles/{checker-DBomdQHo.cjs → project_tsconfig_paths-ClCuNoA6.cjs} +147 -30
  57. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  58. package/schematics/bundles/route-lazy-loading.cjs +6 -7
  59. package/schematics/bundles/router-current-navigation.cjs +114 -0
  60. package/schematics/bundles/self-closing-tags-migration.cjs +10 -11
  61. package/schematics/bundles/signal-input-migration.cjs +21 -22
  62. package/schematics/bundles/signal-queries-migration.cjs +31 -32
  63. package/schematics/bundles/signals.cjs +8 -9
  64. package/schematics/bundles/standalone-migration.cjs +10 -11
  65. package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
  66. package/schematics/bundles/test-bed-get.cjs +4 -5
  67. package/schematics/migrations.json +6 -0
  68. package/signal.d.d.ts +1 -1
  69. package/testing/index.d.ts +1 -1
  70. package/weak_ref.d.d.ts +1 -1
  71. 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.5
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
@@ -4892,6 +4896,12 @@ var ViewEncapsulation;
4892
4896
  * all the Component's styling.
4893
4897
  */
4894
4898
  ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
4899
+ /**
4900
+ * Similar to `ShadowDom`, but prevents any external styles from leaking into the
4901
+ * component's ShadowRoot. This is useful when you want to ensure that the component's
4902
+ * styles are completely isolated from the rest of the application, including global styles.
4903
+ */
4904
+ ViewEncapsulation[ViewEncapsulation["IsolatedShadowDom"] = 4] = "IsolatedShadowDom";
4895
4905
  })(ViewEncapsulation || (ViewEncapsulation = {}));
4896
4906
 
4897
4907
  /**
@@ -7986,7 +7996,9 @@ function locateHostElement(renderer, elementOrSelector, encapsulation, injector)
7986
7996
  const preserveHostContent = injector.get(PRESERVE_HOST_CONTENT, PRESERVE_HOST_CONTENT_DEFAULT);
7987
7997
  // When using native Shadow DOM, do not clear host element to allow native slot
7988
7998
  // projection.
7989
- const preserveContent = preserveHostContent || encapsulation === ViewEncapsulation.ShadowDom;
7999
+ const preserveContent = preserveHostContent ||
8000
+ encapsulation === ViewEncapsulation.ShadowDom ||
8001
+ encapsulation === ViewEncapsulation.IsolatedShadowDom;
7990
8002
  const rootElement = renderer.selectRootElement(elementOrSelector, preserveContent);
7991
8003
  applyRootElementTransform(rootElement);
7992
8004
  return rootElement;
@@ -13511,7 +13523,7 @@ class ComponentFactory extends ComponentFactory$1 {
13511
13523
  }
13512
13524
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
13513
13525
  const tAttributes = rootSelectorOrNode
13514
- ? ['ng-version', '20.2.0-next.3']
13526
+ ? ['ng-version', '20.2.0-next.5']
13515
13527
  : // Extract attributes and classes from the first selector only to match VE behavior.
13516
13528
  extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
13517
13529
  let creationBindings = null;
@@ -14654,7 +14666,7 @@ function resolveComponentResources(resourceResolver) {
14654
14666
  let promise = urlMap.get(url);
14655
14667
  if (!promise) {
14656
14668
  const resp = resourceResolver(url);
14657
- urlMap.set(url, (promise = resp.then(unwrapResponse)));
14669
+ urlMap.set(url, (promise = resp.then((res) => unwrapResponse(url, res))));
14658
14670
  }
14659
14671
  return promise;
14660
14672
  }
@@ -14727,8 +14739,14 @@ function restoreComponentResolutionQueue(queue) {
14727
14739
  function isComponentResourceResolutionQueueEmpty() {
14728
14740
  return componentResourceResolutionQueue.size === 0;
14729
14741
  }
14730
- function unwrapResponse(response) {
14731
- return typeof response == 'string' ? response : response.text();
14742
+ function unwrapResponse(url, response) {
14743
+ if (typeof response === 'string') {
14744
+ return response;
14745
+ }
14746
+ if (response.status !== undefined && response.status !== 200) {
14747
+ return Promise.reject(new RuntimeError(918 /* RuntimeErrorCode.EXTERNAL_RESOURCE_LOADING_FAILED */, ngDevMode && `Could not load resource: ${url}. Response status: ${response.status}`));
14748
+ }
14749
+ return response.text();
14732
14750
  }
14733
14751
  function componentDefResolved(type) {
14734
14752
  componentDefPendingResolution.delete(type);
@@ -19065,6 +19083,9 @@ function getNodesAndEdgesFromSignalMap(signalMap) {
19065
19083
  label: consumer.debugName ?? consumer.lView?.[HOST]?.tagName?.toLowerCase?.(),
19066
19084
  kind: consumer.kind,
19067
19085
  epoch: consumer.version,
19086
+ // The `lView[CONTEXT]` is a reference to an instance of the component's class.
19087
+ // We get the constructor so that `inspect(.constructor)` shows the component class.
19088
+ debuggableFn: consumer.lView?.[CONTEXT]?.constructor,
19068
19089
  id,
19069
19090
  });
19070
19091
  }
@@ -21707,17 +21728,25 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
21707
21728
  /**
21708
21729
  * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
21709
21730
  */
21710
- const ANIMATIONS_DISABLED = new InjectionToken(ngDevMode ? 'AnimationsDisabled' : '', {
21731
+ const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
21711
21732
  providedIn: 'root',
21712
21733
  factory: () => false,
21713
21734
  });
21714
21735
  /**
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.
21736
+ * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
21737
+ * before element removal. The default value mirrors from Chrome's cross document
21738
+ * navigation view transition timeout. It's intended to prevent people from accidentally
21739
+ * forgetting to call the removal function in their callback. Also serves as a delay
21740
+ * for when stylesheets are pruned.
21741
+ *
21742
+ * @publicApi 20.2
21719
21743
  */
21720
- const MAX_ANIMATION_TIMEOUT = 4000;
21744
+ const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
21745
+ providedIn: 'root',
21746
+ factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
21747
+ });
21748
+ const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
21749
+
21721
21750
  /**
21722
21751
  * Registers elements for delayed removal action for animation in the case
21723
21752
  * that `animate.leave` is used. This stores the target element and any
@@ -21733,7 +21762,9 @@ class ElementRegistry {
21733
21762
  }
21734
21763
  /** Used when animate.leave is only applying classes */
21735
21764
  trackClasses(details, classes) {
21736
- const classList = typeof classes === 'string' ? [classes] : classes;
21765
+ const classList = getClassListFromValue(classes);
21766
+ if (!classList)
21767
+ return;
21737
21768
  for (let klass of classList) {
21738
21769
  details.classes?.add(klass);
21739
21770
  }
@@ -21784,7 +21815,7 @@ class ElementRegistry {
21784
21815
  * using the animateFn stored in the registry. The DOM renderer passes in
21785
21816
  * the removal function to be fired off when the animation finishes.
21786
21817
  */
21787
- animate(el, removeFn) {
21818
+ animate(el, removeFn, maxAnimationTimeout) {
21788
21819
  if (!this.outElements.has(el))
21789
21820
  return removeFn();
21790
21821
  const details = this.outElements.get(el);
@@ -21803,18 +21834,134 @@ class ElementRegistry {
21803
21834
  // this timeout is used to ensure elements actually get removed in the case
21804
21835
  // that the user forgot to call the remove callback. The timeout is cleared
21805
21836
  // in the DOM renderer during the remove child process.
21806
- timeoutId = setTimeout(remove, MAX_ANIMATION_TIMEOUT);
21837
+ timeoutId = setTimeout(remove, maxAnimationTimeout);
21807
21838
  details.animateFn(remove);
21808
21839
  }
21809
21840
  }
21841
+ function getClassListFromValue(value) {
21842
+ const classes = typeof value === 'function' ? value() : value;
21843
+ let classList = Array.isArray(classes) ? classes : null;
21844
+ if (typeof classes === 'string') {
21845
+ classList = classes
21846
+ .trim()
21847
+ .split(/\s+/)
21848
+ .filter((k) => k);
21849
+ }
21850
+ return classList;
21851
+ }
21852
+
21853
+ /** Parses a CSS time value to milliseconds. */
21854
+ function parseCssTimeUnitsToMs(value) {
21855
+ // Some browsers will return it in seconds, whereas others will return milliseconds.
21856
+ const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
21857
+ return parseFloat(value) * multiplier;
21858
+ }
21859
+ /** Parses out multiple values from a computed style into an array. */
21860
+ function parseCssPropertyValue(computedStyle, name) {
21861
+ const value = computedStyle.getPropertyValue(name);
21862
+ return value.split(',').map((part) => part.trim());
21863
+ }
21864
+ /** Gets the transform transition duration, including the delay, of an element in milliseconds. */
21865
+ function getLongestComputedTransition(computedStyle) {
21866
+ const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');
21867
+ const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');
21868
+ const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');
21869
+ const longest = { propertyName: '', duration: 0, animationName: undefined };
21870
+ for (let i = 0; i < transitionedProperties.length; i++) {
21871
+ const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
21872
+ if (duration > longest.duration) {
21873
+ longest.propertyName = transitionedProperties[i];
21874
+ longest.duration = duration;
21875
+ }
21876
+ }
21877
+ return longest;
21878
+ }
21879
+ function getLongestComputedAnimation(computedStyle) {
21880
+ const rawNames = parseCssPropertyValue(computedStyle, 'animation-name');
21881
+ const rawDelays = parseCssPropertyValue(computedStyle, 'animation-delay');
21882
+ const rawDurations = parseCssPropertyValue(computedStyle, 'animation-duration');
21883
+ const longest = { animationName: '', propertyName: undefined, duration: 0 };
21884
+ for (let i = 0; i < rawNames.length; i++) {
21885
+ const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
21886
+ if (duration > longest.duration) {
21887
+ longest.animationName = rawNames[i];
21888
+ longest.duration = duration;
21889
+ }
21890
+ }
21891
+ return longest;
21892
+ }
21893
+ /**
21894
+ * Determines the longest animation, but with `getComputedStyles` instead of `getAnimations`. This
21895
+ * is ultimately safer than getAnimations because it can be used when recalculations are in
21896
+ * progress. `getAnimations()` will be empty in that case.
21897
+ */
21898
+ function determineLongestAnimationFromComputedStyles(el, animationsMap) {
21899
+ const computedStyle = getComputedStyle(el);
21900
+ const longestAnimation = getLongestComputedAnimation(computedStyle);
21901
+ const longestTransition = getLongestComputedTransition(computedStyle);
21902
+ const longest = longestAnimation.duration > longestTransition.duration ? longestAnimation : longestTransition;
21903
+ if (animationsMap.has(el) && animationsMap.get(el).duration > longest.duration) {
21904
+ return;
21905
+ }
21906
+ animationsMap.set(el, longest);
21907
+ }
21908
+ /**
21909
+ * Multiple animations can be set on an element. This grabs an element and
21910
+ * determines which of those will be the longest duration. If we didn't do
21911
+ * this, elements would be removed whenever the first animation completes.
21912
+ * This ensures we get the longest running animation and only remove when
21913
+ * that animation completes.
21914
+ */
21915
+ function determineLongestAnimation(event, el, animationsMap, areAnimationSupported) {
21916
+ if (!areAnimationSupported || !(event.target instanceof Element) || event.target !== el)
21917
+ return;
21918
+ const animations = el.getAnimations();
21919
+ return animations.length === 0
21920
+ ? // fallback to computed styles if getAnimations is empty. This would happen if styles are
21921
+ // currently recalculating due to a reflow happening elsewhere.
21922
+ determineLongestAnimationFromComputedStyles(el, animationsMap)
21923
+ : determineLongestAnimationFromElementAnimations(el, animationsMap, animations);
21924
+ }
21925
+ function determineLongestAnimationFromElementAnimations(el, animationsMap, animations) {
21926
+ let currentLongest = {
21927
+ animationName: undefined,
21928
+ propertyName: undefined,
21929
+ duration: 0,
21930
+ };
21931
+ for (const animation of animations) {
21932
+ const timing = animation.effect?.getTiming();
21933
+ // duration can be a string 'auto' or a number.
21934
+ const animDuration = typeof timing?.duration === 'number' ? timing.duration : 0;
21935
+ let duration = (timing?.delay ?? 0) + animDuration;
21936
+ let propertyName;
21937
+ let animationName;
21938
+ if (animation.animationName) {
21939
+ animationName = animation.animationName;
21940
+ }
21941
+ else {
21942
+ // Check for CSSTransition specific property
21943
+ propertyName = animation.transitionProperty;
21944
+ }
21945
+ if (duration >= currentLongest.duration) {
21946
+ currentLongest = { animationName, propertyName, duration };
21947
+ }
21948
+ }
21949
+ if (animationsMap.has(el) && animationsMap.get(el).duration > currentLongest.duration) {
21950
+ return;
21951
+ }
21952
+ animationsMap.set(el, currentLongest);
21953
+ }
21810
21954
 
21811
21955
  const DEFAULT_ANIMATIONS_DISABLED = false;
21812
- const WS_REGEXP = /\s+/;
21813
21956
  const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
21814
21957
  typeof document !== 'undefined' &&
21815
21958
  // tslint:disable-next-line:no-toplevel-property-access
21816
21959
  typeof document?.documentElement?.getAnimations === 'function';
21817
21960
  const noOpAnimationComplete = () => { };
21961
+ // Tracks the list of classes added to a DOM node from `animate.enter` calls to ensure
21962
+ // we remove all of the classes in the case of animation composition via host bindings.
21963
+ const enterClassMap = new WeakMap();
21964
+ const longestAnimations = new WeakMap();
21818
21965
  /**
21819
21966
  * Instruction to handle the `animate.enter` behavior for class bindings.
21820
21967
  *
@@ -21842,15 +21989,14 @@ function ɵɵanimateEnter(value) {
21842
21989
  // Retrieve the actual class list from the value. This will resolve any resolver functions from
21843
21990
  // bindings.
21844
21991
  const activeClasses = getClassListFromValue(value);
21845
- let longestAnimation;
21846
21992
  const cleanupFns = [];
21847
21993
  // In the case where multiple animations are happening on the element, we need
21848
21994
  // to get the longest animation to ensure we don't complete animations early.
21849
21995
  // This also allows us to setup cancellation of animations in progress if the
21850
21996
  // gets removed early.
21851
21997
  const handleAnimationStart = (event) => {
21852
- setupAnimationCancel(event, activeClasses, renderer);
21853
- longestAnimation = getLongestAnimation(event);
21998
+ determineLongestAnimation(event, nativeElement, longestAnimations, areAnimationSupported);
21999
+ setupAnimationCancel(event, renderer);
21854
22000
  const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
21855
22001
  ngZone.runOutsideAngular(() => {
21856
22002
  cleanupFns.push(renderer.listen(nativeElement, eventName, handleInAnimationEnd));
@@ -21858,7 +22004,7 @@ function ɵɵanimateEnter(value) {
21858
22004
  };
21859
22005
  // When the longest animation ends, we can remove all the classes
21860
22006
  const handleInAnimationEnd = (event) => {
21861
- animationEnd(event, nativeElement, longestAnimation, activeClasses, renderer, cleanupFns);
22007
+ animationEnd(event, nativeElement, renderer, cleanupFns);
21862
22008
  };
21863
22009
  // We only need to add these event listeners if there are actual classes to apply
21864
22010
  if (activeClasses && activeClasses.length > 0) {
@@ -21866,12 +22012,33 @@ function ɵɵanimateEnter(value) {
21866
22012
  cleanupFns.push(renderer.listen(nativeElement, 'animationstart', handleAnimationStart));
21867
22013
  cleanupFns.push(renderer.listen(nativeElement, 'transitionstart', handleAnimationStart));
21868
22014
  });
22015
+ trackEnterClasses(nativeElement, activeClasses, cleanupFns);
21869
22016
  for (const klass of activeClasses) {
21870
22017
  renderer.addClass(nativeElement, klass);
21871
22018
  }
21872
22019
  }
21873
22020
  return ɵɵanimateEnter; // For chaining
21874
22021
  }
22022
+ /**
22023
+ * trackEnterClasses is necessary in the case of composition where animate.enter
22024
+ * is used on the same element in multiple places, like on the element and in a
22025
+ * host binding. When removing classes, we need the entire list of animation classes
22026
+ * added to properly remove them when the longest animation fires.
22027
+ */
22028
+ function trackEnterClasses(el, classList, cleanupFns) {
22029
+ const elementData = enterClassMap.get(el);
22030
+ if (elementData) {
22031
+ for (const klass of classList) {
22032
+ elementData.classList.push(klass);
22033
+ }
22034
+ for (const fn of cleanupFns) {
22035
+ elementData.cleanupFns.push(fn);
22036
+ }
22037
+ }
22038
+ else {
22039
+ enterClassMap.set(el, { classList, cleanupFns });
22040
+ }
22041
+ }
21875
22042
  /**
21876
22043
  * Instruction to handle the `(animate.enter)` behavior for event bindings, aka when
21877
22044
  * a user wants to use a custom animation function rather than a class.
@@ -22021,87 +22188,55 @@ function getClassList(value, resolvers) {
22021
22188
  }
22022
22189
  return classList;
22023
22190
  }
22024
- function cancelAnimationsIfRunning(element) {
22025
- if (areAnimationSupported) {
22191
+ function cancelAnimationsIfRunning(element, renderer) {
22192
+ if (!areAnimationSupported)
22193
+ return;
22194
+ const elementData = enterClassMap.get(element);
22195
+ if (element.getAnimations().length > 0) {
22026
22196
  for (const animation of element.getAnimations()) {
22027
22197
  if (animation.playState === 'running') {
22028
22198
  animation.cancel();
22029
22199
  }
22030
22200
  }
22031
22201
  }
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 };
22202
+ else {
22203
+ if (elementData) {
22204
+ for (const klass of elementData.classList) {
22205
+ renderer.removeClass(element, klass);
22206
+ }
22068
22207
  }
22069
22208
  }
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);
22209
+ // We need to prevent any enter animation listeners from firing if they exist.
22210
+ if (elementData) {
22211
+ for (const fn of elementData.cleanupFns) {
22212
+ fn();
22213
+ }
22080
22214
  }
22081
- return classList;
22215
+ longestAnimations.delete(element);
22216
+ enterClassMap.delete(element);
22082
22217
  }
22083
- function setupAnimationCancel(event, classList, renderer) {
22218
+ function setupAnimationCancel(event, renderer) {
22084
22219
  if (!(event.target instanceof Element))
22085
22220
  return;
22086
22221
  const nativeElement = event.target;
22087
22222
  if (areAnimationSupported) {
22223
+ const elementData = enterClassMap.get(nativeElement);
22088
22224
  const animations = nativeElement.getAnimations();
22089
22225
  if (animations.length === 0)
22090
22226
  return;
22091
22227
  for (let animation of animations) {
22092
22228
  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
- }
22229
+ if (nativeElement === event.target && elementData?.classList) {
22230
+ for (const klass of elementData.classList) {
22231
+ renderer.removeClass(nativeElement, klass);
22098
22232
  }
22099
22233
  }
22100
22234
  });
22101
22235
  }
22102
22236
  }
22103
22237
  }
22104
- function isLongestAnimation(event, nativeElement, longestAnimation) {
22238
+ function isLongestAnimation(event, nativeElement) {
22239
+ const longestAnimation = longestAnimations.get(nativeElement);
22105
22240
  return (nativeElement === event.target &&
22106
22241
  longestAnimation !== undefined &&
22107
22242
  ((longestAnimation.animationName !== undefined &&
@@ -22109,18 +22244,21 @@ function isLongestAnimation(event, nativeElement, longestAnimation) {
22109
22244
  (longestAnimation.propertyName !== undefined &&
22110
22245
  event.propertyName === longestAnimation.propertyName)));
22111
22246
  }
22112
- function animationEnd(event, nativeElement, longestAnimation, classList, renderer, cleanupFns) {
22113
- if (isLongestAnimation(event, nativeElement, longestAnimation)) {
22247
+ function animationEnd(event, nativeElement, renderer, cleanupFns) {
22248
+ const elementData = enterClassMap.get(nativeElement);
22249
+ if (!elementData)
22250
+ return;
22251
+ if (isLongestAnimation(event, nativeElement)) {
22114
22252
  // Now that we've found the longest animation, there's no need
22115
22253
  // to keep bubbling up this event as it's not going to apply to
22116
22254
  // other elements further up. We don't want it to inadvertently
22117
22255
  // affect any other animations on the page.
22118
22256
  event.stopImmediatePropagation();
22119
- if (classList !== null) {
22120
- for (const klass of classList) {
22121
- renderer.removeClass(nativeElement, klass);
22122
- }
22257
+ for (const klass of elementData.classList) {
22258
+ renderer.removeClass(nativeElement, klass);
22123
22259
  }
22260
+ enterClassMap.delete(nativeElement);
22261
+ longestAnimations.delete(nativeElement);
22124
22262
  for (const fn of cleanupFns) {
22125
22263
  fn();
22126
22264
  }
@@ -22137,20 +22275,21 @@ function assertAnimationTypes(value, instruction) {
22137
22275
  */
22138
22276
  function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animationsDisabled, ngZone) {
22139
22277
  if (animationsDisabled) {
22278
+ longestAnimations.delete(el);
22140
22279
  finalRemoveFn();
22141
22280
  }
22142
- cancelAnimationsIfRunning(el);
22143
- let longestAnimation;
22281
+ cancelAnimationsIfRunning(el, renderer);
22144
22282
  const handleAnimationStart = (event) => {
22145
- longestAnimation = getLongestAnimation(event);
22283
+ determineLongestAnimation(event, el, longestAnimations, areAnimationSupported);
22146
22284
  };
22147
22285
  const handleOutAnimationEnd = (event) => {
22148
- if (isLongestAnimation(event, el, longestAnimation)) {
22286
+ if (isLongestAnimation(event, el)) {
22149
22287
  // Now that we've found the longest animation, there's no need
22150
22288
  // to keep bubbling up this event as it's not going to apply to
22151
22289
  // other elements further up. We don't want it to inadvertently
22152
22290
  // affect any other animations on the page.
22153
22291
  event.stopImmediatePropagation();
22292
+ longestAnimations.delete(el);
22154
22293
  finalRemoveFn();
22155
22294
  }
22156
22295
  };
@@ -28914,7 +29053,8 @@ function recreateLView(importMeta, id, newDef, oldDef, lView) {
28914
29053
  // shadow root. The browser will throw if we attempt to attach another one and there's no way
28915
29054
  // to detach it. Our only option is to make a clone only of the root node, replace the node
28916
29055
  // with the clone and use it for the newly-created LView.
28917
- if (oldDef.encapsulation === ViewEncapsulation.ShadowDom) {
29056
+ if (oldDef.encapsulation === ViewEncapsulation.ShadowDom ||
29057
+ oldDef.encapsulation === ViewEncapsulation.IsolatedShadowDom) {
28918
29058
  const newHost = host.cloneNode(false);
28919
29059
  host.replaceWith(newHost);
28920
29060
  host = newHost;
@@ -30813,11 +30953,8 @@ class ChangeDetectionSchedulerImpl {
30813
30953
  * ]});
30814
30954
  * ```
30815
30955
  *
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.
30956
+ * @publicApi 20.2
30819
30957
  *
30820
- * @developerPreview 20.0
30821
30958
  * @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication}
30822
30959
  */
30823
30960
  function provideZonelessChangeDetection() {
@@ -31608,5 +31745,5 @@ function getDebugNode(nativeNode) {
31608
31745
  return null;
31609
31746
  }
31610
31747
 
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 };
31748
+ 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
31749
  //# sourceMappingURL=debug_node.mjs.map