@angular/core 21.2.0-next.1 → 21.2.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +329 -589
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +2 -11
  5. package/fesm2022/_effect-chunk.mjs.map +1 -1
  6. package/fesm2022/_effect-chunk2.mjs +2969 -0
  7. package/fesm2022/_effect-chunk2.mjs.map +1 -0
  8. package/fesm2022/_not_found-chunk.mjs +1 -1
  9. package/fesm2022/_resource-chunk.mjs +8 -4
  10. package/fesm2022/_resource-chunk.mjs.map +1 -1
  11. package/fesm2022/_untracked-chunk.mjs +72 -2946
  12. package/fesm2022/_untracked-chunk.mjs.map +1 -1
  13. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  14. package/fesm2022/core.mjs +6 -10
  15. package/fesm2022/core.mjs.map +1 -1
  16. package/fesm2022/primitives-di.mjs +1 -1
  17. package/fesm2022/primitives-event-dispatch.mjs +2 -2
  18. package/fesm2022/primitives-event-dispatch.mjs.map +1 -1
  19. package/fesm2022/primitives-signals.mjs +3 -3
  20. package/fesm2022/rxjs-interop.mjs +4 -4
  21. package/fesm2022/testing.mjs +2 -2
  22. package/package.json +2 -2
  23. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  24. package/schematics/bundles/application-config-core.cjs +1 -1
  25. package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
  26. package/schematics/bundles/bootstrap-options-migration.cjs +1 -1
  27. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  28. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  29. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  30. package/schematics/bundles/control-flow-migration.cjs +1 -1
  31. package/schematics/bundles/imports-CVmcbVA9.cjs +1 -1
  32. package/schematics/bundles/index-BtLcQH8g.cjs +1 -1
  33. package/schematics/bundles/inject-migration.cjs +1 -1
  34. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  35. package/schematics/bundles/migrate_ts_type_references-MWoZx-Cb.cjs +1 -1
  36. package/schematics/bundles/ng_component_template-BOuKAnQd.cjs +1 -1
  37. package/schematics/bundles/ng_decorators-DYy6II6x.cjs +1 -1
  38. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  39. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  40. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  41. package/schematics/bundles/output-migration.cjs +1 -1
  42. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  43. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  44. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  45. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  46. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  47. package/schematics/bundles/router-current-navigation.cjs +1 -1
  48. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  49. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  50. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  51. package/schematics/bundles/signal-input-migration.cjs +1 -1
  52. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  53. package/schematics/bundles/signals.cjs +1 -1
  54. package/schematics/bundles/standalone-migration.cjs +1 -1
  55. package/schematics/bundles/symbol-DZeHSR-V.cjs +1 -1
  56. package/types/_api-chunk.d.ts +1 -1
  57. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  58. package/types/_discovery-chunk.d.ts +86 -25
  59. package/types/_effect-chunk.d.ts +1 -1
  60. package/types/_event_dispatcher-chunk.d.ts +2 -2
  61. package/types/_formatter-chunk.d.ts +1 -1
  62. package/types/_weak_ref-chunk.d.ts +1 -1
  63. package/types/core.d.ts +11 -187
  64. package/types/primitives-di.d.ts +1 -1
  65. package/types/primitives-event-dispatch.d.ts +3 -3
  66. package/types/primitives-signals.d.ts +1 -1
  67. package/types/rxjs-interop.d.ts +1 -1
  68. package/types/testing.d.ts +1 -1
  69. package/fesm2022/_linked_signal-chunk.mjs +0 -87
  70. package/fesm2022/_linked_signal-chunk.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.2.0-next.1
2
+ * @license Angular v21.2.0-next.3
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, ANIMATIONS, INJECTOR as INJECTOR$1, CONTAINER_HEADER_OFFSET, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, 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';
@@ -1141,7 +1141,7 @@ function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundVa
1141
1141
  if (!parentTNode) {
1142
1142
  const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];
1143
1143
  if (embeddedViewInjector) {
1144
- const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags);
1144
+ const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags & ~4);
1145
1145
  if (embeddedViewInjectorValue !== NOT_FOUND) {
1146
1146
  return embeddedViewInjectorValue;
1147
1147
  }
@@ -1444,6 +1444,7 @@ var ChangeDetectionStrategy;
1444
1444
  (function (ChangeDetectionStrategy) {
1445
1445
  ChangeDetectionStrategy[ChangeDetectionStrategy["OnPush"] = 0] = "OnPush";
1446
1446
  ChangeDetectionStrategy[ChangeDetectionStrategy["Default"] = 1] = "Default";
1447
+ ChangeDetectionStrategy[ChangeDetectionStrategy["Eager"] = 1] = "Eager";
1447
1448
  })(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));
1448
1449
 
1449
1450
  const TRACKED_LVIEWS = new Map();
@@ -4303,11 +4304,14 @@ const NOOP_AFTER_RENDER_REF = {
4303
4304
 
4304
4305
  const ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationQueue' : '', {
4305
4306
  factory: () => {
4307
+ const injector = inject(EnvironmentInjector);
4308
+ const queue = new Set();
4309
+ injector.onDestroy(() => queue.clear());
4306
4310
  return {
4307
- queue: new Set(),
4311
+ queue,
4308
4312
  isScheduled: false,
4309
4313
  scheduler: null,
4310
- injector: inject(EnvironmentInjector)
4314
+ injector
4311
4315
  };
4312
4316
  }
4313
4317
  });
@@ -4358,6 +4362,16 @@ function queueEnterAnimations(injector, enterAnimations) {
4358
4362
  addToAnimationQueue(injector, nodeAnimations.animateFns);
4359
4363
  }
4360
4364
  }
4365
+ function removeAnimationsFromQueue(injector, animationFns) {
4366
+ const animationQueue = injector.get(ANIMATION_QUEUE);
4367
+ if (Array.isArray(animationFns)) {
4368
+ for (const animateFn of animationFns) {
4369
+ animationQueue.queue.delete(animateFn);
4370
+ }
4371
+ } else {
4372
+ animationQueue.queue.delete(animationFns);
4373
+ }
4374
+ }
4361
4375
 
4362
4376
  function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
4363
4377
  const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
@@ -4365,6 +4379,138 @@ function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
4365
4379
  queueEnterAnimations(injector, enterAnimations);
4366
4380
  }
4367
4381
  }
4382
+ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4383
+ try {
4384
+ injector.get(INJECTOR$1);
4385
+ } catch {
4386
+ return callback(false);
4387
+ }
4388
+ const animations = lView?.[ANIMATIONS];
4389
+ if (animations?.enter?.has(tNode.index)) {
4390
+ removeAnimationsFromQueue(injector, animations.enter.get(tNode.index).animateFns);
4391
+ }
4392
+ const nodesWithExitAnimations = aggregateDescendantAnimations(lView, tNode, animations);
4393
+ if (nodesWithExitAnimations.size === 0) {
4394
+ let hasNestedAnimations = false;
4395
+ if (lView) {
4396
+ const nestedPromises = [];
4397
+ collectNestedViewAnimations(lView, tNode, nestedPromises);
4398
+ hasNestedAnimations = nestedPromises.length > 0;
4399
+ }
4400
+ if (!hasNestedAnimations) {
4401
+ return callback(false);
4402
+ }
4403
+ }
4404
+ if (lView) allLeavingAnimations.add(lView[ID]);
4405
+ addToAnimationQueue(injector, () => executeLeaveAnimations(lView, tNode, animations || undefined, nodesWithExitAnimations, callback), animations || undefined);
4406
+ }
4407
+ function aggregateDescendantAnimations(lView, tNode, animations) {
4408
+ const nodesWithExitAnimations = new Map();
4409
+ const leaveAnimations = animations?.leave;
4410
+ if (leaveAnimations && leaveAnimations.has(tNode.index)) {
4411
+ nodesWithExitAnimations.set(tNode.index, leaveAnimations.get(tNode.index));
4412
+ }
4413
+ if (lView && leaveAnimations) {
4414
+ for (const [index, animationData] of leaveAnimations) {
4415
+ if (nodesWithExitAnimations.has(index)) continue;
4416
+ const nestedTNode = lView[TVIEW].data[index];
4417
+ let parent = nestedTNode.parent;
4418
+ while (parent) {
4419
+ if (parent === tNode) {
4420
+ nodesWithExitAnimations.set(index, animationData);
4421
+ break;
4422
+ }
4423
+ parent = parent.parent;
4424
+ }
4425
+ }
4426
+ }
4427
+ return nodesWithExitAnimations;
4428
+ }
4429
+ function executeLeaveAnimations(lView, tNode, animations, nodesWithExitAnimations, callback) {
4430
+ const runningAnimations = [];
4431
+ if (animations && animations.leave) {
4432
+ for (const [index] of nodesWithExitAnimations) {
4433
+ if (!animations.leave.has(index)) continue;
4434
+ const currentAnimationData = animations.leave.get(index);
4435
+ for (const animationFn of currentAnimationData.animateFns) {
4436
+ const {
4437
+ promise
4438
+ } = animationFn();
4439
+ runningAnimations.push(promise);
4440
+ }
4441
+ animations.detachedLeaveAnimationFns = undefined;
4442
+ }
4443
+ }
4444
+ if (lView) {
4445
+ collectNestedViewAnimations(lView, tNode, runningAnimations);
4446
+ }
4447
+ if (runningAnimations.length > 0) {
4448
+ const currentAnimations = animations || lView?.[ANIMATIONS];
4449
+ if (currentAnimations) {
4450
+ const prevRunning = currentAnimations.running;
4451
+ if (prevRunning) {
4452
+ runningAnimations.push(prevRunning);
4453
+ }
4454
+ currentAnimations.running = Promise.allSettled(runningAnimations);
4455
+ runAfterLeaveAnimations(lView, currentAnimations.running, callback);
4456
+ } else {
4457
+ Promise.allSettled(runningAnimations).then(() => {
4458
+ if (lView) allLeavingAnimations.delete(lView[ID]);
4459
+ callback(true);
4460
+ });
4461
+ }
4462
+ } else {
4463
+ if (lView) allLeavingAnimations.delete(lView[ID]);
4464
+ callback(false);
4465
+ }
4466
+ }
4467
+ function collectNestedViewAnimations(lView, tNode, collectedPromises) {
4468
+ if (isComponentHost(tNode)) {
4469
+ const componentView = getComponentLViewByIndex(tNode.index, lView);
4470
+ collectAllViewLeaveAnimations(componentView, collectedPromises);
4471
+ } else if (tNode.type & 12) {
4472
+ const lContainer = lView[tNode.index];
4473
+ if (isLContainer(lContainer)) {
4474
+ for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
4475
+ const subView = lContainer[i];
4476
+ collectAllViewLeaveAnimations(subView, collectedPromises);
4477
+ }
4478
+ }
4479
+ }
4480
+ let child = tNode.child;
4481
+ while (child) {
4482
+ collectNestedViewAnimations(lView, child, collectedPromises);
4483
+ child = child.next;
4484
+ }
4485
+ }
4486
+ function collectAllViewLeaveAnimations(view, collectedPromises) {
4487
+ const animations = view[ANIMATIONS];
4488
+ if (animations && animations.leave) {
4489
+ for (const animationData of animations.leave.values()) {
4490
+ for (const animationFn of animationData.animateFns) {
4491
+ const {
4492
+ promise
4493
+ } = animationFn();
4494
+ collectedPromises.push(promise);
4495
+ }
4496
+ }
4497
+ }
4498
+ let child = view[TVIEW].firstChild;
4499
+ while (child) {
4500
+ collectNestedViewAnimations(view, child, collectedPromises);
4501
+ child = child.next;
4502
+ }
4503
+ }
4504
+ function runAfterLeaveAnimations(lView, runningAnimations, callback) {
4505
+ runningAnimations.then(() => {
4506
+ if (lView[ANIMATIONS]?.running === runningAnimations) {
4507
+ lView[ANIMATIONS].running = undefined;
4508
+ allLeavingAnimations.delete(lView[ID]);
4509
+ }
4510
+ callback(true);
4511
+ });
4512
+ }
4513
+
4368
4514
  function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
4369
4515
  if (lNodeToHandle != null) {
4370
4516
  let lContainer;
@@ -4491,45 +4637,6 @@ function cleanUpView(tView, lView) {
4491
4637
  setActiveConsumer(prevConsumer);
4492
4638
  }
4493
4639
  }
4494
- function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4495
- const animations = lView?.[ANIMATIONS];
4496
- if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index)) return callback(false);
4497
- if (lView) allLeavingAnimations.add(lView[ID]);
4498
- addToAnimationQueue(injector, () => {
4499
- if (animations.leave && animations.leave.has(tNode.index)) {
4500
- const leaveAnimationMap = animations.leave;
4501
- const leaveAnimations = leaveAnimationMap.get(tNode.index);
4502
- const runningAnimations = [];
4503
- if (leaveAnimations) {
4504
- for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
4505
- const animationFn = leaveAnimations.animateFns[index];
4506
- const {
4507
- promise
4508
- } = animationFn();
4509
- runningAnimations.push(promise);
4510
- }
4511
- animations.detachedLeaveAnimationFns = undefined;
4512
- }
4513
- animations.running = Promise.allSettled(runningAnimations);
4514
- runAfterLeaveAnimations(lView, callback);
4515
- } else {
4516
- if (lView) allLeavingAnimations.delete(lView[ID]);
4517
- callback(false);
4518
- }
4519
- }, animations);
4520
- }
4521
- function runAfterLeaveAnimations(lView, callback) {
4522
- const runningAnimations = lView[ANIMATIONS]?.running;
4523
- if (runningAnimations) {
4524
- runningAnimations.then(() => {
4525
- lView[ANIMATIONS].running = undefined;
4526
- allLeavingAnimations.delete(lView[ID]);
4527
- callback(true);
4528
- });
4529
- return;
4530
- }
4531
- callback(false);
4532
- }
4533
4640
  function processCleanups(tView, lView) {
4534
4641
  ngDevMode && assertNotReactive(processCleanups.name);
4535
4642
  const tCleanup = tView.cleanup;
@@ -6281,7 +6388,7 @@ function createTNode(tView, tParent, type, index, value, attrs) {
6281
6388
  directiveEnd: -1,
6282
6389
  directiveStylingLast: -1,
6283
6390
  componentOffset: -1,
6284
- fieldIndex: -1,
6391
+ controlDirectiveIndex: -1,
6285
6392
  customControlIndex: -1,
6286
6393
  propertyBindings: null,
6287
6394
  flags,
@@ -7288,10 +7395,10 @@ function verifyStandaloneImport(depType, importingType) {
7288
7395
  }
7289
7396
 
7290
7397
  class DepsTracker {
7291
- ownerNgModule = new Map();
7398
+ ownerNgModule = new WeakMap();
7292
7399
  ngModulesWithSomeUnresolvedDecls = new Set();
7293
- ngModulesScopeCache = new Map();
7294
- standaloneComponentsScopeCache = new Map();
7400
+ ngModulesScopeCache = new WeakMap();
7401
+ standaloneComponentsScopeCache = new WeakMap();
7295
7402
  resolveNgModulesDecls() {
7296
7403
  if (this.ngModulesWithSomeUnresolvedDecls.size === 0) {
7297
7404
  return;
@@ -7937,8 +8044,6 @@ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
7937
8044
  return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
7938
8045
  }
7939
8046
 
7940
- const ɵCONTROL = Symbol('CONTROL');
7941
-
7942
8047
  function wrapListener(tNode, lView, listenerFn) {
7943
8048
  return function wrapListenerIn_markDirtyAndPreventDefault(event) {
7944
8049
  const startView = isComponentHost(tNode) ? getComponentLViewByIndex(tNode.index, lView) : lView;
@@ -8077,15 +8182,153 @@ function isOutputSubscribable(value) {
8077
8182
  return value != null && typeof value.subscribe === 'function';
8078
8183
  }
8079
8184
 
8185
+ function ɵɵcontrolCreate() {
8186
+ controlCreateInternal();
8187
+ }
8188
+ function controlCreateInternal() {
8189
+ const lView = getLView();
8190
+ const tView = getTView();
8191
+ const tNode = getCurrentTNode();
8192
+ if (tView.firstCreatePass) {
8193
+ initializeControlFirstCreatePass(tView, tNode);
8194
+ }
8195
+ if (tNode.controlDirectiveIndex === -1) {
8196
+ return;
8197
+ }
8198
+ performanceMarkFeature('NgSignalForms');
8199
+ const instance = lView[tNode.controlDirectiveIndex];
8200
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8201
+ controlDef.create(instance, new ControlDirectiveHostImpl(lView, tView, tNode));
8202
+ }
8203
+ function ɵɵcontrol() {
8204
+ controlUpdateInternal();
8205
+ }
8206
+ function controlUpdateInternal() {
8207
+ if (ngDevMode && isInCheckNoChangesMode()) {
8208
+ return;
8209
+ }
8210
+ const lView = getLView();
8211
+ const tView = getTView();
8212
+ const tNode = getSelectedTNode();
8213
+ if (tNode.controlDirectiveIndex === -1) {
8214
+ return;
8215
+ }
8216
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8217
+ const instance = lView[tNode.controlDirectiveIndex];
8218
+ controlDef.update(instance, new ControlDirectiveHostImpl(lView, tView, tNode));
8219
+ }
8220
+ class ControlDirectiveHostImpl {
8221
+ lView;
8222
+ tView;
8223
+ tNode;
8224
+ hasPassThrough;
8225
+ constructor(lView, tView, tNode) {
8226
+ this.lView = lView;
8227
+ this.tView = tView;
8228
+ this.tNode = tNode;
8229
+ this.hasPassThrough = !!(tNode.flags & 4096);
8230
+ }
8231
+ get customControl() {
8232
+ return this.tNode.customControlIndex !== -1 ? this.lView[this.tNode.customControlIndex] : undefined;
8233
+ }
8234
+ get descriptor() {
8235
+ if (ngDevMode && isComponentHost(this.tNode)) {
8236
+ const componentIndex = this.tNode.directiveStart + this.tNode.componentOffset;
8237
+ const componentDef = this.tView.data[componentIndex];
8238
+ return `Component ${debugStringifyTypeForError(componentDef.type)}`;
8239
+ }
8240
+ return `<${this.tNode.value}>`;
8241
+ }
8242
+ listenToCustomControlOutput(outputName, callback) {
8243
+ if (!hasOutput(this.tView.data[this.tNode.customControlIndex], outputName)) {
8244
+ return;
8245
+ }
8246
+ listenToOutput(this.tNode, this.lView, this.tNode.customControlIndex, outputName, outputName, wrapListener(this.tNode, this.lView, callback));
8247
+ }
8248
+ listenToCustomControlModel(listener) {
8249
+ const modelName = this.tNode.flags & 1024 ? 'valueChange' : 'checkedChange';
8250
+ listenToOutput(this.tNode, this.lView, this.tNode.customControlIndex, modelName, modelName, wrapListener(this.tNode, this.lView, listener));
8251
+ }
8252
+ listenToDom(eventName, listener) {
8253
+ listenToDomEvent(this.tNode, this.tView, this.lView, undefined, this.lView[RENDERER], eventName, listener, wrapListener(this.tNode, this.lView, listener));
8254
+ }
8255
+ setInputOnDirectives(inputName, value) {
8256
+ const directiveIndices = this.tNode.inputs?.[inputName];
8257
+ if (!directiveIndices) {
8258
+ return false;
8259
+ }
8260
+ for (const index of directiveIndices) {
8261
+ const directiveDef = this.tView.data[index];
8262
+ const directive = this.lView[index];
8263
+ writeToDirectiveInput(directiveDef, directive, inputName, value);
8264
+ }
8265
+ return true;
8266
+ }
8267
+ setCustomControlModelInput(value) {
8268
+ const directive = this.lView[this.tNode.customControlIndex];
8269
+ const directiveDef = this.tView.data[this.tNode.customControlIndex];
8270
+ const modelName = this.tNode.flags & 1024 ? 'value' : 'checked';
8271
+ writeToDirectiveInput(directiveDef, directive, modelName, value);
8272
+ }
8273
+ customControlHasInput(inputName) {
8274
+ if (this.tNode.customControlIndex === -1) {
8275
+ return false;
8276
+ }
8277
+ const directiveDef = this.tView.data[this.tNode.customControlIndex];
8278
+ return directiveDef.inputs[inputName] != undefined;
8279
+ }
8280
+ }
8281
+ function initializeControlFirstCreatePass(tView, tNode, lView) {
8282
+ ngDevMode && assertFirstCreatePass(tView);
8283
+ for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
8284
+ const directiveDef = tView.data[i];
8285
+ if (directiveDef.controlDef) {
8286
+ tNode.controlDirectiveIndex = i;
8287
+ break;
8288
+ }
8289
+ }
8290
+ if (tNode.controlDirectiveIndex === -1) {
8291
+ return;
8292
+ }
8293
+ const controlDef = tView.data[tNode.controlDirectiveIndex].controlDef;
8294
+ if (controlDef.passThroughInput) {
8295
+ if ((tNode.inputs?.[controlDef.passThroughInput]?.length ?? 0) > 1) {
8296
+ tNode.flags |= 4096;
8297
+ return;
8298
+ }
8299
+ }
8300
+ initializeCustomControlStatus(tView, tNode);
8301
+ }
8302
+ function initializeCustomControlStatus(tView, tNode) {
8303
+ for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
8304
+ const directiveDef = tView.data[i];
8305
+ if (hasModelInput(directiveDef, 'value')) {
8306
+ tNode.flags |= 1024;
8307
+ tNode.customControlIndex = i;
8308
+ return;
8309
+ }
8310
+ if (hasModelInput(directiveDef, 'checked')) {
8311
+ tNode.flags |= 2048;
8312
+ tNode.customControlIndex = i;
8313
+ return;
8314
+ }
8315
+ }
8316
+ }
8317
+ function hasModelInput(directiveDef, name) {
8318
+ return hasInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
8319
+ }
8320
+ function hasInput(directiveDef, name) {
8321
+ return name in directiveDef.inputs;
8322
+ }
8323
+ function hasOutput(directiveDef, name) {
8324
+ return name in directiveDef.outputs;
8325
+ }
8326
+
8080
8327
  const BINDING = /* @__PURE__ */Symbol('BINDING');
8081
8328
  const INPUT_BINDING_METADATA = {
8082
8329
  kind: 'input',
8083
8330
  requiredVars: 1
8084
8331
  };
8085
- const FIELD_BINDING_METADATA = {
8086
- kind: 'field',
8087
- requiredVars: 2
8088
- };
8089
8332
  const OUTPUT_BINDING_METADATA = {
8090
8333
  kind: 'output',
8091
8334
  requiredVars: 0
@@ -8111,21 +8354,16 @@ function inputBindingUpdate(targetDirectiveIdx, publicName, value) {
8111
8354
  }
8112
8355
  }
8113
8356
  }
8114
- function controlBinding(binding, tNode) {
8115
- const lView = getLView();
8116
- const directive = lView[tNode.directiveStart + binding.targetIdx];
8117
- return directive[ɵCONTROL];
8118
- }
8119
8357
  function inputBinding(publicName, value) {
8120
8358
  if (publicName === 'formField') {
8121
8359
  const binding = {
8122
- [BINDING]: FIELD_BINDING_METADATA,
8360
+ [BINDING]: INPUT_BINDING_METADATA,
8123
8361
  create: () => {
8124
- controlBinding(binding, getCurrentTNode())?.create();
8362
+ controlCreateInternal();
8125
8363
  },
8126
8364
  update: () => {
8127
8365
  inputBindingUpdate(binding.targetIdx, publicName, value());
8128
- controlBinding(binding, getSelectedTNode())?.update();
8366
+ controlUpdateInternal();
8129
8367
  }
8130
8368
  };
8131
8369
  return binding;
@@ -8314,7 +8552,7 @@ class ComponentFactory extends ComponentFactory$1 {
8314
8552
  }
8315
8553
  }
8316
8554
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8317
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.0-next.1'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8555
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.0-next.3'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8318
8556
  let creationBindings = null;
8319
8557
  let updateBindings = null;
8320
8558
  let varsToAllocate = 0;
@@ -9458,6 +9696,7 @@ function getNgDirectiveDef(directiveDefinition) {
9458
9696
  setInput: null,
9459
9697
  resolveHostDirectives: null,
9460
9698
  hostDirectives: null,
9699
+ controlDef: null,
9461
9700
  inputs: parseAndConvertInputsForDefinition(directiveDefinition.inputs, declaredInputs),
9462
9701
  outputs: parseAndConvertOutputsForDefinition(directiveDefinition.outputs),
9463
9702
  debugInfo: null
@@ -9510,6 +9749,20 @@ function getComponentId(componentDef) {
9510
9749
  return compId;
9511
9750
  }
9512
9751
 
9752
+ function ɵɵControlFeature(passThroughInput) {
9753
+ return definition => {
9754
+ definition.controlDef = {
9755
+ create: (inst, host) => {
9756
+ inst?.ɵngControlCreate(host);
9757
+ },
9758
+ update: (inst, host) => {
9759
+ inst?.ɵngControlUpdate?.(host);
9760
+ },
9761
+ passThroughInput
9762
+ };
9763
+ };
9764
+ }
9765
+
9513
9766
  function ɵɵHostDirectivesFeature(rawHostDirectives) {
9514
9767
  const feature = definition => {
9515
9768
  const isEager = Array.isArray(rawHostDirectives);
@@ -13053,16 +13306,16 @@ function ɵɵanimateEnter(value) {
13053
13306
  }
13054
13307
  const tNode = getCurrentTNode();
13055
13308
  cancelLeavingNodes(tNode, lView);
13056
- addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimation(lView, tNode, value));
13309
+ const ngZone = lView[INJECTOR].get(NgZone);
13310
+ addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimation(lView, tNode, value, ngZone));
13057
13311
  initializeAnimationQueueScheduler(lView[INJECTOR]);
13058
13312
  queueEnterAnimations(lView[INJECTOR], getLViewEnterAnimations(lView));
13059
13313
  return ɵɵanimateEnter;
13060
13314
  }
13061
- function runEnterAnimation(lView, tNode, value) {
13315
+ function runEnterAnimation(lView, tNode, value, ngZone) {
13062
13316
  const nativeElement = getNativeByTNode(tNode, lView);
13063
13317
  ngDevMode && assertElementNodes(nativeElement, 'animate.enter');
13064
13318
  const renderer = lView[RENDERER];
13065
- const ngZone = lView[INJECTOR].get(NgZone);
13066
13319
  const activeClasses = getClassListFromValue(value);
13067
13320
  const cleanupFns = [];
13068
13321
  const handleEnterAnimationStart = event => {
@@ -13147,11 +13400,12 @@ function ɵɵanimateLeave(value) {
13147
13400
  }
13148
13401
  const tNode = getCurrentTNode();
13149
13402
  cancelLeavingNodes(tNode, lView);
13150
- addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimations(lView, tNode, value));
13403
+ const ngZone = lView[INJECTOR].get(NgZone);
13404
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimations(lView, tNode, value, ngZone));
13151
13405
  initializeAnimationQueueScheduler(lView[INJECTOR]);
13152
13406
  return ɵɵanimateLeave;
13153
13407
  }
13154
- function runLeaveAnimations(lView, tNode, value) {
13408
+ function runLeaveAnimations(lView, tNode, value, ngZone) {
13155
13409
  const {
13156
13410
  promise,
13157
13411
  resolve
@@ -13159,7 +13413,6 @@ function runLeaveAnimations(lView, tNode, value) {
13159
13413
  const nativeElement = getNativeByTNode(tNode, lView);
13160
13414
  ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
13161
13415
  const renderer = lView[RENDERER];
13162
- const ngZone = lView[INJECTOR].get(NgZone);
13163
13416
  allLeavingAnimations.add(lView[ID]);
13164
13417
  (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
13165
13418
  const activeClasses = getClassListFromValue(value);
@@ -13221,11 +13474,13 @@ function ɵɵanimateLeaveListener(value) {
13221
13474
  const tNode = getCurrentTNode();
13222
13475
  cancelLeavingNodes(tNode, lView);
13223
13476
  allLeavingAnimations.add(lView[ID]);
13224
- addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value));
13477
+ const ngZone = lView[INJECTOR].get(NgZone);
13478
+ const maxAnimationTimeout = lView[INJECTOR].get(MAX_ANIMATION_TIMEOUT);
13479
+ addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value, ngZone, maxAnimationTimeout));
13225
13480
  initializeAnimationQueueScheduler(lView[INJECTOR]);
13226
13481
  return ɵɵanimateLeaveListener;
13227
13482
  }
13228
- function runLeaveAnimationFunction(lView, tNode, value) {
13483
+ function runLeaveAnimationFunction(lView, tNode, value, ngZone, maxAnimationTimeout) {
13229
13484
  const {
13230
13485
  promise,
13231
13486
  resolve
@@ -13235,8 +13490,6 @@ function runLeaveAnimationFunction(lView, tNode, value) {
13235
13490
  const cleanupFns = [];
13236
13491
  const renderer = lView[RENDERER];
13237
13492
  const animationsDisabled = areAnimationsDisabled(lView);
13238
- const ngZone = lView[INJECTOR].get(NgZone);
13239
- const maxAnimationTimeout = lView[INJECTOR].get(MAX_ANIMATION_TIMEOUT);
13240
13493
  (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
13241
13494
  const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
13242
13495
  if (animationsDisabled) {
@@ -13273,521 +13526,6 @@ function ɵɵcomponentInstance() {
13273
13526
  return instance;
13274
13527
  }
13275
13528
 
13276
- function ɵɵcontrolCreate() {
13277
- const lView = getLView();
13278
- const tView = getTView();
13279
- const tNode = getCurrentTNode();
13280
- if (tView.firstCreatePass) {
13281
- initializeControlFirstCreatePass(tView, tNode, lView);
13282
- }
13283
- const fieldDirective = getFieldDirective(tNode, lView);
13284
- if (!fieldDirective) {
13285
- return;
13286
- }
13287
- performanceMarkFeature('NgSignalForms');
13288
- if (tNode.flags & 1024) {
13289
- initializeCustomControl(lView, tNode, fieldDirective, 'value');
13290
- } else if (tNode.flags & 2048) {
13291
- initializeCustomControl(lView, tNode, fieldDirective, 'checked');
13292
- } else if (tNode.flags & 4096) {
13293
- initializeInteropControl(fieldDirective);
13294
- } else if (tNode.flags & 8192) {
13295
- initializeNativeControl(lView, tNode, fieldDirective);
13296
- }
13297
- fieldDirective.registerAsBinding(getCustomControl(tNode, lView));
13298
- }
13299
- function ɵɵcontrol(value, name, sanitizer) {
13300
- const lView = getLView();
13301
- const tNode = getSelectedTNode();
13302
- const bindingIndex = nextBindingIndex();
13303
- if (bindingUpdated(lView, bindingIndex, value)) {
13304
- const tView = getTView();
13305
- setPropertyAndInputs(tNode, lView, name, value, lView[RENDERER], sanitizer);
13306
- ngDevMode && storePropertyBindingMetadata(tView.data, tNode, name, bindingIndex);
13307
- }
13308
- updateControl(lView, tNode);
13309
- }
13310
- function ɵcontrolUpdate() {
13311
- const lView = getLView();
13312
- const tNode = getSelectedTNode();
13313
- updateControl(lView, tNode);
13314
- }
13315
- function updateControl(lView, tNode) {
13316
- const fieldDirective = getFieldDirective(tNode, lView);
13317
- if (fieldDirective) {
13318
- updateControlClasses(lView, tNode, fieldDirective);
13319
- if (tNode.flags & 1024) {
13320
- updateCustomControl(tNode, lView, fieldDirective, 'value');
13321
- } else if (tNode.flags & 2048) {
13322
- updateCustomControl(tNode, lView, fieldDirective, 'checked');
13323
- } else if (tNode.flags & 4096) {
13324
- updateInteropControl(tNode, lView, fieldDirective);
13325
- } else {
13326
- updateNativeControl(tNode, lView, fieldDirective);
13327
- }
13328
- }
13329
- nextBindingIndex();
13330
- }
13331
- function initializeControlFirstCreatePass(tView, tNode, lView) {
13332
- ngDevMode && assertFirstCreatePass(tView);
13333
- const directiveIndices = tNode.inputs?.['formField'];
13334
- if (!directiveIndices) {
13335
- return;
13336
- }
13337
- if (isComponentHost(tNode) && directiveIndices.includes(tNode.directiveStart + tNode.componentOffset)) {
13338
- return;
13339
- }
13340
- const controlIndex = directiveIndices.find(index => ɵCONTROL in lView[index]);
13341
- if (controlIndex === undefined) {
13342
- return;
13343
- }
13344
- tNode.fieldIndex = controlIndex;
13345
- const foundControl = isInteropControlFirstCreatePass(tNode, lView) || isCustomControlFirstCreatePass(tView, tNode);
13346
- if (isNativeControlFirstCreatePass(tNode) || foundControl) {
13347
- return;
13348
- }
13349
- 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.`);
13350
- }
13351
- function describeElement(tView, tNode) {
13352
- if (ngDevMode && isComponentHost(tNode)) {
13353
- const componentIndex = tNode.directiveStart + tNode.componentOffset;
13354
- const componentDef = tView.data[componentIndex];
13355
- return `Component ${debugStringifyTypeForError(componentDef.type)}`;
13356
- }
13357
- return `<${tNode.value}>`;
13358
- }
13359
- function isInteropControlFirstCreatePass(tNode, lView) {
13360
- const control = lView[tNode.fieldIndex];
13361
- if (control.ɵinteropControl) {
13362
- tNode.flags |= 4096;
13363
- return true;
13364
- }
13365
- return false;
13366
- }
13367
- function isCustomControlFirstCreatePass(tView, tNode) {
13368
- for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
13369
- const directiveDef = tView.data[i];
13370
- if (hasModelInput(directiveDef, 'value')) {
13371
- tNode.flags |= 1024;
13372
- tNode.customControlIndex = i;
13373
- return true;
13374
- }
13375
- if (hasModelInput(directiveDef, 'checked')) {
13376
- tNode.flags |= 2048;
13377
- tNode.customControlIndex = i;
13378
- return true;
13379
- }
13380
- }
13381
- return false;
13382
- }
13383
- function isNativeControlFirstCreatePass(tNode) {
13384
- if (!isNativeControl(tNode)) {
13385
- return false;
13386
- }
13387
- tNode.flags |= 8192;
13388
- if (isNumericInput(tNode)) {
13389
- tNode.flags |= 16384;
13390
- }
13391
- if (isTextControl(tNode)) {
13392
- tNode.flags |= 32768;
13393
- }
13394
- return true;
13395
- }
13396
- function getFieldDirective(tNode, lView) {
13397
- const index = tNode.fieldIndex;
13398
- return index === -1 ? undefined : lView[index];
13399
- }
13400
- function getCustomControl(tNode, lView) {
13401
- const index = tNode.customControlIndex;
13402
- return index === -1 ? undefined : lView[index];
13403
- }
13404
- function hasModelInput(directiveDef, name) {
13405
- return hasInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
13406
- }
13407
- function hasInput(directiveDef, name) {
13408
- return name in directiveDef.inputs;
13409
- }
13410
- function hasOutput(directiveDef, name) {
13411
- return name in directiveDef.outputs;
13412
- }
13413
- function initializeCustomControl(lView, tNode, fieldDirective, modelName) {
13414
- const tView = getTView();
13415
- const directiveIndex = tNode.customControlIndex;
13416
- const outputName = modelName + 'Change';
13417
- listenToOutput(tNode, lView, directiveIndex, outputName, outputName, wrapListener(tNode, lView, value => fieldDirective.state().setControlValue(value)));
13418
- const directiveDef = tView.data[directiveIndex];
13419
- const touchedOutputName = 'touchedChange';
13420
- if (hasOutput(directiveDef, touchedOutputName)) {
13421
- listenToOutput(tNode, lView, directiveIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => fieldDirective.state().markAsTouched()));
13422
- }
13423
- }
13424
- function initializeInteropControl(fieldDirective) {
13425
- const interopControl = fieldDirective.ɵinteropControl;
13426
- interopControl.registerOnChange(value => fieldDirective.state().setControlValue(value));
13427
- interopControl.registerOnTouched(() => fieldDirective.state().markAsTouched());
13428
- }
13429
- function isNativeControl(tNode) {
13430
- if (tNode.type !== 2) {
13431
- return false;
13432
- }
13433
- const tagName = tNode.value;
13434
- return tagName === 'input' || tagName === 'textarea' || tagName === 'select';
13435
- }
13436
- function initializeNativeControl(lView, tNode, fieldDirective) {
13437
- const tView = getTView();
13438
- const renderer = lView[RENDERER];
13439
- const element = getNativeByTNode(tNode, lView);
13440
- const inputListener = () => {
13441
- const state = fieldDirective.state();
13442
- state.setControlValue(getNativeControlValue(element, state.value));
13443
- };
13444
- listenToDomEvent(tNode, tView, lView, undefined, renderer, 'input', inputListener, wrapListener(tNode, lView, inputListener));
13445
- const blurListener = () => {
13446
- fieldDirective.state().markAsTouched();
13447
- };
13448
- listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
13449
- if (tNode.type === 2 && tNode.value === 'select' && typeof MutationObserver === 'function') {
13450
- const observer = observeSelectMutations(element, fieldDirective);
13451
- storeCleanupWithContext(tView, lView, observer, observer.disconnect);
13452
- }
13453
- }
13454
- function observeSelectMutations(select, controlDirective) {
13455
- const observer = new MutationObserver(mutations => {
13456
- if (mutations.some(m => isRelevantSelectMutation(m))) {
13457
- select.value = controlDirective.state().value();
13458
- }
13459
- });
13460
- observer.observe(select, {
13461
- attributes: true,
13462
- attributeFilter: ['value'],
13463
- characterData: true,
13464
- childList: true,
13465
- subtree: true
13466
- });
13467
- return observer;
13468
- }
13469
- function isRelevantSelectMutation(mutation) {
13470
- if (mutation.type === 'childList' || mutation.type === 'characterData') {
13471
- if (mutation.target instanceof Comment) {
13472
- return false;
13473
- }
13474
- for (const node of mutation.addedNodes) {
13475
- if (!(node instanceof Comment)) {
13476
- return true;
13477
- }
13478
- }
13479
- for (const node of mutation.removedNodes) {
13480
- if (!(node instanceof Comment)) {
13481
- return true;
13482
- }
13483
- }
13484
- return false;
13485
- }
13486
- if (mutation.type === 'attributes' && mutation.target instanceof HTMLOptionElement) {
13487
- return true;
13488
- }
13489
- return false;
13490
- }
13491
- function updateControlClasses(lView, tNode, control) {
13492
- if (control.classes) {
13493
- const bindings = getControlBindings(lView);
13494
- bindings.classes ??= {};
13495
- control.state();
13496
- const renderer = lView[RENDERER];
13497
- const element = getNativeByTNode(tNode, lView);
13498
- for (const [className, enabled] of control.classes) {
13499
- const isEnabled = enabled();
13500
- if (controlClassBindingUpdated(bindings.classes, className, isEnabled)) {
13501
- if (isEnabled) {
13502
- renderer.addClass(element, className);
13503
- } else {
13504
- renderer.removeClass(element, className);
13505
- }
13506
- }
13507
- }
13508
- }
13509
- }
13510
- function updateCustomControl(tNode, lView, fieldDirective, modelName) {
13511
- const tView = getTView();
13512
- const directiveIndex = tNode.customControlIndex;
13513
- const directive = lView[directiveIndex];
13514
- const directiveDef = tView.data[directiveIndex];
13515
- const state = fieldDirective.state();
13516
- const bindings = getControlBindings(lView);
13517
- const controlValue = state.controlValue();
13518
- if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13519
- writeToDirectiveInput(directiveDef, directive, modelName, controlValue);
13520
- }
13521
- const isNative = (tNode.flags & 8192) !== 0;
13522
- const element = isNative ? getNativeByTNode(tNode, lView) : null;
13523
- const renderer = lView[RENDERER];
13524
- for (const key of CONTROL_BINDING_KEYS) {
13525
- const inputName = CONTROL_BINDING_NAMES[key];
13526
- const value = getValue(fieldDirective, state, key, inputName);
13527
- if (controlBindingUpdated(bindings, key, value)) {
13528
- updateDirectiveInputs(tNode, lView, inputName, value);
13529
- if (isNative && !(inputName in directiveDef.inputs)) {
13530
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13531
- }
13532
- }
13533
- }
13534
- }
13535
- function updateInteropControl(tNode, lView, fieldDirective) {
13536
- const interopControl = fieldDirective.ɵinteropControl;
13537
- const bindings = getControlBindings(lView);
13538
- const state = fieldDirective.state();
13539
- const isNative = (tNode.flags & 8192) !== 0;
13540
- const element = isNative ? getNativeByTNode(tNode, lView) : null;
13541
- const renderer = lView[RENDERER];
13542
- const value = state.value();
13543
- if (controlBindingUpdated(bindings, CONTROL_VALUE, value)) {
13544
- untracked(() => interopControl.writeValue(value));
13545
- }
13546
- for (const key of CONTROL_BINDING_KEYS) {
13547
- const inputName = CONTROL_BINDING_NAMES[key];
13548
- const value = getValue(fieldDirective, state, key, inputName);
13549
- if (controlBindingUpdated(bindings, key, value)) {
13550
- const didUpdateInput = updateDirectiveInputs(tNode, lView, inputName, value);
13551
- if (key === DISABLED) {
13552
- if (interopControl.setDisabledState) {
13553
- untracked(() => interopControl.setDisabledState(value));
13554
- }
13555
- } else if (isNative && !didUpdateInput) {
13556
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13557
- }
13558
- }
13559
- }
13560
- }
13561
- function updateNativeControl(tNode, lView, fieldDirective) {
13562
- const element = getNativeByTNode(tNode, lView);
13563
- const renderer = lView[RENDERER];
13564
- const state = fieldDirective.state();
13565
- const bindings = getControlBindings(lView);
13566
- const controlValue = state.controlValue();
13567
- if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13568
- setNativeControlValue(element, controlValue);
13569
- }
13570
- for (const key of CONTROL_BINDING_KEYS) {
13571
- const inputName = CONTROL_BINDING_NAMES[key];
13572
- const value = getValue(fieldDirective, state, key, inputName);
13573
- if (controlBindingUpdated(bindings, key, value)) {
13574
- updateNativeProperty(tNode, renderer, element, key, value, inputName);
13575
- updateDirectiveInputs(tNode, lView, inputName, value);
13576
- }
13577
- }
13578
- }
13579
- function getValue(fieldDirective, state, fieldStateKey, inputName) {
13580
- if (inputName === 'errors') {
13581
- return fieldDirective[fieldStateKey]();
13582
- }
13583
- return state[fieldStateKey]?.();
13584
- }
13585
- function updateDirectiveInputs(tNode, lView, inputName, value) {
13586
- const directiveIndices = tNode.inputs?.[inputName];
13587
- if (directiveIndices) {
13588
- const tView = getTView();
13589
- for (const index of directiveIndices) {
13590
- const directiveDef = tView.data[index];
13591
- const directive = lView[index];
13592
- writeToDirectiveInput(directiveDef, directive, inputName, value);
13593
- }
13594
- return true;
13595
- }
13596
- return false;
13597
- }
13598
- function updateNativeProperty(tNode, renderer, element, key, value, name) {
13599
- switch (key) {
13600
- case NAME:
13601
- renderer.setAttribute(element, name, value);
13602
- break;
13603
- case DISABLED:
13604
- case READONLY:
13605
- case REQUIRED:
13606
- setBooleanAttribute(renderer, element, name, value);
13607
- break;
13608
- case MAX:
13609
- case MIN:
13610
- if (tNode.flags & 16384) {
13611
- setOptionalAttribute(renderer, element, name, value);
13612
- }
13613
- break;
13614
- case MAX_LENGTH:
13615
- case MIN_LENGTH:
13616
- if (tNode.flags & 32768) {
13617
- setOptionalAttribute(renderer, element, name, value);
13618
- }
13619
- break;
13620
- }
13621
- }
13622
- function isDateOrNull(value) {
13623
- return value === null || value instanceof Date;
13624
- }
13625
- function isNumericInput(tNode) {
13626
- if (!tNode.attrs || tNode.value !== 'input') {
13627
- return false;
13628
- }
13629
- for (let i = 0; i < tNode.attrs.length; i += 2) {
13630
- const name = tNode.attrs[i];
13631
- if (isNameOnlyAttributeMarker(name)) {
13632
- break;
13633
- }
13634
- if (name === 'type') {
13635
- const value = tNode.attrs[i + 1];
13636
- return value === 'date' || value === 'datetime-local' || value === 'month' || value === 'number' || value === 'range' || value === 'time' || value === 'week';
13637
- }
13638
- }
13639
- return false;
13640
- }
13641
- function isTextControl(tNode) {
13642
- return tNode.value !== 'select';
13643
- }
13644
- function getNativeControlValue(element, currentValue) {
13645
- switch (element.type) {
13646
- case 'checkbox':
13647
- return element.checked;
13648
- case 'number':
13649
- case 'range':
13650
- case 'datetime-local':
13651
- if (typeof currentValue() === 'number') {
13652
- return element.valueAsNumber;
13653
- }
13654
- break;
13655
- case 'date':
13656
- case 'month':
13657
- case 'time':
13658
- case 'week':
13659
- const value = currentValue();
13660
- if (isDateOrNull(value)) {
13661
- return element.valueAsDate;
13662
- } else if (typeof value === 'number') {
13663
- return element.valueAsNumber;
13664
- }
13665
- break;
13666
- }
13667
- return element.value;
13668
- }
13669
- function setNativeControlValue(element, value) {
13670
- switch (element.type) {
13671
- case 'checkbox':
13672
- element.checked = value;
13673
- return;
13674
- case 'radio':
13675
- element.checked = value === element.value;
13676
- return;
13677
- case 'number':
13678
- case 'range':
13679
- case 'datetime-local':
13680
- if (typeof value === 'number') {
13681
- setNativeNumberControlValue(element, value);
13682
- return;
13683
- }
13684
- break;
13685
- case 'date':
13686
- case 'month':
13687
- case 'time':
13688
- case 'week':
13689
- if (isDateOrNull(value)) {
13690
- element.valueAsDate = value;
13691
- return;
13692
- } else if (typeof value === 'number') {
13693
- setNativeNumberControlValue(element, value);
13694
- return;
13695
- }
13696
- }
13697
- element.value = value;
13698
- }
13699
- function setNativeNumberControlValue(element, value) {
13700
- if (isNaN(value)) {
13701
- element.value = '';
13702
- } else {
13703
- element.valueAsNumber = value;
13704
- }
13705
- }
13706
- const DISABLED = /* @__PURE__ */getClosureSafeProperty({
13707
- disabled: getClosureSafeProperty
13708
- });
13709
- const MAX = /* @__PURE__ */getClosureSafeProperty({
13710
- max: getClosureSafeProperty
13711
- });
13712
- const MAX_LENGTH = /* @__PURE__ */getClosureSafeProperty({
13713
- maxLength: getClosureSafeProperty
13714
- });
13715
- const MIN = /* @__PURE__ */getClosureSafeProperty({
13716
- min: getClosureSafeProperty
13717
- });
13718
- const MIN_LENGTH = /* @__PURE__ */getClosureSafeProperty({
13719
- minLength: getClosureSafeProperty
13720
- });
13721
- const NAME = /* @__PURE__ */getClosureSafeProperty({
13722
- name: getClosureSafeProperty
13723
- });
13724
- const READONLY = /* @__PURE__ */getClosureSafeProperty({
13725
- readonly: getClosureSafeProperty
13726
- });
13727
- const REQUIRED = /* @__PURE__ */getClosureSafeProperty({
13728
- required: getClosureSafeProperty
13729
- });
13730
- const CONTROL_VALUE = /* @__PURE__ */getClosureSafeProperty({
13731
- controlValue: getClosureSafeProperty
13732
- });
13733
- const CONTROL_BINDING_NAMES = {
13734
- disabled: 'disabled',
13735
- disabledReasons: 'disabledReasons',
13736
- dirty: 'dirty',
13737
- errors: 'errors',
13738
- hidden: 'hidden',
13739
- invalid: 'invalid',
13740
- max: 'max',
13741
- maxLength: 'maxLength',
13742
- min: 'min',
13743
- minLength: 'minLength',
13744
- name: 'name',
13745
- pattern: 'pattern',
13746
- pending: 'pending',
13747
- readonly: 'readonly',
13748
- required: 'required',
13749
- touched: 'touched'
13750
- };
13751
- const CONTROL_BINDING_KEYS = /* @__PURE__ */(() => Object.keys(CONTROL_BINDING_NAMES))();
13752
- function getControlBindings(lView) {
13753
- const bindingIndex = getBindingIndex();
13754
- let bindings = lView[bindingIndex];
13755
- if (bindings === NO_CHANGE) {
13756
- bindings = lView[bindingIndex] = {};
13757
- }
13758
- return bindings;
13759
- }
13760
- function controlBindingUpdated(bindings, key, value) {
13761
- const oldValue = bindings[key];
13762
- if (Object.is(oldValue, value)) {
13763
- return false;
13764
- }
13765
- bindings[key] = value;
13766
- return true;
13767
- }
13768
- function controlClassBindingUpdated(bindings, className, value) {
13769
- const oldValue = bindings[className];
13770
- if (Object.is(oldValue, value)) {
13771
- return false;
13772
- }
13773
- bindings[className] = value;
13774
- return true;
13775
- }
13776
- function setBooleanAttribute(renderer, element, name, value) {
13777
- if (value) {
13778
- renderer.setAttribute(element, name, '');
13779
- } else {
13780
- renderer.removeAttribute(element, name);
13781
- }
13782
- }
13783
- function setOptionalAttribute(renderer, element, name, value) {
13784
- if (value !== undefined) {
13785
- renderer.setAttribute(element, name, value.toString());
13786
- } else {
13787
- renderer.removeAttribute(element, name);
13788
- }
13789
- }
13790
-
13791
13529
  class LiveCollection {
13792
13530
  destroy(item) {}
13793
13531
  updateValue(index, value) {}
@@ -17272,6 +17010,7 @@ const angularCoreEnv = (() => ({
17272
17010
  'ɵɵresetView': __resetView,
17273
17011
  'ɵɵHostDirectivesFeature': ɵɵHostDirectivesFeature,
17274
17012
  'ɵɵNgOnChangesFeature': ɵɵNgOnChangesFeature,
17013
+ 'ɵɵControlFeature': ɵɵControlFeature,
17275
17014
  'ɵɵProvidersFeature': ɵɵProvidersFeature,
17276
17015
  'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
17277
17016
  'ɵɵExternalStylesFeature': ɵɵExternalStylesFeature,
@@ -18017,6 +17756,7 @@ function directiveMetadata(type, metadata) {
18017
17756
  lifecycle: {
18018
17757
  usesOnChanges: reflect.hasLifecycleHook(type, 'ngOnChanges')
18019
17758
  },
17759
+ controlCreate: null,
18020
17760
  typeSourceSpan: null,
18021
17761
  usesInheritance: !extendsDirectlyFromObject(type),
18022
17762
  exportAs: extractExportAs(metadata.exportAs),
@@ -18811,5 +18551,5 @@ function getDebugNode(nativeNode) {
18811
18551
  return null;
18812
18552
  }
18813
18553
 
18814
- 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 };
18554
+ 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 };
18815
18555
  //# sourceMappingURL=_debug_node-chunk.mjs.map