@angular/core 21.2.2 → 21.2.4

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 +50 -147
  4. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  5. package/fesm2022/_effect-chunk.mjs +3 -5
  6. package/fesm2022/_effect-chunk.mjs.map +1 -1
  7. package/fesm2022/_effect-chunk2.mjs +6 -5
  8. package/fesm2022/_effect-chunk2.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 +7 -7
  12. package/fesm2022/_resource-chunk.mjs.map +1 -1
  13. package/fesm2022/_untracked-chunk.mjs +2 -3
  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 +2 -2
  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 +2 -2
  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-CxA_YYgB.cjs +1 -1
  33. package/schematics/bundles/bootstrap-options-migration.cjs +1 -1
  34. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  35. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  36. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  37. package/schematics/bundles/control-flow-migration.cjs +1 -1
  38. package/schematics/bundles/imports-CVmcbVA9.cjs +1 -1
  39. package/schematics/bundles/index-BtLcQH8g.cjs +1 -1
  40. package/schematics/bundles/inject-migration.cjs +1 -1
  41. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  42. package/schematics/bundles/migrate_ts_type_references-MWoZx-Cb.cjs +1 -1
  43. package/schematics/bundles/ng_component_template-BOuKAnQd.cjs +1 -1
  44. package/schematics/bundles/ng_decorators-DYy6II6x.cjs +1 -1
  45. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  46. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  47. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  48. package/schematics/bundles/output-migration.cjs +1 -1
  49. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  50. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  51. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  52. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  53. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  54. package/schematics/bundles/router-current-navigation.cjs +1 -1
  55. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  56. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  57. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  58. package/schematics/bundles/signal-input-migration.cjs +1 -1
  59. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  60. package/schematics/bundles/signals.cjs +1 -1
  61. package/schematics/bundles/standalone-migration.cjs +1 -1
  62. package/schematics/bundles/symbol-DZeHSR-V.cjs +1 -1
  63. package/types/_api-chunk.d.ts +1 -1
  64. package/types/_chrome_dev_tools_performance-chunk.d.ts +3 -2
  65. package/types/_discovery-chunk.d.ts +38 -8
  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 +26 -23
  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 +2 -1
  75. package/types/testing.d.ts +4 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.2.2
2
+ * @license Angular v21.2.4
3
3
  * (c) 2010-2026 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,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.2.2
2
+ * @license Angular v21.2.4
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR as INJECTOR$1, CONTAINER_HEADER_OFFSET, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getTNode, getDirectiveDefOrThrow, 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, decreaseElementDepthCount, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArraySet, keyValueArrayGet, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_effect-chunk2.mjs';
7
+ import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, CONTAINER_HEADER_OFFSET, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getTNode, getDirectiveDefOrThrow, 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, decreaseElementDepthCount, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArraySet, keyValueArrayGet, 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';
@@ -3061,6 +3061,7 @@ const HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border
3061
3061
  const ARIA_ATTRS = tagSet('aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,' + 'aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,' + 'aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,' + 'aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,' + 'aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,' + 'aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,' + 'aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext');
3062
3062
  const VALID_ATTRS = merge(URI_ATTRS, HTML_ATTRS, ARIA_ATTRS);
3063
3063
  const SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS = tagSet('script,style,template');
3064
+ const SENSITIVE_ATTRS = merge(URI_ATTRS, tagSet('action,formaction,data,codebase'));
3064
3065
  class SanitizingHtmlSerializer {
3065
3066
  sanitizedSomething = false;
3066
3067
  buf = [];
@@ -4478,14 +4479,11 @@ const NOOP_AFTER_RENDER_REF = {
4478
4479
 
4479
4480
  const ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationQueue' : '', {
4480
4481
  factory: () => {
4481
- const injector = inject(EnvironmentInjector);
4482
- const queue = new Set();
4483
- injector.onDestroy(() => queue.clear());
4484
4482
  return {
4485
- queue,
4483
+ queue: new Set(),
4486
4484
  isScheduled: false,
4487
4485
  scheduler: null,
4488
- injector
4486
+ injector: inject(EnvironmentInjector)
4489
4487
  };
4490
4488
  }
4491
4489
  });
@@ -4543,135 +4541,6 @@ function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
4543
4541
  queueEnterAnimations(injector, enterAnimations);
4544
4542
  }
4545
4543
  }
4546
- function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4547
- try {
4548
- injector.get(INJECTOR$1);
4549
- } catch {
4550
- return callback(false);
4551
- }
4552
- const animations = lView?.[ANIMATIONS];
4553
- const nodesWithExitAnimations = aggregateDescendantAnimations(lView, tNode, animations);
4554
- if (nodesWithExitAnimations.size === 0) {
4555
- let hasNestedAnimations = false;
4556
- if (lView) {
4557
- const nestedPromises = [];
4558
- collectNestedViewAnimations(lView, tNode, nestedPromises);
4559
- hasNestedAnimations = nestedPromises.length > 0;
4560
- }
4561
- if (!hasNestedAnimations) {
4562
- return callback(false);
4563
- }
4564
- }
4565
- if (lView) allLeavingAnimations.add(lView[ID]);
4566
- addToAnimationQueue(injector, () => executeLeaveAnimations(lView, tNode, animations || undefined, nodesWithExitAnimations, callback), animations || undefined);
4567
- }
4568
- function aggregateDescendantAnimations(lView, tNode, animations) {
4569
- const nodesWithExitAnimations = new Map();
4570
- const leaveAnimations = animations?.leave;
4571
- if (leaveAnimations && leaveAnimations.has(tNode.index)) {
4572
- nodesWithExitAnimations.set(tNode.index, leaveAnimations.get(tNode.index));
4573
- }
4574
- if (lView && leaveAnimations) {
4575
- for (const [index, animationData] of leaveAnimations) {
4576
- if (nodesWithExitAnimations.has(index)) continue;
4577
- const nestedTNode = lView[TVIEW].data[index];
4578
- let parent = nestedTNode.parent;
4579
- while (parent) {
4580
- if (parent === tNode) {
4581
- nodesWithExitAnimations.set(index, animationData);
4582
- break;
4583
- }
4584
- parent = parent.parent;
4585
- }
4586
- }
4587
- }
4588
- return nodesWithExitAnimations;
4589
- }
4590
- function executeLeaveAnimations(lView, tNode, animations, nodesWithExitAnimations, callback) {
4591
- const runningAnimations = [];
4592
- if (animations && animations.leave) {
4593
- for (const [index] of nodesWithExitAnimations) {
4594
- if (!animations.leave.has(index)) continue;
4595
- const currentAnimationData = animations.leave.get(index);
4596
- for (const animationFn of currentAnimationData.animateFns) {
4597
- const {
4598
- promise
4599
- } = animationFn();
4600
- runningAnimations.push(promise);
4601
- }
4602
- animations.detachedLeaveAnimationFns = undefined;
4603
- }
4604
- }
4605
- if (lView) {
4606
- collectNestedViewAnimations(lView, tNode, runningAnimations);
4607
- }
4608
- if (runningAnimations.length > 0) {
4609
- const currentAnimations = animations || lView?.[ANIMATIONS];
4610
- if (currentAnimations) {
4611
- const prevRunning = currentAnimations.running;
4612
- if (prevRunning) {
4613
- runningAnimations.push(prevRunning);
4614
- }
4615
- currentAnimations.running = Promise.allSettled(runningAnimations);
4616
- runAfterLeaveAnimations(lView, currentAnimations.running, callback);
4617
- } else {
4618
- Promise.allSettled(runningAnimations).then(() => {
4619
- if (lView) allLeavingAnimations.delete(lView[ID]);
4620
- callback(true);
4621
- });
4622
- }
4623
- } else {
4624
- if (lView) allLeavingAnimations.delete(lView[ID]);
4625
- callback(false);
4626
- }
4627
- }
4628
- function collectNestedViewAnimations(lView, tNode, collectedPromises) {
4629
- if (isComponentHost(tNode)) {
4630
- const componentView = getComponentLViewByIndex(tNode.index, lView);
4631
- collectAllViewLeaveAnimations(componentView, collectedPromises);
4632
- } else if (tNode.type & 12) {
4633
- const lContainer = lView[tNode.index];
4634
- if (isLContainer(lContainer)) {
4635
- for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
4636
- const subView = lContainer[i];
4637
- collectAllViewLeaveAnimations(subView, collectedPromises);
4638
- }
4639
- }
4640
- }
4641
- let child = tNode.child;
4642
- while (child) {
4643
- collectNestedViewAnimations(lView, child, collectedPromises);
4644
- child = child.next;
4645
- }
4646
- }
4647
- function collectAllViewLeaveAnimations(view, collectedPromises) {
4648
- const animations = view[ANIMATIONS];
4649
- if (animations && animations.leave) {
4650
- for (const animationData of animations.leave.values()) {
4651
- for (const animationFn of animationData.animateFns) {
4652
- const {
4653
- promise
4654
- } = animationFn();
4655
- collectedPromises.push(promise);
4656
- }
4657
- }
4658
- }
4659
- let child = view[TVIEW].firstChild;
4660
- while (child) {
4661
- collectNestedViewAnimations(view, child, collectedPromises);
4662
- child = child.next;
4663
- }
4664
- }
4665
- function runAfterLeaveAnimations(lView, runningAnimations, callback) {
4666
- runningAnimations.then(() => {
4667
- if (lView[ANIMATIONS]?.running === runningAnimations) {
4668
- lView[ANIMATIONS].running = undefined;
4669
- allLeavingAnimations.delete(lView[ID]);
4670
- }
4671
- callback(true);
4672
- });
4673
- }
4674
-
4675
4544
  function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
4676
4545
  if (lNodeToHandle != null) {
4677
4546
  let lContainer;
@@ -4806,6 +4675,45 @@ function cleanUpView(tView, lView) {
4806
4675
  setActiveConsumer(prevConsumer);
4807
4676
  }
4808
4677
  }
4678
+ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
4679
+ const animations = lView?.[ANIMATIONS];
4680
+ if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index)) return callback(false);
4681
+ if (lView) allLeavingAnimations.add(lView[ID]);
4682
+ addToAnimationQueue(injector, () => {
4683
+ if (animations.leave && animations.leave.has(tNode.index)) {
4684
+ const leaveAnimationMap = animations.leave;
4685
+ const leaveAnimations = leaveAnimationMap.get(tNode.index);
4686
+ const runningAnimations = [];
4687
+ if (leaveAnimations) {
4688
+ for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
4689
+ const animationFn = leaveAnimations.animateFns[index];
4690
+ const {
4691
+ promise
4692
+ } = animationFn();
4693
+ runningAnimations.push(promise);
4694
+ }
4695
+ animations.detachedLeaveAnimationFns = undefined;
4696
+ }
4697
+ animations.running = Promise.allSettled(runningAnimations);
4698
+ runAfterLeaveAnimations(lView, callback);
4699
+ } else {
4700
+ if (lView) allLeavingAnimations.delete(lView[ID]);
4701
+ callback(false);
4702
+ }
4703
+ }, animations);
4704
+ }
4705
+ function runAfterLeaveAnimations(lView, callback) {
4706
+ const runningAnimations = lView[ANIMATIONS]?.running;
4707
+ if (runningAnimations) {
4708
+ runningAnimations.then(() => {
4709
+ lView[ANIMATIONS].running = undefined;
4710
+ allLeavingAnimations.delete(lView[ID]);
4711
+ callback(true);
4712
+ });
4713
+ return;
4714
+ }
4715
+ callback(false);
4716
+ }
4809
4717
  function processCleanups(tView, lView) {
4810
4718
  ngDevMode && assertNotReactive(processCleanups.name);
4811
4719
  const tCleanup = tView.cleanup;
@@ -8777,7 +8685,7 @@ class ComponentFactory extends ComponentFactory$1 {
8777
8685
  }
8778
8686
  }
8779
8687
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8780
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.2'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8688
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.4'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8781
8689
  let creationBindings = null;
8782
8690
  let updateBindings = null;
8783
8691
  let varsToAllocate = 0;
@@ -8914,8 +8822,7 @@ function injectViewContainerRef() {
8914
8822
  const previousTNode = getCurrentTNode();
8915
8823
  return createContainerRef(previousTNode, getLView());
8916
8824
  }
8917
- const VE_ViewContainerRef = ViewContainerRef;
8918
- const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
8825
+ class R3ViewContainerRef extends ViewContainerRef {
8919
8826
  _lContainer;
8920
8827
  _hostTNode;
8921
8828
  _hostLView;
@@ -9069,7 +8976,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
9069
8976
  }
9070
8977
  return index;
9071
8978
  }
9072
- };
8979
+ }
9073
8980
  function getViewRefs(lContainer) {
9074
8981
  return lContainer[VIEW_REFS];
9075
8982
  }
@@ -15065,7 +14972,7 @@ function i18nAttributesFirstPass(tView, index, values) {
15065
14972
  if (ICU_REGEXP.test(message)) {
15066
14973
  throw new Error(`ICU expressions are not supported in attributes. Message: "${message}".`);
15067
14974
  }
15068
- generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), null);
14975
+ generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), SENSITIVE_ATTRS[attrName.toLowerCase()] ? _sanitizeUrl : null);
15069
14976
  }
15070
14977
  }
15071
14978
  tView.data[index] = updateOpCodes;
@@ -15297,16 +15204,12 @@ function walkIcuTree(ast, tView, tIcu, lView, sharedUpdateOpCodes, create, remov
15297
15204
  const hasBinding = !!attr.value.match(BINDING_REGEXP);
15298
15205
  if (hasBinding) {
15299
15206
  if (VALID_ATTRS.hasOwnProperty(lowerAttrName)) {
15300
- if (URI_ATTRS[lowerAttrName]) {
15301
- generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, _sanitizeUrl);
15302
- } else {
15303
- generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, null);
15304
- }
15207
+ generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, SENSITIVE_ATTRS[lowerAttrName] ? _sanitizeUrl : null);
15305
15208
  } else {
15306
15209
  ngDevMode && console.warn(`WARNING: ignoring unsafe attribute value ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
15307
15210
  }
15308
15211
  } else if (VALID_ATTRS[lowerAttrName]) {
15309
- if (URI_ATTRS[lowerAttrName]) {
15212
+ if (SENSITIVE_ATTRS[lowerAttrName]) {
15310
15213
  if (typeof ngDevMode !== 'undefined' && ngDevMode) {
15311
15214
  console.warn(`WARNING: ignoring unsafe attribute ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
15312
15215
  }