@angular/core 21.2.0-next.0 → 21.2.0-next.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 (77) 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 +189 -535
  4. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  5. package/fesm2022/_effect-chunk.mjs +2 -11
  6. package/fesm2022/_effect-chunk.mjs.map +1 -1
  7. package/fesm2022/_effect-chunk2.mjs +2969 -0
  8. package/fesm2022/_effect-chunk2.mjs.map +1 -0
  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 +8 -4
  12. package/fesm2022/_resource-chunk.mjs.map +1 -1
  13. package/fesm2022/_untracked-chunk.mjs +72 -2946
  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 +6 -10
  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 +2 -2
  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 +4 -4
  26. package/fesm2022/rxjs-interop.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +2 -2
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/package.json +2 -2
  30. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  31. package/schematics/bundles/application-config-core.cjs +1 -1
  32. package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
  33. package/schematics/bundles/bootstrap-options-migration.cjs +1 -1
  34. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  35. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  36. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  37. package/schematics/bundles/control-flow-migration.cjs +1 -1
  38. package/schematics/bundles/imports-CVmcbVA9.cjs +1 -1
  39. package/schematics/bundles/index-BtLcQH8g.cjs +1 -1
  40. package/schematics/bundles/inject-migration.cjs +1 -1
  41. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  42. package/schematics/bundles/migrate_ts_type_references-MWoZx-Cb.cjs +1 -1
  43. package/schematics/bundles/ng_component_template-BOuKAnQd.cjs +1 -1
  44. package/schematics/bundles/ng_decorators-DYy6II6x.cjs +1 -1
  45. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  46. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  47. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  48. package/schematics/bundles/output-migration.cjs +1 -1
  49. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  50. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  51. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  52. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  53. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  54. package/schematics/bundles/router-current-navigation.cjs +1 -1
  55. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  56. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  57. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  58. package/schematics/bundles/signal-input-migration.cjs +1 -1
  59. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  60. package/schematics/bundles/signals.cjs +1 -1
  61. package/schematics/bundles/standalone-migration.cjs +1 -1
  62. package/schematics/bundles/symbol-DZeHSR-V.cjs +1 -1
  63. package/types/_api-chunk.d.ts +2 -1
  64. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  65. package/types/_discovery-chunk.d.ts +93 -50
  66. package/types/_effect-chunk.d.ts +1 -1
  67. package/types/_event_dispatcher-chunk.d.ts +2 -2
  68. package/types/_formatter-chunk.d.ts +1 -1
  69. package/types/_weak_ref-chunk.d.ts +1 -1
  70. package/types/core.d.ts +13 -184
  71. package/types/primitives-di.d.ts +1 -1
  72. package/types/primitives-event-dispatch.d.ts +3 -3
  73. package/types/primitives-signals.d.ts +1 -1
  74. package/types/rxjs-interop.d.ts +1 -1
  75. package/types/testing.d.ts +1 -1
  76. package/fesm2022/_linked_signal-chunk.mjs +0 -87
  77. package/fesm2022/_linked_signal-chunk.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.2.0-next.0
2
+ * @license Angular v21.2.0-next.2
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, 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, 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, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_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, EnvironmentInjector, 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, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getDirectiveDefOrThrow, getTNode, assertComponentType, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_effect-chunk2.mjs';
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';
@@ -1017,8 +1017,9 @@ function getNodeInjectable(lView, tView, index, tNode, flags) {
1017
1017
  const factory = value;
1018
1018
  ngDevMode && injectionPath.push(factory.name ?? 'unknown');
1019
1019
  if (factory.resolving) {
1020
- const token = stringifyForError(tData[index]);
1020
+ let token = '';
1021
1021
  if (ngDevMode) {
1022
+ token = stringifyForError(tData[index]);
1022
1023
  throw cyclicDependencyErrorWithDetails(token, injectionPath);
1023
1024
  } else {
1024
1025
  throw cyclicDependencyError(token);
@@ -1443,6 +1444,7 @@ var ChangeDetectionStrategy;
1443
1444
  (function (ChangeDetectionStrategy) {
1444
1445
  ChangeDetectionStrategy[ChangeDetectionStrategy["OnPush"] = 0] = "OnPush";
1445
1446
  ChangeDetectionStrategy[ChangeDetectionStrategy["Default"] = 1] = "Default";
1447
+ ChangeDetectionStrategy[ChangeDetectionStrategy["Eager"] = 1] = "Eager";
1446
1448
  })(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));
1447
1449
 
1448
1450
  const TRACKED_LVIEWS = new Map();
@@ -4357,6 +4359,16 @@ function queueEnterAnimations(injector, enterAnimations) {
4357
4359
  addToAnimationQueue(injector, nodeAnimations.animateFns);
4358
4360
  }
4359
4361
  }
4362
+ function removeAnimationsFromQueue(injector, animationFns) {
4363
+ const animationQueue = injector.get(ANIMATION_QUEUE);
4364
+ if (Array.isArray(animationFns)) {
4365
+ for (const animateFn of animationFns) {
4366
+ animationQueue.queue.delete(animateFn);
4367
+ }
4368
+ } else {
4369
+ animationQueue.queue.delete(animationFns);
4370
+ }
4371
+ }
4360
4372
 
4361
4373
  function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
4362
4374
  const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
@@ -4492,6 +4504,9 @@ function cleanUpView(tView, lView) {
4492
4504
  }
4493
4505
  function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4494
4506
  const animations = lView?.[ANIMATIONS];
4507
+ if (animations?.enter?.has(tNode.index)) {
4508
+ removeAnimationsFromQueue(injector, animations.enter.get(tNode.index).animateFns);
4509
+ }
4495
4510
  if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index)) return callback(false);
4496
4511
  if (lView) allLeavingAnimations.add(lView[ID]);
4497
4512
  addToAnimationQueue(injector, () => {
@@ -6280,7 +6295,7 @@ function createTNode(tView, tParent, type, index, value, attrs) {
6280
6295
  directiveEnd: -1,
6281
6296
  directiveStylingLast: -1,
6282
6297
  componentOffset: -1,
6283
- fieldIndex: -1,
6298
+ controlDirectiveIndex: -1,
6284
6299
  customControlIndex: -1,
6285
6300
  propertyBindings: null,
6286
6301
  flags,
@@ -7287,10 +7302,10 @@ function verifyStandaloneImport(depType, importingType) {
7287
7302
  }
7288
7303
 
7289
7304
  class DepsTracker {
7290
- ownerNgModule = new Map();
7305
+ ownerNgModule = new WeakMap();
7291
7306
  ngModulesWithSomeUnresolvedDecls = new Set();
7292
- ngModulesScopeCache = new Map();
7293
- standaloneComponentsScopeCache = new Map();
7307
+ ngModulesScopeCache = new WeakMap();
7308
+ standaloneComponentsScopeCache = new WeakMap();
7294
7309
  resolveNgModulesDecls() {
7295
7310
  if (this.ngModulesWithSomeUnresolvedDecls.size === 0) {
7296
7311
  return;
@@ -7936,8 +7951,6 @@ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
7936
7951
  return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
7937
7952
  }
7938
7953
 
7939
- const ɵCONTROL = Symbol('CONTROL');
7940
-
7941
7954
  function wrapListener(tNode, lView, listenerFn) {
7942
7955
  return function wrapListenerIn_markDirtyAndPreventDefault(event) {
7943
7956
  const startView = isComponentHost(tNode) ? getComponentLViewByIndex(tNode.index, lView) : lView;
@@ -8076,15 +8089,153 @@ function isOutputSubscribable(value) {
8076
8089
  return value != null && typeof value.subscribe === 'function';
8077
8090
  }
8078
8091
 
8092
+ function ɵɵcontrolCreate() {
8093
+ controlCreateInternal();
8094
+ }
8095
+ function controlCreateInternal() {
8096
+ const lView = getLView();
8097
+ const tView = getTView();
8098
+ const tNode = getCurrentTNode();
8099
+ if (tView.firstCreatePass) {
8100
+ initializeControlFirstCreatePass(tView, tNode);
8101
+ }
8102
+ if (tNode.controlDirectiveIndex === -1) {
8103
+ return;
8104
+ }
8105
+ performanceMarkFeature('NgSignalForms');
8106
+ const instance = lView[tNode.controlDirectiveIndex];
8107
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8108
+ controlDef.create(instance, new ControlDirectiveHostImpl(lView, tView, tNode));
8109
+ }
8110
+ function ɵɵcontrol() {
8111
+ controlUpdateInternal();
8112
+ }
8113
+ function controlUpdateInternal() {
8114
+ if (ngDevMode && isInCheckNoChangesMode()) {
8115
+ return;
8116
+ }
8117
+ const lView = getLView();
8118
+ const tView = getTView();
8119
+ const tNode = getSelectedTNode();
8120
+ if (tNode.controlDirectiveIndex === -1) {
8121
+ return;
8122
+ }
8123
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8124
+ const instance = lView[tNode.controlDirectiveIndex];
8125
+ controlDef.update(instance, new ControlDirectiveHostImpl(lView, tView, tNode));
8126
+ }
8127
+ class ControlDirectiveHostImpl {
8128
+ lView;
8129
+ tView;
8130
+ tNode;
8131
+ hasPassThrough;
8132
+ constructor(lView, tView, tNode) {
8133
+ this.lView = lView;
8134
+ this.tView = tView;
8135
+ this.tNode = tNode;
8136
+ this.hasPassThrough = !!(tNode.flags & 4096);
8137
+ }
8138
+ get customControl() {
8139
+ return this.tNode.customControlIndex !== -1 ? this.lView[this.tNode.customControlIndex] : undefined;
8140
+ }
8141
+ get descriptor() {
8142
+ if (ngDevMode && isComponentHost(this.tNode)) {
8143
+ const componentIndex = this.tNode.directiveStart + this.tNode.componentOffset;
8144
+ const componentDef = this.tView.data[componentIndex];
8145
+ return `Component ${debugStringifyTypeForError(componentDef.type)}`;
8146
+ }
8147
+ return `<${this.tNode.value}>`;
8148
+ }
8149
+ listenToCustomControlOutput(outputName, callback) {
8150
+ if (!hasOutput(this.tView.data[this.tNode.customControlIndex], outputName)) {
8151
+ return;
8152
+ }
8153
+ listenToOutput(this.tNode, this.lView, this.tNode.customControlIndex, outputName, outputName, wrapListener(this.tNode, this.lView, callback));
8154
+ }
8155
+ listenToCustomControlModel(listener) {
8156
+ const modelName = this.tNode.flags & 1024 ? 'valueChange' : 'checkedChange';
8157
+ listenToOutput(this.tNode, this.lView, this.tNode.customControlIndex, modelName, modelName, wrapListener(this.tNode, this.lView, listener));
8158
+ }
8159
+ listenToDom(eventName, listener) {
8160
+ listenToDomEvent(this.tNode, this.tView, this.lView, undefined, this.lView[RENDERER], eventName, listener, wrapListener(this.tNode, this.lView, listener));
8161
+ }
8162
+ setInputOnDirectives(inputName, value) {
8163
+ const directiveIndices = this.tNode.inputs?.[inputName];
8164
+ if (!directiveIndices) {
8165
+ return false;
8166
+ }
8167
+ for (const index of directiveIndices) {
8168
+ const directiveDef = this.tView.data[index];
8169
+ const directive = this.lView[index];
8170
+ writeToDirectiveInput(directiveDef, directive, inputName, value);
8171
+ }
8172
+ return true;
8173
+ }
8174
+ setCustomControlModelInput(value) {
8175
+ const directive = this.lView[this.tNode.customControlIndex];
8176
+ const directiveDef = this.tView.data[this.tNode.customControlIndex];
8177
+ const modelName = this.tNode.flags & 1024 ? 'value' : 'checked';
8178
+ writeToDirectiveInput(directiveDef, directive, modelName, value);
8179
+ }
8180
+ customControlHasInput(inputName) {
8181
+ if (this.tNode.customControlIndex === -1) {
8182
+ return false;
8183
+ }
8184
+ const directiveDef = this.tView.data[this.tNode.customControlIndex];
8185
+ return directiveDef.inputs[inputName] != undefined;
8186
+ }
8187
+ }
8188
+ function initializeControlFirstCreatePass(tView, tNode, lView) {
8189
+ ngDevMode && assertFirstCreatePass(tView);
8190
+ for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
8191
+ const directiveDef = tView.data[i];
8192
+ if (directiveDef.controlDef) {
8193
+ tNode.controlDirectiveIndex = i;
8194
+ break;
8195
+ }
8196
+ }
8197
+ if (tNode.controlDirectiveIndex === -1) {
8198
+ return;
8199
+ }
8200
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8201
+ if (controlDef.passThroughInput) {
8202
+ if ((tNode.inputs?.[controlDef.passThroughInput]?.length ?? 0) > 1) {
8203
+ tNode.flags |= 4096;
8204
+ return;
8205
+ }
8206
+ }
8207
+ initializeCustomControlStatus(tView, tNode);
8208
+ }
8209
+ function initializeCustomControlStatus(tView, tNode) {
8210
+ for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
8211
+ const directiveDef = tView.data[i];
8212
+ if (hasModelInput(directiveDef, 'value')) {
8213
+ tNode.flags |= 1024;
8214
+ tNode.customControlIndex = i;
8215
+ return;
8216
+ }
8217
+ if (hasModelInput(directiveDef, 'checked')) {
8218
+ tNode.flags |= 2048;
8219
+ tNode.customControlIndex = i;
8220
+ return;
8221
+ }
8222
+ }
8223
+ }
8224
+ function hasModelInput(directiveDef, name) {
8225
+ return hasInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
8226
+ }
8227
+ function hasInput(directiveDef, name) {
8228
+ return name in directiveDef.inputs;
8229
+ }
8230
+ function hasOutput(directiveDef, name) {
8231
+ return name in directiveDef.outputs;
8232
+ }
8233
+
8079
8234
  const BINDING = /* @__PURE__ */Symbol('BINDING');
8080
8235
  const INPUT_BINDING_METADATA = {
8081
8236
  kind: 'input',
8082
8237
  requiredVars: 1
8083
8238
  };
8084
- const FIELD_BINDING_METADATA = {
8085
- kind: 'field',
8086
- requiredVars: 2
8087
- };
8088
8239
  const OUTPUT_BINDING_METADATA = {
8089
8240
  kind: 'output',
8090
8241
  requiredVars: 0
@@ -8110,21 +8261,16 @@ function inputBindingUpdate(targetDirectiveIdx, publicName, value) {
8110
8261
  }
8111
8262
  }
8112
8263
  }
8113
- function controlBinding(binding, tNode) {
8114
- const lView = getLView();
8115
- const directive = lView[tNode.directiveStart + binding.targetIdx];
8116
- return directive[ɵCONTROL];
8117
- }
8118
8264
  function inputBinding(publicName, value) {
8119
8265
  if (publicName === 'formField') {
8120
8266
  const binding = {
8121
- [BINDING]: FIELD_BINDING_METADATA,
8267
+ [BINDING]: INPUT_BINDING_METADATA,
8122
8268
  create: () => {
8123
- controlBinding(binding, getCurrentTNode())?.create();
8269
+ controlCreateInternal();
8124
8270
  },
8125
8271
  update: () => {
8126
8272
  inputBindingUpdate(binding.targetIdx, publicName, value());
8127
- controlBinding(binding, getSelectedTNode())?.update();
8273
+ controlUpdateInternal();
8128
8274
  }
8129
8275
  };
8130
8276
  return binding;
@@ -8313,7 +8459,7 @@ class ComponentFactory extends ComponentFactory$1 {
8313
8459
  }
8314
8460
  }
8315
8461
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8316
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.0-next.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8462
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.0-next.2'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8317
8463
  let creationBindings = null;
8318
8464
  let updateBindings = null;
8319
8465
  let varsToAllocate = 0;
@@ -9457,6 +9603,7 @@ function getNgDirectiveDef(directiveDefinition) {
9457
9603
  setInput: null,
9458
9604
  resolveHostDirectives: null,
9459
9605
  hostDirectives: null,
9606
+ controlDef: null,
9460
9607
  inputs: parseAndConvertInputsForDefinition(directiveDefinition.inputs, declaredInputs),
9461
9608
  outputs: parseAndConvertOutputsForDefinition(directiveDefinition.outputs),
9462
9609
  debugInfo: null
@@ -9509,6 +9656,20 @@ function getComponentId(componentDef) {
9509
9656
  return compId;
9510
9657
  }
9511
9658
 
9659
+ function ɵɵControlFeature(passThroughInput) {
9660
+ return definition => {
9661
+ definition.controlDef = {
9662
+ create: (inst, host) => {
9663
+ inst?.ɵngControlCreate(host);
9664
+ },
9665
+ update: (inst, host) => {
9666
+ inst?.ɵngControlUpdate?.(host);
9667
+ },
9668
+ passThroughInput
9669
+ };
9670
+ };
9671
+ }
9672
+
9512
9673
  function ɵɵHostDirectivesFeature(rawHostDirectives) {
9513
9674
  const feature = definition => {
9514
9675
  const isEager = Array.isArray(rawHostDirectives);
@@ -13272,515 +13433,6 @@ function ɵɵcomponentInstance() {
13272
13433
  return instance;
13273
13434
  }
13274
13435
 
13275
- function ɵɵcontrolCreate() {
13276
- const lView = getLView();
13277
- const tView = getTView();
13278
- const tNode = getCurrentTNode();
13279
- if (tView.firstCreatePass) {
13280
- initializeControlFirstCreatePass(tView, tNode, lView);
13281
- }
13282
- const fieldDirective = getFieldDirective(tNode, lView);
13283
- if (!fieldDirective) {
13284
- return;
13285
- }
13286
- performanceMarkFeature('NgSignalForms');
13287
- if (tNode.flags & 1024) {
13288
- initializeCustomControl(lView, tNode, fieldDirective, 'value');
13289
- } else if (tNode.flags & 2048) {
13290
- initializeCustomControl(lView, tNode, fieldDirective, 'checked');
13291
- } else if (tNode.flags & 4096) {
13292
- initializeInteropControl(fieldDirective);
13293
- } else if (tNode.flags & 8192) {
13294
- initializeNativeControl(lView, tNode, fieldDirective);
13295
- }
13296
- fieldDirective.registerAsBinding(getCustomControl(tNode, lView));
13297
- }
13298
- function ɵɵcontrol(value, name, sanitizer) {
13299
- const lView = getLView();
13300
- const tNode = getSelectedTNode();
13301
- const bindingIndex = nextBindingIndex();
13302
- if (bindingUpdated(lView, bindingIndex, value)) {
13303
- const tView = getTView();
13304
- setPropertyAndInputs(tNode, lView, name, value, lView[RENDERER], sanitizer);
13305
- ngDevMode && storePropertyBindingMetadata(tView.data, tNode, name, bindingIndex);
13306
- }
13307
- updateControl(lView, tNode);
13308
- }
13309
- function ɵcontrolUpdate() {
13310
- const lView = getLView();
13311
- const tNode = getSelectedTNode();
13312
- updateControl(lView, tNode);
13313
- }
13314
- function updateControl(lView, tNode) {
13315
- const fieldDirective = getFieldDirective(tNode, lView);
13316
- if (fieldDirective) {
13317
- updateControlClasses(lView, tNode, fieldDirective);
13318
- if (tNode.flags & 1024) {
13319
- updateCustomControl(tNode, lView, fieldDirective, 'value');
13320
- } else if (tNode.flags & 2048) {
13321
- updateCustomControl(tNode, lView, fieldDirective, 'checked');
13322
- } else if (tNode.flags & 4096) {
13323
- updateInteropControl(tNode, lView, fieldDirective);
13324
- } else {
13325
- updateNativeControl(tNode, lView, fieldDirective);
13326
- }
13327
- }
13328
- nextBindingIndex();
13329
- }
13330
- function initializeControlFirstCreatePass(tView, tNode, lView) {
13331
- ngDevMode && assertFirstCreatePass(tView);
13332
- const directiveIndices = tNode.inputs?.['formField'];
13333
- if (!directiveIndices) {
13334
- return;
13335
- }
13336
- if (isComponentHost(tNode) && directiveIndices.includes(tNode.directiveStart + tNode.componentOffset)) {
13337
- return;
13338
- }
13339
- const controlIndex = directiveIndices.find(index => ɵCONTROL in lView[index]);
13340
- if (controlIndex === undefined) {
13341
- return;
13342
- }
13343
- tNode.fieldIndex = controlIndex;
13344
- const foundControl = isInteropControlFirstCreatePass(tNode, lView) || isCustomControlFirstCreatePass(tView, tNode);
13345
- if (isNativeControlFirstCreatePass(tNode) || foundControl) {
13346
- return;
13347
- }
13348
- throw new RuntimeError(318, ngDevMode && `${describeElement(tView, tNode)} is an invalid [formField] 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.`);
13349
- }
13350
- function describeElement(tView, tNode) {
13351
- if (ngDevMode && isComponentHost(tNode)) {
13352
- const componentIndex = tNode.directiveStart + tNode.componentOffset;
13353
- const componentDef = tView.data[componentIndex];
13354
- return `Component ${debugStringifyTypeForError(componentDef.type)}`;
13355
- }
13356
- return `<${tNode.value}>`;
13357
- }
13358
- function isInteropControlFirstCreatePass(tNode, lView) {
13359
- const control = lView[tNode.fieldIndex];
13360
- if (control.ɵinteropControl) {
13361
- tNode.flags |= 4096;
13362
- return true;
13363
- }
13364
- return false;
13365
- }
13366
- function isCustomControlFirstCreatePass(tView, tNode) {
13367
- for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
13368
- const directiveDef = tView.data[i];
13369
- if (hasModelInput(directiveDef, 'value')) {
13370
- tNode.flags |= 1024;
13371
- tNode.customControlIndex = i;
13372
- return true;
13373
- }
13374
- if (hasModelInput(directiveDef, 'checked')) {
13375
- tNode.flags |= 2048;
13376
- tNode.customControlIndex = i;
13377
- return true;
13378
- }
13379
- }
13380
- return false;
13381
- }
13382
- function isNativeControlFirstCreatePass(tNode) {
13383
- if (!isNativeControl(tNode)) {
13384
- return false;
13385
- }
13386
- tNode.flags |= 8192;
13387
- if (isNumericInput(tNode)) {
13388
- tNode.flags |= 16384;
13389
- }
13390
- if (isTextControl(tNode)) {
13391
- tNode.flags |= 32768;
13392
- }
13393
- return true;
13394
- }
13395
- function getFieldDirective(tNode, lView) {
13396
- const index = tNode.fieldIndex;
13397
- return index === -1 ? undefined : lView[index];
13398
- }
13399
- function getCustomControl(tNode, lView) {
13400
- const index = tNode.customControlIndex;
13401
- return index === -1 ? undefined : lView[index];
13402
- }
13403
- function hasModelInput(directiveDef, name) {
13404
- return hasInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
13405
- }
13406
- function hasInput(directiveDef, name) {
13407
- return name in directiveDef.inputs;
13408
- }
13409
- function hasOutput(directiveDef, name) {
13410
- return name in directiveDef.outputs;
13411
- }
13412
- function initializeCustomControl(lView, tNode, fieldDirective, modelName) {
13413
- const tView = getTView();
13414
- const directiveIndex = tNode.customControlIndex;
13415
- const outputName = modelName + 'Change';
13416
- listenToOutput(tNode, lView, directiveIndex, outputName, outputName, wrapListener(tNode, lView, value => fieldDirective.state().setControlValue(value)));
13417
- const directiveDef = tView.data[directiveIndex];
13418
- const touchedOutputName = 'touchedChange';
13419
- if (hasOutput(directiveDef, touchedOutputName)) {
13420
- listenToOutput(tNode, lView, directiveIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => fieldDirective.state().markAsTouched()));
13421
- }
13422
- }
13423
- function initializeInteropControl(fieldDirective) {
13424
- const interopControl = fieldDirective.ɵinteropControl;
13425
- interopControl.registerOnChange(value => fieldDirective.state().setControlValue(value));
13426
- interopControl.registerOnTouched(() => fieldDirective.state().markAsTouched());
13427
- }
13428
- function isNativeControl(tNode) {
13429
- if (tNode.type !== 2) {
13430
- return false;
13431
- }
13432
- const tagName = tNode.value;
13433
- return tagName === 'input' || tagName === 'textarea' || tagName === 'select';
13434
- }
13435
- function initializeNativeControl(lView, tNode, fieldDirective) {
13436
- const tView = getTView();
13437
- const renderer = lView[RENDERER];
13438
- const element = getNativeByTNode(tNode, lView);
13439
- const inputListener = () => {
13440
- const state = fieldDirective.state();
13441
- state.setControlValue(getNativeControlValue(element, state.value));
13442
- };
13443
- listenToDomEvent(tNode, tView, lView, undefined, renderer, 'input', inputListener, wrapListener(tNode, lView, inputListener));
13444
- const blurListener = () => {
13445
- fieldDirective.state().markAsTouched();
13446
- };
13447
- listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
13448
- if (tNode.type === 2 && tNode.value === 'select' && typeof MutationObserver === 'function') {
13449
- const observer = observeSelectMutations(element, fieldDirective);
13450
- storeCleanupWithContext(tView, lView, observer, observer.disconnect);
13451
- }
13452
- }
13453
- function observeSelectMutations(select, controlDirective) {
13454
- const observer = new MutationObserver(mutations => {
13455
- if (mutations.some(m => isRelevantSelectMutation(m))) {
13456
- select.value = controlDirective.state().value();
13457
- }
13458
- });
13459
- observer.observe(select, {
13460
- attributes: true,
13461
- attributeFilter: ['value'],
13462
- characterData: true,
13463
- childList: true,
13464
- subtree: true
13465
- });
13466
- return observer;
13467
- }
13468
- function isRelevantSelectMutation(mutation) {
13469
- if (mutation.type === 'childList' || mutation.type === 'characterData') {
13470
- if (mutation.target instanceof Comment) {
13471
- return false;
13472
- }
13473
- for (const node of mutation.addedNodes) {
13474
- if (!(node instanceof Comment)) {
13475
- return true;
13476
- }
13477
- }
13478
- for (const node of mutation.removedNodes) {
13479
- if (!(node instanceof Comment)) {
13480
- return true;
13481
- }
13482
- }
13483
- return false;
13484
- }
13485
- if (mutation.type === 'attributes' && mutation.target instanceof HTMLOptionElement) {
13486
- return true;
13487
- }
13488
- return false;
13489
- }
13490
- function updateControlClasses(lView, tNode, control) {
13491
- if (control.classes) {
13492
- const bindings = getControlBindings(lView);
13493
- bindings.classes ??= {};
13494
- control.state();
13495
- const renderer = lView[RENDERER];
13496
- const element = getNativeByTNode(tNode, lView);
13497
- for (const [className, enabled] of control.classes) {
13498
- const isEnabled = enabled();
13499
- if (controlClassBindingUpdated(bindings.classes, className, isEnabled)) {
13500
- if (isEnabled) {
13501
- renderer.addClass(element, className);
13502
- } else {
13503
- renderer.removeClass(element, className);
13504
- }
13505
- }
13506
- }
13507
- }
13508
- }
13509
- function updateCustomControl(tNode, lView, control, modelName) {
13510
- const tView = getTView();
13511
- const directiveIndex = tNode.customControlIndex;
13512
- const directive = lView[directiveIndex];
13513
- const directiveDef = tView.data[directiveIndex];
13514
- const state = control.state();
13515
- const bindings = getControlBindings(lView);
13516
- const controlValue = state.controlValue();
13517
- if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13518
- writeToDirectiveInput(directiveDef, directive, modelName, controlValue);
13519
- }
13520
- const isNative = (tNode.flags & 8192) !== 0;
13521
- const element = isNative ? getNativeByTNode(tNode, lView) : null;
13522
- const renderer = lView[RENDERER];
13523
- for (const key of CONTROL_BINDING_KEYS) {
13524
- const value = state[key]?.();
13525
- if (controlBindingUpdated(bindings, key, value)) {
13526
- const inputName = CONTROL_BINDING_NAMES[key];
13527
- updateDirectiveInputs(tNode, lView, inputName, value);
13528
- if (isNative && !(inputName in directiveDef.inputs)) {
13529
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13530
- }
13531
- }
13532
- }
13533
- }
13534
- function updateInteropControl(tNode, lView, control) {
13535
- const interopControl = control.ɵinteropControl;
13536
- const bindings = getControlBindings(lView);
13537
- const state = control.state();
13538
- const isNative = (tNode.flags & 8192) !== 0;
13539
- const element = isNative ? getNativeByTNode(tNode, lView) : null;
13540
- const renderer = lView[RENDERER];
13541
- const value = state.value();
13542
- if (controlBindingUpdated(bindings, CONTROL_VALUE, value)) {
13543
- untracked(() => interopControl.writeValue(value));
13544
- }
13545
- for (const key of CONTROL_BINDING_KEYS) {
13546
- const value = state[key]?.();
13547
- if (controlBindingUpdated(bindings, key, value)) {
13548
- const inputName = CONTROL_BINDING_NAMES[key];
13549
- const didUpdateInput = updateDirectiveInputs(tNode, lView, inputName, value);
13550
- if (key === DISABLED) {
13551
- if (interopControl.setDisabledState) {
13552
- untracked(() => interopControl.setDisabledState(value));
13553
- }
13554
- } else if (isNative && !didUpdateInput) {
13555
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13556
- }
13557
- }
13558
- }
13559
- }
13560
- function updateNativeControl(tNode, lView, control) {
13561
- const element = getNativeByTNode(tNode, lView);
13562
- const renderer = lView[RENDERER];
13563
- const state = control.state();
13564
- const bindings = getControlBindings(lView);
13565
- const controlValue = state.controlValue();
13566
- if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13567
- setNativeControlValue(element, controlValue);
13568
- }
13569
- for (const key of CONTROL_BINDING_KEYS) {
13570
- const value = state[key]?.();
13571
- if (controlBindingUpdated(bindings, key, value)) {
13572
- const inputName = CONTROL_BINDING_NAMES[key];
13573
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13574
- updateDirectiveInputs(tNode, lView, inputName, value);
13575
- }
13576
- }
13577
- }
13578
- function updateDirectiveInputs(tNode, lView, inputName, value) {
13579
- const directiveIndices = tNode.inputs?.[inputName];
13580
- if (directiveIndices) {
13581
- const tView = getTView();
13582
- for (const index of directiveIndices) {
13583
- const directiveDef = tView.data[index];
13584
- const directive = lView[index];
13585
- writeToDirectiveInput(directiveDef, directive, inputName, value);
13586
- }
13587
- return true;
13588
- }
13589
- return false;
13590
- }
13591
- function updateNativeProperty(tNode, renderer, element, key, value, name) {
13592
- switch (key) {
13593
- case NAME:
13594
- renderer.setAttribute(element, name, value);
13595
- break;
13596
- case DISABLED:
13597
- case READONLY:
13598
- case REQUIRED:
13599
- setBooleanAttribute(renderer, element, name, value);
13600
- break;
13601
- case MAX:
13602
- case MIN:
13603
- if (tNode.flags & 16384) {
13604
- setOptionalAttribute(renderer, element, name, value);
13605
- }
13606
- break;
13607
- case MAX_LENGTH:
13608
- case MIN_LENGTH:
13609
- if (tNode.flags & 32768) {
13610
- setOptionalAttribute(renderer, element, name, value);
13611
- }
13612
- break;
13613
- }
13614
- }
13615
- function isDateOrNull(value) {
13616
- return value === null || value instanceof Date;
13617
- }
13618
- function isNumericInput(tNode) {
13619
- if (!tNode.attrs || tNode.value !== 'input') {
13620
- return false;
13621
- }
13622
- for (let i = 0; i < tNode.attrs.length; i += 2) {
13623
- const name = tNode.attrs[i];
13624
- if (isNameOnlyAttributeMarker(name)) {
13625
- break;
13626
- }
13627
- if (name === 'type') {
13628
- const value = tNode.attrs[i + 1];
13629
- return value === 'date' || value === 'datetime-local' || value === 'month' || value === 'number' || value === 'range' || value === 'time' || value === 'week';
13630
- }
13631
- }
13632
- return false;
13633
- }
13634
- function isTextControl(tNode) {
13635
- return tNode.value !== 'select';
13636
- }
13637
- function getNativeControlValue(element, currentValue) {
13638
- switch (element.type) {
13639
- case 'checkbox':
13640
- return element.checked;
13641
- case 'number':
13642
- case 'range':
13643
- case 'datetime-local':
13644
- if (typeof currentValue() === 'number') {
13645
- return element.valueAsNumber;
13646
- }
13647
- break;
13648
- case 'date':
13649
- case 'month':
13650
- case 'time':
13651
- case 'week':
13652
- const value = currentValue();
13653
- if (isDateOrNull(value)) {
13654
- return element.valueAsDate;
13655
- } else if (typeof value === 'number') {
13656
- return element.valueAsNumber;
13657
- }
13658
- break;
13659
- }
13660
- return element.value;
13661
- }
13662
- function setNativeControlValue(element, value) {
13663
- switch (element.type) {
13664
- case 'checkbox':
13665
- element.checked = value;
13666
- return;
13667
- case 'radio':
13668
- element.checked = value === element.value;
13669
- return;
13670
- case 'number':
13671
- case 'range':
13672
- case 'datetime-local':
13673
- if (typeof value === 'number') {
13674
- setNativeNumberControlValue(element, value);
13675
- return;
13676
- }
13677
- break;
13678
- case 'date':
13679
- case 'month':
13680
- case 'time':
13681
- case 'week':
13682
- if (isDateOrNull(value)) {
13683
- element.valueAsDate = value;
13684
- return;
13685
- } else if (typeof value === 'number') {
13686
- setNativeNumberControlValue(element, value);
13687
- return;
13688
- }
13689
- }
13690
- element.value = value;
13691
- }
13692
- function setNativeNumberControlValue(element, value) {
13693
- if (isNaN(value)) {
13694
- element.value = '';
13695
- } else {
13696
- element.valueAsNumber = value;
13697
- }
13698
- }
13699
- const DISABLED = /* @__PURE__ */getClosureSafeProperty({
13700
- disabled: getClosureSafeProperty
13701
- });
13702
- const MAX = /* @__PURE__ */getClosureSafeProperty({
13703
- max: getClosureSafeProperty
13704
- });
13705
- const MAX_LENGTH = /* @__PURE__ */getClosureSafeProperty({
13706
- maxLength: getClosureSafeProperty
13707
- });
13708
- const MIN = /* @__PURE__ */getClosureSafeProperty({
13709
- min: getClosureSafeProperty
13710
- });
13711
- const MIN_LENGTH = /* @__PURE__ */getClosureSafeProperty({
13712
- minLength: getClosureSafeProperty
13713
- });
13714
- const NAME = /* @__PURE__ */getClosureSafeProperty({
13715
- name: getClosureSafeProperty
13716
- });
13717
- const READONLY = /* @__PURE__ */getClosureSafeProperty({
13718
- readonly: getClosureSafeProperty
13719
- });
13720
- const REQUIRED = /* @__PURE__ */getClosureSafeProperty({
13721
- required: getClosureSafeProperty
13722
- });
13723
- const CONTROL_VALUE = /* @__PURE__ */getClosureSafeProperty({
13724
- controlValue: getClosureSafeProperty
13725
- });
13726
- const CONTROL_BINDING_NAMES = {
13727
- disabled: 'disabled',
13728
- disabledReasons: 'disabledReasons',
13729
- dirty: 'dirty',
13730
- errors: 'errors',
13731
- hidden: 'hidden',
13732
- invalid: 'invalid',
13733
- max: 'max',
13734
- maxLength: 'maxLength',
13735
- min: 'min',
13736
- minLength: 'minLength',
13737
- name: 'name',
13738
- pattern: 'pattern',
13739
- pending: 'pending',
13740
- readonly: 'readonly',
13741
- required: 'required',
13742
- touched: 'touched'
13743
- };
13744
- const CONTROL_BINDING_KEYS = /* @__PURE__ */(() => Object.keys(CONTROL_BINDING_NAMES))();
13745
- function getControlBindings(lView) {
13746
- const bindingIndex = getBindingIndex();
13747
- let bindings = lView[bindingIndex];
13748
- if (bindings === NO_CHANGE) {
13749
- bindings = lView[bindingIndex] = {};
13750
- }
13751
- return bindings;
13752
- }
13753
- function controlBindingUpdated(bindings, key, value) {
13754
- const oldValue = bindings[key];
13755
- if (Object.is(oldValue, value)) {
13756
- return false;
13757
- }
13758
- bindings[key] = value;
13759
- return true;
13760
- }
13761
- function controlClassBindingUpdated(bindings, className, value) {
13762
- const oldValue = bindings[className];
13763
- if (Object.is(oldValue, value)) {
13764
- return false;
13765
- }
13766
- bindings[className] = value;
13767
- return true;
13768
- }
13769
- function setBooleanAttribute(renderer, element, name, value) {
13770
- if (value) {
13771
- renderer.setAttribute(element, name, '');
13772
- } else {
13773
- renderer.removeAttribute(element, name);
13774
- }
13775
- }
13776
- function setOptionalAttribute(renderer, element, name, value) {
13777
- if (value !== undefined) {
13778
- renderer.setAttribute(element, name, value.toString());
13779
- } else {
13780
- renderer.removeAttribute(element, name);
13781
- }
13782
- }
13783
-
13784
13436
  class LiveCollection {
13785
13437
  destroy(item) {}
13786
13438
  updateValue(index, value) {}
@@ -16393,18 +16045,18 @@ function ɵɵtext(index, value = '') {
16393
16045
  const adjustedIndex = index + HEADER_OFFSET;
16394
16046
  ngDevMode && assertTNodeCreationIndex(lView, index);
16395
16047
  const tNode = tView.firstCreatePass ? getOrCreateTNode(tView, adjustedIndex, 1, value, null) : tView.data[adjustedIndex];
16396
- const textNative = _locateOrCreateTextNode(tView, lView, tNode, value, index);
16048
+ const textNative = _locateOrCreateTextNode(tView, lView, tNode, value);
16397
16049
  lView[adjustedIndex] = textNative;
16398
16050
  if (wasLastNodeCreated()) {
16399
16051
  appendChild(tView, lView, textNative, tNode);
16400
16052
  }
16401
16053
  setCurrentTNode(tNode, false);
16402
16054
  }
16403
- let _locateOrCreateTextNode = (tView, lView, tNode, value, index) => {
16055
+ let _locateOrCreateTextNode = (tView, lView, tNode, value) => {
16404
16056
  lastNodeWasCreated(true);
16405
16057
  return createTextNode(lView[RENDERER], value);
16406
16058
  };
16407
- function locateOrCreateTextNodeImpl(tView, lView, tNode, value, index) {
16059
+ function locateOrCreateTextNodeImpl(tView, lView, tNode, value) {
16408
16060
  const isNodeCreationMode = !canHydrateNode(lView, tNode);
16409
16061
  lastNodeWasCreated(isNodeCreationMode);
16410
16062
  if (isNodeCreationMode) {
@@ -17265,6 +16917,7 @@ const angularCoreEnv = (() => ({
17265
16917
  'ɵɵresetView': __resetView,
17266
16918
  'ɵɵHostDirectivesFeature': ɵɵHostDirectivesFeature,
17267
16919
  'ɵɵNgOnChangesFeature': ɵɵNgOnChangesFeature,
16920
+ 'ɵɵControlFeature': ɵɵControlFeature,
17268
16921
  'ɵɵProvidersFeature': ɵɵProvidersFeature,
17269
16922
  'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
17270
16923
  'ɵɵExternalStylesFeature': ɵɵExternalStylesFeature,
@@ -18010,6 +17663,7 @@ function directiveMetadata(type, metadata) {
18010
17663
  lifecycle: {
18011
17664
  usesOnChanges: reflect.hasLifecycleHook(type, 'ngOnChanges')
18012
17665
  },
17666
+ controlCreate: null,
18013
17667
  typeSourceSpan: null,
18014
17668
  usesInheritance: !extendsDirectlyFromObject(type),
18015
17669
  exportAs: extractExportAs(metadata.exportAs),
@@ -18804,5 +18458,5 @@ function getDebugNode(nativeNode) {
18804
18458
  return null;
18805
18459
  }
18806
18460
 
18807
- export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, Pipe, ProfilerEvent, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵCONTROL, ɵcontrolUpdate, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵcontrol, ɵɵcontrolCreate, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
18461
+ export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, Pipe, ProfilerEvent, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵcontrol, ɵɵcontrolCreate, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
18808
18462
  //# sourceMappingURL=_debug_node-chunk.mjs.map