@angular/core 22.0.0-next.2 → 22.0.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.
- package/fesm2022/_attribute-chunk.mjs +1 -1
- package/fesm2022/_attribute-chunk.mjs.map +1 -1
- package/fesm2022/_debug_node-chunk.mjs +48 -140
- package/fesm2022/_debug_node-chunk.mjs.map +1 -1
- package/fesm2022/_effect-chunk.mjs +1 -1
- package/fesm2022/_effect-chunk.mjs.map +1 -1
- package/fesm2022/_not_found-chunk.mjs +1 -1
- package/fesm2022/_not_found-chunk.mjs.map +1 -1
- package/fesm2022/_pending_tasks-chunk.mjs +2 -2
- package/fesm2022/_pending_tasks-chunk.mjs.map +1 -1
- package/fesm2022/_resource-chunk.mjs +1 -1
- package/fesm2022/_resource-chunk.mjs.map +1 -1
- package/fesm2022/_untracked-chunk.mjs +1 -1
- package/fesm2022/_untracked-chunk.mjs.map +1 -1
- package/fesm2022/_weak_ref-chunk.mjs +1 -1
- package/fesm2022/_weak_ref-chunk.mjs.map +1 -1
- package/fesm2022/core.mjs +1 -1
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives-di.mjs +1 -1
- package/fesm2022/primitives-di.mjs.map +1 -1
- package/fesm2022/primitives-event-dispatch.mjs +1 -1
- package/fesm2022/primitives-event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives-signals.mjs +1 -1
- package/fesm2022/primitives-signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +2 -2
- package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
- package/schematics/bundles/change-detection-eager.cjs +1 -1
- package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
- package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
- package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
- package/schematics/bundles/control-flow-migration.cjs +1 -1
- package/schematics/bundles/http-xhr-backend.cjs +1 -1
- package/schematics/bundles/imports-CKV-ITqD.cjs +1 -1
- package/schematics/bundles/index-BtLcQH8g.cjs +1 -1
- package/schematics/bundles/inject-migration.cjs +1 -1
- package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
- package/schematics/bundles/migrate_ts_type_references-MWoZx-Cb.cjs +1 -1
- package/schematics/bundles/ng_component_template-DPAF1aEA.cjs +1 -1
- package/schematics/bundles/ng_decorators-IVztR9rk.cjs +1 -1
- package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
- package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
- package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +1 -1
- package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
- package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
- package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
- package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +1 -1
- package/schematics/bundles/router-testing-module-migration.cjs +1 -1
- package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
- package/schematics/bundles/signal-input-migration.cjs +1 -1
- package/schematics/bundles/signal-queries-migration.cjs +1 -1
- package/schematics/bundles/signals.cjs +1 -1
- package/schematics/bundles/standalone-migration.cjs +1 -1
- package/types/_api-chunk.d.ts +1 -1
- package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
- package/types/_debug_node-chunk.d.ts +1 -1
- package/types/_effect-chunk.d.ts +1 -1
- package/types/_event_dispatcher-chunk.d.ts +1 -1
- package/types/_formatter-chunk.d.ts +1 -1
- package/types/_weak_ref-chunk.d.ts +1 -1
- package/types/core.d.ts +1 -1
- package/types/primitives-di.d.ts +1 -1
- package/types/primitives-event-dispatch.d.ts +1 -1
- package/types/primitives-signals.d.ts +1 -1
- package/types/rxjs-interop.d.ts +1 -1
- package/types/testing.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_attribute-chunk.mjs","sources":["../../../../../
|
|
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 v22.0.0-next.
|
|
2
|
+
* @license Angular v22.0.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, stringify, ANIMATIONS, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector,
|
|
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, runInInjectionContext, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, arrayInsert2, arraySplice, 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 './_pending_tasks-chunk.mjs';
|
|
8
8
|
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
@@ -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', '22.0.0-next.
|
|
8688
|
+
const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-next.3'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
8781
8689
|
let creationBindings = null;
|
|
8782
8690
|
let updateBindings = null;
|
|
8783
8691
|
let varsToAllocate = 0;
|
|
@@ -15114,7 +15022,7 @@ function i18nAttributesFirstPass(tView, index, values) {
|
|
|
15114
15022
|
if (ICU_REGEXP.test(message)) {
|
|
15115
15023
|
throw new Error(`ICU expressions are not supported in attributes. Message: "${message}".`);
|
|
15116
15024
|
}
|
|
15117
|
-
generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes),
|
|
15025
|
+
generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), SENSITIVE_ATTRS[attrName.toLowerCase()] ? _sanitizeUrl : null);
|
|
15118
15026
|
}
|
|
15119
15027
|
}
|
|
15120
15028
|
tView.data[index] = updateOpCodes;
|
|
@@ -15346,12 +15254,12 @@ function walkIcuTree(ast, tView, tIcu, lView, sharedUpdateOpCodes, create, remov
|
|
|
15346
15254
|
const hasBinding = !!attr.value.match(BINDING_REGEXP);
|
|
15347
15255
|
if (hasBinding) {
|
|
15348
15256
|
if (VALID_ATTRS.hasOwnProperty(lowerAttrName)) {
|
|
15349
|
-
generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0,
|
|
15257
|
+
generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, SENSITIVE_ATTRS[lowerAttrName] ? _sanitizeUrl : null);
|
|
15350
15258
|
} else {
|
|
15351
15259
|
ngDevMode && console.warn(`WARNING: ignoring unsafe attribute value ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
|
|
15352
15260
|
}
|
|
15353
15261
|
} else if (VALID_ATTRS[lowerAttrName]) {
|
|
15354
|
-
if (
|
|
15262
|
+
if (SENSITIVE_ATTRS[lowerAttrName]) {
|
|
15355
15263
|
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
15356
15264
|
console.warn(`WARNING: ignoring unsafe attribute ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
|
|
15357
15265
|
}
|