@angular/core 21.0.0-next.5 → 21.0.0-next.7

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 (87) hide show
  1. package/fesm2022/{attribute.mjs → _attribute-chunk.mjs} +3 -3
  2. package/fesm2022/_attribute-chunk.mjs.map +1 -0
  3. package/fesm2022/{debug_node.mjs → _debug_node-chunk.mjs} +606 -92
  4. package/fesm2022/_debug_node-chunk.mjs.map +1 -0
  5. package/fesm2022/{effect.mjs → _effect-chunk.mjs} +4 -4
  6. package/fesm2022/_effect-chunk.mjs.map +1 -0
  7. package/fesm2022/{not_found.mjs → _not_found-chunk.mjs} +3 -3
  8. package/fesm2022/_not_found-chunk.mjs.map +1 -0
  9. package/fesm2022/{resource.mjs → _resource-chunk.mjs} +6 -6
  10. package/fesm2022/_resource-chunk.mjs.map +1 -0
  11. package/fesm2022/{root_effect_scheduler.mjs → _root_effect_scheduler-chunk.mjs} +6 -6
  12. package/fesm2022/_root_effect_scheduler-chunk.mjs.map +1 -0
  13. package/fesm2022/{signal.mjs → _signal-chunk.mjs} +10 -10
  14. package/fesm2022/_signal-chunk.mjs.map +1 -0
  15. package/fesm2022/{weak_ref.mjs → _weak_ref-chunk.mjs} +3 -3
  16. package/fesm2022/_weak_ref-chunk.mjs.map +1 -0
  17. package/fesm2022/core.mjs +14 -14
  18. package/fesm2022/core.mjs.map +1 -1
  19. package/fesm2022/{primitives/di.mjs → primitives-di.mjs} +4 -4
  20. package/fesm2022/primitives-di.mjs.map +1 -0
  21. package/fesm2022/{primitives/event-dispatch.mjs → primitives-event-dispatch.mjs} +4 -4
  22. package/fesm2022/primitives-event-dispatch.mjs.map +1 -0
  23. package/fesm2022/primitives-signals.mjs +221 -0
  24. package/fesm2022/primitives-signals.mjs.map +1 -0
  25. package/fesm2022/rxjs-interop.mjs +7 -7
  26. package/fesm2022/rxjs-interop.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +7 -7
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/package.json +12 -12
  30. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +5 -5
  31. package/schematics/bundles/application-config-core.cjs +5 -5
  32. package/schematics/bundles/{apply_import_manager-Bx60Uquz.cjs → apply_import_manager-D_4NSuRa.cjs} +3 -3
  33. package/schematics/bundles/bootstrap-options-migration.cjs +5 -5
  34. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  35. package/schematics/bundles/{compiler_host-Aouk-n4F.cjs → compiler_host-C1KRWoxv.cjs} +2 -2
  36. package/schematics/bundles/control-flow-migration.cjs +22 -21
  37. package/schematics/bundles/imports-DwPXlGFl.cjs +1 -1
  38. package/schematics/bundles/{index-Bb6iejCd.cjs → index-BFENxhdR.cjs} +32 -36
  39. package/schematics/bundles/{index-BZQb51Qf.cjs → index-DYqR8Lpq.cjs} +4 -6
  40. package/schematics/bundles/inject-migration.cjs +3 -3
  41. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  42. package/schematics/bundles/{migrate_ts_type_references-By2ZtKls.cjs → migrate_ts_type_references-CemH7A8e.cjs} +5 -5
  43. package/schematics/bundles/{ng_component_template-B4M8mTyv.cjs → ng_component_template-AYs8YXuT.cjs} +2 -2
  44. package/schematics/bundles/ng_decorators-BI0uV7KI.cjs +1 -1
  45. package/schematics/bundles/ngclass-to-class-migration.cjs +7 -7
  46. package/schematics/bundles/ngstyle-to-style-migration.cjs +7 -7
  47. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  48. package/schematics/bundles/output-migration.cjs +6 -6
  49. package/schematics/bundles/{parse_html-7Wl_HDnw.cjs → parse_html-6-AB4O-A.cjs} +2 -2
  50. package/schematics/bundles/{project_paths-Dr2s3Pq3.cjs → project_paths-EiOrjlNS.cjs} +3 -3
  51. package/schematics/bundles/{project_tsconfig_paths-DX9KHLn9.cjs → project_tsconfig_paths-BbVhi4fG.cjs} +156 -133
  52. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  53. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  54. package/schematics/bundles/router-current-navigation.cjs +4 -4
  55. package/schematics/bundles/router-last-successful-navigation.cjs +4 -4
  56. package/schematics/bundles/self-closing-tags-migration.cjs +6 -6
  57. package/schematics/bundles/signal-input-migration.cjs +67 -8
  58. package/schematics/bundles/signal-queries-migration.cjs +7 -7
  59. package/schematics/bundles/signals.cjs +7 -7
  60. package/schematics/bundles/standalone-migration.cjs +106 -46
  61. package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
  62. package/schematics/migrations.json +1 -2
  63. package/{api.d.d.ts → types/_api-chunk.d.ts} +3 -3
  64. package/{chrome_dev_tools_performance.d.d.ts → types/_chrome_dev_tools_performance-chunk.d.ts} +4 -4
  65. package/{discovery.d.d.ts → types/_discovery-chunk.d.ts} +15 -8
  66. package/{effect.d.d.ts → types/_effect-chunk.d.ts} +3 -3
  67. package/{event_dispatcher.d.d.ts → types/_event_dispatcher-chunk.d.ts} +2 -2
  68. package/{graph.d.d.ts → types/_formatter-chunk.d.ts} +15 -3
  69. package/{weak_ref.d.d.ts → types/_weak_ref-chunk.d.ts} +2 -2
  70. package/{index.d.ts → types/core.d.ts} +134 -16
  71. package/{primitives/di/index.d.ts → types/primitives-di.d.ts} +2 -2
  72. package/{primitives/event-dispatch/index.d.ts → types/primitives-event-dispatch.d.ts} +4 -4
  73. package/{primitives/signals/index.d.ts → types/primitives-signals.d.ts} +7 -7
  74. package/{rxjs-interop/index.d.ts → types/rxjs-interop.d.ts} +6 -6
  75. package/{testing/index.d.ts → types/testing.d.ts} +7 -7
  76. package/fesm2022/attribute.mjs.map +0 -1
  77. package/fesm2022/debug_node.mjs.map +0 -1
  78. package/fesm2022/effect.mjs.map +0 -1
  79. package/fesm2022/not_found.mjs.map +0 -1
  80. package/fesm2022/primitives/di.mjs.map +0 -1
  81. package/fesm2022/primitives/event-dispatch.mjs.map +0 -1
  82. package/fesm2022/primitives/signals.mjs +0 -88
  83. package/fesm2022/primitives/signals.mjs.map +0 -1
  84. package/fesm2022/resource.mjs.map +0 -1
  85. package/fesm2022/root_effect_scheduler.mjs.map +0 -1
  86. package/fesm2022/signal.mjs.map +0 -1
  87. package/fesm2022/weak_ref.mjs.map +0 -1
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.5
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.7
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, ENVIRONMENT_INITIALIZER, 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, NgZone, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, 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, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, scheduleCallbackWithMicrotask, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './root_effect_scheduler.mjs';
8
- import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './signal.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, ENVIRONMENT_INITIALIZER, 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, 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, NgZone, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, 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, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, scheduleCallbackWithMicrotask, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_root_effect_scheduler-chunk.mjs';
8
+ import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_signal-chunk.mjs';
9
9
  import { Subject, Subscription } from 'rxjs';
10
10
  import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
11
11
  import { map } from 'rxjs/operators';
12
- import { Attribute as Attribute$1 } from './attribute.mjs';
12
+ import { Attribute as Attribute$1 } from './_attribute-chunk.mjs';
13
13
 
14
14
  /**
15
15
  * Convince closure compiler that the wrapped function has no side-effects.
@@ -7225,6 +7225,8 @@ function ensureIcuContainerVisitorLoaded(loader) {
7225
7225
 
7226
7226
  /** Parses a CSS time value to milliseconds. */
7227
7227
  function parseCssTimeUnitsToMs(value) {
7228
+ if (!value)
7229
+ return 0;
7228
7230
  // Some browsers will return it in seconds, whereas others will return milliseconds.
7229
7231
  const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
7230
7232
  return parseFloat(value) * multiplier;
@@ -7335,11 +7337,54 @@ function determineLongestAnimationFromElementAnimations(el, animationsMap, anima
7335
7337
  }
7336
7338
  const allLeavingAnimations = new Set();
7337
7339
 
7340
+ /**
7341
+ * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
7342
+ */
7343
+ const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
7344
+ providedIn: 'root',
7345
+ factory: () => false,
7346
+ });
7347
+ /**
7348
+ * A [DI token](api/core/InjectionToken) for the queue of all animations.
7349
+ */
7350
+ const ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationQueue' : '', {
7351
+ providedIn: 'root',
7352
+ factory: () => {
7353
+ return {
7354
+ queue: new Set(),
7355
+ isScheduled: false,
7356
+ };
7357
+ },
7358
+ });
7359
+ /**
7360
+ * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
7361
+ * before element removal. The default value mirrors from Chrome's cross document
7362
+ * navigation view transition timeout. It's intended to prevent people from accidentally
7363
+ * forgetting to call the removal function in their callback. Also serves as a delay
7364
+ * for when stylesheets are pruned.
7365
+ *
7366
+ * @publicApi 20.2
7367
+ */
7368
+ const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
7369
+ providedIn: 'root',
7370
+ factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
7371
+ });
7372
+ const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
7373
+
7374
+ function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
7375
+ const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
7376
+ if (parent !== null && enterAnimations && enterAnimations.has(tNode.index)) {
7377
+ const animationQueue = injector.get(ANIMATION_QUEUE);
7378
+ for (const animateFn of enterAnimations.get(tNode.index).animateFns) {
7379
+ animationQueue.queue.add(animateFn);
7380
+ }
7381
+ }
7382
+ }
7338
7383
  /**
7339
7384
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
7340
7385
  * being passed as an argument.
7341
7386
  */
7342
- function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode, parentLView) {
7387
+ function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
7343
7388
  // If this slot was allocated for a text node dynamically created by i18n, the text node itself
7344
7389
  // won't be created until i18nApply() in the update block, so this node should be skipped.
7345
7390
  // For more info, see "ICU expressions should work inside an ngTemplateOutlet inside an ngFor"
@@ -7360,6 +7405,7 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7360
7405
  }
7361
7406
  const rNode = unwrapRNode(lNodeToHandle);
7362
7407
  if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
7408
+ maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
7363
7409
  if (beforeNode == null) {
7364
7410
  nativeAppendChild(renderer, parent, rNode);
7365
7411
  }
@@ -7368,10 +7414,11 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7368
7414
  }
7369
7415
  }
7370
7416
  else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {
7417
+ maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
7371
7418
  nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
7372
7419
  }
7373
7420
  else if (action === 2 /* WalkTNodeTreeAction.Detach */) {
7374
- runLeaveAnimationsWithCallback(parentLView, (nodeHasLeaveAnimations) => {
7421
+ runLeaveAnimationsWithCallback(parentLView, tNode, injector, (nodeHasLeaveAnimations) => {
7375
7422
  // the nodeHasLeaveAnimations indicates to the renderer that the element needs to
7376
7423
  // be removed synchronously and sets the requireSynchronousElementRemoval flag in
7377
7424
  // the renderer.
@@ -7379,14 +7426,25 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7379
7426
  });
7380
7427
  }
7381
7428
  else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {
7382
- runLeaveAnimationsWithCallback(parentLView, () => {
7429
+ runLeaveAnimationsWithCallback(parentLView, tNode, injector, () => {
7383
7430
  renderer.destroyNode(rNode);
7384
7431
  });
7385
7432
  }
7386
7433
  if (lContainer != null) {
7387
- applyContainer(renderer, action, lContainer, parent, beforeNode);
7434
+ applyContainer(renderer, action, injector, lContainer, tNode, parent, beforeNode);
7435
+ }
7436
+ }
7437
+ }
7438
+ function addToAnimationQueue(injector, animationFns) {
7439
+ const animationQueue = injector.get(ANIMATION_QUEUE);
7440
+ if (Array.isArray(animationFns)) {
7441
+ for (const animateFn of animationFns) {
7442
+ animationQueue.queue.add(animateFn);
7388
7443
  }
7389
7444
  }
7445
+ else {
7446
+ animationQueue.queue.add(animationFns);
7447
+ }
7390
7448
  }
7391
7449
  /**
7392
7450
  * Removes all DOM elements associated with a view.
@@ -7561,30 +7619,46 @@ function cleanUpView(tView, lView) {
7561
7619
  setActiveConsumer(prevConsumer);
7562
7620
  }
7563
7621
  }
7564
- function runLeaveAnimationsWithCallback(lView, callback) {
7565
- if (lView && lView[ANIMATIONS] && lView[ANIMATIONS].leave) {
7566
- if (lView[ANIMATIONS].skipLeaveAnimations) {
7567
- lView[ANIMATIONS].skipLeaveAnimations = false;
7568
- }
7569
- else {
7570
- const leaveAnimations = lView[ANIMATIONS].leave;
7622
+ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
7623
+ const animations = lView?.[ANIMATIONS];
7624
+ if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index))
7625
+ return callback(false);
7626
+ // this is solely for move operations to prevent leave animations from running
7627
+ // on the moved nodes, which would have deleted the node.
7628
+ if (animations.skipLeaveAnimations) {
7629
+ animations.skipLeaveAnimations = false;
7630
+ return callback(false);
7631
+ }
7632
+ addToAnimationQueue(injector, () => {
7633
+ // it's possible that in the time between when the leave animation was
7634
+ // and the time it was executed, the data structure changed. So we need
7635
+ // to be safe here.
7636
+ if (animations.leave && animations.leave.has(tNode.index)) {
7637
+ const leaveAnimationMap = animations.leave;
7638
+ const leaveAnimations = leaveAnimationMap.get(tNode.index);
7571
7639
  const runningAnimations = [];
7572
- for (let index = 0; index < leaveAnimations.length; index++) {
7573
- const animateFn = leaveAnimations[index];
7574
- runningAnimations.push(animateFn());
7640
+ if (leaveAnimations) {
7641
+ for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
7642
+ const animationFn = leaveAnimations.animateFns[index];
7643
+ const { promise } = animationFn();
7644
+ runningAnimations.push(promise);
7645
+ }
7575
7646
  }
7576
- lView[ANIMATIONS].running = Promise.allSettled(runningAnimations);
7577
- lView[ANIMATIONS].leave = undefined;
7647
+ animations.running = Promise.allSettled(runningAnimations);
7648
+ runAfterLeaveAnimations(lView, callback);
7578
7649
  }
7579
- }
7580
- runAfterLeaveAnimations(lView, callback);
7650
+ else {
7651
+ if (lView)
7652
+ allLeavingAnimations.delete(lView);
7653
+ callback(false);
7654
+ }
7655
+ });
7581
7656
  }
7582
7657
  function runAfterLeaveAnimations(lView, callback) {
7583
- if (lView && lView[ANIMATIONS] && lView[ANIMATIONS].running) {
7584
- lView[ANIMATIONS].running.then(() => {
7585
- if (lView[ANIMATIONS] && lView[ANIMATIONS].running) {
7586
- lView[ANIMATIONS].running = undefined;
7587
- }
7658
+ const runningAnimations = lView[ANIMATIONS]?.running;
7659
+ if (runningAnimations) {
7660
+ runningAnimations.then(() => {
7661
+ lView[ANIMATIONS].running = undefined;
7588
7662
  allLeavingAnimations.delete(lView);
7589
7663
  callback(true);
7590
7664
  });
@@ -7911,6 +7985,7 @@ function getBeforeNodeForView(viewIndexInContainer, lContainer) {
7911
7985
  function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) {
7912
7986
  while (tNode != null) {
7913
7987
  ngDevMode && assertTNodeForLView(tNode, lView);
7988
+ const injector = lView[INJECTOR];
7914
7989
  // Let declarations don't have corresponding DOM nodes so we skip over them.
7915
7990
  if (tNode.type === 128 /* TNodeType.LetDeclaration */) {
7916
7991
  tNode = tNode.next;
@@ -7929,22 +8004,22 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
7929
8004
  if (!isDetachedByI18n(tNode)) {
7930
8005
  if (tNodeType & 8 /* TNodeType.ElementContainer */) {
7931
8006
  applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);
7932
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8007
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7933
8008
  }
7934
8009
  else if (tNodeType & 32 /* TNodeType.Icu */) {
7935
8010
  const nextRNode = icuContainerIterate(tNode, lView);
7936
8011
  let rNode;
7937
8012
  while ((rNode = nextRNode())) {
7938
- applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
8013
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rNode, tNode, beforeNode, lView);
7939
8014
  }
7940
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8015
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7941
8016
  }
7942
8017
  else if (tNodeType & 16 /* TNodeType.Projection */) {
7943
8018
  applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
7944
8019
  }
7945
8020
  else {
7946
8021
  ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
7947
- applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
8022
+ applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
7948
8023
  }
7949
8024
  }
7950
8025
  tNode = isProjection ? tNode.projectionNext : tNode.next;
@@ -7998,7 +8073,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
7998
8073
  // This should be refactored and cleaned up.
7999
8074
  for (let i = 0; i < nodeToProjectOrRNodes.length; i++) {
8000
8075
  const rNode = nodeToProjectOrRNodes[i];
8001
- applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
8076
+ applyToElementOrContainer(action, renderer, lView[INJECTOR], parentRElement, rNode, tProjectionNode, beforeNode, lView);
8002
8077
  }
8003
8078
  }
8004
8079
  else {
@@ -8025,7 +8100,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
8025
8100
  * @param parentRElement parent DOM element for insertion/removal.
8026
8101
  * @param beforeNode Before which node the insertions should happen.
8027
8102
  */
8028
- function applyContainer(renderer, action, lContainer, parentRElement, beforeNode) {
8103
+ function applyContainer(renderer, action, injector, lContainer, tNode, parentRElement, beforeNode) {
8029
8104
  ngDevMode && assertLContainer(lContainer);
8030
8105
  const anchor = lContainer[NATIVE]; // LContainer has its own before node.
8031
8106
  const native = unwrapRNode(lContainer);
@@ -8040,7 +8115,7 @@ function applyContainer(renderer, action, lContainer, parentRElement, beforeNode
8040
8115
  // don't see a reason why they should be different, but they are.
8041
8116
  //
8042
8117
  // If they are we need to process the second anchor as well.
8043
- applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode);
8118
+ applyToElementOrContainer(action, renderer, injector, parentRElement, anchor, tNode, beforeNode);
8044
8119
  }
8045
8120
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
8046
8121
  const lView = lContainer[i];
@@ -9140,7 +9215,6 @@ function refreshView(tView, lView, templateFn, context) {
9140
9215
  if (templateFn !== null) {
9141
9216
  executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);
9142
9217
  }
9143
- runEnterAnimations(lView);
9144
9218
  const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
9145
9219
  // execute pre-order hooks (OnInit, OnChanges, DoCheck)
9146
9220
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
@@ -9268,15 +9342,6 @@ function refreshView(tView, lView, templateFn, context) {
9268
9342
  leaveView();
9269
9343
  }
9270
9344
  }
9271
- function runEnterAnimations(lView) {
9272
- const animationData = lView[ANIMATIONS];
9273
- if (animationData?.enter) {
9274
- for (const animateFn of animationData.enter) {
9275
- animateFn();
9276
- }
9277
- animationData.enter = undefined;
9278
- }
9279
- }
9280
9345
  /**
9281
9346
  * Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
9282
9347
  * them by executing an associated template function.
@@ -13706,7 +13771,7 @@ class ComponentFactory extends ComponentFactory$1 {
13706
13771
  }
13707
13772
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
13708
13773
  const tAttributes = rootSelectorOrNode
13709
- ? ['ng-version', '21.0.0-next.5']
13774
+ ? ['ng-version', '21.0.0-next.7']
13710
13775
  : // Extract attributes and classes from the first selector only to match VE behavior.
13711
13776
  extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
13712
13777
  let creationBindings = null;
@@ -21283,28 +21348,6 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
21283
21348
  return ɵɵattribute;
21284
21349
  }
21285
21350
 
21286
- /**
21287
- * A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
21288
- */
21289
- const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
21290
- providedIn: 'root',
21291
- factory: () => false,
21292
- });
21293
- /**
21294
- * A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
21295
- * before element removal. The default value mirrors from Chrome's cross document
21296
- * navigation view transition timeout. It's intended to prevent people from accidentally
21297
- * forgetting to call the removal function in their callback. Also serves as a delay
21298
- * for when stylesheets are pruned.
21299
- *
21300
- * @publicApi 20.2
21301
- */
21302
- const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
21303
- providedIn: 'root',
21304
- factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
21305
- });
21306
- const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
21307
-
21308
21351
  const DEFAULT_ANIMATIONS_DISABLED = false;
21309
21352
  const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
21310
21353
  typeof document !== 'undefined' &&
@@ -21434,14 +21477,14 @@ function trackLeavingNodes(tNode, el) {
21434
21477
  */
21435
21478
  function getLViewEnterAnimations(lView) {
21436
21479
  const animationData = (lView[ANIMATIONS] ??= {});
21437
- return (animationData.enter ??= []);
21480
+ return (animationData.enter ??= new Map());
21438
21481
  }
21439
21482
  /**
21440
21483
  * Retrieves the list of specified leave animations from the lView
21441
21484
  */
21442
21485
  function getLViewLeaveAnimations(lView) {
21443
21486
  const animationData = (lView[ANIMATIONS] ??= {});
21444
- return (animationData.leave ??= []);
21487
+ return (animationData.leave ??= new Map());
21445
21488
  }
21446
21489
  /**
21447
21490
  * Gets the list of classes from a passed in value
@@ -21495,13 +21538,43 @@ function elementHasClassList(element, classList) {
21495
21538
  */
21496
21539
  function isLongestAnimation(event, nativeElement) {
21497
21540
  const longestAnimation = longestAnimations.get(nativeElement);
21541
+ // If we don't have any record of a longest animation, then we shouldn't
21542
+ // block the animationend/transitionend event from doing its work.
21543
+ if (longestAnimation === undefined)
21544
+ return true;
21498
21545
  return (nativeElement === event.target &&
21499
- longestAnimation !== undefined &&
21500
21546
  ((longestAnimation.animationName !== undefined &&
21501
21547
  event.animationName === longestAnimation.animationName) ||
21502
21548
  (longestAnimation.propertyName !== undefined &&
21503
21549
  event.propertyName === longestAnimation.propertyName)));
21504
21550
  }
21551
+ /**
21552
+ * Stores a given animation function in the LView's animation map for later execution
21553
+ *
21554
+ * @param animations Either the enter or leave animation map from the LView
21555
+ * @param tNode The TNode the animation is associated with
21556
+ * @param fn The animation function to be called later
21557
+ */
21558
+ function addAnimationToLView(animations, tNode, fn) {
21559
+ const nodeAnimations = animations.get(tNode.index) ?? { animateFns: [] };
21560
+ nodeAnimations.animateFns.push(fn);
21561
+ animations.set(tNode.index, nodeAnimations);
21562
+ }
21563
+ function cleanupAfterLeaveAnimations(resolvers, cleanupFns) {
21564
+ if (resolvers) {
21565
+ for (const fn of resolvers) {
21566
+ fn();
21567
+ }
21568
+ }
21569
+ for (const fn of cleanupFns) {
21570
+ fn();
21571
+ }
21572
+ }
21573
+ function clearLViewNodeAnimationResolvers(lView, tNode) {
21574
+ const nodeAnimations = getLViewLeaveAnimations(lView).get(tNode.index);
21575
+ if (nodeAnimations)
21576
+ nodeAnimations.resolvers = undefined;
21577
+ }
21505
21578
 
21506
21579
  /**
21507
21580
  * Instruction to handle the `animate.enter` behavior for class bindings.
@@ -21523,7 +21596,8 @@ function ɵɵanimateEnter(value) {
21523
21596
  }
21524
21597
  const tNode = getCurrentTNode();
21525
21598
  cancelLeavingNodes(tNode, lView);
21526
- getLViewEnterAnimations(lView).push(() => runEnterAnimation(lView, tNode, value));
21599
+ addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimation(lView, tNode, value));
21600
+ queueEnterAnimations(lView);
21527
21601
  return ɵɵanimateEnter; // For chaining
21528
21602
  }
21529
21603
  function runEnterAnimation(lView, tNode, value) {
@@ -21540,13 +21614,19 @@ function runEnterAnimation(lView, tNode, value) {
21540
21614
  // This also allows us to setup cancellation of animations in progress if the
21541
21615
  // gets removed early.
21542
21616
  const handleEnterAnimationStart = (event) => {
21617
+ // this early exit case is to prevent issues with bubbling events that are from child element animations
21618
+ if (event.target !== nativeElement)
21619
+ return;
21543
21620
  const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
21544
21621
  ngZone.runOutsideAngular(() => {
21545
- cleanupFns.push(renderer.listen(nativeElement, eventName, handleEnterAnimationEnd));
21622
+ renderer.listen(nativeElement, eventName, handleEnterAnimationEnd);
21546
21623
  });
21547
21624
  };
21548
21625
  // When the longest animation ends, we can remove all the classes
21549
21626
  const handleEnterAnimationEnd = (event) => {
21627
+ // this early exit case is to prevent issues with bubbling events that are from child element animations
21628
+ if (event.target !== nativeElement)
21629
+ return;
21550
21630
  enterAnimationEnd(event, nativeElement, renderer);
21551
21631
  };
21552
21632
  // We only need to add these event listeners if there are actual classes to apply
@@ -21577,7 +21657,8 @@ function runEnterAnimation(lView, tNode, value) {
21577
21657
  }
21578
21658
  function enterAnimationEnd(event, nativeElement, renderer) {
21579
21659
  const elementData = enterClassMap.get(nativeElement);
21580
- if (!elementData)
21660
+ // this event.target check is to prevent issues with bubbling events that are from child element animations
21661
+ if (event.target !== nativeElement || !elementData)
21581
21662
  return;
21582
21663
  if (isLongestAnimation(event, nativeElement)) {
21583
21664
  // Now that we've found the longest animation, there's no need
@@ -21612,7 +21693,8 @@ function ɵɵanimateEnterListener(value) {
21612
21693
  }
21613
21694
  const tNode = getCurrentTNode();
21614
21695
  cancelLeavingNodes(tNode, lView);
21615
- getLViewEnterAnimations(lView).push(() => runEnterAnimationFunction(lView, tNode, value));
21696
+ addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimationFunction(lView, tNode, value));
21697
+ queueEnterAnimations(lView);
21616
21698
  return ɵɵanimateEnterListener;
21617
21699
  }
21618
21700
  /**
@@ -21645,37 +21727,39 @@ function ɵɵanimateLeave(value) {
21645
21727
  return ɵɵanimateLeave;
21646
21728
  }
21647
21729
  const tNode = getCurrentTNode();
21648
- getLViewLeaveAnimations(lView).push(() => runLeaveAnimations(lView, tNode, value, animationsDisabled));
21730
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimations(lView, tNode, value));
21731
+ enableAnimationQueueScheduler(lView[INJECTOR]);
21649
21732
  return ɵɵanimateLeave; // For chaining
21650
21733
  }
21651
- function runLeaveAnimations(lView, tNode, value, animationsDisabled) {
21734
+ function runLeaveAnimations(lView, tNode, value) {
21652
21735
  const { promise, resolve } = promiseWithResolvers();
21653
21736
  const nativeElement = getNativeByTNode(tNode, lView);
21654
21737
  ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
21655
21738
  const renderer = lView[RENDERER];
21656
21739
  const ngZone = lView[INJECTOR].get(NgZone);
21657
21740
  allLeavingAnimations.add(lView);
21741
+ (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
21658
21742
  const activeClasses = getClassListFromValue(value);
21659
21743
  if (activeClasses && activeClasses.length > 0) {
21660
- animateLeaveClassRunner(nativeElement, tNode, activeClasses, renderer, animationsDisabled, ngZone, resolve);
21744
+ animateLeaveClassRunner(nativeElement, tNode, lView, activeClasses, renderer, ngZone);
21661
21745
  }
21662
21746
  else {
21663
21747
  resolve();
21664
21748
  }
21665
- return promise;
21749
+ return { promise, resolve };
21666
21750
  }
21667
21751
  /**
21668
21752
  * This function actually adds the classes that animate element that's leaving the DOM.
21669
21753
  * Once it finishes, it calls the remove function that was provided by the DOM renderer.
21670
21754
  */
21671
- function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisabled, ngZone, resolver) {
21672
- if (animationsDisabled) {
21673
- longestAnimations.delete(el);
21674
- resolver();
21675
- return;
21676
- }
21755
+ function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone) {
21677
21756
  cancelAnimationsIfRunning(el, renderer);
21757
+ const cleanupFns = [];
21758
+ const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
21678
21759
  const handleOutAnimationEnd = (event) => {
21760
+ // this early exit case is to prevent issues with bubbling events that are from child element animations
21761
+ if (event.target !== el)
21762
+ return;
21679
21763
  if (event instanceof CustomEvent || isLongestAnimation(event, el)) {
21680
21764
  // Now that we've found the longest animation, there's no need
21681
21765
  // to keep bubbling up this event as it's not going to apply to
@@ -21692,12 +21776,13 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
21692
21776
  renderer.removeClass(el, item);
21693
21777
  }
21694
21778
  }
21779
+ cleanupAfterLeaveAnimations(resolvers, cleanupFns);
21780
+ clearLViewNodeAnimationResolvers(lView, tNode);
21695
21781
  }
21696
- resolver();
21697
21782
  };
21698
21783
  ngZone.runOutsideAngular(() => {
21699
- renderer.listen(el, 'animationend', handleOutAnimationEnd);
21700
- renderer.listen(el, 'transitionend', handleOutAnimationEnd);
21784
+ cleanupFns.push(renderer.listen(el, 'animationend', handleOutAnimationEnd));
21785
+ cleanupFns.push(renderer.listen(el, 'transitionend', handleOutAnimationEnd));
21701
21786
  });
21702
21787
  trackLeavingNodes(tNode, el);
21703
21788
  for (const item of classList) {
@@ -21711,7 +21796,8 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
21711
21796
  determineLongestAnimation(el, longestAnimations, areAnimationSupported);
21712
21797
  if (!longestAnimations.has(el)) {
21713
21798
  clearLeavingNodes(tNode, el);
21714
- resolver();
21799
+ cleanupAfterLeaveAnimations(resolvers, cleanupFns);
21800
+ clearLViewNodeAnimationResolvers(lView, tNode);
21715
21801
  }
21716
21802
  });
21717
21803
  });
@@ -21739,7 +21825,8 @@ function ɵɵanimateLeaveListener(value) {
21739
21825
  const lView = getLView();
21740
21826
  const tNode = getCurrentTNode();
21741
21827
  allLeavingAnimations.add(lView);
21742
- getLViewLeaveAnimations(lView).push(() => runLeaveAnimationFunction(lView, tNode, value));
21828
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value));
21829
+ enableAnimationQueueScheduler(lView[INJECTOR]);
21743
21830
  return ɵɵanimateLeaveListener; // For chaining
21744
21831
  }
21745
21832
  /**
@@ -21780,6 +21867,35 @@ function runLeaveAnimationFunction(lView, tNode, value) {
21780
21867
  // Ensure cleanup if the LView is destroyed before the animation runs.
21781
21868
  return promise;
21782
21869
  }
21870
+ function queueEnterAnimations(lView) {
21871
+ enableAnimationQueueScheduler(lView[INJECTOR]);
21872
+ const enterAnimations = lView[ANIMATIONS]?.enter;
21873
+ if (enterAnimations) {
21874
+ const animationQueue = lView[INJECTOR].get(ANIMATION_QUEUE);
21875
+ for (const [_, nodeAnimations] of enterAnimations) {
21876
+ for (const animateFn of nodeAnimations.animateFns) {
21877
+ animationQueue.queue.add(animateFn);
21878
+ }
21879
+ }
21880
+ }
21881
+ }
21882
+ function enableAnimationQueueScheduler(injector) {
21883
+ const animationQueue = injector.get(ANIMATION_QUEUE);
21884
+ // We only need to schedule the animation queue runner once per application.
21885
+ if (!animationQueue.isScheduled) {
21886
+ afterEveryRender(() => {
21887
+ runQueuedAnimations(injector);
21888
+ }, { injector });
21889
+ animationQueue.isScheduled = true;
21890
+ }
21891
+ }
21892
+ function runQueuedAnimations(injector) {
21893
+ const animationQueue = injector.get(ANIMATION_QUEUE);
21894
+ for (let animateFn of animationQueue.queue) {
21895
+ animateFn();
21896
+ }
21897
+ animationQueue.queue.clear();
21898
+ }
21783
21899
 
21784
21900
  /*!
21785
21901
  * @license
@@ -21801,6 +21917,402 @@ function ɵɵcomponentInstance() {
21801
21917
  return instance;
21802
21918
  }
21803
21919
 
21920
+ /** A unique symbol used to identify {@link ɵControl} implementations. */
21921
+ const ɵCONTROL = Symbol('CONTROL');
21922
+
21923
+ /**
21924
+ * Possibly sets up a {@link ɵControl} to manage a native or custom form control.
21925
+ *
21926
+ * Setup occurs if a `control` input is bound to a {@link ɵControl} directive on the current node,
21927
+ * but not to a component. If a `control` input is bound to a component, we assume the component
21928
+ * will manage the control in its own template.
21929
+ *
21930
+ * @codeGenApi
21931
+ */
21932
+ function ɵɵcontrolCreate() {
21933
+ const lView = getLView();
21934
+ const tNode = getCurrentTNode();
21935
+ // TODO(https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131712274)
21936
+ // * cache the control directive index or instance for reuse.
21937
+ const control = getControlDirective(tNode, lView);
21938
+ if (!control) {
21939
+ return;
21940
+ }
21941
+ // TODO(https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131712274):
21942
+ // * cache the custom control component index or instance for reuse.
21943
+ // * cache the control model name for reuse.
21944
+ const customControl = getCustomControlComponent(tNode);
21945
+ if (customControl) {
21946
+ const [componentIndex, modelName] = customControl;
21947
+ listenToCustomControl(lView, tNode, control, componentIndex, modelName);
21948
+ }
21949
+ else if (isNativeControl(lView, tNode)) {
21950
+ listenToNativeControl(lView, tNode, control);
21951
+ }
21952
+ else {
21953
+ // For example, user wrote <div [control]="f">.
21954
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131860276
21955
+ const tagName = tNode.value;
21956
+ throw new RuntimeError(318 /* RuntimeErrorCode.INVALID_CONTROL_HOST */, `'<${tagName}>' is an invalid control host. The host must be a native form control (such ` +
21957
+ `as <input>', '<select>', or '<textarea>') or a custom form control component with a ` +
21958
+ `'value' or 'checked' model.`);
21959
+ }
21960
+ control.register();
21961
+ }
21962
+ /**
21963
+ * Updates a `control` property, and possibly other form control properties, on the current element.
21964
+ *
21965
+ * This is a specialized version of the `ɵɵproperty` instruction that handles updating additional
21966
+ * form control properties, if set up to do so by {@link ɵɵcontrolCreate} during creation.
21967
+ *
21968
+ * @param value New value to write.
21969
+ * @param sanitizer An optional function used to sanitize the value.
21970
+ *
21971
+ * @codeGenApi
21972
+ */
21973
+ function ɵɵcontrol(value, sanitizer) {
21974
+ const lView = getLView();
21975
+ const bindingIndex = nextBindingIndex();
21976
+ const tNode = getSelectedTNode();
21977
+ if (bindingUpdated(lView, bindingIndex, value)) {
21978
+ const tView = getTView();
21979
+ setPropertyAndInputs(tNode, lView, 'control', value, lView[RENDERER], sanitizer);
21980
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'control', bindingIndex);
21981
+ }
21982
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
21983
+ // * only run if this is really a control binding determine in the create pass.
21984
+ const control = getControlDirective(tNode, lView);
21985
+ if (!control) {
21986
+ return;
21987
+ }
21988
+ const customControl = getCustomControlComponent(tNode);
21989
+ if (customControl) {
21990
+ const [componentIndex, modelName] = customControl;
21991
+ updateCustomControl(lView, componentIndex, modelName, control);
21992
+ }
21993
+ else {
21994
+ updateNativeControl(tNode, lView, control);
21995
+ }
21996
+ }
21997
+ /**
21998
+ * Returns the {@link ɵControl} directive on the specified node, if one is present and a `control`
21999
+ * input is bound to it, but not to a component. If a `control` input is bound to a component, we
22000
+ * assume the component will manage the control in its own template and return nothing to indicate
22001
+ * that the directive should not be set up.
22002
+ *
22003
+ * @param tNode The `TNode` of the element to check.
22004
+ * @param lView The `LView` that contains the element.
22005
+ */
22006
+ function getControlDirective(tNode, lView) {
22007
+ const directiveIndices = tNode.inputs?.['control'];
22008
+ if (!directiveIndices) {
22009
+ // There are no matching inputs for the `[control]` property binding.
22010
+ return;
22011
+ }
22012
+ if (isComponentHost(tNode)) {
22013
+ const componentIndex = tNode.directiveStart + tNode.componentOffset;
22014
+ if (directiveIndices.includes(componentIndex)) {
22015
+ // If component has a `control` input, we assume that it will handle binding the field to the
22016
+ // appropriate native/custom control in its template, so we do not attempt to bind any inputs
22017
+ // on this component.
22018
+ return;
22019
+ }
22020
+ }
22021
+ // Search for the `Control` directive.
22022
+ for (let index of directiveIndices) {
22023
+ const directive = lView[index];
22024
+ if (ɵCONTROL in directive) {
22025
+ return directive;
22026
+ }
22027
+ }
22028
+ // The `Control` directive was not imported by this component.
22029
+ return;
22030
+ }
22031
+ /**
22032
+ * Returns information about the component on the specified node, if it appears to be a custom form
22033
+ * control.
22034
+ *
22035
+ * A component is considered a custom form control if it has a model input named `value` or
22036
+ * `checked`.
22037
+ *
22038
+ * @param tNode The `TNode` of the element to check.
22039
+ * @returns an array containing the component index and model input name if it's a custom form
22040
+ * control, or undefined.
22041
+ */
22042
+ function getCustomControlComponent(tNode) {
22043
+ if (!isComponentHost(tNode)) {
22044
+ return;
22045
+ }
22046
+ const tView = getTView();
22047
+ const componentIndex = tNode.directiveStart + tNode.componentOffset;
22048
+ const componentDef = tView.data[componentIndex];
22049
+ if (hasModelInput(componentDef, 'value')) {
22050
+ return [componentIndex, 'value'];
22051
+ }
22052
+ if (hasModelInput(componentDef, 'checked')) {
22053
+ return [componentIndex, 'checked'];
22054
+ }
22055
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131861022
22056
+ // * should we check that any additional field state inputs are signal based?
22057
+ return;
22058
+ }
22059
+ /** Returns whether the specified `componentDef` has a model input named `name`. */
22060
+ function hasModelInput(componentDef, name) {
22061
+ return hasSignalInput(componentDef, name) && hasOutput(componentDef, name + 'Change');
22062
+ }
22063
+ /** Returns whether the specified `componentDef` has a signal-based input named `name`.*/
22064
+ function hasSignalInput(componentDef, name) {
22065
+ const input = componentDef.inputs[name];
22066
+ return input && (input[1] & InputFlags.SignalBased) !== 0;
22067
+ }
22068
+ /** Returns whether the specified `componentDef` has an output named `name`. */
22069
+ function hasOutput(componentDef, name) {
22070
+ return name in componentDef.outputs;
22071
+ }
22072
+ /**
22073
+ * Adds event listeners to a custom form control component to notify the `control` of changes.
22074
+ *
22075
+ * @param lView The `LView` that contains the custom form control.
22076
+ * @param tNode The `TNode` of the custom form control.
22077
+ * @param control The `ɵControl` directive instance.
22078
+ * @param componentIndex The index of the custom form control component in the `LView`.
22079
+ * @param modelName The name of the model property on the custom form control.
22080
+ */
22081
+ function listenToCustomControl(lView, tNode, control, componentIndex, modelName) {
22082
+ const outputName = modelName + 'Change';
22083
+ listenToOutput(tNode, lView, componentIndex, outputName, outputName, wrapListener(tNode, lView, (newValue) => {
22084
+ control.state().value.set(newValue);
22085
+ }));
22086
+ const tView = getTView();
22087
+ const componentDef = tView.data[componentIndex];
22088
+ const touchedOutputName = 'touchedChange';
22089
+ if (hasOutput(componentDef, touchedOutputName)) {
22090
+ listenToOutput(tNode, lView, componentIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => {
22091
+ control.state().markAsTouched();
22092
+ }));
22093
+ }
22094
+ }
22095
+ function isNativeControl(lView, tNode) {
22096
+ const element = lView[tNode.index];
22097
+ return (element instanceof HTMLInputElement ||
22098
+ element instanceof HTMLSelectElement ||
22099
+ element instanceof HTMLTextAreaElement);
22100
+ }
22101
+ /**
22102
+ * Adds event listeners to a native form control element to notify the `control` of changes.
22103
+ *
22104
+ * @param lView The `LView` that contains the native form control.
22105
+ * @param tNode The `TNode` of the native form control.
22106
+ * @param control The `ɵControl` directive instance.
22107
+ */
22108
+ function listenToNativeControl(lView, tNode, control) {
22109
+ const tView = getTView();
22110
+ const renderer = lView[RENDERER];
22111
+ const inputListener = () => {
22112
+ const element = getNativeByTNode(tNode, lView);
22113
+ const value = control.state().value;
22114
+ value.set(getNativeControlValue(element, value));
22115
+ };
22116
+ listenToDomEvent(tNode, tView, lView, undefined, renderer, 'input', inputListener, wrapListener(tNode, lView, inputListener));
22117
+ const blurListener = () => {
22118
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131860538
22119
+ control.state().markAsTouched();
22120
+ };
22121
+ listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
22122
+ }
22123
+ /**
22124
+ * Updates the inputs of a custom form control component with the latest state from the `control`.
22125
+ *
22126
+ * @param lView The `LView` that contains the custom form control.
22127
+ * @param componentIndex The index of the custom form control component in the `LView`.
22128
+ * @param modelName The name of the model property on the custom form control.
22129
+ * @param control The `ɵControl` directive instance.
22130
+ */
22131
+ function updateCustomControl(lView, componentIndex, modelName, control) {
22132
+ const tView = getTView();
22133
+ const component = lView[componentIndex];
22134
+ const componentDef = tView.data[componentIndex];
22135
+ const state = control.state();
22136
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
22137
+ // * check if bindings changed before writing.
22138
+ // * cache which inputs exist.
22139
+ writeToDirectiveInput(componentDef, component, modelName, state.value());
22140
+ maybeWriteToDirectiveInput(componentDef, component, 'errors', state.errors);
22141
+ maybeWriteToDirectiveInput(componentDef, component, 'disabled', state.disabled);
22142
+ maybeWriteToDirectiveInput(componentDef, component, 'disabledReasons', state.disabledReasons);
22143
+ maybeWriteToDirectiveInput(componentDef, component, 'max', state.max);
22144
+ maybeWriteToDirectiveInput(componentDef, component, 'maxLength', state.maxLength);
22145
+ maybeWriteToDirectiveInput(componentDef, component, 'min', state.max);
22146
+ maybeWriteToDirectiveInput(componentDef, component, 'minLength', state.minLength);
22147
+ maybeWriteToDirectiveInput(componentDef, component, 'name', state.name);
22148
+ maybeWriteToDirectiveInput(componentDef, component, 'pattern', state.pattern);
22149
+ maybeWriteToDirectiveInput(componentDef, component, 'readOnly', state.readonly);
22150
+ maybeWriteToDirectiveInput(componentDef, component, 'required', state.required);
22151
+ maybeWriteToDirectiveInput(componentDef, component, 'touched', state.touched);
22152
+ }
22153
+ /**
22154
+ * Writes the specified value to a directive input if the input exists.
22155
+ *
22156
+ * @param componentDef The definition of the component that owns the input.
22157
+ * @param component The component instance.
22158
+ * @param inputName The name of the input to write to.
22159
+ * @param source A function that returns the value to write.
22160
+ */
22161
+ function maybeWriteToDirectiveInput(componentDef, component, inputName, source) {
22162
+ if (inputName in componentDef.inputs) {
22163
+ writeToDirectiveInput(componentDef, component, inputName, source());
22164
+ }
22165
+ }
22166
+ /**
22167
+ * Updates the properties of a native form control element with the latest state from the `control`.
22168
+ *
22169
+ * @param tNode The `TNode` of the native form control.
22170
+ * @param lView The `LView` that contains the native form control.
22171
+ * @param control The `ɵControl` directive instance.
22172
+ */
22173
+ function updateNativeControl(tNode, lView, control) {
22174
+ const input = getNativeByTNode(tNode, lView);
22175
+ const renderer = lView[RENDERER];
22176
+ const state = control.state();
22177
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
22178
+ // * check if bindings changed before writing.
22179
+ setNativeControlValue(input, state.value());
22180
+ renderer.setAttribute(input, 'name', state.name());
22181
+ setBooleanAttribute(renderer, input, 'disable', state.disabled());
22182
+ setBooleanAttribute(renderer, input, 'readonly', state.readonly());
22183
+ setBooleanAttribute(renderer, input, 'required', state.required());
22184
+ // TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
22185
+ // * use tag and type attribute to determine which of these properties to bind.
22186
+ setOptionalAttribute(renderer, input, 'max', state.max());
22187
+ setOptionalAttribute(renderer, input, 'maxLength', state.maxLength());
22188
+ setOptionalAttribute(renderer, input, 'min', state.min());
22189
+ setOptionalAttribute(renderer, input, 'minLength', state.minLength());
22190
+ }
22191
+ /** Checks if a given value is a Date or null */
22192
+ function isDateOrNull(value) {
22193
+ return value === null || value instanceof Date;
22194
+ }
22195
+ /**
22196
+ * Returns the value from a native control element.
22197
+ *
22198
+ * @param element The native control element.
22199
+ * @param currentValue A function that returns the current value from the control's corresponding
22200
+ * field state.
22201
+ *
22202
+ * The type of the returned value depends on the `type` property of the control, and will attempt to
22203
+ * match the current value's type. For example, the value of `<input type="number">` can be read as
22204
+ * a `string` or a `number`. If the current value is a `number`, then this will return a `number`.
22205
+ * Otherwise, this will return the value as a `string`.
22206
+ */
22207
+ function getNativeControlValue(element, currentValue) {
22208
+ // Special cases for specific input types.
22209
+ switch (element.type) {
22210
+ case 'checkbox':
22211
+ return element.checked;
22212
+ case 'number':
22213
+ case 'range':
22214
+ case 'datetime-local':
22215
+ // We can read a `number` or a `string` from this input type. Prefer whichever is consistent
22216
+ // with the current type.
22217
+ if (typeof currentValue() === 'number') {
22218
+ return element.valueAsNumber;
22219
+ }
22220
+ break;
22221
+ case 'date':
22222
+ case 'month':
22223
+ case 'time':
22224
+ case 'week':
22225
+ // We can read a `Date | null`, `number`, or `string` from this input type. Prefer whichever
22226
+ // is consistent with the current type.
22227
+ const value = currentValue();
22228
+ if (isDateOrNull(value)) {
22229
+ return element.valueAsDate;
22230
+ }
22231
+ else if (typeof value === 'number') {
22232
+ return element.valueAsNumber;
22233
+ }
22234
+ break;
22235
+ }
22236
+ // Default to reading the value as a string.
22237
+ return element.value;
22238
+ }
22239
+ /**
22240
+ * Sets a native control element's value.
22241
+ *
22242
+ * @param element The native control element.
22243
+ * @param value The new value to set.
22244
+ */
22245
+ function setNativeControlValue(element, value) {
22246
+ // Special cases for specific input types.
22247
+ switch (element.type) {
22248
+ case 'checkbox':
22249
+ element.checked = value;
22250
+ return;
22251
+ case 'radio':
22252
+ // Although HTML behavior is to clear the input already, we do this just in case. It seems
22253
+ // like it might be necessary in certain environments (e.g. Domino).
22254
+ element.checked = value === element.value;
22255
+ return;
22256
+ case 'number':
22257
+ case 'range':
22258
+ case 'datetime-local':
22259
+ // This input type can receive a `number` or a `string`.
22260
+ if (typeof value === 'number') {
22261
+ element.valueAsNumber = value;
22262
+ return;
22263
+ }
22264
+ break;
22265
+ case 'date':
22266
+ case 'month':
22267
+ case 'time':
22268
+ case 'week':
22269
+ // This input type can receive a `Date | null` or a `number` or a `string`.
22270
+ if (isDateOrNull(value)) {
22271
+ element.valueAsDate = value;
22272
+ return;
22273
+ }
22274
+ else if (typeof value === 'number') {
22275
+ element.valueAsNumber = value;
22276
+ return;
22277
+ }
22278
+ }
22279
+ // Default to setting the value as a string.
22280
+ element.value = value;
22281
+ }
22282
+ /**
22283
+ * Sets a boolean attribute on an element.
22284
+ *
22285
+ * @param renderer The `Renderer` instance to use.
22286
+ * @param element The element to set the attribute on.
22287
+ * @param name The name of the attribute.
22288
+ * @param value The boolean value of the attribute. If `true`, the attribute is added. If `false`,
22289
+ * the attribute is removed.
22290
+ */
22291
+ function setBooleanAttribute(renderer, element, name, value) {
22292
+ if (value) {
22293
+ renderer.setAttribute(element, name, '');
22294
+ }
22295
+ else {
22296
+ renderer.removeAttribute(element, name);
22297
+ }
22298
+ }
22299
+ /**
22300
+ * Sets an attribute on an element if the value is not `undefined`.
22301
+ *
22302
+ * @param renderer The `Renderer` instance to use.
22303
+ * @param element The element to set the attribute on.
22304
+ * @param name The name of the attribute.
22305
+ * @param value The value of the attribute. If `undefined`, the attribute is removed.
22306
+ */
22307
+ function setOptionalAttribute(renderer, element, name, value) {
22308
+ if (value !== undefined) {
22309
+ renderer.setAttribute(element, name, value.toString());
22310
+ }
22311
+ else {
22312
+ renderer.removeAttribute(element, name);
22313
+ }
22314
+ }
22315
+
21804
22316
  /**
21805
22317
  * A type representing the live collection to be reconciled with any new (incoming) collection. This
21806
22318
  * is an adapter class that makes it possible to work with different internal data structures,
@@ -28723,6 +29235,8 @@ const angularCoreEnv = (() => ({
28723
29235
  'ɵɵdomProperty': ɵɵdomProperty,
28724
29236
  'ɵɵariaProperty': ɵɵariaProperty,
28725
29237
  'ɵɵproperty': ɵɵproperty,
29238
+ 'ɵɵcontrol': ɵɵcontrol,
29239
+ 'ɵɵcontrolCreate': ɵɵcontrolCreate,
28726
29240
  'ɵɵpipe': ɵɵpipe,
28727
29241
  'ɵɵqueryRefresh': ɵɵqueryRefresh,
28728
29242
  'ɵɵqueryAdvance': ɵɵqueryAdvance,
@@ -31002,5 +31516,5 @@ function getDebugNode(nativeNode) {
31002
31516
  return null;
31003
31517
  }
31004
31518
 
31005
- 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, 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, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, 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, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, 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, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, 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 };
31006
- //# sourceMappingURL=debug_node.mjs.map
31519
+ 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, 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, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, 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, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, 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, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵCONTROL, ɵ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, ɵɵcontrol, ɵɵcontrolCreate, ɵɵ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 };
31520
+ //# sourceMappingURL=_debug_node-chunk.mjs.map