@angular/core 21.0.0 → 21.0.2

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/_attribute-chunk.mjs.map +1 -1
  3. package/fesm2022/_debug_node-chunk.mjs +469 -367
  4. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  5. package/fesm2022/_effect-chunk.mjs +1 -1
  6. package/fesm2022/_effect-chunk.mjs.map +1 -1
  7. package/fesm2022/_linked_signal-chunk.mjs +1 -1
  8. package/fesm2022/_linked_signal-chunk.mjs.map +1 -1
  9. package/fesm2022/_not_found-chunk.mjs +1 -1
  10. package/fesm2022/_not_found-chunk.mjs.map +1 -1
  11. package/fesm2022/_resource-chunk.mjs +33 -19
  12. package/fesm2022/_resource-chunk.mjs.map +1 -1
  13. package/fesm2022/_untracked-chunk.mjs +14 -6
  14. package/fesm2022/_untracked-chunk.mjs.map +1 -1
  15. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  16. package/fesm2022/_weak_ref-chunk.mjs.map +1 -1
  17. package/fesm2022/core.mjs +27 -16
  18. package/fesm2022/core.mjs.map +1 -1
  19. package/fesm2022/primitives-di.mjs +1 -1
  20. package/fesm2022/primitives-di.mjs.map +1 -1
  21. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  22. package/fesm2022/primitives-event-dispatch.mjs.map +1 -1
  23. package/fesm2022/primitives-signals.mjs +3 -3
  24. package/fesm2022/primitives-signals.mjs.map +1 -1
  25. package/fesm2022/rxjs-interop.mjs +12 -4
  26. package/fesm2022/rxjs-interop.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +1 -1
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/package.json +3 -3
  30. package/resources/best-practices.md +0 -1
  31. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  32. package/schematics/bundles/application-config-core.cjs +1 -1
  33. package/schematics/bundles/apply_import_manager-1Zs_gpB6.cjs +1 -1
  34. package/schematics/bundles/bootstrap-options-migration.cjs +53 -7
  35. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  36. package/schematics/bundles/common-to-standalone-migration.cjs +5 -3
  37. package/schematics/bundles/compiler_host-DBwYMlTo.cjs +1 -1
  38. package/schematics/bundles/control-flow-migration.cjs +1 -1
  39. package/schematics/bundles/imports-DP72APSx.cjs +1 -1
  40. package/schematics/bundles/index-B7I9sIUx.cjs +1 -1
  41. package/schematics/bundles/inject-migration.cjs +1 -1
  42. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  43. package/schematics/bundles/migrate_ts_type_references-UGIUl7En.cjs +1 -1
  44. package/schematics/bundles/ng_component_template-Dsuq1Lw7.cjs +1 -1
  45. package/schematics/bundles/ng_decorators-DSFlWYQY.cjs +1 -1
  46. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  47. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  48. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  49. package/schematics/bundles/output-migration.cjs +1 -1
  50. package/schematics/bundles/parse_html-8VLCL37B.cjs +1 -1
  51. package/schematics/bundles/project_paths-DvD50ouC.cjs +1 -1
  52. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  53. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  54. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  55. package/schematics/bundles/router-current-navigation.cjs +1 -1
  56. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  57. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  58. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  59. package/schematics/bundles/signal-input-migration.cjs +1 -1
  60. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  61. package/schematics/bundles/signals.cjs +1 -1
  62. package/schematics/bundles/standalone-migration.cjs +1 -1
  63. package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
  64. package/types/_api-chunk.d.ts +7 -2
  65. package/types/_chrome_dev_tools_performance-chunk.d.ts +9 -1
  66. package/types/_discovery-chunk.d.ts +28 -21
  67. package/types/_effect-chunk.d.ts +1 -1
  68. package/types/_event_dispatcher-chunk.d.ts +1 -1
  69. package/types/_formatter-chunk.d.ts +1 -1
  70. package/types/_weak_ref-chunk.d.ts +1 -1
  71. package/types/core.d.ts +158 -147
  72. package/types/primitives-di.d.ts +1 -1
  73. package/types/primitives-event-dispatch.d.ts +1 -1
  74. package/types/primitives-signals.d.ts +1 -1
  75. package/types/rxjs-interop.d.ts +5 -1
  76. package/types/testing.d.ts +13 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.2
3
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, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, resetPreOrderHookFlags, PARENT, RENDERER, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, 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, 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, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, EffectRefImpl, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, untracked, getBindingIndex, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, 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 './_untracked-chunk.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, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, 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, 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, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, EnvironmentInjector, 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, untracked, getBindingIndex, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, 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 './_untracked-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';
@@ -422,6 +422,36 @@ const profiler = function (event, instance = null, eventFn) {
422
422
  }
423
423
  };
424
424
 
425
+ var ProfilerEvent;
426
+ (function (ProfilerEvent) {
427
+ ProfilerEvent[ProfilerEvent["TemplateCreateStart"] = 0] = "TemplateCreateStart";
428
+ ProfilerEvent[ProfilerEvent["TemplateCreateEnd"] = 1] = "TemplateCreateEnd";
429
+ ProfilerEvent[ProfilerEvent["TemplateUpdateStart"] = 2] = "TemplateUpdateStart";
430
+ ProfilerEvent[ProfilerEvent["TemplateUpdateEnd"] = 3] = "TemplateUpdateEnd";
431
+ ProfilerEvent[ProfilerEvent["LifecycleHookStart"] = 4] = "LifecycleHookStart";
432
+ ProfilerEvent[ProfilerEvent["LifecycleHookEnd"] = 5] = "LifecycleHookEnd";
433
+ ProfilerEvent[ProfilerEvent["OutputStart"] = 6] = "OutputStart";
434
+ ProfilerEvent[ProfilerEvent["OutputEnd"] = 7] = "OutputEnd";
435
+ ProfilerEvent[ProfilerEvent["BootstrapApplicationStart"] = 8] = "BootstrapApplicationStart";
436
+ ProfilerEvent[ProfilerEvent["BootstrapApplicationEnd"] = 9] = "BootstrapApplicationEnd";
437
+ ProfilerEvent[ProfilerEvent["BootstrapComponentStart"] = 10] = "BootstrapComponentStart";
438
+ ProfilerEvent[ProfilerEvent["BootstrapComponentEnd"] = 11] = "BootstrapComponentEnd";
439
+ ProfilerEvent[ProfilerEvent["ChangeDetectionStart"] = 12] = "ChangeDetectionStart";
440
+ ProfilerEvent[ProfilerEvent["ChangeDetectionEnd"] = 13] = "ChangeDetectionEnd";
441
+ ProfilerEvent[ProfilerEvent["ChangeDetectionSyncStart"] = 14] = "ChangeDetectionSyncStart";
442
+ ProfilerEvent[ProfilerEvent["ChangeDetectionSyncEnd"] = 15] = "ChangeDetectionSyncEnd";
443
+ ProfilerEvent[ProfilerEvent["AfterRenderHooksStart"] = 16] = "AfterRenderHooksStart";
444
+ ProfilerEvent[ProfilerEvent["AfterRenderHooksEnd"] = 17] = "AfterRenderHooksEnd";
445
+ ProfilerEvent[ProfilerEvent["ComponentStart"] = 18] = "ComponentStart";
446
+ ProfilerEvent[ProfilerEvent["ComponentEnd"] = 19] = "ComponentEnd";
447
+ ProfilerEvent[ProfilerEvent["DeferBlockStateStart"] = 20] = "DeferBlockStateStart";
448
+ ProfilerEvent[ProfilerEvent["DeferBlockStateEnd"] = 21] = "DeferBlockStateEnd";
449
+ ProfilerEvent[ProfilerEvent["DynamicComponentStart"] = 22] = "DynamicComponentStart";
450
+ ProfilerEvent[ProfilerEvent["DynamicComponentEnd"] = 23] = "DynamicComponentEnd";
451
+ ProfilerEvent[ProfilerEvent["HostBindingsUpdateStart"] = 24] = "HostBindingsUpdateStart";
452
+ ProfilerEvent[ProfilerEvent["HostBindingsUpdateEnd"] = 25] = "HostBindingsUpdateEnd";
453
+ })(ProfilerEvent || (ProfilerEvent = {}));
454
+
425
455
  function registerPreOrderHooks(directiveIndex, directiveDef, tView) {
426
456
  ngDevMode && assertFirstCreatePass(tView);
427
457
  const {
@@ -519,13 +549,13 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
519
549
  }
520
550
  }
521
551
  function callHookInternal(directive, hook) {
522
- profiler(4, directive, hook);
552
+ profiler(ProfilerEvent.LifecycleHookStart, directive, hook);
523
553
  const prevConsumer = setActiveConsumer(null);
524
554
  try {
525
555
  hook.call(directive);
526
556
  } finally {
527
557
  setActiveConsumer(prevConsumer);
528
- profiler(5, directive, hook);
558
+ profiler(ProfilerEvent.LifecycleHookEnd, directive, hook);
529
559
  }
530
560
  }
531
561
  function callHook(currentView, initPhase, arr, i) {
@@ -1757,12 +1787,6 @@ function getDirectives(node) {
1757
1787
  }
1758
1788
  return context.directives === null ? [] : [...context.directives];
1759
1789
  }
1760
- var Framework;
1761
- (function (Framework) {
1762
- Framework["Angular"] = "angular";
1763
- Framework["ACX"] = "acx";
1764
- Framework["Wiz"] = "wiz";
1765
- })(Framework || (Framework = {}));
1766
1790
  var AcxChangeDetectionStrategy;
1767
1791
  (function (AcxChangeDetectionStrategy) {
1768
1792
  AcxChangeDetectionStrategy[AcxChangeDetectionStrategy["Default"] = 0] = "Default";
@@ -1911,7 +1935,7 @@ const PLATFORM_ID = new InjectionToken(typeof ngDevMode !== undefined && ngDevMo
1911
1935
  const ANIMATION_MODULE_TYPE = new InjectionToken(typeof ngDevMode !== undefined && ngDevMode ? 'AnimationModuleType' : '');
1912
1936
  const CSP_NONCE = new InjectionToken(typeof ngDevMode !== undefined && ngDevMode ? 'CSP nonce' : '', {
1913
1937
  factory: () => {
1914
- return getDocument().body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
1938
+ return inject(DOCUMENT$1).body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
1915
1939
  }
1916
1940
  });
1917
1941
  const IMAGE_CONFIG_DEFAULTS = {
@@ -1927,20 +1951,19 @@ const IMAGE_CONFIG = new InjectionToken(typeof ngDevMode !== undefined && ngDevM
1927
1951
  function makeStateKey(key) {
1928
1952
  return key;
1929
1953
  }
1930
- function initTransferState() {
1931
- const transferState = new TransferState();
1932
- if (typeof ngServerMode === 'undefined' || !ngServerMode) {
1933
- transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID));
1934
- }
1935
- return transferState;
1936
- }
1937
1954
  class TransferState {
1938
1955
  static ɵprov =
1939
1956
  /* @__PURE__ */
1940
1957
  __defineInjectable({
1941
1958
  token: TransferState,
1942
1959
  providedIn: 'root',
1943
- factory: initTransferState
1960
+ factory: () => {
1961
+ const transferState = new TransferState();
1962
+ if (typeof ngServerMode === 'undefined' || !ngServerMode) {
1963
+ transferState.store = retrieveTransferredState(inject(DOCUMENT$1), inject(APP_ID));
1964
+ }
1965
+ return transferState;
1966
+ }
1944
1967
  });
1945
1968
  store = {};
1946
1969
  onSerializeCallbacks = {};
@@ -2726,6 +2749,120 @@ var ViewEncapsulation;
2726
2749
  ViewEncapsulation[ViewEncapsulation["ExperimentalIsolatedShadowDom"] = 4] = "ExperimentalIsolatedShadowDom";
2727
2750
  })(ViewEncapsulation || (ViewEncapsulation = {}));
2728
2751
 
2752
+ const CUSTOM_ELEMENTS_SCHEMA = {
2753
+ name: 'custom-elements'
2754
+ };
2755
+ const NO_ERRORS_SCHEMA = {
2756
+ name: 'no-errors-schema'
2757
+ };
2758
+
2759
+ let shouldThrowErrorOnUnknownElement = false;
2760
+ function ɵsetUnknownElementStrictMode(shouldThrow) {
2761
+ shouldThrowErrorOnUnknownElement = shouldThrow;
2762
+ }
2763
+ function ɵgetUnknownElementStrictMode() {
2764
+ return shouldThrowErrorOnUnknownElement;
2765
+ }
2766
+ let shouldThrowErrorOnUnknownProperty = false;
2767
+ function ɵsetUnknownPropertyStrictMode(shouldThrow) {
2768
+ shouldThrowErrorOnUnknownProperty = shouldThrow;
2769
+ }
2770
+ function ɵgetUnknownPropertyStrictMode() {
2771
+ return shouldThrowErrorOnUnknownProperty;
2772
+ }
2773
+ function validateElementIsKnown(lView, tNode) {
2774
+ const tView = lView[TVIEW];
2775
+ if (tView.schemas === null) return;
2776
+ const tagName = tNode.value;
2777
+ if (!isDirectiveHost(tNode) && tagName !== null) {
2778
+ const isUnknown = typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 && !customElements.get(tagName);
2779
+ if (isUnknown && !matchingSchemas(tView.schemas, tagName)) {
2780
+ const isHostStandalone = isHostComponentStandalone(lView);
2781
+ const templateLocation = getTemplateLocationDetails(lView);
2782
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
2783
+ let message = `'${tagName}' is not a known element${templateLocation}:\n`;
2784
+ message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared'}.\n`;
2785
+ if (tagName && tagName.indexOf('-') > -1) {
2786
+ message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
2787
+ } else {
2788
+ message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
2789
+ }
2790
+ if (shouldThrowErrorOnUnknownElement) {
2791
+ throw new RuntimeError(304, message);
2792
+ } else {
2793
+ console.error(formatRuntimeError(304, message));
2794
+ }
2795
+ }
2796
+ }
2797
+ }
2798
+ function isPropertyValid(element, propName, tagName, schemas) {
2799
+ if (schemas === null) return true;
2800
+ if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
2801
+ return true;
2802
+ }
2803
+ return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
2804
+ }
2805
+ function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
2806
+ if (!tagName && nodeType === 4) {
2807
+ tagName = 'ng-template';
2808
+ }
2809
+ const isHostStandalone = isHostComponentStandalone(lView);
2810
+ const templateLocation = getTemplateLocationDetails(lView);
2811
+ let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
2812
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
2813
+ const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared';
2814
+ if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
2815
+ const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
2816
+ message += `\nIf the '${propName}' is an Angular control flow directive, ` + `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
2817
+ } else {
2818
+ message += `\n1. If '${tagName}' is an Angular component and it has the ` + `'${propName}' input, then verify that it is ${importLocation}.`;
2819
+ if (tagName && tagName.indexOf('-') > -1) {
2820
+ message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` + `to the ${schemas} of this component to suppress this message.`;
2821
+ message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
2822
+ } else {
2823
+ message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
2824
+ }
2825
+ }
2826
+ reportUnknownPropertyError(message);
2827
+ }
2828
+ function reportUnknownPropertyError(message) {
2829
+ if (shouldThrowErrorOnUnknownProperty) {
2830
+ throw new RuntimeError(303, message);
2831
+ } else {
2832
+ console.error(formatRuntimeError(303, message));
2833
+ }
2834
+ }
2835
+ function getDeclarationComponentDef(lView) {
2836
+ !ngDevMode && throwError('Must never be called in production mode');
2837
+ const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
2838
+ const context = declarationLView[CONTEXT];
2839
+ if (!context) return null;
2840
+ return context.constructor ? getComponentDef(context.constructor) : null;
2841
+ }
2842
+ function isHostComponentStandalone(lView) {
2843
+ !ngDevMode && throwError('Must never be called in production mode');
2844
+ const componentDef = getDeclarationComponentDef(lView);
2845
+ return !!componentDef?.standalone;
2846
+ }
2847
+ function getTemplateLocationDetails(lView) {
2848
+ !ngDevMode && throwError('Must never be called in production mode');
2849
+ const hostComponentDef = getDeclarationComponentDef(lView);
2850
+ const componentClassName = hostComponentDef?.type?.name;
2851
+ return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
2852
+ }
2853
+ const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'], ['ngSwitchDefault', 'NgSwitchDefault']]);
2854
+ function matchingSchemas(schemas, tagName) {
2855
+ if (schemas !== null) {
2856
+ for (let i = 0; i < schemas.length; i++) {
2857
+ const schema = schemas[i];
2858
+ if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1) {
2859
+ return true;
2860
+ }
2861
+ }
2862
+ }
2863
+ return false;
2864
+ }
2865
+
2729
2866
  let policy$1;
2730
2867
  function getPolicy$1() {
2731
2868
  if (policy$1 === undefined) {
@@ -3064,6 +3201,81 @@ function isTemplateElement(el) {
3064
3201
  return el.nodeType === Node.ELEMENT_NODE && el.nodeName === 'TEMPLATE';
3065
3202
  }
3066
3203
 
3204
+ const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
3205
+ const COMMENT_DELIMITER = /(<|>)/g;
3206
+ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
3207
+ function escapeCommentText(value) {
3208
+ return value.replace(COMMENT_DISALLOWED, text => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
3209
+ }
3210
+
3211
+ function createTextNode(renderer, value) {
3212
+ return renderer.createText(value);
3213
+ }
3214
+ function updateTextNode(renderer, rNode, value) {
3215
+ renderer.setValue(rNode, value);
3216
+ }
3217
+ function createCommentNode(renderer, value) {
3218
+ return renderer.createComment(escapeCommentText(value));
3219
+ }
3220
+ function createElementNode(renderer, name, namespace) {
3221
+ return renderer.createElement(name, namespace);
3222
+ }
3223
+ function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
3224
+ renderer.insertBefore(parent, child, beforeNode, isMove);
3225
+ }
3226
+ function nativeAppendChild(renderer, parent, child) {
3227
+ ngDevMode && assertDefined(parent, 'parent node must be defined');
3228
+ renderer.appendChild(parent, child);
3229
+ }
3230
+ function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
3231
+ if (beforeNode !== null) {
3232
+ nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
3233
+ } else {
3234
+ nativeAppendChild(renderer, parent, child);
3235
+ }
3236
+ }
3237
+ function nativeRemoveNode(renderer, rNode, isHostElement, requireSynchronousElementRemoval) {
3238
+ renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval);
3239
+ }
3240
+ function clearElementContents(rElement) {
3241
+ rElement.textContent = '';
3242
+ }
3243
+ function writeDirectStyle(renderer, element, newValue) {
3244
+ ngDevMode && assertString(newValue, "'newValue' should be a string");
3245
+ renderer.setAttribute(element, 'style', newValue);
3246
+ }
3247
+ function writeDirectClass(renderer, element, newValue) {
3248
+ ngDevMode && assertString(newValue, "'newValue' should be a string");
3249
+ if (newValue === '') {
3250
+ renderer.removeAttribute(element, 'class');
3251
+ } else {
3252
+ renderer.setAttribute(element, 'class', newValue);
3253
+ }
3254
+ }
3255
+ function setupStaticAttributes(renderer, element, tNode) {
3256
+ const {
3257
+ mergedAttrs,
3258
+ classes,
3259
+ styles
3260
+ } = tNode;
3261
+ if (mergedAttrs !== null) {
3262
+ setUpAttributes(renderer, element, mergedAttrs);
3263
+ }
3264
+ if (classes !== null) {
3265
+ writeDirectClass(renderer, element, classes);
3266
+ }
3267
+ if (styles !== null) {
3268
+ writeDirectStyle(renderer, element, styles);
3269
+ }
3270
+ }
3271
+
3272
+ function enforceIframeSecurity(iframe) {
3273
+ const lView = getLView();
3274
+ iframe.src = '';
3275
+ iframe.srcdoc = trustedHTMLFromString('');
3276
+ nativeRemoveNode(lView[RENDERER], iframe);
3277
+ }
3278
+
3067
3279
  var SecurityContext;
3068
3280
  (function (SecurityContext) {
3069
3281
  SecurityContext[SecurityContext["NONE"] = 0] = "NONE";
@@ -3161,12 +3373,31 @@ function getSanitizer() {
3161
3373
  const lView = getLView();
3162
3374
  return lView && lView[ENVIRONMENT].sanitizer;
3163
3375
  }
3164
-
3165
- const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
3166
- const COMMENT_DELIMITER = /(<|>)/g;
3167
- const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
3168
- function escapeCommentText(value) {
3169
- return value.replace(COMMENT_DISALLOWED, text => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
3376
+ const attributeName = new Set(['attributename']);
3377
+ const SECURITY_SENSITIVE_ELEMENTS = {
3378
+ 'iframe': new Set(['sandbox', 'allow', 'allowfullscreen', 'referrerpolicy', 'csp', 'fetchpriority']),
3379
+ 'animate': attributeName,
3380
+ 'set': attributeName,
3381
+ 'animatemotion': attributeName,
3382
+ 'animatetransform': attributeName
3383
+ };
3384
+ function ɵɵvalidateAttribute(value, tagName, attributeName) {
3385
+ const lowerCaseTagName = tagName.toLowerCase();
3386
+ const lowerCaseAttrName = attributeName.toLowerCase();
3387
+ if (!SECURITY_SENSITIVE_ELEMENTS[lowerCaseTagName]?.has(lowerCaseAttrName)) {
3388
+ return value;
3389
+ }
3390
+ const tNode = getSelectedTNode();
3391
+ if (tNode.type !== 2) {
3392
+ return value;
3393
+ }
3394
+ const lView = getLView();
3395
+ if (lowerCaseTagName === 'iframe') {
3396
+ const element = getNativeByTNode(tNode, lView);
3397
+ enforceIframeSecurity(element);
3398
+ }
3399
+ const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${tagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element ` + `as a static attribute only. \n` + `To fix this, switch the \`${attributeName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
3400
+ throw new RuntimeError(-910, errorMessage);
3170
3401
  }
3171
3402
 
3172
3403
  const NG_REFLECT_ATTRS_FLAG_DEFAULT = false;
@@ -3196,120 +3427,6 @@ function normalizeDebugBindingValue(value) {
3196
3427
  }
3197
3428
  }
3198
3429
 
3199
- const CUSTOM_ELEMENTS_SCHEMA = {
3200
- name: 'custom-elements'
3201
- };
3202
- const NO_ERRORS_SCHEMA = {
3203
- name: 'no-errors-schema'
3204
- };
3205
-
3206
- let shouldThrowErrorOnUnknownElement = false;
3207
- function ɵsetUnknownElementStrictMode(shouldThrow) {
3208
- shouldThrowErrorOnUnknownElement = shouldThrow;
3209
- }
3210
- function ɵgetUnknownElementStrictMode() {
3211
- return shouldThrowErrorOnUnknownElement;
3212
- }
3213
- let shouldThrowErrorOnUnknownProperty = false;
3214
- function ɵsetUnknownPropertyStrictMode(shouldThrow) {
3215
- shouldThrowErrorOnUnknownProperty = shouldThrow;
3216
- }
3217
- function ɵgetUnknownPropertyStrictMode() {
3218
- return shouldThrowErrorOnUnknownProperty;
3219
- }
3220
- function validateElementIsKnown(lView, tNode) {
3221
- const tView = lView[TVIEW];
3222
- if (tView.schemas === null) return;
3223
- const tagName = tNode.value;
3224
- if (!isDirectiveHost(tNode) && tagName !== null) {
3225
- const isUnknown = typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 && !customElements.get(tagName);
3226
- if (isUnknown && !matchingSchemas(tView.schemas, tagName)) {
3227
- const isHostStandalone = isHostComponentStandalone(lView);
3228
- const templateLocation = getTemplateLocationDetails(lView);
3229
- const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
3230
- let message = `'${tagName}' is not a known element${templateLocation}:\n`;
3231
- message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared'}.\n`;
3232
- if (tagName && tagName.indexOf('-') > -1) {
3233
- message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
3234
- } else {
3235
- message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
3236
- }
3237
- if (shouldThrowErrorOnUnknownElement) {
3238
- throw new RuntimeError(304, message);
3239
- } else {
3240
- console.error(formatRuntimeError(304, message));
3241
- }
3242
- }
3243
- }
3244
- }
3245
- function isPropertyValid(element, propName, tagName, schemas) {
3246
- if (schemas === null) return true;
3247
- if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
3248
- return true;
3249
- }
3250
- return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
3251
- }
3252
- function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
3253
- if (!tagName && nodeType === 4) {
3254
- tagName = 'ng-template';
3255
- }
3256
- const isHostStandalone = isHostComponentStandalone(lView);
3257
- const templateLocation = getTemplateLocationDetails(lView);
3258
- let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
3259
- const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
3260
- const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared';
3261
- if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
3262
- const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
3263
- message += `\nIf the '${propName}' is an Angular control flow directive, ` + `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
3264
- } else {
3265
- message += `\n1. If '${tagName}' is an Angular component and it has the ` + `'${propName}' input, then verify that it is ${importLocation}.`;
3266
- if (tagName && tagName.indexOf('-') > -1) {
3267
- message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` + `to the ${schemas} of this component to suppress this message.`;
3268
- message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
3269
- } else {
3270
- message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
3271
- }
3272
- }
3273
- reportUnknownPropertyError(message);
3274
- }
3275
- function reportUnknownPropertyError(message) {
3276
- if (shouldThrowErrorOnUnknownProperty) {
3277
- throw new RuntimeError(303, message);
3278
- } else {
3279
- console.error(formatRuntimeError(303, message));
3280
- }
3281
- }
3282
- function getDeclarationComponentDef(lView) {
3283
- !ngDevMode && throwError('Must never be called in production mode');
3284
- const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
3285
- const context = declarationLView[CONTEXT];
3286
- if (!context) return null;
3287
- return context.constructor ? getComponentDef(context.constructor) : null;
3288
- }
3289
- function isHostComponentStandalone(lView) {
3290
- !ngDevMode && throwError('Must never be called in production mode');
3291
- const componentDef = getDeclarationComponentDef(lView);
3292
- return !!componentDef?.standalone;
3293
- }
3294
- function getTemplateLocationDetails(lView) {
3295
- !ngDevMode && throwError('Must never be called in production mode');
3296
- const hostComponentDef = getDeclarationComponentDef(lView);
3297
- const componentClassName = hostComponentDef?.type?.name;
3298
- return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
3299
- }
3300
- const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'], ['ngSwitchDefault', 'NgSwitchDefault']]);
3301
- function matchingSchemas(schemas, tagName) {
3302
- if (schemas !== null) {
3303
- for (let i = 0; i < schemas.length; i++) {
3304
- const schema = schemas[i];
3305
- if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1) {
3306
- return true;
3307
- }
3308
- }
3309
- }
3310
- return false;
3311
- }
3312
-
3313
3430
  function ɵɵresolveWindow(element) {
3314
3431
  return element.ownerDocument.defaultView;
3315
3432
  }
@@ -3669,67 +3786,6 @@ const NO_CHANGE = typeof ngDevMode === 'undefined' || ngDevMode ? {
3669
3786
  __brand__: 'NO_CHANGE'
3670
3787
  } : {};
3671
3788
 
3672
- function createTextNode(renderer, value) {
3673
- return renderer.createText(value);
3674
- }
3675
- function updateTextNode(renderer, rNode, value) {
3676
- renderer.setValue(rNode, value);
3677
- }
3678
- function createCommentNode(renderer, value) {
3679
- return renderer.createComment(escapeCommentText(value));
3680
- }
3681
- function createElementNode(renderer, name, namespace) {
3682
- return renderer.createElement(name, namespace);
3683
- }
3684
- function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
3685
- renderer.insertBefore(parent, child, beforeNode, isMove);
3686
- }
3687
- function nativeAppendChild(renderer, parent, child) {
3688
- ngDevMode && assertDefined(parent, 'parent node must be defined');
3689
- renderer.appendChild(parent, child);
3690
- }
3691
- function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
3692
- if (beforeNode !== null) {
3693
- nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
3694
- } else {
3695
- nativeAppendChild(renderer, parent, child);
3696
- }
3697
- }
3698
- function nativeRemoveNode(renderer, rNode, isHostElement, requireSynchronousElementRemoval) {
3699
- renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval);
3700
- }
3701
- function clearElementContents(rElement) {
3702
- rElement.textContent = '';
3703
- }
3704
- function writeDirectStyle(renderer, element, newValue) {
3705
- ngDevMode && assertString(newValue, "'newValue' should be a string");
3706
- renderer.setAttribute(element, 'style', newValue);
3707
- }
3708
- function writeDirectClass(renderer, element, newValue) {
3709
- ngDevMode && assertString(newValue, "'newValue' should be a string");
3710
- if (newValue === '') {
3711
- renderer.removeAttribute(element, 'class');
3712
- } else {
3713
- renderer.setAttribute(element, 'class', newValue);
3714
- }
3715
- }
3716
- function setupStaticAttributes(renderer, element, tNode) {
3717
- const {
3718
- mergedAttrs,
3719
- classes,
3720
- styles
3721
- } = tNode;
3722
- if (mergedAttrs !== null) {
3723
- setUpAttributes(renderer, element, mergedAttrs);
3724
- }
3725
- if (classes !== null) {
3726
- writeDirectClass(renderer, element, classes);
3727
- }
3728
- if (styles !== null) {
3729
- writeDirectStyle(renderer, element, styles);
3730
- }
3731
- }
3732
-
3733
3789
  function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) {
3734
3790
  const bindingStartIndex = HEADER_OFFSET + decls;
3735
3791
  const initialViewLength = bindingStartIndex + vars;
@@ -4082,7 +4138,7 @@ class AfterRenderImpl {
4082
4138
  execute() {
4083
4139
  const hasSequencesToExecute = this.sequences.size > 0;
4084
4140
  if (hasSequencesToExecute) {
4085
- profiler(16);
4141
+ profiler(ProfilerEvent.AfterRenderHooksStart);
4086
4142
  }
4087
4143
  this.executing = true;
4088
4144
  for (const phase of AFTER_RENDER_PHASES) {
@@ -4118,7 +4174,7 @@ class AfterRenderImpl {
4118
4174
  }
4119
4175
  this.deferredRegistrations.clear();
4120
4176
  if (hasSequencesToExecute) {
4121
- profiler(17);
4177
+ profiler(ProfilerEvent.AfterRenderHooksEnd);
4122
4178
  }
4123
4179
  }
4124
4180
  register(sequence) {
@@ -4522,19 +4578,19 @@ function executeOnDestroys(tView, lView) {
4522
4578
  for (let j = 0; j < toCall.length; j += 2) {
4523
4579
  const callContext = context[toCall[j]];
4524
4580
  const hook = toCall[j + 1];
4525
- profiler(4, callContext, hook);
4581
+ profiler(ProfilerEvent.LifecycleHookStart, callContext, hook);
4526
4582
  try {
4527
4583
  hook.call(callContext);
4528
4584
  } finally {
4529
- profiler(5, callContext, hook);
4585
+ profiler(ProfilerEvent.LifecycleHookEnd, callContext, hook);
4530
4586
  }
4531
4587
  }
4532
4588
  } else {
4533
- profiler(4, context, toCall);
4589
+ profiler(ProfilerEvent.LifecycleHookStart, context, toCall);
4534
4590
  try {
4535
4591
  toCall.call(context);
4536
4592
  } finally {
4537
- profiler(5, context, toCall);
4593
+ profiler(ProfilerEvent.LifecycleHookEnd, context, toCall);
4538
4594
  }
4539
4595
  }
4540
4596
  }
@@ -4769,12 +4825,12 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
4769
4825
  if (isUpdatePhase && lView.length > HEADER_OFFSET) {
4770
4826
  selectIndexInternal(tView, lView, HEADER_OFFSET, !!ngDevMode && isInCheckNoChangesMode());
4771
4827
  }
4772
- const preHookType = isUpdatePhase ? 2 : 0;
4828
+ const preHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateStart : ProfilerEvent.TemplateCreateStart;
4773
4829
  profiler(preHookType, context, templateFn);
4774
4830
  templateFn(rf, context);
4775
4831
  } finally {
4776
4832
  setSelectedIndex(prevSelectedIndex);
4777
- const postHookType = isUpdatePhase ? 3 : 1;
4833
+ const postHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateEnd : ProfilerEvent.TemplateCreateEnd;
4778
4834
  profiler(postHookType, context, templateFn);
4779
4835
  }
4780
4836
  }
@@ -5147,9 +5203,12 @@ function renderComponent(hostLView, componentHostIdx) {
5147
5203
  if (hostRNode !== null && componentView[HYDRATION] === null) {
5148
5204
  componentView[HYDRATION] = retrieveHydrationInfo(hostRNode, componentView[INJECTOR]);
5149
5205
  }
5150
- profiler(18);
5151
- renderView(componentTView, componentView, componentView[CONTEXT]);
5152
- profiler(19, componentView[CONTEXT]);
5206
+ profiler(ProfilerEvent.ComponentStart);
5207
+ try {
5208
+ renderView(componentTView, componentView, componentView[CONTEXT]);
5209
+ } finally {
5210
+ profiler(ProfilerEvent.ComponentEnd, componentView[CONTEXT]);
5211
+ }
5153
5212
  }
5154
5213
  function syncViewWithBlueprint(tView, lView) {
5155
5214
  for (let i = lView.length; i < tView.blueprint.length; i++) {
@@ -5549,10 +5608,13 @@ function markTransplantedViewsForRefresh(lView) {
5549
5608
  }
5550
5609
  function detectChangesInComponent(hostLView, componentHostIdx, mode) {
5551
5610
  ngDevMode && assertEqual(isCreationMode(hostLView), false, 'Should be run in update mode');
5552
- profiler(18);
5611
+ profiler(ProfilerEvent.ComponentStart);
5553
5612
  const componentView = getComponentLViewByIndex(componentHostIdx, hostLView);
5554
- detectChangesInViewIfAttached(componentView, mode);
5555
- profiler(19, componentView[CONTEXT]);
5613
+ try {
5614
+ detectChangesInViewIfAttached(componentView, mode);
5615
+ } finally {
5616
+ profiler(ProfilerEvent.ComponentEnd, componentView[CONTEXT]);
5617
+ }
5556
5618
  }
5557
5619
  function detectChangesInViewIfAttached(lView, mode) {
5558
5620
  if (!viewAttachedToChangeDetector(lView)) {
@@ -5614,9 +5676,12 @@ function processHostBindingOpCodes(tView, lView) {
5614
5676
  const hostBindingFn = hostBindingOpCodes[++i];
5615
5677
  setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
5616
5678
  const context = lView[directiveIdx];
5617
- profiler(24, context);
5618
- hostBindingFn(2, context);
5619
- profiler(25, context);
5679
+ profiler(ProfilerEvent.HostBindingsUpdateStart, context);
5680
+ try {
5681
+ hostBindingFn(2, context);
5682
+ } finally {
5683
+ profiler(ProfilerEvent.HostBindingsUpdateEnd, context);
5684
+ }
5620
5685
  }
5621
5686
  }
5622
5687
  } finally {
@@ -6211,6 +6276,8 @@ function createTNode(tView, tParent, type, index, value, attrs) {
6211
6276
  directiveEnd: -1,
6212
6277
  directiveStylingLast: -1,
6213
6278
  componentOffset: -1,
6279
+ fieldIndex: -1,
6280
+ customControlIndex: -1,
6214
6281
  propertyBindings: null,
6215
6282
  flags,
6216
6283
  providerIndexes: 0,
@@ -7877,13 +7944,13 @@ function wrapListener(tNode, lView, listenerFn) {
7877
7944
  function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
7878
7945
  const prevConsumer = setActiveConsumer$1(null);
7879
7946
  try {
7880
- profiler(6, context, listenerFn);
7947
+ profiler(ProfilerEvent.OutputStart, context, listenerFn);
7881
7948
  return listenerFn(e) !== false;
7882
7949
  } catch (error) {
7883
7950
  handleUncaughtError(lView, error);
7884
7951
  return false;
7885
7952
  } finally {
7886
- profiler(7, context, listenerFn);
7953
+ profiler(ProfilerEvent.OutputEnd, context, listenerFn);
7887
7954
  setActiveConsumer$1(prevConsumer);
7888
7955
  }
7889
7956
  }
@@ -8168,7 +8235,7 @@ class ComponentFactory extends ComponentFactory$1 {
8168
8235
  this.isBoundToModule = !!ngModule;
8169
8236
  }
8170
8237
  create(injector, projectableNodes, rootSelectorOrNode, environmentInjector, directives, componentBindings) {
8171
- profiler(22);
8238
+ profiler(ProfilerEvent.DynamicComponentStart);
8172
8239
  const prevConsumer = setActiveConsumer(null);
8173
8240
  try {
8174
8241
  const cmpDef = this.componentDef;
@@ -8203,7 +8270,7 @@ class ComponentFactory extends ComponentFactory$1 {
8203
8270
  unregisterLView(rootLView);
8204
8271
  throw e;
8205
8272
  } finally {
8206
- profiler(23);
8273
+ profiler(ProfilerEvent.DynamicComponentEnd);
8207
8274
  leaveView();
8208
8275
  }
8209
8276
  return new ComponentRef(this.componentType, rootLView, !!hasInputBindings);
@@ -8213,7 +8280,7 @@ class ComponentFactory extends ComponentFactory$1 {
8213
8280
  }
8214
8281
  }
8215
8282
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8216
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8283
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.2'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8217
8284
  let creationBindings = null;
8218
8285
  let updateBindings = null;
8219
8286
  let varsToAllocate = 0;
@@ -9087,21 +9154,6 @@ function setAllowDuplicateNgModuleIdsForTest(allowDuplicates) {
9087
9154
  checkForDuplicateNgModules = !allowDuplicates;
9088
9155
  }
9089
9156
 
9090
- function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {
9091
- const lView = getLView();
9092
- const tNode = getSelectedTNode();
9093
- const element = getNativeByTNode(tNode, lView);
9094
- if (tNode.type === 2 && tagName.toLowerCase() === 'iframe') {
9095
- const iframe = element;
9096
- iframe.src = '';
9097
- iframe.srcdoc = trustedHTMLFromString('');
9098
- nativeRemoveNode(lView[RENDERER], iframe);
9099
- const errorMessage = ngDevMode && `Angular has detected that the \`${attrName}\` was applied ` + `as a binding to an <iframe>${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attrName}\` can be set on an <iframe> ` + `as a static attribute only. \n` + `To fix this, switch the \`${attrName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
9100
- throw new RuntimeError(-910, errorMessage);
9101
- }
9102
- return attrValue;
9103
- }
9104
-
9105
9157
  let NgModuleRef$1 = class NgModuleRef {};
9106
9158
  let NgModuleFactory$1 = class NgModuleFactory {};
9107
9159
 
@@ -10298,7 +10350,7 @@ function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
10298
10350
  };
10299
10351
  }
10300
10352
  function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView) {
10301
- profiler(20);
10353
+ profiler(ProfilerEvent.DeferBlockStateStart);
10302
10354
  const stateTmplIndex = getTemplateIndexForState(newState, hostLView, tNode);
10303
10355
  if (stateTmplIndex !== null) {
10304
10356
  lDetails[DEFER_BLOCK_STATE] = newState;
@@ -10335,7 +10387,7 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
10335
10387
  lDetails[ON_COMPLETE_FNS] = null;
10336
10388
  }
10337
10389
  }
10338
- profiler(21);
10390
+ profiler(ProfilerEvent.DeferBlockStateEnd);
10339
10391
  }
10340
10392
  function applyDeferBlockStateWithScheduling(newState, lDetails, lContainer, tNode, hostLView) {
10341
10393
  const now = Date.now();
@@ -10519,10 +10571,20 @@ function handleEffectCreatedEvent(context, effect) {
10519
10571
  const {
10520
10572
  resolverToEffects
10521
10573
  } = frameworkDIDebugData;
10522
- if (!resolverToEffects.has(diResolver)) {
10523
- resolverToEffects.set(diResolver, []);
10524
- }
10525
- resolverToEffects.get(diResolver).push(effect);
10574
+ const cleanupContainer = effect instanceof EffectRefImpl ? effect[SIGNAL] : effect.sequence;
10575
+ let trackedEffects = resolverToEffects.get(diResolver);
10576
+ if (!trackedEffects) {
10577
+ trackedEffects = [];
10578
+ resolverToEffects.set(diResolver, trackedEffects);
10579
+ }
10580
+ trackedEffects.push(effect);
10581
+ cleanupContainer.onDestroyFns ??= [];
10582
+ cleanupContainer.onDestroyFns.push(() => {
10583
+ const index = trackedEffects.indexOf(effect);
10584
+ if (index > -1) {
10585
+ trackedEffects.splice(index, 1);
10586
+ }
10587
+ });
10526
10588
  }
10527
10589
  function handleInjectEvent(context, data) {
10528
10590
  const diResolver = getDIResolver(context.injector);
@@ -11208,9 +11270,11 @@ function measureStart(startEvent) {
11208
11270
  console.timeStamp('Event_' + startEvent + '_' + counter++);
11209
11271
  }
11210
11272
  function measureEnd(startEvent, entryName, color) {
11211
- const top = eventsStack.pop();
11212
- assertDefined(top, 'Profiling error: could not find start event entry ' + startEvent);
11213
- assertEqual(top[0], startEvent, `Profiling error: expected to see ${startEvent} event but got ${top[0]}`);
11273
+ let top;
11274
+ do {
11275
+ top = eventsStack.pop();
11276
+ assertDefined(top, 'Profiling error: could not find start event entry ' + startEvent);
11277
+ } while (top[0] !== startEvent);
11214
11278
  console.timeStamp(entryName, 'Event_' + top[0] + '_' + top[1], undefined, '\u{1F170}\uFE0F Angular', undefined, color);
11215
11279
  }
11216
11280
  const chromeDevToolsInjectorProfiler = event => {
@@ -11224,89 +11288,89 @@ const chromeDevToolsInjectorProfiler = event => {
11224
11288
  };
11225
11289
  const devToolsProfiler = (event, instance, eventFn) => {
11226
11290
  switch (event) {
11227
- case 8:
11228
- case 10:
11229
- case 12:
11230
- case 14:
11231
- case 16:
11232
- case 18:
11233
- case 20:
11234
- case 22:
11235
- case 0:
11236
- case 4:
11237
- case 2:
11238
- case 24:
11239
- case 6:
11291
+ case ProfilerEvent.BootstrapApplicationStart:
11292
+ case ProfilerEvent.BootstrapComponentStart:
11293
+ case ProfilerEvent.ChangeDetectionStart:
11294
+ case ProfilerEvent.ChangeDetectionSyncStart:
11295
+ case ProfilerEvent.AfterRenderHooksStart:
11296
+ case ProfilerEvent.ComponentStart:
11297
+ case ProfilerEvent.DeferBlockStateStart:
11298
+ case ProfilerEvent.DynamicComponentStart:
11299
+ case ProfilerEvent.TemplateCreateStart:
11300
+ case ProfilerEvent.LifecycleHookStart:
11301
+ case ProfilerEvent.TemplateUpdateStart:
11302
+ case ProfilerEvent.HostBindingsUpdateStart:
11303
+ case ProfilerEvent.OutputStart:
11240
11304
  {
11241
11305
  measureStart(event);
11242
11306
  break;
11243
11307
  }
11244
- case 9:
11308
+ case ProfilerEvent.BootstrapApplicationEnd:
11245
11309
  {
11246
- measureEnd(8, 'Bootstrap application', 'primary-dark');
11310
+ measureEnd(ProfilerEvent.BootstrapApplicationStart, 'Bootstrap application', 'primary-dark');
11247
11311
  break;
11248
11312
  }
11249
- case 11:
11313
+ case ProfilerEvent.BootstrapComponentEnd:
11250
11314
  {
11251
- measureEnd(10, 'Bootstrap component', 'primary-dark');
11315
+ measureEnd(ProfilerEvent.BootstrapComponentStart, 'Bootstrap component', 'primary-dark');
11252
11316
  break;
11253
11317
  }
11254
- case 13:
11318
+ case ProfilerEvent.ChangeDetectionEnd:
11255
11319
  {
11256
11320
  changeDetectionSyncRuns = 0;
11257
- measureEnd(12, 'Change detection ' + changeDetectionRuns++, 'primary-dark');
11321
+ measureEnd(ProfilerEvent.ChangeDetectionStart, 'Change detection ' + changeDetectionRuns++, 'primary-dark');
11258
11322
  break;
11259
11323
  }
11260
- case 15:
11324
+ case ProfilerEvent.ChangeDetectionSyncEnd:
11261
11325
  {
11262
- measureEnd(14, 'Synchronization ' + changeDetectionSyncRuns++, 'primary');
11326
+ measureEnd(ProfilerEvent.ChangeDetectionSyncStart, 'Synchronization ' + changeDetectionSyncRuns++, 'primary');
11263
11327
  break;
11264
11328
  }
11265
- case 17:
11329
+ case ProfilerEvent.AfterRenderHooksEnd:
11266
11330
  {
11267
- measureEnd(16, 'After render hooks', 'primary');
11331
+ measureEnd(ProfilerEvent.AfterRenderHooksStart, 'After render hooks', 'primary');
11268
11332
  break;
11269
11333
  }
11270
- case 19:
11334
+ case ProfilerEvent.ComponentEnd:
11271
11335
  {
11272
11336
  const typeName = getComponentMeasureName(instance);
11273
- measureEnd(18, typeName, 'primary-light');
11337
+ measureEnd(ProfilerEvent.ComponentStart, typeName, 'primary-light');
11274
11338
  break;
11275
11339
  }
11276
- case 21:
11340
+ case ProfilerEvent.DeferBlockStateEnd:
11277
11341
  {
11278
- measureEnd(20, 'Defer block', 'primary-dark');
11342
+ measureEnd(ProfilerEvent.DeferBlockStateStart, 'Defer block', 'primary-dark');
11279
11343
  break;
11280
11344
  }
11281
- case 23:
11345
+ case ProfilerEvent.DynamicComponentEnd:
11282
11346
  {
11283
- measureEnd(22, 'Dynamic component creation', 'primary-dark');
11347
+ measureEnd(ProfilerEvent.DynamicComponentStart, 'Dynamic component creation', 'primary-dark');
11284
11348
  break;
11285
11349
  }
11286
- case 3:
11350
+ case ProfilerEvent.TemplateUpdateEnd:
11287
11351
  {
11288
- measureEnd(2, stringifyForError(eventFn) + ' (update)', 'secondary-dark');
11352
+ measureEnd(ProfilerEvent.TemplateUpdateStart, stringifyForError(eventFn) + ' (update)', 'secondary-dark');
11289
11353
  break;
11290
11354
  }
11291
- case 1:
11355
+ case ProfilerEvent.TemplateCreateEnd:
11292
11356
  {
11293
- measureEnd(0, stringifyForError(eventFn) + ' (create)', 'secondary');
11357
+ measureEnd(ProfilerEvent.TemplateCreateStart, stringifyForError(eventFn) + ' (create)', 'secondary');
11294
11358
  break;
11295
11359
  }
11296
- case 25:
11360
+ case ProfilerEvent.HostBindingsUpdateEnd:
11297
11361
  {
11298
- measureEnd(24, 'HostBindings', 'secondary-dark');
11362
+ measureEnd(ProfilerEvent.HostBindingsUpdateStart, 'HostBindings', 'secondary-dark');
11299
11363
  break;
11300
11364
  }
11301
- case 5:
11365
+ case ProfilerEvent.LifecycleHookEnd:
11302
11366
  {
11303
11367
  const typeName = getComponentMeasureName(instance);
11304
- measureEnd(4, `${typeName}:${stringifyForError(eventFn)}`, 'tertiary');
11368
+ measureEnd(ProfilerEvent.LifecycleHookStart, `${typeName}:${stringifyForError(eventFn)}`, 'tertiary');
11305
11369
  break;
11306
11370
  }
11307
- case 7:
11371
+ case ProfilerEvent.OutputEnd:
11308
11372
  {
11309
- measureEnd(6, stringifyForError(eventFn), 'tertiary-light');
11373
+ measureEnd(ProfilerEvent.OutputStart, stringifyForError(eventFn), 'tertiary-light');
11310
11374
  break;
11311
11375
  }
11312
11376
  default:
@@ -11340,7 +11404,7 @@ function enableProfiling() {
11340
11404
  }
11341
11405
 
11342
11406
  function getTransferState(injector) {
11343
- const doc = getDocument();
11407
+ const doc = injector.get(DOCUMENT$1);
11344
11408
  const appId = injector.get(APP_ID);
11345
11409
  const transferState = retrieveTransferredState(doc, appId);
11346
11410
  const filteredEntries = {};
@@ -11749,7 +11813,7 @@ class ApplicationRef {
11749
11813
  bootstrapImpl(componentOrFactory, rootSelectorOrNode, injector = Injector.NULL) {
11750
11814
  const ngZone = this._injector.get(NgZone);
11751
11815
  return ngZone.run(() => {
11752
- profiler(10);
11816
+ profiler(ProfilerEvent.BootstrapComponentStart);
11753
11817
  (typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
11754
11818
  const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
11755
11819
  const initStatus = this._injector.get(ApplicationInitStatus);
@@ -11785,7 +11849,7 @@ class ApplicationRef {
11785
11849
  const _console = this._injector.get(Console);
11786
11850
  _console.log(`Angular is running in development mode.`);
11787
11851
  }
11788
- profiler(11, compRef);
11852
+ profiler(ProfilerEvent.BootstrapComponentEnd, compRef);
11789
11853
  return compRef;
11790
11854
  });
11791
11855
  }
@@ -11796,7 +11860,7 @@ class ApplicationRef {
11796
11860
  this._tick();
11797
11861
  }
11798
11862
  _tick() {
11799
- profiler(12);
11863
+ profiler(ProfilerEvent.ChangeDetectionStart);
11800
11864
  if (this.tracingSnapshot !== null) {
11801
11865
  this.tracingSnapshot.run(TracingAction.CHANGE_DETECTION, this.tickImpl);
11802
11866
  } else {
@@ -11806,6 +11870,7 @@ class ApplicationRef {
11806
11870
  tickImpl = () => {
11807
11871
  (typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
11808
11872
  if (this._runningTick) {
11873
+ profiler(ProfilerEvent.ChangeDetectionEnd);
11809
11874
  throw new RuntimeError(101, ngDevMode && 'ApplicationRef.tick is called recursively');
11810
11875
  }
11811
11876
  const prevConsumer = setActiveConsumer(null);
@@ -11823,7 +11888,7 @@ class ApplicationRef {
11823
11888
  this.tracingSnapshot = null;
11824
11889
  setActiveConsumer(prevConsumer);
11825
11890
  this.afterTick.next();
11826
- profiler(13);
11891
+ profiler(ProfilerEvent.ChangeDetectionEnd);
11827
11892
  }
11828
11893
  };
11829
11894
  synchronize() {
@@ -11834,9 +11899,12 @@ class ApplicationRef {
11834
11899
  }
11835
11900
  let runs = 0;
11836
11901
  while (this.dirtyFlags !== 0 && runs++ < MAXIMUM_REFRESH_RERUNS) {
11837
- profiler(14);
11838
- this.synchronizeOnce();
11839
- profiler(15);
11902
+ profiler(ProfilerEvent.ChangeDetectionSyncStart);
11903
+ try {
11904
+ this.synchronizeOnce();
11905
+ } finally {
11906
+ profiler(ProfilerEvent.ChangeDetectionSyncEnd);
11907
+ }
11840
11908
  }
11841
11909
  if ((typeof ngDevMode === 'undefined' || ngDevMode) && runs >= MAXIMUM_REFRESH_RERUNS) {
11842
11910
  throw new RuntimeError(103, ngDevMode && 'Infinite change detection while refreshing application views. ' + 'Ensure views are not calling `markForCheck` on every template execution or ' + 'that afterRender hooks always mark views for check.');
@@ -13175,15 +13243,19 @@ function ɵɵcontrolCreate() {
13175
13243
  const lView = getLView();
13176
13244
  const tView = getTView();
13177
13245
  const tNode = getCurrentTNode();
13178
- const control = tView.firstCreatePass ? getControlDirectiveFirstCreatePass(tView, tNode, lView) : getControlDirective(tNode, lView);
13246
+ if (tView.firstCreatePass) {
13247
+ initializeControlFirstCreatePass(tView, tNode, lView);
13248
+ }
13249
+ const control = getControlDirective(tNode, lView);
13179
13250
  if (!control) {
13180
13251
  return;
13181
13252
  }
13182
- if (tNode.flags & 2048) {
13253
+ performanceMarkFeature('NgSignalForms');
13254
+ if (tNode.flags & 1024) {
13183
13255
  listenToCustomControl(lView, tNode, control, 'value');
13184
- } else if (tNode.flags & 4096) {
13256
+ } else if (tNode.flags & 2048) {
13185
13257
  listenToCustomControl(lView, tNode, control, 'checked');
13186
- } else if (tNode.flags & 8192) {
13258
+ } else if (tNode.flags & 4096) {
13187
13259
  listenToInteropControl(control);
13188
13260
  } else {
13189
13261
  listenToNativeControl(lView, tNode, control);
@@ -13201,11 +13273,12 @@ function ɵɵcontrol(value, sanitizer) {
13201
13273
  }
13202
13274
  const control = getControlDirective(tNode, lView);
13203
13275
  if (control) {
13204
- if (tNode.flags & 2048) {
13276
+ updateControlClasses(lView, tNode, control);
13277
+ if (tNode.flags & 1024) {
13205
13278
  updateCustomControl(tNode, lView, control, 'value');
13206
- } else if (tNode.flags & 4096) {
13279
+ } else if (tNode.flags & 2048) {
13207
13280
  updateCustomControl(tNode, lView, control, 'checked');
13208
- } else if (tNode.flags & 8192) {
13281
+ } else if (tNode.flags & 4096) {
13209
13282
  updateInteropControl(lView, control);
13210
13283
  } else {
13211
13284
  updateNativeControl(tNode, lView, control);
@@ -13213,82 +13286,84 @@ function ɵɵcontrol(value, sanitizer) {
13213
13286
  }
13214
13287
  nextBindingIndex();
13215
13288
  }
13216
- const HAS_CONTROL_MASK = /* @__PURE__ */(() => 16384 | 2048 | 4096)();
13217
- function getControlDirectiveFirstCreatePass(tView, tNode, lView) {
13289
+ function initializeControlFirstCreatePass(tView, tNode, lView) {
13290
+ ngDevMode && assertFirstCreatePass(tView);
13218
13291
  const directiveIndices = tNode.inputs?.['field'];
13219
13292
  if (!directiveIndices) {
13220
13293
  return;
13221
13294
  }
13222
- let componentIndex;
13223
- if (isComponentHost(tNode)) {
13224
- componentIndex = tNode.directiveStart + tNode.componentOffset;
13225
- if (directiveIndices.includes(componentIndex)) {
13226
- return;
13227
- }
13295
+ if (isComponentHost(tNode) && directiveIndices.includes(tNode.directiveStart + tNode.componentOffset)) {
13296
+ return;
13228
13297
  }
13229
- const control = findControlDirective(lView, directiveIndices);
13230
- if (!control) {
13298
+ const controlIndex = directiveIndices.find(index => ɵCONTROL in lView[index]);
13299
+ if (controlIndex === undefined) {
13231
13300
  return;
13232
13301
  }
13233
- tNode.flags |= 1024;
13234
- if (isComponentHost(tNode)) {
13235
- const componentDef = tView.data[componentIndex];
13236
- if (hasModelInput(componentDef, 'value')) {
13302
+ tNode.fieldIndex = controlIndex;
13303
+ const isCustomControl = isCustomControlFirstCreatePass(tView, tNode);
13304
+ if (!isCustomControl && lView[controlIndex].ɵinteropControl) {
13305
+ tNode.flags |= 4096;
13306
+ return;
13307
+ }
13308
+ const isNativeControl = isNativeControlFirstCreatePass(tView, tNode);
13309
+ if (isNativeControl || isCustomControl) {
13310
+ return;
13311
+ }
13312
+ const tagName = tNode.value;
13313
+ throw new RuntimeError(318, `'<${tagName}>' is an invalid [field] directive host. The host must be a native form control ` + `(such as <input>', '<select>', or '<textarea>') or a custom form control with a 'value' or ` + `'checked' model.`);
13314
+ }
13315
+ function isCustomControlFirstCreatePass(tView, tNode) {
13316
+ for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
13317
+ const directiveDef = tView.data[i];
13318
+ if (hasModelInput(directiveDef, 'value')) {
13319
+ tNode.flags |= 1024;
13320
+ tNode.customControlIndex = i;
13321
+ return true;
13322
+ }
13323
+ if (hasModelInput(directiveDef, 'checked')) {
13237
13324
  tNode.flags |= 2048;
13238
- } else if (hasModelInput(componentDef, 'checked')) {
13239
- tNode.flags |= 4096;
13325
+ tNode.customControlIndex = i;
13326
+ return true;
13240
13327
  }
13241
13328
  }
13242
- if (!(tNode.flags & HAS_CONTROL_MASK) && control.ɵinteropControl) {
13243
- tNode.flags |= 8192;
13244
- return control;
13329
+ return false;
13330
+ }
13331
+ function isNativeControlFirstCreatePass(tView, tNode) {
13332
+ if (!isNativeControl(tNode)) {
13333
+ return false;
13245
13334
  }
13246
- if (isNativeControl(tNode)) {
13335
+ tNode.flags |= 8192;
13336
+ if (isNumericInput(tNode)) {
13247
13337
  tNode.flags |= 16384;
13248
- if (isNumericInput(tNode)) {
13249
- tNode.flags |= 32768;
13250
- }
13251
- if (isTextControl(tNode)) {
13252
- tNode.flags |= 65536;
13253
- }
13254
13338
  }
13255
- if (tNode.flags & HAS_CONTROL_MASK) {
13256
- return control;
13339
+ if (isTextControl(tNode)) {
13340
+ tNode.flags |= 32768;
13257
13341
  }
13258
- const tagName = tNode.value;
13259
- throw new RuntimeError(318, `'<${tagName}>' is an invalid [field] directive host. The host must be a native form control ` + `(such as <input>', '<select>', or '<textarea>') or a custom form control component with a ` + `'value' or 'checked' model.`);
13342
+ return true;
13260
13343
  }
13261
13344
  function getControlDirective(tNode, lView) {
13262
- return tNode.flags & 1024 ? findControlDirective(lView, tNode.inputs['field']) : undefined;
13263
- }
13264
- function findControlDirective(lView, directiveIndices) {
13265
- for (let index of directiveIndices) {
13266
- const directive = lView[index];
13267
- if (ɵCONTROL in directive) {
13268
- return directive;
13269
- }
13270
- }
13271
- return;
13345
+ const index = tNode.fieldIndex;
13346
+ return index === -1 ? null : lView[index];
13272
13347
  }
13273
- function hasModelInput(componentDef, name) {
13274
- return hasSignalInput(componentDef, name) && hasOutput(componentDef, name + 'Change');
13348
+ function hasModelInput(directiveDef, name) {
13349
+ return hasSignalInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
13275
13350
  }
13276
- function hasSignalInput(componentDef, name) {
13277
- const input = componentDef.inputs[name];
13351
+ function hasSignalInput(directiveDef, name) {
13352
+ const input = directiveDef.inputs[name];
13278
13353
  return input && (input[1] & InputFlags.SignalBased) !== 0;
13279
13354
  }
13280
- function hasOutput(componentDef, name) {
13281
- return name in componentDef.outputs;
13355
+ function hasOutput(directiveDef, name) {
13356
+ return name in directiveDef.outputs;
13282
13357
  }
13283
13358
  function listenToCustomControl(lView, tNode, control, modelName) {
13284
- const componentIndex = tNode.directiveStart + tNode.componentOffset;
13285
- const outputName = modelName + 'Change';
13286
- listenToOutput(tNode, lView, componentIndex, outputName, outputName, wrapListener(tNode, lView, value => control.state().setControlValue(value)));
13287
13359
  const tView = getTView();
13288
- const componentDef = tView.data[componentIndex];
13360
+ const directiveIndex = tNode.customControlIndex;
13361
+ const outputName = modelName + 'Change';
13362
+ listenToOutput(tNode, lView, directiveIndex, outputName, outputName, wrapListener(tNode, lView, value => control.state().setControlValue(value)));
13363
+ const directiveDef = tView.data[directiveIndex];
13289
13364
  const touchedOutputName = 'touchedChange';
13290
- if (hasOutput(componentDef, touchedOutputName)) {
13291
- listenToOutput(tNode, lView, componentIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => control.state().markAsTouched()));
13365
+ if (hasOutput(directiveDef, touchedOutputName)) {
13366
+ listenToOutput(tNode, lView, directiveIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => control.state().markAsTouched()));
13292
13367
  }
13293
13368
  }
13294
13369
  function listenToInteropControl(control) {
@@ -13317,7 +13392,7 @@ function listenToNativeControl(lView, tNode, control) {
13317
13392
  };
13318
13393
  listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
13319
13394
  if (tNode.type === 2 && tNode.value === 'select' && typeof MutationObserver === 'function') {
13320
- const observer = observeSelectMutations(element, getControlDirective(tNode, lView));
13395
+ const observer = observeSelectMutations(element, control);
13321
13396
  storeCleanupWithContext(tView, lView, observer, observer.disconnect);
13322
13397
  }
13323
13398
  }
@@ -13358,27 +13433,46 @@ function isRelevantSelectMutation(mutation) {
13358
13433
  }
13359
13434
  return false;
13360
13435
  }
13436
+ function updateControlClasses(lView, tNode, control) {
13437
+ if (control.classes) {
13438
+ const bindings = getControlBindings(lView);
13439
+ bindings.classes ??= {};
13440
+ control.state();
13441
+ const renderer = lView[RENDERER];
13442
+ const element = getNativeByTNode(tNode, lView);
13443
+ for (const [className, enabled] of control.classes) {
13444
+ const isEnabled = enabled();
13445
+ if (controlClassBindingUpdated(bindings.classes, className, isEnabled)) {
13446
+ if (isEnabled) {
13447
+ renderer.addClass(element, className);
13448
+ } else {
13449
+ renderer.removeClass(element, className);
13450
+ }
13451
+ }
13452
+ }
13453
+ }
13454
+ }
13361
13455
  function updateCustomControl(tNode, lView, control, modelName) {
13362
13456
  const tView = getTView();
13363
- const componentIndex = tNode.directiveStart + tNode.componentOffset;
13364
- const component = lView[componentIndex];
13365
- const componentDef = tView.data[componentIndex];
13457
+ const directiveIndex = tNode.customControlIndex;
13458
+ const directive = lView[directiveIndex];
13459
+ const directiveDef = tView.data[directiveIndex];
13366
13460
  const state = control.state();
13367
13461
  const bindings = getControlBindings(lView);
13368
- maybeUpdateInput(componentDef, component, bindings, state, CONTROL_VALUE, modelName);
13462
+ maybeUpdateInput(directiveDef, directive, bindings, state, CONTROL_VALUE, modelName);
13369
13463
  for (const key of CONTROL_BINDING_KEYS) {
13370
13464
  const inputName = CONTROL_BINDING_NAMES[key];
13371
- maybeUpdateInput(componentDef, component, bindings, state, key, inputName);
13465
+ maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName);
13372
13466
  }
13373
- if (tNode.flags & 16384) {
13467
+ if (tNode.flags & 8192) {
13374
13468
  updateNativeControl(tNode, lView, control);
13375
13469
  }
13376
13470
  }
13377
- function maybeUpdateInput(componentDef, component, bindings, state, key, inputName) {
13378
- if (inputName in componentDef.inputs) {
13471
+ function maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName) {
13472
+ if (inputName in directiveDef.inputs) {
13379
13473
  const value = state[key]?.();
13380
13474
  if (controlBindingUpdated(bindings, key, value)) {
13381
- writeToDirectiveInput(componentDef, component, inputName, value);
13475
+ writeToDirectiveInput(directiveDef, directive, inputName, value);
13382
13476
  }
13383
13477
  }
13384
13478
  }
@@ -13413,11 +13507,11 @@ function updateNativeControl(tNode, lView, control) {
13413
13507
  updateBooleanAttribute(renderer, element, bindings, state, DISABLED);
13414
13508
  updateBooleanAttribute(renderer, element, bindings, state, READONLY);
13415
13509
  updateBooleanAttribute(renderer, element, bindings, state, REQUIRED);
13416
- if (tNode.flags & 32768) {
13510
+ if (tNode.flags & 16384) {
13417
13511
  updateOptionalAttribute(renderer, element, bindings, state, MAX);
13418
13512
  updateOptionalAttribute(renderer, element, bindings, state, MIN);
13419
13513
  }
13420
- if (tNode.flags & 65536) {
13514
+ if (tNode.flags & 32768) {
13421
13515
  updateOptionalAttribute(renderer, element, bindings, state, MAX_LENGTH);
13422
13516
  updateOptionalAttribute(renderer, element, bindings, state, MIN_LENGTH);
13423
13517
  }
@@ -13579,6 +13673,14 @@ function controlBindingUpdated(bindings, key, value) {
13579
13673
  bindings[key] = value;
13580
13674
  return true;
13581
13675
  }
13676
+ function controlClassBindingUpdated(bindings, className, value) {
13677
+ const oldValue = bindings[className];
13678
+ if (Object.is(oldValue, value)) {
13679
+ return false;
13680
+ }
13681
+ bindings[className] = value;
13682
+ return true;
13683
+ }
13582
13684
  function setBooleanAttribute(renderer, element, name, value) {
13583
13685
  if (value) {
13584
13686
  renderer.setAttribute(element, name, '');
@@ -16407,6 +16509,7 @@ function ɵɵtwoWayListener(eventName, listenerFn) {
16407
16509
 
16408
16510
  const UNINITIALIZED_LET = {};
16409
16511
  function ɵɵdeclareLet(index) {
16512
+ performanceMarkFeature('NgLet');
16410
16513
  const tView = getTView();
16411
16514
  const lView = getLView();
16412
16515
  const adjustedIndex = index + HEADER_OFFSET;
@@ -16416,7 +16519,6 @@ function ɵɵdeclareLet(index) {
16416
16519
  return ɵɵdeclareLet;
16417
16520
  }
16418
16521
  function ɵɵstoreLet(value) {
16419
- performanceMarkFeature('NgLet');
16420
16522
  const tView = getTView();
16421
16523
  const lView = getLView();
16422
16524
  const index = getSelectedIndex();
@@ -17206,11 +17308,11 @@ const angularCoreEnv = (() => ({
17206
17308
  'ɵɵsanitizeStyle': ɵɵsanitizeStyle,
17207
17309
  'ɵɵsanitizeResourceUrl': ɵɵsanitizeResourceUrl,
17208
17310
  'ɵɵsanitizeScript': ɵɵsanitizeScript,
17311
+ 'ɵɵvalidateAttribute': ɵɵvalidateAttribute,
17209
17312
  'ɵɵsanitizeUrl': ɵɵsanitizeUrl,
17210
17313
  'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,
17211
17314
  'ɵɵtrustConstantHtml': ɵɵtrustConstantHtml,
17212
17315
  'ɵɵtrustConstantResourceUrl': ɵɵtrustConstantResourceUrl,
17213
- 'ɵɵvalidateIframeAttribute': ɵɵvalidateIframeAttribute,
17214
17316
  'forwardRef': forwardRef,
17215
17317
  'resolveForwardRef': resolveForwardRef,
17216
17318
  'ɵɵtwoWayProperty': ɵɵtwoWayProperty,
@@ -18591,5 +18693,5 @@ function getDebugNode(nativeNode) {
18591
18693
  return null;
18592
18694
  }
18593
18695
 
18594
- 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, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, 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, 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, ɵCONTROL, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵ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 };
18696
+ 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, 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, 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, ɵCONTROL, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵ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, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
18595
18697
  //# sourceMappingURL=_debug_node-chunk.mjs.map