@angular/core 21.0.6 → 21.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) 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 +121 -91
  4. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  5. package/fesm2022/_effect-chunk.mjs +3 -3
  6. package/fesm2022/_effect-chunk.mjs.map +1 -1
  7. package/fesm2022/_linked_signal-chunk.mjs +2 -2
  8. package/fesm2022/_linked_signal-chunk.mjs.map +1 -1
  9. package/fesm2022/_not_found-chunk.mjs +1 -1
  10. package/fesm2022/_not_found-chunk.mjs.map +1 -1
  11. package/fesm2022/_resource-chunk.mjs +1 -1
  12. package/fesm2022/_resource-chunk.mjs.map +1 -1
  13. package/fesm2022/_untracked-chunk.mjs +2 -2
  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 +4 -4
  18. package/fesm2022/core.mjs.map +1 -1
  19. package/fesm2022/primitives-di.mjs +1 -1
  20. package/fesm2022/primitives-di.mjs.map +1 -1
  21. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  22. package/fesm2022/primitives-event-dispatch.mjs.map +1 -1
  23. package/fesm2022/primitives-signals.mjs +1 -1
  24. package/fesm2022/primitives-signals.mjs.map +1 -1
  25. package/fesm2022/rxjs-interop.mjs +1 -1
  26. package/fesm2022/rxjs-interop.mjs.map +1 -1
  27. package/fesm2022/testing.mjs +1 -1
  28. package/fesm2022/testing.mjs.map +1 -1
  29. package/package.json +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-1Zs_gpB6.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-DBwYMlTo.cjs +1 -1
  37. package/schematics/bundles/control-flow-migration.cjs +1 -1
  38. package/schematics/bundles/imports-DP72APSx.cjs +1 -1
  39. package/schematics/bundles/{index-B7I9sIUx.cjs → index-CP6pC5TJ.cjs} +2 -2
  40. package/schematics/bundles/inject-migration.cjs +1 -1
  41. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  42. package/schematics/bundles/{migrate_ts_type_references-UGIUl7En.cjs → migrate_ts_type_references--PJz69_w.cjs} +2 -2
  43. package/schematics/bundles/ng_component_template-Dsuq1Lw7.cjs +1 -1
  44. package/schematics/bundles/ng_decorators-DSFlWYQY.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-B16H9JUd.cjs +1 -1
  48. package/schematics/bundles/output-migration.cjs +2 -2
  49. package/schematics/bundles/parse_html-8VLCL37B.cjs +1 -1
  50. package/schematics/bundles/project_paths-DvD50ouC.cjs +1 -1
  51. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  52. package/schematics/bundles/property_name-BBwFuqMe.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 +3 -3
  59. package/schematics/bundles/signal-queries-migration.cjs +3 -3
  60. package/schematics/bundles/signals.cjs +3 -3
  61. package/schematics/bundles/standalone-migration.cjs +1 -1
  62. package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
  63. package/types/_api-chunk.d.ts +1 -1
  64. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  65. package/types/_discovery-chunk.d.ts +7 -5
  66. package/types/_effect-chunk.d.ts +1 -1
  67. package/types/_event_dispatcher-chunk.d.ts +1 -1
  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 +28 -25
  71. package/types/primitives-di.d.ts +1 -1
  72. package/types/primitives-event-dispatch.d.ts +1 -1
  73. package/types/primitives-signals.d.ts +1 -1
  74. package/types/rxjs-interop.d.ts +1 -1
  75. package/types/testing.d.ts +7 -7
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.6
2
+ * @license Angular v21.0.7
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"_attribute-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/core/primitives/event-dispatch/src/attribute.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nexport const Attribute = {\n /**\n * The jsaction attribute defines a mapping of a DOM event to a\n * generic event (aka jsaction), to which the actual event handlers\n * that implement the behavior of the application are bound. The\n * value is a semicolon separated list of colon separated pairs of\n * an optional DOM event name and a jsaction name. If the optional\n * DOM event name is omitted, 'click' is assumed. The jsaction names\n * are dot separated pairs of a namespace and a simple jsaction\n * name.\n *\n * See grammar in README.md for expected syntax in the attribute value.\n */\n JSACTION: 'jsaction' as const,\n};\n"],"names":["Attribute","JSACTION"],"mappings":";;;;;;AAQO,MAAMA,SAAS,GAAG;AAavBC,EAAAA,QAAQ,EAAE;;;;;"}
1
+ {"version":3,"file":"_attribute-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/core/primitives/event-dispatch/src/attribute.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nexport const Attribute = {\n /**\n * The jsaction attribute defines a mapping of a DOM event to a\n * generic event (aka jsaction), to which the actual event handlers\n * that implement the behavior of the application are bound. The\n * value is a semicolon separated list of colon separated pairs of\n * an optional DOM event name and a jsaction name. If the optional\n * DOM event name is omitted, 'click' is assumed. The jsaction names\n * are dot separated pairs of a namespace and a simple jsaction\n * name.\n *\n * See grammar in README.md for expected syntax in the attribute value.\n */\n JSACTION: 'jsaction' as const,\n};\n"],"names":["Attribute","JSACTION"],"mappings":";;;;;;AAQO,MAAMA,SAAS,GAAG;AAavBC,EAAAA,QAAQ,EAAE;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.6
2
+ * @license Angular v21.0.7
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -3348,11 +3348,11 @@ function ɵɵtrustConstantResourceUrl(url) {
3348
3348
  }
3349
3349
  return trustedScriptURLFromString(url[0]);
3350
3350
  }
3351
+ const SRC_RESOURCE_TAGS = new Set(['embed', 'frame', 'iframe', 'media', 'script']);
3352
+ const HREF_RESOURCE_TAGS = new Set(['base', 'link', 'script']);
3351
3353
  function getUrlSanitizer(tag, prop) {
3352
- if (prop === 'src' && (tag === 'embed' || tag === 'frame' || tag === 'iframe' || tag === 'media' || tag === 'script') || prop === 'href' && (tag === 'base' || tag === 'link')) {
3353
- return ɵɵsanitizeResourceUrl;
3354
- }
3355
- return ɵɵsanitizeUrl;
3354
+ const isResource = prop === 'src' && SRC_RESOURCE_TAGS.has(tag) || prop === 'href' && HREF_RESOURCE_TAGS.has(tag) || prop === 'xlink:href' && tag === 'script';
3355
+ return isResource ? ɵɵsanitizeResourceUrl : ɵɵsanitizeUrl;
3356
3356
  }
3357
3357
  function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) {
3358
3358
  return getUrlSanitizer(tag, prop)(unsafeUrl);
@@ -4490,7 +4490,7 @@ function cleanUpView(tView, lView) {
4490
4490
  function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4491
4491
  const animations = lView?.[ANIMATIONS];
4492
4492
  if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index)) return callback(false);
4493
- if (lView) allLeavingAnimations.add(lView);
4493
+ if (lView) allLeavingAnimations.add(lView[ID]);
4494
4494
  addToAnimationQueue(injector, () => {
4495
4495
  if (animations.leave && animations.leave.has(tNode.index)) {
4496
4496
  const leaveAnimationMap = animations.leave;
@@ -4509,7 +4509,7 @@ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4509
4509
  animations.running = Promise.allSettled(runningAnimations);
4510
4510
  runAfterLeaveAnimations(lView, callback);
4511
4511
  } else {
4512
- if (lView) allLeavingAnimations.delete(lView);
4512
+ if (lView) allLeavingAnimations.delete(lView[ID]);
4513
4513
  callback(false);
4514
4514
  }
4515
4515
  }, animations);
@@ -4519,7 +4519,7 @@ function runAfterLeaveAnimations(lView, callback) {
4519
4519
  if (runningAnimations) {
4520
4520
  runningAnimations.then(() => {
4521
4521
  lView[ANIMATIONS].running = undefined;
4522
- allLeavingAnimations.delete(lView);
4522
+ allLeavingAnimations.delete(lView[ID]);
4523
4523
  callback(true);
4524
4524
  });
4525
4525
  return;
@@ -8310,7 +8310,7 @@ class ComponentFactory extends ComponentFactory$1 {
8310
8310
  }
8311
8311
  }
8312
8312
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8313
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.6'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8313
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.7'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8314
8314
  let creationBindings = null;
8315
8315
  let updateBindings = null;
8316
8316
  let varsToAllocate = 0;
@@ -8548,7 +8548,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
8548
8548
  insertImpl(viewRef, index, addToDOM) {
8549
8549
  const lView = viewRef._lView;
8550
8550
  if (ngDevMode && viewRef.destroyed) {
8551
- throw new Error('Cannot insert a destroyed View in a ViewContainer!');
8551
+ throw new RuntimeError(922, ngDevMode && 'Cannot insert a destroyed View in a ViewContainer!');
8552
8552
  }
8553
8553
  if (viewAttachedToContainer(lView)) {
8554
8554
  const prevIdx = this.indexOf(viewRef);
@@ -8570,7 +8570,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
8570
8570
  }
8571
8571
  move(viewRef, newIndex) {
8572
8572
  if (ngDevMode && viewRef.destroyed) {
8573
- throw new Error('Cannot move a destroyed View in a ViewContainer!');
8573
+ throw new RuntimeError(923, ngDevMode && 'Cannot move a destroyed View in a ViewContainer!');
8574
8574
  }
8575
8575
  return this.insert(viewRef, newIndex);
8576
8576
  }
@@ -9169,7 +9169,7 @@ const modules = new Map();
9169
9169
  let checkForDuplicateNgModules = true;
9170
9170
  function assertSameOrNotExisting(id, type, incoming) {
9171
9171
  if (type && type !== incoming && checkForDuplicateNgModules) {
9172
- throw new Error(`Duplicate module registered for ${id} - ${stringify(type)} vs ${stringify(type.name)}`);
9172
+ throw new RuntimeError(921, ngDevMode && `Duplicate module registered for ${id} - ${stringify(type)} vs ${stringify(type.name)}`);
9173
9173
  }
9174
9174
  }
9175
9175
  function registerNgModuleType(ngModuleType, id) {
@@ -13155,7 +13155,7 @@ function runLeaveAnimations(lView, tNode, value) {
13155
13155
  ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
13156
13156
  const renderer = lView[RENDERER];
13157
13157
  const ngZone = lView[INJECTOR].get(NgZone);
13158
- allLeavingAnimations.add(lView);
13158
+ allLeavingAnimations.add(lView[ID]);
13159
13159
  (getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
13160
13160
  const activeClasses = getClassListFromValue(value);
13161
13161
  if (activeClasses && activeClasses.length > 0) {
@@ -13215,7 +13215,7 @@ function ɵɵanimateLeaveListener(value) {
13215
13215
  const lView = getLView();
13216
13216
  const tNode = getCurrentTNode();
13217
13217
  cancelLeavingNodes(tNode, lView);
13218
- allLeavingAnimations.add(lView);
13218
+ allLeavingAnimations.add(lView[ID]);
13219
13219
  addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value));
13220
13220
  initializeAnimationQueueScheduler(lView[INJECTOR]);
13221
13221
  return ɵɵanimateLeaveListener;
@@ -13291,14 +13291,14 @@ function ɵɵcontrolCreate() {
13291
13291
  }
13292
13292
  control.ɵregister();
13293
13293
  }
13294
- function ɵɵcontrol(value, sanitizer) {
13294
+ function ɵɵcontrol(value, name, sanitizer) {
13295
13295
  const lView = getLView();
13296
13296
  const tNode = getSelectedTNode();
13297
13297
  const bindingIndex = nextBindingIndex();
13298
13298
  if (bindingUpdated(lView, bindingIndex, value)) {
13299
13299
  const tView = getTView();
13300
- setPropertyAndInputs(tNode, lView, 'field', value, lView[RENDERER], sanitizer);
13301
- ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'field', bindingIndex);
13300
+ setPropertyAndInputs(tNode, lView, name, value, lView[RENDERER], sanitizer);
13301
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, name, bindingIndex);
13302
13302
  }
13303
13303
  updateControl(lView, tNode);
13304
13304
  }
@@ -13316,7 +13316,7 @@ function updateControl(lView, tNode) {
13316
13316
  } else if (tNode.flags & 2048) {
13317
13317
  updateCustomControl(tNode, lView, control, 'checked');
13318
13318
  } else if (tNode.flags & 4096) {
13319
- updateInteropControl(lView, control);
13319
+ updateInteropControl(tNode, lView, control);
13320
13320
  } else {
13321
13321
  updateNativeControl(tNode, lView, control);
13322
13322
  }
@@ -13325,7 +13325,7 @@ function updateControl(lView, tNode) {
13325
13325
  }
13326
13326
  function initializeControlFirstCreatePass(tView, tNode, lView) {
13327
13327
  ngDevMode && assertFirstCreatePass(tView);
13328
- const directiveIndices = tNode.inputs?.['field'];
13328
+ const directiveIndices = tNode.inputs?.['field'] ?? tNode.inputs?.['formField'];
13329
13329
  if (!directiveIndices) {
13330
13330
  return;
13331
13331
  }
@@ -13337,13 +13337,8 @@ function initializeControlFirstCreatePass(tView, tNode, lView) {
13337
13337
  return;
13338
13338
  }
13339
13339
  tNode.fieldIndex = controlIndex;
13340
- const isCustomControl = isCustomControlFirstCreatePass(tView, tNode);
13341
- if (!isCustomControl && lView[controlIndex].ɵinteropControl) {
13342
- tNode.flags |= 4096;
13343
- return;
13344
- }
13345
- const isNativeControl = isNativeControlFirstCreatePass(tView, tNode);
13346
- if (isNativeControl || isCustomControl) {
13340
+ const foundControl = isInteropControlFirstCreatePass(tNode, lView) || isCustomControlFirstCreatePass(tView, tNode);
13341
+ if (isNativeControlFirstCreatePass(tNode) || foundControl) {
13347
13342
  return;
13348
13343
  }
13349
13344
  const host = describeElement(tView, tNode);
@@ -13357,6 +13352,14 @@ function describeElement(tView, tNode) {
13357
13352
  }
13358
13353
  return `<${tNode.value}>`;
13359
13354
  }
13355
+ function isInteropControlFirstCreatePass(tNode, lView) {
13356
+ const control = lView[tNode.fieldIndex];
13357
+ if (control.ɵinteropControl) {
13358
+ tNode.flags |= 4096;
13359
+ return true;
13360
+ }
13361
+ return false;
13362
+ }
13360
13363
  function isCustomControlFirstCreatePass(tView, tNode) {
13361
13364
  for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
13362
13365
  const directiveDef = tView.data[i];
@@ -13373,7 +13376,7 @@ function isCustomControlFirstCreatePass(tView, tNode) {
13373
13376
  }
13374
13377
  return false;
13375
13378
  }
13376
- function isNativeControlFirstCreatePass(tView, tNode) {
13379
+ function isNativeControlFirstCreatePass(tNode) {
13377
13380
  if (!isNativeControl(tNode)) {
13378
13381
  return false;
13379
13382
  }
@@ -13391,11 +13394,10 @@ function getControlDirective(tNode, lView) {
13391
13394
  return index === -1 ? null : lView[index];
13392
13395
  }
13393
13396
  function hasModelInput(directiveDef, name) {
13394
- return hasSignalInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
13397
+ return hasInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
13395
13398
  }
13396
- function hasSignalInput(directiveDef, name) {
13397
- const input = directiveDef.inputs[name];
13398
- return input && (input[1] & InputFlags.SignalBased) !== 0;
13399
+ function hasInput(directiveDef, name) {
13400
+ return name in directiveDef.inputs;
13399
13401
  }
13400
13402
  function hasOutput(directiveDef, name) {
13401
13403
  return name in directiveDef.outputs;
@@ -13504,35 +13506,47 @@ function updateCustomControl(tNode, lView, control, modelName) {
13504
13506
  const directiveDef = tView.data[directiveIndex];
13505
13507
  const state = control.state();
13506
13508
  const bindings = getControlBindings(lView);
13507
- maybeUpdateInput(directiveDef, directive, bindings, state, CONTROL_VALUE, modelName);
13508
- for (const key of CONTROL_BINDING_KEYS) {
13509
- const inputName = CONTROL_BINDING_NAMES[key];
13510
- maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName);
13511
- }
13512
- if (tNode.flags & 8192) {
13513
- updateNativeControl(tNode, lView, control);
13509
+ const controlValue = state.controlValue();
13510
+ if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13511
+ writeToDirectiveInput(directiveDef, directive, modelName, controlValue);
13514
13512
  }
13515
- }
13516
- function maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName) {
13517
- if (inputName in directiveDef.inputs) {
13513
+ const isNative = (tNode.flags & 8192) !== 0;
13514
+ const element = isNative ? getNativeByTNode(tNode, lView) : null;
13515
+ const renderer = lView[RENDERER];
13516
+ for (const key of CONTROL_BINDING_KEYS) {
13518
13517
  const value = state[key]?.();
13519
13518
  if (controlBindingUpdated(bindings, key, value)) {
13520
- writeToDirectiveInput(directiveDef, directive, inputName, value);
13519
+ const inputName = CONTROL_BINDING_NAMES[key];
13520
+ updateDirectiveInputs(tNode, lView, inputName, value);
13521
+ if (isNative && !(inputName in directiveDef.inputs)) {
13522
+ updateNativeProperty(tNode, renderer, element, key, value, inputName);
13523
+ }
13521
13524
  }
13522
13525
  }
13523
13526
  }
13524
- function updateInteropControl(lView, control) {
13527
+ function updateInteropControl(tNode, lView, control) {
13525
13528
  const interopControl = control.ɵinteropControl;
13526
13529
  const bindings = getControlBindings(lView);
13527
13530
  const state = control.state();
13531
+ const isNative = (tNode.flags & 8192) !== 0;
13532
+ const element = isNative ? getNativeByTNode(tNode, lView) : null;
13533
+ const renderer = lView[RENDERER];
13528
13534
  const value = state.value();
13529
13535
  if (controlBindingUpdated(bindings, CONTROL_VALUE, value)) {
13530
13536
  untracked(() => interopControl.writeValue(value));
13531
13537
  }
13532
- if (interopControl.setDisabledState) {
13533
- const disabled = state.disabled();
13534
- if (controlBindingUpdated(bindings, DISABLED, disabled)) {
13535
- untracked(() => interopControl.setDisabledState(disabled));
13538
+ for (const key of CONTROL_BINDING_KEYS) {
13539
+ const value = state[key]?.();
13540
+ if (controlBindingUpdated(bindings, key, value)) {
13541
+ const inputName = CONTROL_BINDING_NAMES[key];
13542
+ const didUpdateInput = updateDirectiveInputs(tNode, lView, inputName, value);
13543
+ if (key === DISABLED) {
13544
+ if (interopControl.setDisabledState) {
13545
+ untracked(() => interopControl.setDisabledState(value));
13546
+ }
13547
+ } else if (isNative && !didUpdateInput) {
13548
+ updateNativeProperty(tNode, renderer, element, key, value, inputName);
13549
+ }
13536
13550
  }
13537
13551
  }
13538
13552
  }
@@ -13545,34 +13559,50 @@ function updateNativeControl(tNode, lView, control) {
13545
13559
  if (controlBindingUpdated(bindings, CONTROL_VALUE, controlValue)) {
13546
13560
  setNativeControlValue(element, controlValue);
13547
13561
  }
13548
- const name = state.name();
13549
- if (controlBindingUpdated(bindings, NAME, name)) {
13550
- renderer.setAttribute(element, 'name', name);
13551
- }
13552
- updateBooleanAttribute(renderer, element, bindings, state, DISABLED);
13553
- updateBooleanAttribute(renderer, element, bindings, state, READONLY);
13554
- updateBooleanAttribute(renderer, element, bindings, state, REQUIRED);
13555
- if (tNode.flags & 16384) {
13556
- updateOptionalAttribute(renderer, element, bindings, state, MAX);
13557
- updateOptionalAttribute(renderer, element, bindings, state, MIN);
13558
- }
13559
- if (tNode.flags & 32768) {
13560
- updateOptionalAttribute(renderer, element, bindings, state, MAX_LENGTH);
13561
- updateOptionalAttribute(renderer, element, bindings, state, MIN_LENGTH);
13562
+ for (const key of CONTROL_BINDING_KEYS) {
13563
+ const value = state[key]?.();
13564
+ if (controlBindingUpdated(bindings, key, value)) {
13565
+ const inputName = CONTROL_BINDING_NAMES[key];
13566
+ updateNativeProperty(tNode, renderer, element, key, value, inputName);
13567
+ updateDirectiveInputs(tNode, lView, inputName, value);
13568
+ }
13562
13569
  }
13563
13570
  }
13564
- function updateBooleanAttribute(renderer, element, bindings, state, key) {
13565
- const value = state[key]();
13566
- if (controlBindingUpdated(bindings, key, value)) {
13567
- const name = CONTROL_BINDING_NAMES[key];
13568
- setBooleanAttribute(renderer, element, name, value);
13571
+ function updateDirectiveInputs(tNode, lView, inputName, value) {
13572
+ const directiveIndices = tNode.inputs?.[inputName];
13573
+ if (directiveIndices) {
13574
+ const tView = getTView();
13575
+ for (const index of directiveIndices) {
13576
+ const directiveDef = tView.data[index];
13577
+ const directive = lView[index];
13578
+ writeToDirectiveInput(directiveDef, directive, inputName, value);
13579
+ }
13580
+ return true;
13569
13581
  }
13582
+ return false;
13570
13583
  }
13571
- function updateOptionalAttribute(renderer, element, bindings, state, key) {
13572
- const value = state[key]?.();
13573
- if (controlBindingUpdated(bindings, key, value)) {
13574
- const name = CONTROL_BINDING_NAMES[key];
13575
- setOptionalAttribute(renderer, element, name, value);
13584
+ function updateNativeProperty(tNode, renderer, element, key, value, name) {
13585
+ switch (key) {
13586
+ case NAME:
13587
+ renderer.setAttribute(element, name, value);
13588
+ break;
13589
+ case DISABLED:
13590
+ case READONLY:
13591
+ case REQUIRED:
13592
+ setBooleanAttribute(renderer, element, name, value);
13593
+ break;
13594
+ case MAX:
13595
+ case MIN:
13596
+ if (tNode.flags & 16384) {
13597
+ setOptionalAttribute(renderer, element, name, value);
13598
+ }
13599
+ break;
13600
+ case MAX_LENGTH:
13601
+ case MIN_LENGTH:
13602
+ if (tNode.flags & 32768) {
13603
+ setOptionalAttribute(renderer, element, name, value);
13604
+ }
13605
+ break;
13576
13606
  }
13577
13607
  }
13578
13608
  function isDateOrNull(value) {
@@ -14229,7 +14259,7 @@ function clearDetachAnimationList(lContainer, index) {
14229
14259
  if (viewToDetach && animations && animations.detachedLeaveAnimationFns && animations.detachedLeaveAnimationFns.length > 0) {
14230
14260
  const injector = viewToDetach[INJECTOR];
14231
14261
  removeFromAnimationQueue(injector, animations);
14232
- allLeavingAnimations.delete(viewToDetach);
14262
+ allLeavingAnimations.delete(viewToDetach[ID]);
14233
14263
  animations.detachedLeaveAnimationFns = undefined;
14234
14264
  }
14235
14265
  }
@@ -16851,49 +16881,49 @@ function maybeUnwrapModuleWithProviders(value) {
16851
16881
  return isModuleWithProviders(value) ? value.ngModule : value;
16852
16882
  }
16853
16883
 
16854
- function ɵɵpureFunction0(slotOffset, pureFn, thisArg) {
16884
+ function ɵɵpureFunction0(slotOffset, pureFn) {
16855
16885
  const bindingIndex = getBindingRoot() + slotOffset;
16856
16886
  const lView = getLView();
16857
- return lView[bindingIndex] === NO_CHANGE ? updateBinding(lView, bindingIndex, thisArg ? pureFn.call(thisArg) : pureFn()) : getBinding(lView, bindingIndex);
16887
+ return lView[bindingIndex] === NO_CHANGE ? updateBinding(lView, bindingIndex, pureFn()) : getBinding(lView, bindingIndex);
16858
16888
  }
16859
- function ɵɵpureFunction1(slotOffset, pureFn, exp, thisArg) {
16860
- return pureFunction1Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp, thisArg);
16889
+ function ɵɵpureFunction1(slotOffset, pureFn, exp) {
16890
+ return pureFunction1Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp);
16861
16891
  }
16862
- function ɵɵpureFunction2(slotOffset, pureFn, exp1, exp2, thisArg) {
16863
- return pureFunction2Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, thisArg);
16892
+ function ɵɵpureFunction2(slotOffset, pureFn, exp1, exp2) {
16893
+ return pureFunction2Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2);
16864
16894
  }
16865
- function ɵɵpureFunction3(slotOffset, pureFn, exp1, exp2, exp3, thisArg) {
16866
- return pureFunction3Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3, thisArg);
16895
+ function ɵɵpureFunction3(slotOffset, pureFn, exp1, exp2, exp3) {
16896
+ return pureFunction3Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3);
16867
16897
  }
16868
16898
  function ɵɵpureFunction4(slotOffset, pureFn, exp1, exp2, exp3, exp4, thisArg) {
16869
- return pureFunction4Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3, exp4, thisArg);
16899
+ return pureFunction4Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3, exp4);
16870
16900
  }
16871
- function ɵɵpureFunction5(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, thisArg) {
16901
+ function ɵɵpureFunction5(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5) {
16872
16902
  const bindingIndex = getBindingRoot() + slotOffset;
16873
16903
  const lView = getLView();
16874
16904
  const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);
16875
- return bindingUpdated(lView, bindingIndex + 4, exp5) || different ? updateBinding(lView, bindingIndex + 5, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5) : pureFn(exp1, exp2, exp3, exp4, exp5)) : getBinding(lView, bindingIndex + 5);
16905
+ return bindingUpdated(lView, bindingIndex + 4, exp5) || different ? updateBinding(lView, bindingIndex + 5, pureFn(exp1, exp2, exp3, exp4, exp5)) : getBinding(lView, bindingIndex + 5);
16876
16906
  }
16877
- function ɵɵpureFunction6(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, thisArg) {
16907
+ function ɵɵpureFunction6(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6) {
16878
16908
  const bindingIndex = getBindingRoot() + slotOffset;
16879
16909
  const lView = getLView();
16880
16910
  const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);
16881
- return bindingUpdated2(lView, bindingIndex + 4, exp5, exp6) || different ? updateBinding(lView, bindingIndex + 6, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6) : pureFn(exp1, exp2, exp3, exp4, exp5, exp6)) : getBinding(lView, bindingIndex + 6);
16911
+ return bindingUpdated2(lView, bindingIndex + 4, exp5, exp6) || different ? updateBinding(lView, bindingIndex + 6, pureFn(exp1, exp2, exp3, exp4, exp5, exp6)) : getBinding(lView, bindingIndex + 6);
16882
16912
  }
16883
- function ɵɵpureFunction7(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7, thisArg) {
16913
+ function ɵɵpureFunction7(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7) {
16884
16914
  const bindingIndex = getBindingRoot() + slotOffset;
16885
16915
  const lView = getLView();
16886
16916
  let different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);
16887
- return bindingUpdated3(lView, bindingIndex + 4, exp5, exp6, exp7) || different ? updateBinding(lView, bindingIndex + 7, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6, exp7) : pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7)) : getBinding(lView, bindingIndex + 7);
16917
+ return bindingUpdated3(lView, bindingIndex + 4, exp5, exp6, exp7) || different ? updateBinding(lView, bindingIndex + 7, pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7)) : getBinding(lView, bindingIndex + 7);
16888
16918
  }
16889
- function ɵɵpureFunction8(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8, thisArg) {
16919
+ function ɵɵpureFunction8(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8) {
16890
16920
  const bindingIndex = getBindingRoot() + slotOffset;
16891
16921
  const lView = getLView();
16892
16922
  const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);
16893
- return bindingUpdated4(lView, bindingIndex + 4, exp5, exp6, exp7, exp8) || different ? updateBinding(lView, bindingIndex + 8, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8) : pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8)) : getBinding(lView, bindingIndex + 8);
16923
+ return bindingUpdated4(lView, bindingIndex + 4, exp5, exp6, exp7, exp8) || different ? updateBinding(lView, bindingIndex + 8, pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8)) : getBinding(lView, bindingIndex + 8);
16894
16924
  }
16895
- function ɵɵpureFunctionV(slotOffset, pureFn, exps, thisArg) {
16896
- return pureFunctionVInternal(getLView(), getBindingRoot(), slotOffset, pureFn, exps, thisArg);
16925
+ function ɵɵpureFunctionV(slotOffset, pureFn, exps) {
16926
+ return pureFunctionVInternal(getLView(), getBindingRoot(), slotOffset, pureFn, exps);
16897
16927
  }
16898
16928
  function getPureFunctionReturnValue(lView, returnValueIndex) {
16899
16929
  ngDevMode && assertIndexInRange(lView, returnValueIndex);