@angular/core 21.2.0 → 22.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +613 -523
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +1 -1
  5. package/fesm2022/_not_found-chunk.mjs +1 -1
  6. package/fesm2022/{_effect-chunk2.mjs → _pending_tasks-chunk.mjs} +31 -31
  7. package/fesm2022/_pending_tasks-chunk.mjs.map +1 -0
  8. package/fesm2022/_resource-chunk.mjs +92 -30
  9. package/fesm2022/_resource-chunk.mjs.map +1 -1
  10. package/fesm2022/_untracked-chunk.mjs +1 -1
  11. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  12. package/fesm2022/core.mjs +5 -5
  13. package/fesm2022/core.mjs.map +1 -1
  14. package/fesm2022/primitives-di.mjs +1 -1
  15. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  16. package/fesm2022/primitives-signals.mjs +1 -1
  17. package/fesm2022/rxjs-interop.mjs +2 -2
  18. package/fesm2022/testing.mjs +14 -2
  19. package/fesm2022/testing.mjs.map +1 -1
  20. package/package.json +3 -3
  21. package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
  22. package/schematics/bundles/change-detection-eager.cjs +155 -0
  23. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  24. package/schematics/bundles/common-to-standalone-migration.cjs +4 -4
  25. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  26. package/schematics/bundles/control-flow-migration.cjs +1 -1
  27. package/schematics/bundles/http-xhr-backend.cjs +118 -0
  28. package/schematics/bundles/{imports-CVmcbVA9.cjs → imports-CKV-ITqD.cjs} +4 -3
  29. package/schematics/bundles/index-BtLcQH8g.cjs +1 -1
  30. package/schematics/bundles/inject-migration.cjs +3 -3
  31. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  32. package/schematics/bundles/migrate_ts_type_references-MWoZx-Cb.cjs +1 -1
  33. package/schematics/bundles/{ng_component_template-BOuKAnQd.cjs → ng_component_template-DPAF1aEA.cjs} +2 -2
  34. package/schematics/bundles/{ng_decorators-DYy6II6x.cjs → ng_decorators-IVztR9rk.cjs} +2 -2
  35. package/schematics/bundles/ngclass-to-class-migration.cjs +4 -4
  36. package/schematics/bundles/ngstyle-to-style-migration.cjs +4 -4
  37. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  38. package/schematics/bundles/output-migration.cjs +1 -1
  39. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  40. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  41. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  42. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  43. package/schematics/bundles/route-lazy-loading.cjs +4 -16
  44. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  45. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  46. package/schematics/bundles/signal-input-migration.cjs +1 -1
  47. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  48. package/schematics/bundles/signals.cjs +1 -1
  49. package/schematics/bundles/standalone-migration.cjs +20 -6
  50. package/schematics/collection.json +5 -5
  51. package/schematics/migrations.json +9 -30
  52. package/types/_api-chunk.d.ts +31 -4
  53. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  54. package/types/_discovery-chunk.d.ts +2 -2
  55. package/types/_effect-chunk.d.ts +1 -1
  56. package/types/_event_dispatcher-chunk.d.ts +1 -1
  57. package/types/_formatter-chunk.d.ts +1 -1
  58. package/types/_weak_ref-chunk.d.ts +1 -1
  59. package/types/core.d.ts +44 -14
  60. package/types/primitives-di.d.ts +1 -1
  61. package/types/primitives-event-dispatch.d.ts +1 -1
  62. package/types/primitives-signals.d.ts +1 -1
  63. package/types/rxjs-interop.d.ts +1 -1
  64. package/types/testing.d.ts +6 -1
  65. package/fesm2022/_effect-chunk2.mjs.map +0 -1
  66. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +0 -117
  67. package/schematics/bundles/application-config-core.cjs +0 -84
  68. package/schematics/bundles/bootstrap-options-migration.cjs +0 -644
  69. package/schematics/bundles/router-current-navigation.cjs +0 -103
  70. package/schematics/bundles/router-last-successful-navigation.cjs +0 -103
  71. package/schematics/bundles/symbol-DZeHSR-V.cjs +0 -26
  72. /package/schematics/{migrations → ng-generate}/common-to-standalone-migration/schema.json +0 -0
  73. /package/schematics/{migrations → ng-generate}/control-flow-migration/schema.json +0 -0
  74. /package/schematics/{migrations → ng-generate}/ngclass-to-class-migration/schema.json +0 -0
  75. /package/schematics/{migrations → ng-generate}/ngstyle-to-style-migration/schema.json +0 -0
  76. /package/schematics/{migrations → ng-generate}/router-testing-module-migration/schema.json +0 -0
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.2.0
2
+ * @license Angular v22.0.0-next.0
3
3
  * (c) 2010-2026 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, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR as INJECTOR$1, CONTAINER_HEADER_OFFSET, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, 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, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getDirectiveDefOrThrow, getTNode, assertComponentType, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, 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, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, 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, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_effect-chunk2.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, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR as INJECTOR$1, CONTAINER_HEADER_OFFSET, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, 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, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getDirectiveDefOrThrow, getTNode, assertComponentType, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, arrayInsert2, arraySplice, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, 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, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_pending_tasks-chunk.mjs';
8
8
  import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
9
9
  import { Subject, Subscription } from 'rxjs';
10
10
  import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
@@ -4048,6 +4048,7 @@ const noOpAnimationComplete = () => {};
4048
4048
  const enterClassMap = new WeakMap();
4049
4049
  const longestAnimations = new WeakMap();
4050
4050
  const leavingNodes = new WeakMap();
4051
+ const reusedNodes = new WeakSet();
4051
4052
  function clearLeavingNodes(tNode, el) {
4052
4053
  const nodes = leavingNodes.get(tNode);
4053
4054
  if (nodes && nodes.length > 0) {
@@ -4066,7 +4067,15 @@ function cancelLeavingNodes(tNode, newElement) {
4066
4067
  for (let i = nodes.length - 1; i >= 0; i--) {
4067
4068
  const leavingEl = nodes[i];
4068
4069
  const leavingParent = leavingEl.parentNode;
4069
- if (prevSibling && leavingEl === prevSibling || leavingParent && newParent && leavingParent !== newParent) {
4070
+ if (leavingEl === newElement) {
4071
+ nodes.splice(i, 1);
4072
+ reusedNodes.add(leavingEl);
4073
+ leavingEl.dispatchEvent(new CustomEvent('animationend', {
4074
+ detail: {
4075
+ cancel: true
4076
+ }
4077
+ }));
4078
+ } else if (prevSibling && leavingEl === prevSibling || leavingParent && newParent && leavingParent !== newParent) {
4070
4079
  nodes.splice(i, 1);
4071
4080
  leavingEl.dispatchEvent(new CustomEvent('animationend', {
4072
4081
  detail: {
@@ -4119,10 +4128,13 @@ function elementHasClassList(element, classList) {
4119
4128
  }
4120
4129
  return false;
4121
4130
  }
4131
+ function getEventTarget(event) {
4132
+ return event.composedPath ? event.composedPath()[0] : event.target;
4133
+ }
4122
4134
  function isLongestAnimation(event, nativeElement) {
4123
4135
  const longestAnimation = longestAnimations.get(nativeElement);
4124
4136
  if (longestAnimation === undefined) return true;
4125
- return nativeElement === event.target && (longestAnimation.animationName !== undefined && event.animationName === longestAnimation.animationName || longestAnimation.propertyName !== undefined && event.propertyName === longestAnimation.propertyName);
4137
+ return nativeElement === getEventTarget(event) && (longestAnimation.animationName !== undefined && event.animationName === longestAnimation.animationName || longestAnimation.propertyName !== undefined && (longestAnimation.propertyName === 'all' || event.propertyName === longestAnimation.propertyName));
4126
4138
  }
4127
4139
  function addAnimationToLView(animations, tNode, fn) {
4128
4140
  const nodeAnimations = animations.get(tNode.index) ?? {
@@ -4182,6 +4194,7 @@ function getLongestComputedAnimation(computedStyle) {
4182
4194
  const rawNames = parseCssPropertyValue(computedStyle, 'animation-name');
4183
4195
  const rawDelays = parseCssPropertyValue(computedStyle, 'animation-delay');
4184
4196
  const rawDurations = parseCssPropertyValue(computedStyle, 'animation-duration');
4197
+ const rawIterationCounts = parseCssPropertyValue(computedStyle, 'animation-iteration-count');
4185
4198
  const longest = {
4186
4199
  animationName: '',
4187
4200
  propertyName: undefined,
@@ -4189,7 +4202,8 @@ function getLongestComputedAnimation(computedStyle) {
4189
4202
  };
4190
4203
  for (let i = 0; i < rawNames.length; i++) {
4191
4204
  const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
4192
- if (duration > longest.duration) {
4205
+ const iterationCount = rawIterationCounts[i];
4206
+ if (duration > longest.duration && iterationCount !== 'infinite') {
4193
4207
  longest.animationName = rawNames[i];
4194
4208
  longest.duration = duration;
4195
4209
  }
@@ -4225,6 +4239,9 @@ function determineLongestAnimationFromElementAnimations(el, animationsMap, anima
4225
4239
  };
4226
4240
  for (const animation of animations) {
4227
4241
  const timing = animation.effect?.getTiming();
4242
+ if (timing?.iterations === Infinity) {
4243
+ continue;
4244
+ }
4228
4245
  const animDuration = typeof timing?.duration === 'number' ? timing.duration : 0;
4229
4246
  let duration = (timing?.delay ?? 0) + animDuration;
4230
4247
  let propertyName;
@@ -4683,6 +4700,10 @@ function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHa
4683
4700
  trackLeavingNodes(tNode, rNode);
4684
4701
  }
4685
4702
  runLeaveAnimationsWithCallback(parentLView, tNode, injector, nodeHasLeaveAnimations => {
4703
+ if (reusedNodes.has(rNode)) {
4704
+ reusedNodes.delete(rNode);
4705
+ return;
4706
+ }
4686
4707
  nativeRemoveNode(renderer, rNode, isComponent, nodeHasLeaveAnimations);
4687
4708
  });
4688
4709
  } else if (action === 3) {
@@ -8712,7 +8733,7 @@ class ComponentFactory extends ComponentFactory$1 {
8712
8733
  }
8713
8734
  }
8714
8735
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8715
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8736
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-next.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8716
8737
  let creationBindings = null;
8717
8738
  let updateBindings = null;
8718
8739
  let varsToAllocate = 0;
@@ -10511,469 +10532,93 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
10511
10532
  });
10512
10533
  }
10513
10534
 
10514
- function onIdle(callback, injector) {
10515
- const scheduler = injector.get(IdleScheduler);
10516
- const cleanupFn = () => scheduler.remove(callback);
10517
- scheduler.add(callback);
10518
- return cleanupFn;
10535
+ const _requestIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : cb => setTimeout(cb)).bind(globalThis);
10536
+ const _cancelIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
10537
+ const IDLE_SERVICE = new InjectionToken(ngDevMode ? 'IDLE_SERVICE' : '', {
10538
+ providedIn: 'root',
10539
+ factory: () => new RequestIdleCallbackService()
10540
+ });
10541
+ function provideIdleServiceWith(useExisting) {
10542
+ return makeEnvironmentProviders([{
10543
+ provide: IDLE_SERVICE,
10544
+ useExisting
10545
+ }]);
10519
10546
  }
10520
- const _requestIdleCallback = () => typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : setTimeout;
10521
- const _cancelIdleCallback = () => typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout;
10522
- class IdleScheduler {
10523
- executingCallbacks = false;
10524
- idleId = null;
10525
- current = new Set();
10526
- deferred = new Set();
10527
- ngZone = inject(NgZone);
10528
- requestIdleCallbackFn = _requestIdleCallback().bind(globalThis);
10529
- cancelIdleCallbackFn = _cancelIdleCallback().bind(globalThis);
10530
- add(callback) {
10531
- const target = this.executingCallbacks ? this.deferred : this.current;
10532
- target.add(callback);
10533
- if (this.idleId === null) {
10534
- this.scheduleIdleCallback();
10535
- }
10536
- }
10537
- remove(callback) {
10538
- const {
10539
- current,
10540
- deferred
10541
- } = this;
10542
- current.delete(callback);
10543
- deferred.delete(callback);
10544
- if (current.size === 0 && deferred.size === 0) {
10545
- this.cancelIdleCallback();
10546
- }
10547
- }
10548
- scheduleIdleCallback() {
10549
- const callback = () => {
10550
- this.cancelIdleCallback();
10551
- this.executingCallbacks = true;
10552
- for (const callback of this.current) {
10553
- callback();
10554
- }
10555
- this.current.clear();
10556
- this.executingCallbacks = false;
10557
- if (this.deferred.size > 0) {
10558
- for (const callback of this.deferred) {
10559
- this.current.add(callback);
10560
- }
10561
- this.deferred.clear();
10562
- this.scheduleIdleCallback();
10563
- }
10564
- };
10565
- this.idleId = this.requestIdleCallbackFn(() => this.ngZone.run(callback));
10566
- }
10567
- cancelIdleCallback() {
10568
- if (this.idleId !== null) {
10569
- this.cancelIdleCallbackFn(this.idleId);
10570
- this.idleId = null;
10571
- }
10547
+ class RequestIdleCallbackService {
10548
+ requestIdleCallback = _requestIdleCallback();
10549
+ cancelIdleCallback = _cancelIdleCallback();
10550
+ requestOnIdle(callback, options) {
10551
+ return this.requestIdleCallback(callback, options);
10572
10552
  }
10573
- ngOnDestroy() {
10574
- this.cancelIdleCallback();
10575
- this.current.clear();
10576
- this.deferred.clear();
10553
+ cancelOnIdle(id) {
10554
+ return this.cancelIdleCallback(id);
10577
10555
  }
10578
- static ɵprov =
10579
- /* @__PURE__ */
10580
- __defineInjectable({
10581
- token: IdleScheduler,
10582
- providedIn: 'root',
10583
- factory: () => new IdleScheduler()
10584
- });
10585
10556
  }
10586
10557
 
10587
- function onTimer(delay) {
10588
- return (callback, injector) => scheduleTimerTrigger(delay, callback, injector);
10558
+ const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
10559
+ function getAsyncClassMetadataFn(type) {
10560
+ const componentClass = type;
10561
+ return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
10589
10562
  }
10590
- function scheduleTimerTrigger(delay, callback, injector) {
10591
- const scheduler = injector.get(TimerScheduler);
10592
- const ngZone = injector.get(NgZone);
10593
- const cleanupFn = () => scheduler.remove(callback);
10594
- scheduler.add(delay, callback, ngZone);
10595
- return cleanupFn;
10563
+ function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
10564
+ const componentClass = type;
10565
+ componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
10566
+ metadataSetterFn(...dependencies);
10567
+ componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
10568
+ return dependencies;
10569
+ });
10570
+ return componentClass[ASYNC_COMPONENT_METADATA_FN];
10596
10571
  }
10597
- class TimerScheduler {
10598
- executingCallbacks = false;
10599
- timeoutId = null;
10600
- invokeTimerAt = null;
10601
- current = [];
10602
- deferred = [];
10603
- add(delay, callback, ngZone) {
10604
- const target = this.executingCallbacks ? this.deferred : this.current;
10605
- this.addToQueue(target, Date.now() + delay, callback);
10606
- this.scheduleTimer(ngZone);
10607
- }
10608
- remove(callback) {
10609
- const {
10610
- current,
10611
- deferred
10612
- } = this;
10613
- const callbackIndex = this.removeFromQueue(current, callback);
10614
- if (callbackIndex === -1) {
10615
- this.removeFromQueue(deferred, callback);
10616
- }
10617
- if (current.length === 0 && deferred.length === 0) {
10618
- this.clearTimeout();
10619
- }
10620
- }
10621
- addToQueue(target, invokeAt, callback) {
10622
- let insertAtIndex = target.length;
10623
- for (let i = 0; i < target.length; i += 2) {
10624
- const invokeQueuedCallbackAt = target[i];
10625
- if (invokeQueuedCallbackAt > invokeAt) {
10626
- insertAtIndex = i;
10627
- break;
10628
- }
10629
- }
10630
- arrayInsert2(target, insertAtIndex, invokeAt, callback);
10631
- }
10632
- removeFromQueue(target, callback) {
10633
- let index = -1;
10634
- for (let i = 0; i < target.length; i += 2) {
10635
- const queuedCallback = target[i + 1];
10636
- if (queuedCallback === callback) {
10637
- index = i;
10638
- break;
10572
+ function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
10573
+ return noSideEffects(() => {
10574
+ const clazz = type;
10575
+ if (decorators !== null) {
10576
+ if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
10577
+ clazz.decorators.push(...decorators);
10578
+ } else {
10579
+ clazz.decorators = decorators;
10639
10580
  }
10640
10581
  }
10641
- if (index > -1) {
10642
- arraySplice(target, index, 2);
10582
+ if (ctorParameters !== null) {
10583
+ clazz.ctorParameters = ctorParameters;
10643
10584
  }
10644
- return index;
10645
- }
10646
- scheduleTimer(ngZone) {
10647
- const callback = () => {
10648
- this.clearTimeout();
10649
- this.executingCallbacks = true;
10650
- const current = [...this.current];
10651
- const now = Date.now();
10652
- for (let i = 0; i < current.length; i += 2) {
10653
- const invokeAt = current[i];
10654
- const callback = current[i + 1];
10655
- if (invokeAt <= now) {
10656
- callback();
10657
- } else {
10658
- break;
10659
- }
10660
- }
10661
- let lastCallbackIndex = -1;
10662
- for (let i = 0; i < this.current.length; i += 2) {
10663
- const invokeAt = this.current[i];
10664
- if (invokeAt <= now) {
10665
- lastCallbackIndex = i + 1;
10666
- } else {
10667
- break;
10668
- }
10669
- }
10670
- if (lastCallbackIndex >= 0) {
10671
- arraySplice(this.current, 0, lastCallbackIndex + 1);
10672
- }
10673
- this.executingCallbacks = false;
10674
- if (this.deferred.length > 0) {
10675
- for (let i = 0; i < this.deferred.length; i += 2) {
10676
- const invokeAt = this.deferred[i];
10677
- const callback = this.deferred[i + 1];
10678
- this.addToQueue(this.current, invokeAt, callback);
10679
- }
10680
- this.deferred.length = 0;
10681
- }
10682
- this.scheduleTimer(ngZone);
10683
- };
10684
- const FRAME_DURATION_MS = 16;
10685
- if (this.current.length > 0) {
10686
- const now = Date.now();
10687
- const invokeAt = this.current[0];
10688
- if (this.timeoutId === null || this.invokeTimerAt && this.invokeTimerAt - invokeAt > FRAME_DURATION_MS) {
10689
- this.clearTimeout();
10690
- const timeout = Math.max(invokeAt - now, FRAME_DURATION_MS);
10691
- this.invokeTimerAt = invokeAt;
10692
- this.timeoutId = ngZone.runOutsideAngular(() => {
10693
- return setTimeout(() => ngZone.run(callback), timeout);
10694
- });
10585
+ if (propDecorators !== null) {
10586
+ if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
10587
+ clazz.propDecorators = {
10588
+ ...clazz.propDecorators,
10589
+ ...propDecorators
10590
+ };
10591
+ } else {
10592
+ clazz.propDecorators = propDecorators;
10695
10593
  }
10696
10594
  }
10697
- }
10698
- clearTimeout() {
10699
- if (this.timeoutId !== null) {
10700
- clearTimeout(this.timeoutId);
10701
- this.timeoutId = null;
10702
- }
10703
- }
10704
- ngOnDestroy() {
10705
- this.clearTimeout();
10706
- this.current.length = 0;
10707
- this.deferred.length = 0;
10708
- }
10709
- static ɵprov =
10710
- /* @__PURE__ */
10711
- __defineInjectable({
10712
- token: TimerScheduler,
10713
- providedIn: 'root',
10714
- factory: () => new TimerScheduler()
10715
10595
  });
10716
10596
  }
10717
10597
 
10718
- class CachedInjectorService {
10719
- cachedInjectors = new Map();
10720
- getOrCreateInjector(key, parentInjector, providers, debugName) {
10721
- if (!this.cachedInjectors.has(key)) {
10722
- const injector = providers.length > 0 ? createEnvironmentInjector(providers, parentInjector, debugName) : null;
10723
- this.cachedInjectors.set(key, injector);
10724
- }
10725
- return this.cachedInjectors.get(key);
10598
+ class Console {
10599
+ log(message) {
10600
+ console.log(message);
10726
10601
  }
10727
- ngOnDestroy() {
10728
- try {
10729
- for (const injector of this.cachedInjectors.values()) {
10730
- if (injector !== null) {
10731
- injector.destroy();
10732
- }
10733
- }
10734
- } finally {
10735
- this.cachedInjectors.clear();
10736
- }
10602
+ warn(message) {
10603
+ console.warn(message);
10737
10604
  }
10738
- static ɵprov =
10739
- /* @__PURE__ */
10740
- __defineInjectable({
10741
- token: CachedInjectorService,
10742
- providedIn: 'environment',
10743
- factory: () => new CachedInjectorService()
10605
+ static ɵfac = function Console_Factory(__ngFactoryType__) {
10606
+ return new (__ngFactoryType__ || Console)();
10607
+ };
10608
+ static ɵprov = /*@__PURE__*/__defineInjectable({
10609
+ token: Console,
10610
+ factory: Console.ɵfac,
10611
+ providedIn: 'platform'
10744
10612
  });
10745
10613
  }
10746
-
10747
- const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR = /* @__PURE__ */new InjectionToken('DEFER_BLOCK_DEPENDENCY_INTERCEPTOR');
10748
- const DEFER_BLOCK_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'DEFER_BLOCK_CONFIG' : '');
10749
- function getOrCreateEnvironmentInjector(parentInjector, tDetails, providers) {
10750
- return parentInjector.get(CachedInjectorService).getOrCreateInjector(tDetails, parentInjector, providers, ngDevMode ? 'DeferBlock Injector' : '');
10751
- }
10752
- function createDeferBlockInjector(parentInjector, tDetails, providers) {
10753
- if (parentInjector instanceof ChainedInjector) {
10754
- const origInjector = parentInjector.injector;
10755
- const parentEnvInjector = parentInjector.parentInjector;
10756
- const envInjector = getOrCreateEnvironmentInjector(parentEnvInjector, tDetails, providers);
10757
- return new ChainedInjector(origInjector, envInjector);
10758
- }
10759
- const parentEnvInjector = parentInjector.get(EnvironmentInjector);
10760
- if (parentEnvInjector !== parentInjector) {
10761
- const envInjector = getOrCreateEnvironmentInjector(parentEnvInjector, tDetails, providers);
10762
- return new ChainedInjector(parentInjector, envInjector);
10763
- }
10764
- return getOrCreateEnvironmentInjector(parentInjector, tDetails, providers);
10765
- }
10766
- function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling = false) {
10767
- const hostLView = lContainer[PARENT];
10768
- const hostTView = hostLView[TVIEW];
10769
- if (isDestroyed(hostLView)) return;
10770
- ngDevMode && assertTNodeForLView(tNode, hostLView);
10771
- const lDetails = getLDeferBlockDetails(hostLView, tNode);
10772
- ngDevMode && assertDefined(lDetails, 'Expected a defer block state defined');
10773
- const currentState = lDetails[DEFER_BLOCK_STATE];
10774
- const ssrState = lDetails[SSR_BLOCK_STATE];
10775
- if (ssrState !== null && newState < ssrState) {
10776
- return;
10777
- }
10778
- if (isValidStateChange(currentState, newState) && isValidStateChange(lDetails[NEXT_DEFER_BLOCK_STATE] ?? -1, newState)) {
10779
- const tDetails = getTDeferBlockDetails(hostTView, tNode);
10780
- const needsScheduling = !skipTimerScheduling && (typeof ngServerMode === 'undefined' || !ngServerMode) && (getLoadingBlockAfter(tDetails) !== null || getMinimumDurationForState(tDetails, DeferBlockState.Loading) !== null || getMinimumDurationForState(tDetails, DeferBlockState.Placeholder));
10781
- if (ngDevMode && needsScheduling) {
10782
- assertDefined(applyDeferBlockStateWithSchedulingImpl, 'Expected scheduling function to be defined');
10783
- }
10784
- const applyStateFn = needsScheduling ? applyDeferBlockStateWithSchedulingImpl : applyDeferBlockState;
10785
- try {
10786
- applyStateFn(newState, lDetails, lContainer, tNode, hostLView);
10787
- } catch (error) {
10788
- handleUncaughtError(hostLView, error);
10789
- }
10790
- }
10791
- }
10792
- function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
10793
- const dehydratedViewIx = lContainer[DEHYDRATED_VIEWS]?.findIndex(view => view.data[DEFER_BLOCK_STATE$1] === lDetails[DEFER_BLOCK_STATE]) ?? -1;
10794
- const dehydratedView = dehydratedViewIx > -1 ? lContainer[DEHYDRATED_VIEWS][dehydratedViewIx] : null;
10795
- return {
10796
- dehydratedView,
10797
- dehydratedViewIx
10798
- };
10799
- }
10800
- function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView) {
10801
- profiler(ProfilerEvent.DeferBlockStateStart);
10802
- const stateTmplIndex = getTemplateIndexForState(newState, hostLView, tNode);
10803
- if (stateTmplIndex !== null) {
10804
- lDetails[DEFER_BLOCK_STATE] = newState;
10805
- const hostTView = hostLView[TVIEW];
10806
- const adjustedIndex = stateTmplIndex + HEADER_OFFSET;
10807
- const activeBlockTNode = getTNode(hostTView, adjustedIndex);
10808
- const viewIndex = 0;
10809
- removeLViewFromLContainer(lContainer, viewIndex);
10810
- let injector;
10811
- if (newState === DeferBlockState.Complete) {
10812
- const tDetails = getTDeferBlockDetails(hostTView, tNode);
10813
- const providers = tDetails.providers;
10814
- if (providers && providers.length > 0) {
10815
- injector = createDeferBlockInjector(hostLView[INJECTOR], tDetails, providers);
10816
- }
10817
- }
10818
- const {
10819
- dehydratedView,
10820
- dehydratedViewIx
10821
- } = findMatchingDehydratedViewForDeferBlock(lContainer, lDetails);
10822
- const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, {
10823
- injector,
10824
- dehydratedView
10825
- });
10826
- addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
10827
- markViewDirty(embeddedLView, 2);
10828
- if (dehydratedViewIx > -1) {
10829
- lContainer[DEHYDRATED_VIEWS]?.splice(dehydratedViewIx, 1);
10830
- }
10831
- if ((newState === DeferBlockState.Complete || newState === DeferBlockState.Error) && Array.isArray(lDetails[ON_COMPLETE_FNS])) {
10832
- for (const callback of lDetails[ON_COMPLETE_FNS]) {
10833
- callback();
10834
- }
10835
- lDetails[ON_COMPLETE_FNS] = null;
10836
- }
10837
- }
10838
- profiler(ProfilerEvent.DeferBlockStateEnd);
10839
- }
10840
- function applyDeferBlockStateWithScheduling(newState, lDetails, lContainer, tNode, hostLView) {
10841
- const now = Date.now();
10842
- const hostTView = hostLView[TVIEW];
10843
- const tDetails = getTDeferBlockDetails(hostTView, tNode);
10844
- if (lDetails[STATE_IS_FROZEN_UNTIL] === null || lDetails[STATE_IS_FROZEN_UNTIL] <= now) {
10845
- lDetails[STATE_IS_FROZEN_UNTIL] = null;
10846
- const loadingAfter = getLoadingBlockAfter(tDetails);
10847
- const inLoadingAfterPhase = lDetails[LOADING_AFTER_CLEANUP_FN] !== null;
10848
- if (newState === DeferBlockState.Loading && loadingAfter !== null && !inLoadingAfterPhase) {
10849
- lDetails[NEXT_DEFER_BLOCK_STATE] = newState;
10850
- const cleanupFn = scheduleDeferBlockUpdate(loadingAfter, lDetails, tNode, lContainer, hostLView);
10851
- lDetails[LOADING_AFTER_CLEANUP_FN] = cleanupFn;
10852
- } else {
10853
- if (newState > DeferBlockState.Loading && inLoadingAfterPhase) {
10854
- lDetails[LOADING_AFTER_CLEANUP_FN]();
10855
- lDetails[LOADING_AFTER_CLEANUP_FN] = null;
10856
- lDetails[NEXT_DEFER_BLOCK_STATE] = null;
10857
- }
10858
- applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView);
10859
- const duration = getMinimumDurationForState(tDetails, newState);
10860
- if (duration !== null) {
10861
- lDetails[STATE_IS_FROZEN_UNTIL] = now + duration;
10862
- scheduleDeferBlockUpdate(duration, lDetails, tNode, lContainer, hostLView);
10863
- }
10864
- }
10865
- } else {
10866
- lDetails[NEXT_DEFER_BLOCK_STATE] = newState;
10867
- }
10868
- }
10869
- function scheduleDeferBlockUpdate(timeout, lDetails, tNode, lContainer, hostLView) {
10870
- const callback = () => {
10871
- const nextState = lDetails[NEXT_DEFER_BLOCK_STATE];
10872
- lDetails[STATE_IS_FROZEN_UNTIL] = null;
10873
- lDetails[NEXT_DEFER_BLOCK_STATE] = null;
10874
- if (nextState !== null) {
10875
- renderDeferBlockState(nextState, tNode, lContainer);
10876
- }
10877
- };
10878
- return scheduleTimerTrigger(timeout, callback, hostLView[INJECTOR]);
10879
- }
10880
- function isValidStateChange(currentState, newState) {
10881
- return currentState < newState;
10882
- }
10883
- function renderPlaceholder(lView, tNode) {
10884
- const lContainer = lView[tNode.index];
10885
- ngDevMode && assertLContainer(lContainer);
10886
- renderDeferBlockState(DeferBlockState.Placeholder, tNode, lContainer);
10887
- }
10888
- function renderDeferStateAfterResourceLoading(tDetails, tNode, lContainer) {
10889
- ngDevMode && assertDefined(tDetails.loadingPromise, 'Expected loading Promise to exist on this defer block');
10890
- tDetails.loadingPromise.then(() => {
10891
- if (tDetails.loadingState === DeferDependenciesLoadingState.COMPLETE) {
10892
- ngDevMode && assertDeferredDependenciesLoaded(tDetails);
10893
- renderDeferBlockState(DeferBlockState.Complete, tNode, lContainer);
10894
- } else if (tDetails.loadingState === DeferDependenciesLoadingState.FAILED) {
10895
- renderDeferBlockState(DeferBlockState.Error, tNode, lContainer);
10896
- }
10897
- });
10898
- }
10899
- let applyDeferBlockStateWithSchedulingImpl = null;
10900
- function ɵɵdeferEnableTimerScheduling(tView, tDetails, placeholderConfigIndex, loadingConfigIndex) {
10901
- const tViewConsts = tView.consts;
10902
- if (placeholderConfigIndex != null) {
10903
- tDetails.placeholderBlockConfig = getConstant(tViewConsts, placeholderConfigIndex);
10904
- }
10905
- if (loadingConfigIndex != null) {
10906
- tDetails.loadingBlockConfig = getConstant(tViewConsts, loadingConfigIndex);
10907
- }
10908
- if (applyDeferBlockStateWithSchedulingImpl === null) {
10909
- applyDeferBlockStateWithSchedulingImpl = applyDeferBlockStateWithScheduling;
10910
- }
10911
- }
10912
-
10913
- const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
10914
- function getAsyncClassMetadataFn(type) {
10915
- const componentClass = type;
10916
- return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
10917
- }
10918
- function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
10919
- const componentClass = type;
10920
- componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
10921
- metadataSetterFn(...dependencies);
10922
- componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
10923
- return dependencies;
10924
- });
10925
- return componentClass[ASYNC_COMPONENT_METADATA_FN];
10926
- }
10927
- function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
10928
- return noSideEffects(() => {
10929
- const clazz = type;
10930
- if (decorators !== null) {
10931
- if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
10932
- clazz.decorators.push(...decorators);
10933
- } else {
10934
- clazz.decorators = decorators;
10935
- }
10936
- }
10937
- if (ctorParameters !== null) {
10938
- clazz.ctorParameters = ctorParameters;
10939
- }
10940
- if (propDecorators !== null) {
10941
- if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
10942
- clazz.propDecorators = {
10943
- ...clazz.propDecorators,
10944
- ...propDecorators
10945
- };
10946
- } else {
10947
- clazz.propDecorators = propDecorators;
10948
- }
10949
- }
10950
- });
10951
- }
10952
-
10953
- class Console {
10954
- log(message) {
10955
- console.log(message);
10956
- }
10957
- warn(message) {
10958
- console.warn(message);
10959
- }
10960
- static ɵfac = function Console_Factory(__ngFactoryType__) {
10961
- return new (__ngFactoryType__ || Console)();
10962
- };
10963
- static ɵprov = /*@__PURE__*/__defineInjectable({
10964
- token: Console,
10965
- factory: Console.ɵfac,
10966
- providedIn: 'platform'
10967
- });
10968
- }
10969
- (() => {
10970
- (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
10971
- type: Injectable,
10972
- args: [{
10973
- providedIn: 'platform'
10974
- }]
10975
- }], null, null);
10976
- })();
10614
+ (() => {
10615
+ (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
10616
+ type: Injectable,
10617
+ args: [{
10618
+ providedIn: 'platform'
10619
+ }]
10620
+ }], null, null);
10621
+ })();
10977
10622
 
10978
10623
  class DIDebugData {
10979
10624
  resolverToTokenToDependencies = new WeakMap();
@@ -12417,74 +12062,493 @@ class ApplicationRef {
12417
12062
  remove(this._views, view);
12418
12063
  view.detachFromAppRef();
12419
12064
  }
12420
- _loadComponent(componentRef) {
12421
- this.attachView(componentRef.hostView);
12422
- try {
12423
- this.tick();
12424
- } catch (e) {
12425
- this.internalErrorHandler(e);
12065
+ _loadComponent(componentRef) {
12066
+ this.attachView(componentRef.hostView);
12067
+ try {
12068
+ this.tick();
12069
+ } catch (e) {
12070
+ this.internalErrorHandler(e);
12071
+ }
12072
+ this.components.push(componentRef);
12073
+ const listeners = this._injector.get(APP_BOOTSTRAP_LISTENER, []);
12074
+ if (ngDevMode && !Array.isArray(listeners)) {
12075
+ throw new RuntimeError(-209, 'Unexpected type of the `APP_BOOTSTRAP_LISTENER` token value ' + `(expected an array, but got ${typeof listeners}). ` + 'Please check that the `APP_BOOTSTRAP_LISTENER` token is configured as a ' + '`multi: true` provider.');
12076
+ }
12077
+ listeners.forEach(listener => listener(componentRef));
12078
+ }
12079
+ ngOnDestroy() {
12080
+ if (this._destroyed) return;
12081
+ try {
12082
+ this._destroyListeners.forEach(listener => listener());
12083
+ this._views.slice().forEach(view => view.destroy());
12084
+ } finally {
12085
+ this._destroyed = true;
12086
+ this._views = [];
12087
+ this._destroyListeners = [];
12088
+ }
12089
+ }
12090
+ onDestroy(callback) {
12091
+ (typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
12092
+ this._destroyListeners.push(callback);
12093
+ return () => remove(this._destroyListeners, callback);
12094
+ }
12095
+ destroy() {
12096
+ if (this._destroyed) {
12097
+ throw new RuntimeError(406, ngDevMode && 'This instance of the `ApplicationRef` has already been destroyed.');
12098
+ }
12099
+ const injector = this._injector;
12100
+ if (injector.destroy && !injector.destroyed) {
12101
+ injector.destroy();
12102
+ }
12103
+ }
12104
+ get viewCount() {
12105
+ return this._views.length;
12106
+ }
12107
+ static ɵfac = function ApplicationRef_Factory(__ngFactoryType__) {
12108
+ return new (__ngFactoryType__ || ApplicationRef)();
12109
+ };
12110
+ static ɵprov = /*@__PURE__*/__defineInjectable({
12111
+ token: ApplicationRef,
12112
+ factory: ApplicationRef.ɵfac,
12113
+ providedIn: 'root'
12114
+ });
12115
+ }
12116
+ (() => {
12117
+ (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
12118
+ type: Injectable,
12119
+ args: [{
12120
+ providedIn: 'root'
12121
+ }]
12122
+ }], () => [], null);
12123
+ })();
12124
+ function warnIfDestroyed(destroyed) {
12125
+ if (destroyed) {
12126
+ console.warn(formatRuntimeError(406, 'This instance of the `ApplicationRef` has already been destroyed.'));
12127
+ }
12128
+ }
12129
+ function remove(list, el) {
12130
+ const index = list.indexOf(el);
12131
+ if (index > -1) {
12132
+ list.splice(index, 1);
12133
+ }
12134
+ }
12135
+
12136
+ function onIdle(callback, injector, options) {
12137
+ const scheduler = injector.get(IdleScheduler);
12138
+ const cleanupFn = () => scheduler.remove(callback);
12139
+ scheduler.add(callback, options);
12140
+ return cleanupFn;
12141
+ }
12142
+ function onIdleWrapper(options) {
12143
+ return (callback, injector) => onIdle(callback, injector, options);
12144
+ }
12145
+ class IdleScheduler {
12146
+ buckets = new Map();
12147
+ callbackBucket = new Map();
12148
+ applicationRef = inject(ApplicationRef);
12149
+ ngZone = inject(NgZone);
12150
+ idleService = inject(IDLE_SERVICE);
12151
+ add(callback, options) {
12152
+ const key = getIdleRequestKey(options);
12153
+ this.callbackBucket.set(callback, key);
12154
+ let bucket = this.buckets.get(key);
12155
+ if (bucket == null) {
12156
+ bucket = {
12157
+ idleId: null,
12158
+ queue: new Set()
12159
+ };
12160
+ this.buckets.set(key, bucket);
12161
+ }
12162
+ bucket.queue.add(callback);
12163
+ this.scheduleBucket(bucket, options);
12164
+ }
12165
+ remove(callback) {
12166
+ const key = this.callbackBucket.get(callback);
12167
+ if (key === undefined) return;
12168
+ this.callbackBucket.delete(callback);
12169
+ const bucket = this.buckets.get(key);
12170
+ if (!bucket) return;
12171
+ bucket.queue.delete(callback);
12172
+ if (bucket.queue.size === 0) {
12173
+ this.cancelBucket(bucket);
12174
+ this.buckets.delete(key);
12175
+ }
12176
+ }
12177
+ scheduleBucket(bucket, options) {
12178
+ if (bucket.idleId !== null) {
12179
+ return;
12180
+ }
12181
+ const key = getIdleRequestKey(options);
12182
+ const callback = deadline => {
12183
+ this.cancelBucket(bucket);
12184
+ for (const cb of bucket.queue) {
12185
+ cb();
12186
+ this.applicationRef._tick();
12187
+ bucket.queue.delete(cb);
12188
+ this.callbackBucket.delete(cb);
12189
+ if (deadline && deadline.timeRemaining() === 0 && !deadline.didTimeout) {
12190
+ break;
12191
+ }
12192
+ }
12193
+ if (bucket.queue.size > 0) {
12194
+ this.scheduleBucket(bucket, options);
12195
+ } else {
12196
+ this.buckets.delete(key);
12197
+ }
12198
+ };
12199
+ bucket.idleId = this.idleService.requestOnIdle(deadline => this.ngZone.run(() => callback(deadline)), options);
12200
+ }
12201
+ cancelBucket(bucket) {
12202
+ if (bucket.idleId !== null) {
12203
+ this.idleService.cancelOnIdle(bucket.idleId);
12204
+ bucket.idleId = null;
12205
+ }
12206
+ }
12207
+ ngOnDestroy() {
12208
+ for (const bucket of this.buckets.values()) {
12209
+ this.cancelBucket(bucket);
12210
+ }
12211
+ this.buckets.clear();
12212
+ this.callbackBucket.clear();
12213
+ }
12214
+ static ɵprov =
12215
+ /* @__PURE__ */
12216
+ __defineInjectable({
12217
+ token: IdleScheduler,
12218
+ providedIn: 'root',
12219
+ factory: () => new IdleScheduler()
12220
+ });
12221
+ }
12222
+ function getIdleRequestKey(options) {
12223
+ if (!options || options.timeout == null) {
12224
+ return '';
12225
+ }
12226
+ return `${options.timeout}`;
12227
+ }
12228
+
12229
+ function onTimer(delay) {
12230
+ return (callback, injector) => scheduleTimerTrigger(delay, callback, injector);
12231
+ }
12232
+ function scheduleTimerTrigger(delay, callback, injector) {
12233
+ const scheduler = injector.get(TimerScheduler);
12234
+ const ngZone = injector.get(NgZone);
12235
+ const cleanupFn = () => scheduler.remove(callback);
12236
+ scheduler.add(delay, callback, ngZone);
12237
+ return cleanupFn;
12238
+ }
12239
+ class TimerScheduler {
12240
+ executingCallbacks = false;
12241
+ timeoutId = null;
12242
+ invokeTimerAt = null;
12243
+ current = [];
12244
+ deferred = [];
12245
+ add(delay, callback, ngZone) {
12246
+ const target = this.executingCallbacks ? this.deferred : this.current;
12247
+ this.addToQueue(target, Date.now() + delay, callback);
12248
+ this.scheduleTimer(ngZone);
12249
+ }
12250
+ remove(callback) {
12251
+ const {
12252
+ current,
12253
+ deferred
12254
+ } = this;
12255
+ const callbackIndex = this.removeFromQueue(current, callback);
12256
+ if (callbackIndex === -1) {
12257
+ this.removeFromQueue(deferred, callback);
12258
+ }
12259
+ if (current.length === 0 && deferred.length === 0) {
12260
+ this.clearTimeout();
12261
+ }
12262
+ }
12263
+ addToQueue(target, invokeAt, callback) {
12264
+ let insertAtIndex = target.length;
12265
+ for (let i = 0; i < target.length; i += 2) {
12266
+ const invokeQueuedCallbackAt = target[i];
12267
+ if (invokeQueuedCallbackAt > invokeAt) {
12268
+ insertAtIndex = i;
12269
+ break;
12270
+ }
12271
+ }
12272
+ arrayInsert2(target, insertAtIndex, invokeAt, callback);
12273
+ }
12274
+ removeFromQueue(target, callback) {
12275
+ let index = -1;
12276
+ for (let i = 0; i < target.length; i += 2) {
12277
+ const queuedCallback = target[i + 1];
12278
+ if (queuedCallback === callback) {
12279
+ index = i;
12280
+ break;
12281
+ }
12282
+ }
12283
+ if (index > -1) {
12284
+ arraySplice(target, index, 2);
12285
+ }
12286
+ return index;
12287
+ }
12288
+ scheduleTimer(ngZone) {
12289
+ const callback = () => {
12290
+ this.clearTimeout();
12291
+ this.executingCallbacks = true;
12292
+ const current = [...this.current];
12293
+ const now = Date.now();
12294
+ for (let i = 0; i < current.length; i += 2) {
12295
+ const invokeAt = current[i];
12296
+ const callback = current[i + 1];
12297
+ if (invokeAt <= now) {
12298
+ callback();
12299
+ } else {
12300
+ break;
12301
+ }
12302
+ }
12303
+ let lastCallbackIndex = -1;
12304
+ for (let i = 0; i < this.current.length; i += 2) {
12305
+ const invokeAt = this.current[i];
12306
+ if (invokeAt <= now) {
12307
+ lastCallbackIndex = i + 1;
12308
+ } else {
12309
+ break;
12310
+ }
12311
+ }
12312
+ if (lastCallbackIndex >= 0) {
12313
+ arraySplice(this.current, 0, lastCallbackIndex + 1);
12314
+ }
12315
+ this.executingCallbacks = false;
12316
+ if (this.deferred.length > 0) {
12317
+ for (let i = 0; i < this.deferred.length; i += 2) {
12318
+ const invokeAt = this.deferred[i];
12319
+ const callback = this.deferred[i + 1];
12320
+ this.addToQueue(this.current, invokeAt, callback);
12321
+ }
12322
+ this.deferred.length = 0;
12323
+ }
12324
+ this.scheduleTimer(ngZone);
12325
+ };
12326
+ const FRAME_DURATION_MS = 16;
12327
+ if (this.current.length > 0) {
12328
+ const now = Date.now();
12329
+ const invokeAt = this.current[0];
12330
+ if (this.timeoutId === null || this.invokeTimerAt && this.invokeTimerAt - invokeAt > FRAME_DURATION_MS) {
12331
+ this.clearTimeout();
12332
+ const timeout = Math.max(invokeAt - now, FRAME_DURATION_MS);
12333
+ this.invokeTimerAt = invokeAt;
12334
+ this.timeoutId = ngZone.runOutsideAngular(() => {
12335
+ return setTimeout(() => ngZone.run(callback), timeout);
12336
+ });
12337
+ }
12338
+ }
12339
+ }
12340
+ clearTimeout() {
12341
+ if (this.timeoutId !== null) {
12342
+ clearTimeout(this.timeoutId);
12343
+ this.timeoutId = null;
12426
12344
  }
12427
- this.components.push(componentRef);
12428
- const listeners = this._injector.get(APP_BOOTSTRAP_LISTENER, []);
12429
- if (ngDevMode && !Array.isArray(listeners)) {
12430
- throw new RuntimeError(-209, 'Unexpected type of the `APP_BOOTSTRAP_LISTENER` token value ' + `(expected an array, but got ${typeof listeners}). ` + 'Please check that the `APP_BOOTSTRAP_LISTENER` token is configured as a ' + '`multi: true` provider.');
12345
+ }
12346
+ ngOnDestroy() {
12347
+ this.clearTimeout();
12348
+ this.current.length = 0;
12349
+ this.deferred.length = 0;
12350
+ }
12351
+ static ɵprov =
12352
+ /* @__PURE__ */
12353
+ __defineInjectable({
12354
+ token: TimerScheduler,
12355
+ providedIn: 'root',
12356
+ factory: () => new TimerScheduler()
12357
+ });
12358
+ }
12359
+
12360
+ class CachedInjectorService {
12361
+ cachedInjectors = new Map();
12362
+ getOrCreateInjector(key, parentInjector, providers, debugName) {
12363
+ if (!this.cachedInjectors.has(key)) {
12364
+ const injector = providers.length > 0 ? createEnvironmentInjector(providers, parentInjector, debugName) : null;
12365
+ this.cachedInjectors.set(key, injector);
12431
12366
  }
12432
- listeners.forEach(listener => listener(componentRef));
12367
+ return this.cachedInjectors.get(key);
12433
12368
  }
12434
12369
  ngOnDestroy() {
12435
- if (this._destroyed) return;
12436
12370
  try {
12437
- this._destroyListeners.forEach(listener => listener());
12438
- this._views.slice().forEach(view => view.destroy());
12371
+ for (const injector of this.cachedInjectors.values()) {
12372
+ if (injector !== null) {
12373
+ injector.destroy();
12374
+ }
12375
+ }
12439
12376
  } finally {
12440
- this._destroyed = true;
12441
- this._views = [];
12442
- this._destroyListeners = [];
12377
+ this.cachedInjectors.clear();
12443
12378
  }
12444
12379
  }
12445
- onDestroy(callback) {
12446
- (typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
12447
- this._destroyListeners.push(callback);
12448
- return () => remove(this._destroyListeners, callback);
12380
+ static ɵprov =
12381
+ /* @__PURE__ */
12382
+ __defineInjectable({
12383
+ token: CachedInjectorService,
12384
+ providedIn: 'environment',
12385
+ factory: () => new CachedInjectorService()
12386
+ });
12387
+ }
12388
+
12389
+ const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR = /* @__PURE__ */new InjectionToken('DEFER_BLOCK_DEPENDENCY_INTERCEPTOR');
12390
+ const DEFER_BLOCK_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'DEFER_BLOCK_CONFIG' : '');
12391
+ function getOrCreateEnvironmentInjector(parentInjector, tDetails, providers) {
12392
+ return parentInjector.get(CachedInjectorService).getOrCreateInjector(tDetails, parentInjector, providers, ngDevMode ? 'DeferBlock Injector' : '');
12393
+ }
12394
+ function createDeferBlockInjector(parentInjector, tDetails, providers) {
12395
+ if (parentInjector instanceof ChainedInjector) {
12396
+ const origInjector = parentInjector.injector;
12397
+ const parentEnvInjector = parentInjector.parentInjector;
12398
+ const envInjector = getOrCreateEnvironmentInjector(parentEnvInjector, tDetails, providers);
12399
+ return new ChainedInjector(origInjector, envInjector);
12449
12400
  }
12450
- destroy() {
12451
- if (this._destroyed) {
12452
- throw new RuntimeError(406, ngDevMode && 'This instance of the `ApplicationRef` has already been destroyed.');
12401
+ const parentEnvInjector = parentInjector.get(EnvironmentInjector);
12402
+ if (parentEnvInjector !== parentInjector) {
12403
+ const envInjector = getOrCreateEnvironmentInjector(parentEnvInjector, tDetails, providers);
12404
+ return new ChainedInjector(parentInjector, envInjector);
12405
+ }
12406
+ return getOrCreateEnvironmentInjector(parentInjector, tDetails, providers);
12407
+ }
12408
+ function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling = false) {
12409
+ const hostLView = lContainer[PARENT];
12410
+ const hostTView = hostLView[TVIEW];
12411
+ if (isDestroyed(hostLView)) return;
12412
+ ngDevMode && assertTNodeForLView(tNode, hostLView);
12413
+ const lDetails = getLDeferBlockDetails(hostLView, tNode);
12414
+ ngDevMode && assertDefined(lDetails, 'Expected a defer block state defined');
12415
+ const currentState = lDetails[DEFER_BLOCK_STATE];
12416
+ const ssrState = lDetails[SSR_BLOCK_STATE];
12417
+ if (ssrState !== null && newState < ssrState) {
12418
+ return;
12419
+ }
12420
+ if (isValidStateChange(currentState, newState) && isValidStateChange(lDetails[NEXT_DEFER_BLOCK_STATE] ?? -1, newState)) {
12421
+ const tDetails = getTDeferBlockDetails(hostTView, tNode);
12422
+ const needsScheduling = !skipTimerScheduling && (typeof ngServerMode === 'undefined' || !ngServerMode) && (getLoadingBlockAfter(tDetails) !== null || getMinimumDurationForState(tDetails, DeferBlockState.Loading) !== null || getMinimumDurationForState(tDetails, DeferBlockState.Placeholder));
12423
+ if (ngDevMode && needsScheduling) {
12424
+ assertDefined(applyDeferBlockStateWithSchedulingImpl, 'Expected scheduling function to be defined');
12453
12425
  }
12454
- const injector = this._injector;
12455
- if (injector.destroy && !injector.destroyed) {
12456
- injector.destroy();
12426
+ const applyStateFn = needsScheduling ? applyDeferBlockStateWithSchedulingImpl : applyDeferBlockState;
12427
+ try {
12428
+ applyStateFn(newState, lDetails, lContainer, tNode, hostLView);
12429
+ } catch (error) {
12430
+ handleUncaughtError(hostLView, error);
12457
12431
  }
12458
12432
  }
12459
- get viewCount() {
12460
- return this._views.length;
12433
+ }
12434
+ function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
12435
+ const dehydratedViewIx = lContainer[DEHYDRATED_VIEWS]?.findIndex(view => view.data[DEFER_BLOCK_STATE$1] === lDetails[DEFER_BLOCK_STATE]) ?? -1;
12436
+ const dehydratedView = dehydratedViewIx > -1 ? lContainer[DEHYDRATED_VIEWS][dehydratedViewIx] : null;
12437
+ return {
12438
+ dehydratedView,
12439
+ dehydratedViewIx
12440
+ };
12441
+ }
12442
+ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView) {
12443
+ profiler(ProfilerEvent.DeferBlockStateStart);
12444
+ const stateTmplIndex = getTemplateIndexForState(newState, hostLView, tNode);
12445
+ if (stateTmplIndex !== null) {
12446
+ lDetails[DEFER_BLOCK_STATE] = newState;
12447
+ const hostTView = hostLView[TVIEW];
12448
+ const adjustedIndex = stateTmplIndex + HEADER_OFFSET;
12449
+ const activeBlockTNode = getTNode(hostTView, adjustedIndex);
12450
+ const viewIndex = 0;
12451
+ removeLViewFromLContainer(lContainer, viewIndex);
12452
+ let injector;
12453
+ if (newState === DeferBlockState.Complete) {
12454
+ const tDetails = getTDeferBlockDetails(hostTView, tNode);
12455
+ const providers = tDetails.providers;
12456
+ if (providers && providers.length > 0) {
12457
+ injector = createDeferBlockInjector(hostLView[INJECTOR], tDetails, providers);
12458
+ }
12459
+ }
12460
+ const {
12461
+ dehydratedView,
12462
+ dehydratedViewIx
12463
+ } = findMatchingDehydratedViewForDeferBlock(lContainer, lDetails);
12464
+ const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, {
12465
+ injector,
12466
+ dehydratedView
12467
+ });
12468
+ addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
12469
+ markViewForRefresh(embeddedLView);
12470
+ if (dehydratedViewIx > -1) {
12471
+ lContainer[DEHYDRATED_VIEWS]?.splice(dehydratedViewIx, 1);
12472
+ }
12473
+ if ((newState === DeferBlockState.Complete || newState === DeferBlockState.Error) && Array.isArray(lDetails[ON_COMPLETE_FNS])) {
12474
+ for (const callback of lDetails[ON_COMPLETE_FNS]) {
12475
+ callback();
12476
+ }
12477
+ lDetails[ON_COMPLETE_FNS] = null;
12478
+ }
12461
12479
  }
12462
- static ɵfac = function ApplicationRef_Factory(__ngFactoryType__) {
12463
- return new (__ngFactoryType__ || ApplicationRef)();
12480
+ profiler(ProfilerEvent.DeferBlockStateEnd);
12481
+ }
12482
+ function applyDeferBlockStateWithScheduling(newState, lDetails, lContainer, tNode, hostLView) {
12483
+ const now = Date.now();
12484
+ const hostTView = hostLView[TVIEW];
12485
+ const tDetails = getTDeferBlockDetails(hostTView, tNode);
12486
+ if (lDetails[STATE_IS_FROZEN_UNTIL] === null || lDetails[STATE_IS_FROZEN_UNTIL] <= now) {
12487
+ lDetails[STATE_IS_FROZEN_UNTIL] = null;
12488
+ const loadingAfter = getLoadingBlockAfter(tDetails);
12489
+ const inLoadingAfterPhase = lDetails[LOADING_AFTER_CLEANUP_FN] !== null;
12490
+ if (newState === DeferBlockState.Loading && loadingAfter !== null && !inLoadingAfterPhase) {
12491
+ lDetails[NEXT_DEFER_BLOCK_STATE] = newState;
12492
+ const cleanupFn = scheduleDeferBlockUpdate(loadingAfter, lDetails, tNode, lContainer, hostLView);
12493
+ lDetails[LOADING_AFTER_CLEANUP_FN] = cleanupFn;
12494
+ } else {
12495
+ if (newState > DeferBlockState.Loading && inLoadingAfterPhase) {
12496
+ lDetails[LOADING_AFTER_CLEANUP_FN]();
12497
+ lDetails[LOADING_AFTER_CLEANUP_FN] = null;
12498
+ lDetails[NEXT_DEFER_BLOCK_STATE] = null;
12499
+ }
12500
+ applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView);
12501
+ const duration = getMinimumDurationForState(tDetails, newState);
12502
+ if (duration !== null) {
12503
+ lDetails[STATE_IS_FROZEN_UNTIL] = now + duration;
12504
+ scheduleDeferBlockUpdate(duration, lDetails, tNode, lContainer, hostLView);
12505
+ }
12506
+ }
12507
+ } else {
12508
+ lDetails[NEXT_DEFER_BLOCK_STATE] = newState;
12509
+ }
12510
+ }
12511
+ function scheduleDeferBlockUpdate(timeout, lDetails, tNode, lContainer, hostLView) {
12512
+ const callback = () => {
12513
+ const nextState = lDetails[NEXT_DEFER_BLOCK_STATE];
12514
+ lDetails[STATE_IS_FROZEN_UNTIL] = null;
12515
+ lDetails[NEXT_DEFER_BLOCK_STATE] = null;
12516
+ if (nextState !== null) {
12517
+ renderDeferBlockState(nextState, tNode, lContainer);
12518
+ }
12464
12519
  };
12465
- static ɵprov = /*@__PURE__*/__defineInjectable({
12466
- token: ApplicationRef,
12467
- factory: ApplicationRef.ɵfac,
12468
- providedIn: 'root'
12520
+ return scheduleTimerTrigger(timeout, callback, hostLView[INJECTOR]);
12521
+ }
12522
+ function isValidStateChange(currentState, newState) {
12523
+ return currentState < newState;
12524
+ }
12525
+ function renderPlaceholder(lView, tNode) {
12526
+ const lContainer = lView[tNode.index];
12527
+ ngDevMode && assertLContainer(lContainer);
12528
+ renderDeferBlockState(DeferBlockState.Placeholder, tNode, lContainer);
12529
+ }
12530
+ function renderDeferStateAfterResourceLoading(tDetails, tNode, lContainer) {
12531
+ ngDevMode && assertDefined(tDetails.loadingPromise, 'Expected loading Promise to exist on this defer block');
12532
+ tDetails.loadingPromise.then(() => {
12533
+ if (tDetails.loadingState === DeferDependenciesLoadingState.COMPLETE) {
12534
+ ngDevMode && assertDeferredDependenciesLoaded(tDetails);
12535
+ renderDeferBlockState(DeferBlockState.Complete, tNode, lContainer);
12536
+ } else if (tDetails.loadingState === DeferDependenciesLoadingState.FAILED) {
12537
+ renderDeferBlockState(DeferBlockState.Error, tNode, lContainer);
12538
+ }
12469
12539
  });
12470
12540
  }
12471
- (() => {
12472
- (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
12473
- type: Injectable,
12474
- args: [{
12475
- providedIn: 'root'
12476
- }]
12477
- }], () => [], null);
12478
- })();
12479
- function warnIfDestroyed(destroyed) {
12480
- if (destroyed) {
12481
- console.warn(formatRuntimeError(406, 'This instance of the `ApplicationRef` has already been destroyed.'));
12541
+ let applyDeferBlockStateWithSchedulingImpl = null;
12542
+ function ɵɵdeferEnableTimerScheduling(tView, tDetails, placeholderConfigIndex, loadingConfigIndex) {
12543
+ const tViewConsts = tView.consts;
12544
+ if (placeholderConfigIndex != null) {
12545
+ tDetails.placeholderBlockConfig = getConstant(tViewConsts, placeholderConfigIndex);
12482
12546
  }
12483
- }
12484
- function remove(list, el) {
12485
- const index = list.indexOf(el);
12486
- if (index > -1) {
12487
- list.splice(index, 1);
12547
+ if (loadingConfigIndex != null) {
12548
+ tDetails.loadingBlockConfig = getConstant(tViewConsts, loadingConfigIndex);
12549
+ }
12550
+ if (applyDeferBlockStateWithSchedulingImpl === null) {
12551
+ applyDeferBlockStateWithSchedulingImpl = applyDeferBlockStateWithScheduling;
12488
12552
  }
12489
12553
  }
12490
12554
 
@@ -13026,29 +13090,36 @@ function ɵɵdeferHydrateNever() {
13026
13090
  triggerDeferBlock(2, lView, tNode);
13027
13091
  }
13028
13092
  }
13029
- function ɵɵdeferOnIdle() {
13093
+ function ɵɵdeferOnIdle(timeout) {
13030
13094
  const lView = getLView();
13031
13095
  const tNode = getCurrentTNode();
13032
13096
  if (ngDevMode) {
13033
- trackTriggerForDebugging(lView[TVIEW], tNode, 'on idle');
13097
+ const expression = timeout ? `on idle(${timeout})` : 'on idle';
13098
+ trackTriggerForDebugging(lView[TVIEW], tNode, expression);
13034
13099
  }
13035
13100
  if (!shouldAttachTrigger(0, lView, tNode)) return;
13036
- scheduleDelayedTrigger(onIdle);
13101
+ scheduleDelayedTrigger(onIdleWrapper({
13102
+ timeout
13103
+ }));
13037
13104
  }
13038
- function ɵɵdeferPrefetchOnIdle() {
13105
+ function ɵɵdeferPrefetchOnIdle(timeout) {
13039
13106
  const lView = getLView();
13040
13107
  const tNode = getCurrentTNode();
13041
13108
  if (ngDevMode) {
13042
- trackTriggerForDebugging(lView[TVIEW], tNode, 'prefetch on idle');
13109
+ const expression = timeout ? `prefetch on idle(${timeout})` : 'prefetch on idle';
13110
+ trackTriggerForDebugging(lView[TVIEW], tNode, expression);
13043
13111
  }
13044
13112
  if (!shouldAttachTrigger(1, lView, tNode)) return;
13045
- scheduleDelayedPrefetching(onIdle);
13113
+ scheduleDelayedPrefetching(onIdleWrapper({
13114
+ timeout
13115
+ }));
13046
13116
  }
13047
- function ɵɵdeferHydrateOnIdle() {
13117
+ function ɵɵdeferHydrateOnIdle(timeout) {
13048
13118
  const lView = getLView();
13049
13119
  const tNode = getCurrentTNode();
13050
13120
  if (ngDevMode) {
13051
- trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on idle');
13121
+ const expression = timeout ? `hydrate on idle(${timeout})` : 'hydrate on idle';
13122
+ trackTriggerForDebugging(lView[TVIEW], tNode, expression);
13052
13123
  }
13053
13124
  if (!shouldAttachTrigger(2, lView, tNode)) return;
13054
13125
  const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
@@ -13056,7 +13127,9 @@ function ɵɵdeferHydrateOnIdle() {
13056
13127
  if (typeof ngServerMode !== 'undefined' && ngServerMode) {
13057
13128
  triggerDeferBlock(2, lView, tNode);
13058
13129
  } else {
13059
- scheduleDelayedHydrating(onIdle, lView, tNode);
13130
+ scheduleDelayedHydrating(onIdleWrapper({
13131
+ timeout
13132
+ }), lView, tNode);
13060
13133
  }
13061
13134
  }
13062
13135
  function ɵɵdeferOnImmediate() {
@@ -13327,15 +13400,19 @@ function runEnterAnimation(lView, tNode, value, ngZone) {
13327
13400
  const renderer = lView[RENDERER];
13328
13401
  const activeClasses = getClassListFromValue(value);
13329
13402
  const cleanupFns = [];
13403
+ let hasCompleted = false;
13330
13404
  const handleEnterAnimationStart = event => {
13331
- if (event.target !== nativeElement) return;
13405
+ if (getEventTarget(event) !== nativeElement) return;
13332
13406
  const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
13333
13407
  ngZone.runOutsideAngular(() => {
13334
13408
  renderer.listen(nativeElement, eventName, handleEnterAnimationEnd);
13335
13409
  });
13336
13410
  };
13337
13411
  const handleEnterAnimationEnd = event => {
13338
- if (event.target !== nativeElement) return;
13412
+ if (getEventTarget(event) !== nativeElement) return;
13413
+ if (isLongestAnimation(event, nativeElement)) {
13414
+ hasCompleted = true;
13415
+ }
13339
13416
  enterAnimationEnd(event, nativeElement, renderer);
13340
13417
  };
13341
13418
  if (activeClasses && activeClasses.length > 0) {
@@ -13349,6 +13426,7 @@ function runEnterAnimation(lView, tNode, value, ngZone) {
13349
13426
  }
13350
13427
  ngZone.runOutsideAngular(() => {
13351
13428
  requestAnimationFrame(() => {
13429
+ if (hasCompleted) return;
13352
13430
  determineLongestAnimation(nativeElement, longestAnimations, areAnimationSupported);
13353
13431
  if (!longestAnimations.has(nativeElement)) {
13354
13432
  for (const klass of activeClasses) {
@@ -13362,9 +13440,9 @@ function runEnterAnimation(lView, tNode, value, ngZone) {
13362
13440
  }
13363
13441
  function enterAnimationEnd(event, nativeElement, renderer) {
13364
13442
  const elementData = enterClassMap.get(nativeElement);
13365
- if (event.target !== nativeElement || !elementData) return;
13443
+ if (getEventTarget(event) !== nativeElement || !elementData) return;
13366
13444
  if (isLongestAnimation(event, nativeElement)) {
13367
- event.stopImmediatePropagation();
13445
+ event.stopPropagation();
13368
13446
  for (const klass of elementData.classList) {
13369
13447
  renderer.removeClass(nativeElement, klass);
13370
13448
  }
@@ -13436,11 +13514,16 @@ function runLeaveAnimations(lView, tNode, value, ngZone) {
13436
13514
  function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone) {
13437
13515
  cancelAnimationsIfRunning(el, renderer);
13438
13516
  const cleanupFns = [];
13439
- const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
13517
+ const componentResolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
13518
+ let fallbackTimeoutId;
13519
+ let hasCompleted = false;
13440
13520
  const handleOutAnimationEnd = event => {
13441
- if (event.target !== el) return;
13442
- if (event instanceof CustomEvent || isLongestAnimation(event, el)) {
13443
- event.stopImmediatePropagation();
13521
+ const target = getEventTarget(event);
13522
+ if (target !== el && event.type !== 'animation-fallback') return;
13523
+ if (event.type === 'animation-fallback' || isLongestAnimation(event, el)) {
13524
+ hasCompleted = true;
13525
+ if (fallbackTimeoutId) clearTimeout(fallbackTimeoutId);
13526
+ if (event.type !== 'animation-fallback') event.stopPropagation();
13444
13527
  longestAnimations.delete(el);
13445
13528
  clearLeavingNodes(tNode, el);
13446
13529
  if (Array.isArray(tNode.projection)) {
@@ -13448,7 +13531,7 @@ function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone)
13448
13531
  renderer.removeClass(el, item);
13449
13532
  }
13450
13533
  }
13451
- cleanupAfterLeaveAnimations(resolvers, cleanupFns);
13534
+ cleanupAfterLeaveAnimations(componentResolvers, cleanupFns);
13452
13535
  clearLViewNodeAnimationResolvers(lView, tNode);
13453
13536
  }
13454
13537
  };
@@ -13462,11 +13545,18 @@ function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone)
13462
13545
  }
13463
13546
  ngZone.runOutsideAngular(() => {
13464
13547
  requestAnimationFrame(() => {
13548
+ if (hasCompleted) return;
13465
13549
  determineLongestAnimation(el, longestAnimations, areAnimationSupported);
13466
- if (!longestAnimations.has(el)) {
13550
+ const longest = longestAnimations.get(el);
13551
+ if (!longest) {
13467
13552
  clearLeavingNodes(tNode, el);
13468
- cleanupAfterLeaveAnimations(resolvers, cleanupFns);
13553
+ cleanupAfterLeaveAnimations(componentResolvers, cleanupFns);
13469
13554
  clearLViewNodeAnimationResolvers(lView, tNode);
13555
+ } else {
13556
+ fallbackTimeoutId = setTimeout(() => {
13557
+ handleOutAnimationEnd(new CustomEvent('animation-fallback'));
13558
+ }, longest.duration + 50);
13559
+ cleanupFns.push(() => clearTimeout(fallbackTimeoutId));
13470
13560
  }
13471
13561
  });
13472
13562
  });
@@ -18075,12 +18165,12 @@ class ChangeDetectionSchedulerImpl {
18075
18165
  }
18076
18166
  switch (source) {
18077
18167
  case 0:
18168
+ case 2:
18078
18169
  {
18079
18170
  this.appRef.dirtyFlags |= 2;
18080
18171
  break;
18081
18172
  }
18082
18173
  case 3:
18083
- case 2:
18084
18174
  case 4:
18085
18175
  case 5:
18086
18176
  case 1:
@@ -18568,5 +18658,5 @@ function getDebugNode(nativeNode) {
18568
18658
  return null;
18569
18659
  }
18570
18660
 
18571
- 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, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, 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, ProfilerEvent, 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, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵ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, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
18661
+ 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, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, 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, ProfilerEvent, 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, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideIdleServiceWith, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵ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, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
18572
18662
  //# sourceMappingURL=_debug_node-chunk.mjs.map