@angular/core 20.3.3 → 20.3.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 (70) hide show
  1. package/api.d.d.ts +2 -2
  2. package/chrome_dev_tools_performance.d.d.ts +4 -2
  3. package/discovery.d.d.ts +11 -4
  4. package/effect.d.d.ts +2 -2
  5. package/event_dispatcher.d.d.ts +2 -2
  6. package/fesm2022/attribute.mjs +2 -2
  7. package/fesm2022/attribute.mjs.map +1 -1
  8. package/fesm2022/core.mjs +3 -3
  9. package/fesm2022/core.mjs.map +1 -1
  10. package/fesm2022/debug_node.mjs +225 -106
  11. package/fesm2022/debug_node.mjs.map +1 -1
  12. package/fesm2022/effect.mjs +2 -2
  13. package/fesm2022/effect.mjs.map +1 -1
  14. package/fesm2022/not_found.mjs +2 -2
  15. package/fesm2022/not_found.mjs.map +1 -1
  16. package/fesm2022/primitives/di.mjs +2 -2
  17. package/fesm2022/primitives/di.mjs.map +1 -1
  18. package/fesm2022/primitives/event-dispatch.mjs +2 -2
  19. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  20. package/fesm2022/primitives/signals.mjs +2 -2
  21. package/fesm2022/primitives/signals.mjs.map +1 -1
  22. package/fesm2022/resource.mjs +2 -2
  23. package/fesm2022/resource.mjs.map +1 -1
  24. package/fesm2022/root_effect_scheduler.mjs +8 -3
  25. package/fesm2022/root_effect_scheduler.mjs.map +1 -1
  26. package/fesm2022/rxjs-interop.mjs +2 -2
  27. package/fesm2022/rxjs-interop.mjs.map +1 -1
  28. package/fesm2022/signal.mjs +2 -2
  29. package/fesm2022/signal.mjs.map +1 -1
  30. package/fesm2022/testing.mjs +2 -2
  31. package/fesm2022/testing.mjs.map +1 -1
  32. package/fesm2022/weak_ref.mjs +2 -2
  33. package/fesm2022/weak_ref.mjs.map +1 -1
  34. package/formatter.d.d.ts +2 -2
  35. package/index.d.ts +16 -9
  36. package/package.json +2 -2
  37. package/primitives/di/index.d.ts +2 -2
  38. package/primitives/event-dispatch/index.d.ts +2 -2
  39. package/primitives/signals/index.d.ts +2 -2
  40. package/rxjs-interop/index.d.ts +2 -2
  41. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +5 -5
  42. package/schematics/bundles/{apply_import_manager-CUBvPp_2.cjs → apply_import_manager-_3Mx7H7A.cjs} +3 -3
  43. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  44. package/schematics/bundles/{compiler_host-DJHZ7M9N.cjs → compiler_host-DXiKJabk.cjs} +2 -2
  45. package/schematics/bundles/control-flow-migration.cjs +21 -20
  46. package/schematics/bundles/document-core.cjs +5 -5
  47. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  48. package/schematics/bundles/{index-BZJ8bv9v.cjs → index-BDeOF3Gn.cjs} +125 -58
  49. package/schematics/bundles/{index-DU_evmAi.cjs → index-C8BhVtUr.cjs} +4 -4
  50. package/schematics/bundles/inject-flags.cjs +5 -5
  51. package/schematics/bundles/inject-migration.cjs +3 -3
  52. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  53. package/schematics/bundles/{migrate_ts_type_references-58gA72Ti.cjs → migrate_ts_type_references-BlSjvHVC.cjs} +47 -5
  54. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  55. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  56. package/schematics/bundles/output-migration.cjs +6 -6
  57. package/schematics/bundles/{project_paths-DcM18127.cjs → project_paths-C8LDPZ5A.cjs} +3 -3
  58. package/schematics/bundles/{project_tsconfig_paths-Dqd0J7st.cjs → project_tsconfig_paths-tTmeFlcz.cjs} +145 -3
  59. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  60. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  61. package/schematics/bundles/router-current-navigation.cjs +4 -4
  62. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  63. package/schematics/bundles/signal-input-migration.cjs +7 -7
  64. package/schematics/bundles/signal-queries-migration.cjs +7 -7
  65. package/schematics/bundles/signals.cjs +7 -7
  66. package/schematics/bundles/standalone-migration.cjs +50 -10
  67. package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
  68. package/schematics/bundles/test-bed-get.cjs +4 -4
  69. package/testing/index.d.ts +2 -2
  70. package/weak_ref.d.d.ts +2 -2
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v20.3.3
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v20.3.5
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, formatRuntimeError, resetPreOrderHookFlags, PARENT, RENDERER, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, ANIMATIONS, assertParentView, CONTAINER_HEADER_OFFSET, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, stringify, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, assertNotDefined, nextBindingIndex, getSelectedTNode, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, ChangeDetectionScheduler, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, isInInjectionContext, DestroyRef, PendingTasksInternal, noop, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, isWritableSignal, store, providerToFactory, emitProviderConfiguredEvent, isClassProvider, getBindingRoot, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, ZONELESS_SCHEDULER_DISABLED, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, getNativeByTNodeOrNull } from './root_effect_scheduler.mjs';
7
+ import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, resetPreOrderHookFlags, PARENT, RENDERER, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, CONTAINER_HEADER_OFFSET, ANIMATIONS, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, stringify, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, assertNotDefined, nextBindingIndex, getSelectedTNode, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, ChangeDetectionScheduler, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, isInInjectionContext, DestroyRef, PendingTasksInternal, noop, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, isWritableSignal, store, providerToFactory, emitProviderConfiguredEvent, isClassProvider, getBindingRoot, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, ZONELESS_SCHEDULER_DISABLED, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, getNativeByTNodeOrNull } from './root_effect_scheduler.mjs';
8
8
  import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './signal.mjs';
9
9
  import { Subject, Subscription } from 'rxjs';
10
10
  import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
@@ -4492,13 +4492,18 @@ function isIncrementalHydrationEnabled(injector) {
4492
4492
  optional: true,
4493
4493
  });
4494
4494
  }
4495
+ let incrementalHydrationEnabledWarned = false;
4496
+ function resetIncrementalHydrationEnabledWarnedForTests() {
4497
+ incrementalHydrationEnabledWarned = false;
4498
+ }
4495
4499
  /** Throws an error if the incremental hydration is not enabled */
4496
- function assertIncrementalHydrationIsConfigured(injector) {
4497
- if (!isIncrementalHydrationEnabled(injector)) {
4498
- throw new RuntimeError(508 /* RuntimeErrorCode.MISCONFIGURED_INCREMENTAL_HYDRATION */, 'Angular has detected that some `@defer` blocks use `hydrate` triggers, ' +
4500
+ function warnIncrementalHydrationNotConfigured() {
4501
+ if (!incrementalHydrationEnabledWarned) {
4502
+ incrementalHydrationEnabledWarned = true;
4503
+ console.warn(formatRuntimeError(508 /* RuntimeErrorCode.MISCONFIGURED_INCREMENTAL_HYDRATION */, 'Angular has detected that some `@defer` blocks use `hydrate` triggers, ' +
4499
4504
  'but incremental hydration was not enabled. Please ensure that the `withIncrementalHydration()` ' +
4500
4505
  'call is added as an argument for the `provideClientHydration()` function call ' +
4501
- 'in your application config.');
4506
+ 'in your application config.'));
4502
4507
  }
4503
4508
  }
4504
4509
  /** Throws an error if the ssrUniqueId on the LDeferBlockDetails is not present */
@@ -7213,6 +7218,8 @@ function ensureIcuContainerVisitorLoaded(loader) {
7213
7218
 
7214
7219
  /** Parses a CSS time value to milliseconds. */
7215
7220
  function parseCssTimeUnitsToMs(value) {
7221
+ if (!value)
7222
+ return 0;
7216
7223
  // Some browsers will return it in seconds, whereas others will return milliseconds.
7217
7224
  const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
7218
7225
  return parseFloat(value) * multiplier;
@@ -7323,11 +7330,54 @@ function determineLongestAnimationFromElementAnimations(el, animationsMap, anima
7323
7330
  }
7324
7331
  const allLeavingAnimations = new Set();
7325
7332
 
7333
+ /**
7334
+ * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
7335
+ */
7336
+ const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
7337
+ providedIn: 'root',
7338
+ factory: () => false,
7339
+ });
7340
+ /**
7341
+ * A [DI token](api/core/InjectionToken) for the queue of all animations.
7342
+ */
7343
+ const ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationQueue' : '', {
7344
+ providedIn: 'root',
7345
+ factory: () => {
7346
+ return {
7347
+ queue: new Set(),
7348
+ isScheduled: false,
7349
+ };
7350
+ },
7351
+ });
7352
+ /**
7353
+ * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
7354
+ * before element removal. The default value mirrors from Chrome's cross document
7355
+ * navigation view transition timeout. It's intended to prevent people from accidentally
7356
+ * forgetting to call the removal function in their callback. Also serves as a delay
7357
+ * for when stylesheets are pruned.
7358
+ *
7359
+ * @publicApi 20.2
7360
+ */
7361
+ const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
7362
+ providedIn: 'root',
7363
+ factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
7364
+ });
7365
+ const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
7366
+
7367
+ function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
7368
+ const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
7369
+ if (parent !== null && enterAnimations && enterAnimations.has(tNode.index)) {
7370
+ const animationQueue = injector.get(ANIMATION_QUEUE);
7371
+ for (const animateFn of enterAnimations.get(tNode.index).animateFns) {
7372
+ animationQueue.queue.add(animateFn);
7373
+ }
7374
+ }
7375
+ }
7326
7376
  /**
7327
7377
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
7328
7378
  * being passed as an argument.
7329
7379
  */
7330
- function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode, parentLView) {
7380
+ function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
7331
7381
  // If this slot was allocated for a text node dynamically created by i18n, the text node itself
7332
7382
  // won't be created until i18nApply() in the update block, so this node should be skipped.
7333
7383
  // For more info, see "ICU expressions should work inside an ngTemplateOutlet inside an ngFor"
@@ -7348,6 +7398,7 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7348
7398
  }
7349
7399
  const rNode = unwrapRNode(lNodeToHandle);
7350
7400
  if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
7401
+ maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
7351
7402
  if (beforeNode == null) {
7352
7403
  nativeAppendChild(renderer, parent, rNode);
7353
7404
  }
@@ -7356,10 +7407,11 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7356
7407
  }
7357
7408
  }
7358
7409
  else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {
7410
+ maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
7359
7411
  nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
7360
7412
  }
7361
7413
  else if (action === 2 /* WalkTNodeTreeAction.Detach */) {
7362
- runLeaveAnimationsWithCallback(parentLView, (nodeHasLeaveAnimations) => {
7414
+ runLeaveAnimationsWithCallback(parentLView, tNode, injector, (nodeHasLeaveAnimations) => {
7363
7415
  // the nodeHasLeaveAnimations indicates to the renderer that the element needs to
7364
7416
  // be removed synchronously and sets the requireSynchronousElementRemoval flag in
7365
7417
  // the renderer.
@@ -7367,15 +7419,26 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7367
7419
  });
7368
7420
  }
7369
7421
  else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {
7370
- runLeaveAnimationsWithCallback(parentLView, () => {
7422
+ runLeaveAnimationsWithCallback(parentLView, tNode, injector, () => {
7371
7423
  renderer.destroyNode(rNode);
7372
7424
  });
7373
7425
  }
7374
7426
  if (lContainer != null) {
7375
- applyContainer(renderer, action, lContainer, parent, beforeNode);
7427
+ applyContainer(renderer, action, injector, lContainer, tNode, parent, beforeNode);
7376
7428
  }
7377
7429
  }
7378
7430
  }
7431
+ function addToAnimationQueue(injector, animationFns) {
7432
+ const animationQueue = injector.get(ANIMATION_QUEUE);
7433
+ if (Array.isArray(animationFns)) {
7434
+ for (const animateFn of animationFns) {
7435
+ animationQueue.queue.add(animateFn);
7436
+ }
7437
+ }
7438
+ else {
7439
+ animationQueue.queue.add(animationFns);
7440
+ }
7441
+ }
7379
7442
  /**
7380
7443
  * Removes all DOM elements associated with a view.
7381
7444
  *
@@ -7549,30 +7612,48 @@ function cleanUpView(tView, lView) {
7549
7612
  setActiveConsumer(prevConsumer);
7550
7613
  }
7551
7614
  }
7552
- function runLeaveAnimationsWithCallback(lView, callback) {
7553
- if (lView && lView[ANIMATIONS] && lView[ANIMATIONS].leave) {
7554
- if (lView[ANIMATIONS].skipLeaveAnimations) {
7555
- lView[ANIMATIONS].skipLeaveAnimations = false;
7556
- }
7557
- else {
7558
- const leaveAnimations = lView[ANIMATIONS].leave;
7615
+ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
7616
+ const animations = lView?.[ANIMATIONS];
7617
+ if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index))
7618
+ return callback(false);
7619
+ // this is solely for move operations to prevent leave animations from running
7620
+ // on the moved nodes, which would have deleted the node.
7621
+ if (animations.skipLeaveAnimations) {
7622
+ animations.skipLeaveAnimations = false;
7623
+ return callback(false);
7624
+ }
7625
+ if (lView)
7626
+ allLeavingAnimations.add(lView);
7627
+ addToAnimationQueue(injector, () => {
7628
+ // it's possible that in the time between when the leave animation was
7629
+ // and the time it was executed, the data structure changed. So we need
7630
+ // to be safe here.
7631
+ if (animations.leave && animations.leave.has(tNode.index)) {
7632
+ const leaveAnimationMap = animations.leave;
7633
+ const leaveAnimations = leaveAnimationMap.get(tNode.index);
7559
7634
  const runningAnimations = [];
7560
- for (let index = 0; index < leaveAnimations.length; index++) {
7561
- const animateFn = leaveAnimations[index];
7562
- runningAnimations.push(animateFn());
7635
+ if (leaveAnimations) {
7636
+ for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
7637
+ const animationFn = leaveAnimations.animateFns[index];
7638
+ const { promise } = animationFn();
7639
+ runningAnimations.push(promise);
7640
+ }
7563
7641
  }
7564
- lView[ANIMATIONS].running = Promise.allSettled(runningAnimations);
7565
- lView[ANIMATIONS].leave = undefined;
7642
+ animations.running = Promise.allSettled(runningAnimations);
7643
+ runAfterLeaveAnimations(lView, callback);
7566
7644
  }
7567
- }
7568
- runAfterLeaveAnimations(lView, callback);
7645
+ else {
7646
+ if (lView)
7647
+ allLeavingAnimations.delete(lView);
7648
+ callback(false);
7649
+ }
7650
+ });
7569
7651
  }
7570
7652
  function runAfterLeaveAnimations(lView, callback) {
7571
- if (lView && lView[ANIMATIONS] && lView[ANIMATIONS].running) {
7572
- lView[ANIMATIONS].running.then(() => {
7573
- if (lView[ANIMATIONS] && lView[ANIMATIONS].running) {
7574
- lView[ANIMATIONS].running = undefined;
7575
- }
7653
+ const runningAnimations = lView[ANIMATIONS]?.running;
7654
+ if (runningAnimations) {
7655
+ runningAnimations.then(() => {
7656
+ lView[ANIMATIONS].running = undefined;
7576
7657
  allLeavingAnimations.delete(lView);
7577
7658
  callback(true);
7578
7659
  });
@@ -7899,6 +7980,7 @@ function getBeforeNodeForView(viewIndexInContainer, lContainer) {
7899
7980
  function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) {
7900
7981
  while (tNode != null) {
7901
7982
  ngDevMode && assertTNodeForLView(tNode, lView);
7983
+ const injector = lView[INJECTOR];
7902
7984
  // Let declarations don't have corresponding DOM nodes so we skip over them.
7903
7985
  if (tNode.type === 128 /* TNodeType.LetDeclaration */) {
7904
7986
  tNode = tNode.next;
@@ -7917,22 +7999,22 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
7917
7999
  if (!isDetachedByI18n(tNode)) {
7918
8000
  if (tNodeType & 8 /* TNodeType.ElementContainer */) {
7919
8001
  applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);
7920
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8002
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7921
8003
  }
7922
8004
  else if (tNodeType & 32 /* TNodeType.Icu */) {
7923
8005
  const nextRNode = icuContainerIterate(tNode, lView);
7924
8006
  let rNode;
7925
8007
  while ((rNode = nextRNode())) {
7926
- applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
8008
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rNode, tNode, beforeNode, lView);
7927
8009
  }
7928
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8010
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7929
8011
  }
7930
8012
  else if (tNodeType & 16 /* TNodeType.Projection */) {
7931
8013
  applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
7932
8014
  }
7933
8015
  else {
7934
8016
  ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
7935
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8017
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7936
8018
  }
7937
8019
  }
7938
8020
  tNode = isProjection ? tNode.projectionNext : tNode.next;
@@ -7986,7 +8068,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
7986
8068
  // This should be refactored and cleaned up.
7987
8069
  for (let i = 0; i < nodeToProjectOrRNodes.length; i++) {
7988
8070
  const rNode = nodeToProjectOrRNodes[i];
7989
- applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
8071
+ applyToElementOrContainer(action, renderer, lView[INJECTOR], parentRElement, rNode, tProjectionNode, beforeNode, lView);
7990
8072
  }
7991
8073
  }
7992
8074
  else {
@@ -8013,7 +8095,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
8013
8095
  * @param parentRElement parent DOM element for insertion/removal.
8014
8096
  * @param beforeNode Before which node the insertions should happen.
8015
8097
  */
8016
- function applyContainer(renderer, action, lContainer, parentRElement, beforeNode) {
8098
+ function applyContainer(renderer, action, injector, lContainer, tNode, parentRElement, beforeNode) {
8017
8099
  ngDevMode && assertLContainer(lContainer);
8018
8100
  const anchor = lContainer[NATIVE]; // LContainer has its own before node.
8019
8101
  const native = unwrapRNode(lContainer);
@@ -8028,7 +8110,7 @@ function applyContainer(renderer, action, lContainer, parentRElement, beforeNode
8028
8110
  // don't see a reason why they should be different, but they are.
8029
8111
  //
8030
8112
  // If they are we need to process the second anchor as well.
8031
- applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode);
8113
+ applyToElementOrContainer(action, renderer, injector, parentRElement, anchor, tNode, beforeNode);
8032
8114
  }
8033
8115
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
8034
8116
  const lView = lContainer[i];
@@ -9126,7 +9208,6 @@ function refreshView(tView, lView, templateFn, context) {
9126
9208
  if (templateFn !== null) {
9127
9209
  executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);
9128
9210
  }
9129
- runEnterAnimations(lView);
9130
9211
  const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
9131
9212
  // execute pre-order hooks (OnInit, OnChanges, DoCheck)
9132
9213
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
@@ -9254,15 +9335,6 @@ function refreshView(tView, lView, templateFn, context) {
9254
9335
  leaveView();
9255
9336
  }
9256
9337
  }
9257
- function runEnterAnimations(lView) {
9258
- const animationData = lView[ANIMATIONS];
9259
- if (animationData?.enter) {
9260
- for (const animateFn of animationData.enter) {
9261
- animateFn();
9262
- }
9263
- animationData.enter = undefined;
9264
- }
9265
- }
9266
9338
  /**
9267
9339
  * Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
9268
9340
  * them by executing an associated template function.
@@ -13691,7 +13763,7 @@ class ComponentFactory extends ComponentFactory$1 {
13691
13763
  }
13692
13764
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
13693
13765
  const tAttributes = rootSelectorOrNode
13694
- ? ['ng-version', '20.3.3']
13766
+ ? ['ng-version', '20.3.5']
13695
13767
  : // Extract attributes and classes from the first selector only to match VE behavior.
13696
13768
  extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
13697
13769
  let creationBindings = null;
@@ -21282,14 +21354,15 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
21282
21354
  const adjustedIndex = index + HEADER_OFFSET;
21283
21355
  const tNode = declareNoDirectiveHostTemplate(lView, tView, index, null, 0, 0);
21284
21356
  const injector = lView[INJECTOR];
21357
+ const incrementalHydrationEnabled = isIncrementalHydrationEnabled(injector);
21285
21358
  if (tView.firstCreatePass) {
21286
21359
  performanceMarkFeature('NgDefer');
21287
21360
  if (ngDevMode) {
21288
21361
  if (typeof ngHmrMode !== 'undefined' && ngHmrMode) {
21289
21362
  logHmrWarning(injector);
21290
21363
  }
21291
- if (hasHydrateTriggers(flags)) {
21292
- assertIncrementalHydrationIsConfigured(injector);
21364
+ if (hasHydrateTriggers(flags) && !incrementalHydrationEnabled) {
21365
+ warnIncrementalHydrationNotConfigured();
21293
21366
  }
21294
21367
  }
21295
21368
  const tDetails = {
@@ -21337,7 +21410,7 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
21337
21410
  ];
21338
21411
  setLDeferBlockDetails(lView, adjustedIndex, lDetails);
21339
21412
  let registry = null;
21340
- if (ssrUniqueId !== null) {
21413
+ if (ssrUniqueId !== null && incrementalHydrationEnabled) {
21341
21414
  // Store this defer block in the registry, to have an access to
21342
21415
  // internal data structures from hydration runtime code.
21343
21416
  registry = injector.get(DEHYDRATED_BLOCK_REGISTRY);
@@ -21888,28 +21961,6 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
21888
21961
  return ɵɵattribute;
21889
21962
  }
21890
21963
 
21891
- /**
21892
- * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
21893
- */
21894
- const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
21895
- providedIn: 'root',
21896
- factory: () => false,
21897
- });
21898
- /**
21899
- * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
21900
- * before element removal. The default value mirrors from Chrome's cross document
21901
- * navigation view transition timeout. It's intended to prevent people from accidentally
21902
- * forgetting to call the removal function in their callback. Also serves as a delay
21903
- * for when stylesheets are pruned.
21904
- *
21905
- * @publicApi 20.2
21906
- */
21907
- const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
21908
- providedIn: 'root',
21909
- factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
21910
- });
21911
- const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
21912
-
21913
21964
  const DEFAULT_ANIMATIONS_DISABLED = false;
21914
21965
  const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
21915
21966
  typeof document !== 'undefined' &&
@@ -22039,14 +22090,14 @@ function trackLeavingNodes(tNode, el) {
22039
22090
  */
22040
22091
  function getLViewEnterAnimations(lView) {
22041
22092
  const animationData = (lView[ANIMATIONS] ??= {});
22042
- return (animationData.enter ??= []);
22093
+ return (animationData.enter ??= new Map());
22043
22094
  }
22044
22095
  /**
22045
22096
  * Retrieves the list of specified leave animations from the lView
22046
22097
  */
22047
22098
  function getLViewLeaveAnimations(lView) {
22048
22099
  const animationData = (lView[ANIMATIONS] ??= {});
22049
- return (animationData.leave ??= []);
22100
+ return (animationData.leave ??= new Map());
22050
22101
  }
22051
22102
  /**
22052
22103
  * Gets the list of classes from a passed in value
@@ -22100,13 +22151,48 @@ function elementHasClassList(element, classList) {
22100
22151
  */
22101
22152
  function isLongestAnimation(event, nativeElement) {
22102
22153
  const longestAnimation = longestAnimations.get(nativeElement);
22154
+ // If we don't have any record of a longest animation, then we shouldn't
22155
+ // block the animationend/transitionend event from doing its work.
22156
+ if (longestAnimation === undefined)
22157
+ return true;
22103
22158
  return (nativeElement === event.target &&
22104
- longestAnimation !== undefined &&
22105
22159
  ((longestAnimation.animationName !== undefined &&
22106
22160
  event.animationName === longestAnimation.animationName) ||
22107
22161
  (longestAnimation.propertyName !== undefined &&
22108
22162
  event.propertyName === longestAnimation.propertyName)));
22109
22163
  }
22164
+ /**
22165
+ * Stores a given animation function in the LView's animation map for later execution
22166
+ *
22167
+ * @param animations Either the enter or leave animation map from the LView
22168
+ * @param tNode The TNode the animation is associated with
22169
+ * @param fn The animation function to be called later
22170
+ */
22171
+ function addAnimationToLView(animations, tNode, fn) {
22172
+ const nodeAnimations = animations.get(tNode.index) ?? { animateFns: [] };
22173
+ nodeAnimations.animateFns.push(fn);
22174
+ animations.set(tNode.index, nodeAnimations);
22175
+ }
22176
+ function cleanupAfterLeaveAnimations(resolvers, cleanupFns) {
22177
+ if (resolvers) {
22178
+ for (const fn of resolvers) {
22179
+ fn();
22180
+ }
22181
+ }
22182
+ for (const fn of cleanupFns) {
22183
+ fn();
22184
+ }
22185
+ }
22186
+ function clearLViewNodeAnimationResolvers(lView, tNode) {
22187
+ const nodeAnimations = getLViewLeaveAnimations(lView).get(tNode.index);
22188
+ if (nodeAnimations)
22189
+ nodeAnimations.resolvers = undefined;
22190
+ }
22191
+ function leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns) {
22192
+ clearLeavingNodes(tNode, nativeElement);
22193
+ cleanupAfterLeaveAnimations(resolvers, cleanupFns);
22194
+ clearLViewNodeAnimationResolvers(lView, tNode);
22195
+ }
22110
22196
 
22111
22197
  /**
22112
22198
  * Instruction to handle the `animate.enter` behavior for class bindings.
@@ -22128,7 +22214,8 @@ function ɵɵanimateEnter(value) {
22128
22214
  }
22129
22215
  const tNode = getCurrentTNode();
22130
22216
  cancelLeavingNodes(tNode, lView);
22131
- getLViewEnterAnimations(lView).push(() => runEnterAnimation(lView, tNode, value));
22217
+ addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimation(lView, tNode, value));
22218
+ queueEnterAnimations(lView);
22132
22219
  return ɵɵanimateEnter; // For chaining
22133
22220
  }
22134
22221
  function runEnterAnimation(lView, tNode, value) {
@@ -22150,7 +22237,7 @@ function runEnterAnimation(lView, tNode, value) {
22150
22237
  return;
22151
22238
  const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
22152
22239
  ngZone.runOutsideAngular(() => {
22153
- cleanupFns.push(renderer.listen(nativeElement, eventName, handleEnterAnimationEnd));
22240
+ renderer.listen(nativeElement, eventName, handleEnterAnimationEnd);
22154
22241
  });
22155
22242
  };
22156
22243
  // When the longest animation ends, we can remove all the classes
@@ -22224,7 +22311,8 @@ function ɵɵanimateEnterListener(value) {
22224
22311
  }
22225
22312
  const tNode = getCurrentTNode();
22226
22313
  cancelLeavingNodes(tNode, lView);
22227
- getLViewEnterAnimations(lView).push(() => runEnterAnimationFunction(lView, tNode, value));
22314
+ addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimationFunction(lView, tNode, value));
22315
+ queueEnterAnimations(lView);
22228
22316
  return ɵɵanimateEnterListener;
22229
22317
  }
22230
22318
  /**
@@ -22257,36 +22345,35 @@ function ɵɵanimateLeave(value) {
22257
22345
  return ɵɵanimateLeave;
22258
22346
  }
22259
22347
  const tNode = getCurrentTNode();
22260
- getLViewLeaveAnimations(lView).push(() => runLeaveAnimations(lView, tNode, value, animationsDisabled));
22348
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimations(lView, tNode, value));
22349
+ enableAnimationQueueScheduler(lView[INJECTOR]);
22261
22350
  return ɵɵanimateLeave; // For chaining
22262
22351
  }
22263
- function runLeaveAnimations(lView, tNode, value, animationsDisabled) {
22352
+ function runLeaveAnimations(lView, tNode, value) {
22264
22353
  const { promise, resolve } = promiseWithResolvers();
22265
22354
  const nativeElement = getNativeByTNode(tNode, lView);
22266
22355
  ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
22267
22356
  const renderer = lView[RENDERER];
22268
22357
  const ngZone = lView[INJECTOR].get(NgZone);
22269
22358
  allLeavingAnimations.add(lView);
22359
+ (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
22270
22360
  const activeClasses = getClassListFromValue(value);
22271
22361
  if (activeClasses && activeClasses.length > 0) {
22272
- animateLeaveClassRunner(nativeElement, tNode, activeClasses, renderer, animationsDisabled, ngZone, resolve);
22362
+ animateLeaveClassRunner(nativeElement, tNode, lView, activeClasses, renderer, ngZone);
22273
22363
  }
22274
22364
  else {
22275
22365
  resolve();
22276
22366
  }
22277
- return promise;
22367
+ return { promise, resolve };
22278
22368
  }
22279
22369
  /**
22280
22370
  * This function actually adds the classes that animate element that's leaving the DOM.
22281
22371
  * Once it finishes, it calls the remove function that was provided by the DOM renderer.
22282
22372
  */
22283
- function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisabled, ngZone, resolver) {
22284
- if (animationsDisabled) {
22285
- longestAnimations.delete(el);
22286
- resolver();
22287
- return;
22288
- }
22373
+ function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone) {
22289
22374
  cancelAnimationsIfRunning(el, renderer);
22375
+ const cleanupFns = [];
22376
+ const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
22290
22377
  const handleOutAnimationEnd = (event) => {
22291
22378
  // this early exit case is to prevent issues with bubbling events that are from child element animations
22292
22379
  if (event.target !== el)
@@ -22307,12 +22394,13 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
22307
22394
  renderer.removeClass(el, item);
22308
22395
  }
22309
22396
  }
22397
+ cleanupAfterLeaveAnimations(resolvers, cleanupFns);
22398
+ clearLViewNodeAnimationResolvers(lView, tNode);
22310
22399
  }
22311
- resolver();
22312
22400
  };
22313
22401
  ngZone.runOutsideAngular(() => {
22314
- renderer.listen(el, 'animationend', handleOutAnimationEnd);
22315
- renderer.listen(el, 'transitionend', handleOutAnimationEnd);
22402
+ cleanupFns.push(renderer.listen(el, 'animationend', handleOutAnimationEnd));
22403
+ cleanupFns.push(renderer.listen(el, 'transitionend', handleOutAnimationEnd));
22316
22404
  });
22317
22405
  trackLeavingNodes(tNode, el);
22318
22406
  for (const item of classList) {
@@ -22326,7 +22414,8 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
22326
22414
  determineLongestAnimation(el, longestAnimations, areAnimationSupported);
22327
22415
  if (!longestAnimations.has(el)) {
22328
22416
  clearLeavingNodes(tNode, el);
22329
- resolver();
22417
+ cleanupAfterLeaveAnimations(resolvers, cleanupFns);
22418
+ clearLViewNodeAnimationResolvers(lView, tNode);
22330
22419
  }
22331
22420
  });
22332
22421
  });
@@ -22354,7 +22443,8 @@ function ɵɵanimateLeaveListener(value) {
22354
22443
  const lView = getLView();
22355
22444
  const tNode = getCurrentTNode();
22356
22445
  allLeavingAnimations.add(lView);
22357
- getLViewLeaveAnimations(lView).push(() => runLeaveAnimationFunction(lView, tNode, value));
22446
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value));
22447
+ enableAnimationQueueScheduler(lView[INJECTOR]);
22358
22448
  return ɵɵanimateLeaveListener; // For chaining
22359
22449
  }
22360
22450
  /**
@@ -22364,36 +22454,65 @@ function runLeaveAnimationFunction(lView, tNode, value) {
22364
22454
  const { promise, resolve } = promiseWithResolvers();
22365
22455
  const nativeElement = getNativeByTNode(tNode, lView);
22366
22456
  ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
22457
+ const cleanupFns = [];
22367
22458
  const renderer = lView[RENDERER];
22368
22459
  const animationsDisabled = areAnimationsDisabled(lView);
22369
22460
  const ngZone = lView[INJECTOR].get(NgZone);
22370
22461
  const maxAnimationTimeout = lView[INJECTOR].get(MAX_ANIMATION_TIMEOUT);
22462
+ (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
22463
+ const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
22371
22464
  if (animationsDisabled) {
22372
- resolve();
22465
+ leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
22373
22466
  }
22374
22467
  else {
22375
- const timeoutId = setTimeout(() => {
22376
- clearLeavingNodes(tNode, nativeElement);
22377
- resolve();
22378
- }, maxAnimationTimeout);
22468
+ const timeoutId = setTimeout(() => leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns), maxAnimationTimeout);
22379
22469
  const event = {
22380
22470
  target: nativeElement,
22381
22471
  animationComplete: () => {
22382
- clearLeavingNodes(tNode, nativeElement);
22472
+ leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
22383
22473
  clearTimeout(timeoutId);
22384
- resolve();
22385
22474
  },
22386
22475
  };
22387
22476
  trackLeavingNodes(tNode, nativeElement);
22388
22477
  ngZone.runOutsideAngular(() => {
22389
- renderer.listen(nativeElement, 'animationend', () => {
22390
- resolve();
22391
- }, { once: true });
22478
+ cleanupFns.push(renderer.listen(nativeElement, 'animationend', () => {
22479
+ leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
22480
+ clearTimeout(timeoutId);
22481
+ }, { once: true }));
22392
22482
  });
22393
22483
  value.call(lView[CONTEXT], event);
22394
22484
  }
22395
22485
  // Ensure cleanup if the LView is destroyed before the animation runs.
22396
- return promise;
22486
+ return { promise, resolve };
22487
+ }
22488
+ function queueEnterAnimations(lView) {
22489
+ enableAnimationQueueScheduler(lView[INJECTOR]);
22490
+ const enterAnimations = lView[ANIMATIONS]?.enter;
22491
+ if (enterAnimations) {
22492
+ const animationQueue = lView[INJECTOR].get(ANIMATION_QUEUE);
22493
+ for (const [_, nodeAnimations] of enterAnimations) {
22494
+ for (const animateFn of nodeAnimations.animateFns) {
22495
+ animationQueue.queue.add(animateFn);
22496
+ }
22497
+ }
22498
+ }
22499
+ }
22500
+ function enableAnimationQueueScheduler(injector) {
22501
+ const animationQueue = injector.get(ANIMATION_QUEUE);
22502
+ // We only need to schedule the animation queue runner once per application.
22503
+ if (!animationQueue.isScheduled) {
22504
+ afterEveryRender(() => {
22505
+ runQueuedAnimations(injector);
22506
+ }, { injector });
22507
+ animationQueue.isScheduled = true;
22508
+ }
22509
+ }
22510
+ function runQueuedAnimations(injector) {
22511
+ const animationQueue = injector.get(ANIMATION_QUEUE);
22512
+ for (let animateFn of animationQueue.queue) {
22513
+ animateFn();
22514
+ }
22515
+ animationQueue.queue.clear();
22397
22516
  }
22398
22517
 
22399
22518
  /*!
@@ -31838,5 +31957,5 @@ function getDebugNode(nativeNode) {
31838
31957
  return null;
31839
31958
  }
31840
31959
 
31841
- 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, 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, allLeavingAnimations, 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, ɵɵ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 };
31960
+ 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, 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, allLeavingAnimations, 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, resetIncrementalHydrationEnabledWarnedForTests, 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, ɵɵ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 };
31842
31961
  //# sourceMappingURL=debug_node.mjs.map