@angular/core 20.2.0-next.0 → 20.2.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api.d.d.ts +1 -1
- package/chrome_dev_tools_performance.d.d.ts +1 -1
- package/discovery.d.d.ts +1 -1
- package/event_dispatcher.d.d.ts +1 -1
- package/fesm2022/attribute.mjs +1 -1
- package/fesm2022/attribute.mjs.map +1 -1
- package/fesm2022/core.mjs +26 -9
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/debug_node.mjs +647 -15
- package/fesm2022/debug_node.mjs.map +1 -1
- package/fesm2022/not_found.mjs +1 -1
- package/fesm2022/not_found.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/resource.mjs +8 -5
- package/fesm2022/resource.mjs.map +1 -1
- package/fesm2022/root_effect_scheduler.mjs +126 -53
- package/fesm2022/root_effect_scheduler.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +2 -2
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/signal.mjs +1 -1
- package/fesm2022/signal.mjs.map +1 -1
- package/fesm2022/testing.mjs +16 -8
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/untracked.mjs +1 -1
- package/fesm2022/untracked.mjs.map +1 -1
- package/fesm2022/weak_ref.mjs +1 -1
- package/fesm2022/weak_ref.mjs.map +1 -1
- package/graph.d.d.ts +1 -1
- package/index.d.ts +162 -3
- package/package.json +2 -2
- package/primitives/di/index.d.ts +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/{apply_import_manager-B0fYYMpr.cjs → apply_import_manager-Bkosyy2x.cjs} +3 -3
- package/schematics/bundles/{checker-DLInMAS3.cjs → checker-Cfq29XaS.cjs} +1294 -530
- package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
- package/schematics/bundles/{compiler_host-Doj9KVJf.cjs → compiler_host-CSrf1kFh.cjs} +2 -2
- package/schematics/bundles/control-flow-migration.cjs +3 -3
- package/schematics/bundles/document-core.cjs +5 -5
- package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
- package/schematics/bundles/{index-BmuUS1AB.cjs → index-DYbdsCUu.cjs} +80 -43
- package/schematics/bundles/{index-Bp8sCiq1.cjs → index-DwmX8Ifa.cjs} +4 -4
- package/schematics/bundles/inject-flags.cjs +5 -5
- package/schematics/bundles/inject-migration.cjs +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-CmZ0155c.cjs → migrate_ts_type_references-C7NB9fZH.cjs} +5 -441
- package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +6 -6
- package/schematics/bundles/{project_paths-D2SJWT7x.cjs → project_paths-5CoqAjNK.cjs} +3 -3
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +3 -3
- package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
- package/schematics/bundles/signal-input-migration.cjs +8 -8
- package/schematics/bundles/signal-queries-migration.cjs +7 -7
- package/schematics/bundles/signals.cjs +7 -7
- package/schematics/bundles/standalone-migration.cjs +4 -4
- package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
- package/schematics/bundles/test-bed-get.cjs +4 -4
- package/signal.d.d.ts +1 -1
- package/testing/index.d.ts +12 -2
- package/weak_ref.d.d.ts +1 -1
package/fesm2022/debug_node.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.2.0-next.
|
|
2
|
+
* @license Angular v20.2.0-next.2
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
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,
|
|
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, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, formatRuntimeError, resetPreOrderHookFlags, PARENT, RENDERER, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, 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, stringify, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, 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, getSelectedTNode, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, ChangeDetectionScheduler, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, isInInjectionContext, DestroyRef, PendingTasksInternal, noop, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasks, getAnimationElementRemovalRegistry, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, isWritableSignal, store, providerToFactory, emitProviderConfiguredEvent, isClassProvider, setAnimationElementRemovalRegistry, getBindingRoot, 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, ZONELESS_SCHEDULER_DISABLED, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, getNativeByTNodeOrNull } from './root_effect_scheduler.mjs';
|
|
8
8
|
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './signal.mjs';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
@@ -989,6 +989,7 @@ const NO_PARENT_INJECTOR = -1;
|
|
|
989
989
|
*/
|
|
990
990
|
class NodeInjectorFactory {
|
|
991
991
|
factory;
|
|
992
|
+
name;
|
|
992
993
|
/**
|
|
993
994
|
* The inject implementation to be activated when using the factory.
|
|
994
995
|
*/
|
|
@@ -1071,8 +1072,11 @@ class NodeInjectorFactory {
|
|
|
1071
1072
|
/**
|
|
1072
1073
|
* Set to `true` if the token is declared in `viewProviders` (or if it is component).
|
|
1073
1074
|
*/
|
|
1074
|
-
isViewProvider, injectImplementation
|
|
1075
|
+
isViewProvider, injectImplementation,
|
|
1076
|
+
// Expect `null` in devmode
|
|
1077
|
+
name) {
|
|
1075
1078
|
this.factory = factory;
|
|
1079
|
+
this.name = name;
|
|
1076
1080
|
ngDevMode && assertDefined(factory, 'Factory not specified');
|
|
1077
1081
|
ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');
|
|
1078
1082
|
this.canSeeViewProviders = isViewProvider;
|
|
@@ -1936,6 +1940,10 @@ function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders,
|
|
|
1936
1940
|
}
|
|
1937
1941
|
return null;
|
|
1938
1942
|
}
|
|
1943
|
+
/**
|
|
1944
|
+
* Used in ngDevMode to keep the injection path in case of cycles in DI.
|
|
1945
|
+
*/
|
|
1946
|
+
let injectionPath = [];
|
|
1939
1947
|
/**
|
|
1940
1948
|
* Retrieve or instantiate the injectable from the `LView` at particular `index`.
|
|
1941
1949
|
*
|
|
@@ -1948,8 +1956,15 @@ function getNodeInjectable(lView, tView, index, tNode, flags) {
|
|
|
1948
1956
|
const tData = tView.data;
|
|
1949
1957
|
if (value instanceof NodeInjectorFactory) {
|
|
1950
1958
|
const factory = value;
|
|
1959
|
+
ngDevMode && injectionPath.push(factory.name ?? 'unknown');
|
|
1951
1960
|
if (factory.resolving) {
|
|
1952
|
-
|
|
1961
|
+
const token = stringifyForError(tData[index]);
|
|
1962
|
+
if (ngDevMode) {
|
|
1963
|
+
throw cyclicDependencyErrorWithDetails(token, injectionPath);
|
|
1964
|
+
}
|
|
1965
|
+
else {
|
|
1966
|
+
throw cyclicDependencyError(token);
|
|
1967
|
+
}
|
|
1953
1968
|
}
|
|
1954
1969
|
const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
|
|
1955
1970
|
factory.resolving = true;
|
|
@@ -1991,6 +2006,7 @@ function getNodeInjectable(lView, tView, index, tNode, flags) {
|
|
|
1991
2006
|
setIncludeViewProviders(previousIncludeViewProviders);
|
|
1992
2007
|
factory.resolving = false;
|
|
1993
2008
|
leaveDI();
|
|
2009
|
+
ngDevMode && (injectionPath = []);
|
|
1994
2010
|
}
|
|
1995
2011
|
}
|
|
1996
2012
|
return value;
|
|
@@ -4216,6 +4232,12 @@ const TRANSFER_STATE_DEFER_BLOCKS_INFO = '__nghDeferData__';
|
|
|
4216
4232
|
* Lookup key used to retrieve defer block datain `TransferState`.
|
|
4217
4233
|
*/
|
|
4218
4234
|
const NGH_DEFER_BLOCKS_KEY = makeStateKey(TRANSFER_STATE_DEFER_BLOCKS_INFO);
|
|
4235
|
+
/**
|
|
4236
|
+
* Checks whether a given key is used by the framework for transferring hydration data.
|
|
4237
|
+
*/
|
|
4238
|
+
function isInternalHydrationTransferStateKey(key) {
|
|
4239
|
+
return key === TRANSFER_STATE_TOKEN_ID || key === TRANSFER_STATE_DEFER_BLOCKS_INFO;
|
|
4240
|
+
}
|
|
4219
4241
|
/**
|
|
4220
4242
|
* The name of the attribute that would be added to host component
|
|
4221
4243
|
* nodes and contain a reference to a particular slot in transferred
|
|
@@ -12640,7 +12662,7 @@ function configureViewWithDirective(tView, tNode, lView, directiveIndex, def) {
|
|
|
12640
12662
|
// Even though `directiveFactory` will already be using `ɵɵdirectiveInject` in its generated code,
|
|
12641
12663
|
// we also want to support `inject()` directly from the directive constructor context so we set
|
|
12642
12664
|
// `ɵɵdirectiveInject` as the inject implementation here too.
|
|
12643
|
-
const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), ɵɵdirectiveInject);
|
|
12665
|
+
const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), ɵɵdirectiveInject, ngDevMode ? def.type.name : null);
|
|
12644
12666
|
tView.blueprint[directiveIndex] = nodeInjectorFactory;
|
|
12645
12667
|
lView[directiveIndex] = nodeInjectorFactory;
|
|
12646
12668
|
registerHostBindingOpCodes(tView, tNode, directiveIndex, allocExpando(tView, lView, def.hostVars, NO_CHANGE), def);
|
|
@@ -13172,6 +13194,8 @@ function inputBindingUpdate(targetDirectiveIdx, publicName, value) {
|
|
|
13172
13194
|
if (bindingUpdated(lView, bindingIndex, value)) {
|
|
13173
13195
|
const tView = lView[TVIEW];
|
|
13174
13196
|
const tNode = getSelectedTNode();
|
|
13197
|
+
const componentLView = getComponentLViewByIndex(tNode.index, lView);
|
|
13198
|
+
markViewDirty(componentLView, 1 /* NotificationSource.SetInput */);
|
|
13175
13199
|
// TODO(pk): don't check on each and every binding, just assert in dev mode
|
|
13176
13200
|
const targetDef = tView.directiveRegistry[targetDirectiveIdx];
|
|
13177
13201
|
if (ngDevMode && !targetDef) {
|
|
@@ -13369,13 +13393,22 @@ function createRootLViewEnvironment(rootLViewInjector) {
|
|
|
13369
13393
|
ngReflect,
|
|
13370
13394
|
};
|
|
13371
13395
|
}
|
|
13372
|
-
function createHostElement(componentDef,
|
|
13396
|
+
function createHostElement(componentDef, renderer) {
|
|
13373
13397
|
// Determine a tag name used for creating host elements when this component is created
|
|
13374
13398
|
// dynamically. Default to 'div' if this component did not specify any tag name in its
|
|
13375
13399
|
// selector.
|
|
13376
|
-
const tagName = (componentDef
|
|
13400
|
+
const tagName = inferTagNameFromDefinition(componentDef);
|
|
13377
13401
|
const namespace = tagName === 'svg' ? SVG_NAMESPACE : tagName === 'math' ? MATH_ML_NAMESPACE : null;
|
|
13378
|
-
return createElementNode(
|
|
13402
|
+
return createElementNode(renderer, tagName, namespace);
|
|
13403
|
+
}
|
|
13404
|
+
/**
|
|
13405
|
+
* Infers the tag name that should be used for a component based on its definition.
|
|
13406
|
+
* @param componentDef Definition for which to resolve the tag name.
|
|
13407
|
+
*/
|
|
13408
|
+
function inferTagNameFromDefinition(componentDef) {
|
|
13409
|
+
// Take the tag name from the first selector in the
|
|
13410
|
+
// definition. If there is none, fall back to `div`.
|
|
13411
|
+
return (componentDef.selectors[0][0] || 'div').toLowerCase();
|
|
13379
13412
|
}
|
|
13380
13413
|
/**
|
|
13381
13414
|
* ComponentFactory interface implementation.
|
|
@@ -13478,7 +13511,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
13478
13511
|
}
|
|
13479
13512
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
13480
13513
|
const tAttributes = rootSelectorOrNode
|
|
13481
|
-
? ['ng-version', '20.2.0-next.
|
|
13514
|
+
? ['ng-version', '20.2.0-next.2']
|
|
13482
13515
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
13483
13516
|
extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
13484
13517
|
let creationBindings = null;
|
|
@@ -19234,6 +19267,29 @@ function enableProfiling() {
|
|
|
19234
19267
|
return () => { };
|
|
19235
19268
|
}
|
|
19236
19269
|
|
|
19270
|
+
/**
|
|
19271
|
+
* Retrieves transfer state data from the DOM using the provided injector to get APP_ID.
|
|
19272
|
+
* This approach works by getting the APP_ID from the injector and then finding the
|
|
19273
|
+
* corresponding transfer state script tag. Internal framework keys used for hydration
|
|
19274
|
+
* are stripped from the result.
|
|
19275
|
+
*
|
|
19276
|
+
* @param injector - The injector to use for getting APP_ID
|
|
19277
|
+
* @returns The transfer state data as an object, or empty object if not available
|
|
19278
|
+
*/
|
|
19279
|
+
function getTransferState(injector) {
|
|
19280
|
+
const doc = getDocument();
|
|
19281
|
+
const appId = injector.get(APP_ID);
|
|
19282
|
+
const transferState = retrieveTransferredState(doc, appId);
|
|
19283
|
+
// Strip internal keys
|
|
19284
|
+
const filteredEntries = {};
|
|
19285
|
+
for (const [key, value] of Object.entries(transferState)) {
|
|
19286
|
+
if (!isInternalHydrationTransferStateKey(key)) {
|
|
19287
|
+
filteredEntries[key] = value;
|
|
19288
|
+
}
|
|
19289
|
+
}
|
|
19290
|
+
return filteredEntries;
|
|
19291
|
+
}
|
|
19292
|
+
|
|
19237
19293
|
/// <reference path="../../../../goog.d.ts" />
|
|
19238
19294
|
/**
|
|
19239
19295
|
* This file introduces series of globally accessible debug tools
|
|
@@ -19263,6 +19319,7 @@ const globalUtilsFunctions = {
|
|
|
19263
19319
|
'ɵsetProfiler': setProfiler,
|
|
19264
19320
|
'ɵgetSignalGraph': getSignalGraph,
|
|
19265
19321
|
'ɵgetDeferBlocks': getDeferBlocks,
|
|
19322
|
+
'ɵgetTransferState': getTransferState,
|
|
19266
19323
|
'getDirectiveMetadata': getDirectiveMetadata$1,
|
|
19267
19324
|
'getComponent': getComponent,
|
|
19268
19325
|
'getContext': getContext,
|
|
@@ -21565,6 +21622,59 @@ function ɵɵdeferHydrateOnViewport() {
|
|
|
21565
21622
|
// since these instructions won't exist for dehydrated content.
|
|
21566
21623
|
}
|
|
21567
21624
|
|
|
21625
|
+
const ARIA_PREFIX = 'aria';
|
|
21626
|
+
/**
|
|
21627
|
+
* Update an ARIA attribute by either its attribute or property name on a selected element.
|
|
21628
|
+
*
|
|
21629
|
+
* If the property name also exists as an input property on any of the element's directives, those
|
|
21630
|
+
* inputs will be set instead of the element property.
|
|
21631
|
+
*
|
|
21632
|
+
* @param name Name of the ARIA attribute or property (beginning with `aria`).
|
|
21633
|
+
* @param value New value to write.
|
|
21634
|
+
* @returns This function returns itself so that it may be chained.
|
|
21635
|
+
*
|
|
21636
|
+
* @codeGenApi
|
|
21637
|
+
*/
|
|
21638
|
+
function ɵɵariaProperty(name, value) {
|
|
21639
|
+
const lView = getLView();
|
|
21640
|
+
const bindingIndex = nextBindingIndex();
|
|
21641
|
+
if (bindingUpdated(lView, bindingIndex, value)) {
|
|
21642
|
+
const tView = getTView();
|
|
21643
|
+
const tNode = getSelectedTNode();
|
|
21644
|
+
const hasSetInput = setAllInputsForProperty(tNode, tView, lView, name, value);
|
|
21645
|
+
if (hasSetInput) {
|
|
21646
|
+
isComponentHost(tNode) && markDirtyIfOnPush(lView, tNode.index);
|
|
21647
|
+
ngDevMode && setNgReflectProperties(lView, tView, tNode, name, value);
|
|
21648
|
+
}
|
|
21649
|
+
else {
|
|
21650
|
+
ngDevMode && assertTNodeType(tNode, 2 /* TNodeType.Element */);
|
|
21651
|
+
const element = getNativeByTNode(tNode, lView);
|
|
21652
|
+
const attributeName = ariaAttrName(name);
|
|
21653
|
+
setElementAttribute(lView[RENDERER], element, null, tNode.value, attributeName, value, null);
|
|
21654
|
+
}
|
|
21655
|
+
ngDevMode && storePropertyBindingMetadata(tView.data, tNode, name, bindingIndex);
|
|
21656
|
+
}
|
|
21657
|
+
return ɵɵariaProperty;
|
|
21658
|
+
}
|
|
21659
|
+
/**
|
|
21660
|
+
* Converts an ARIA property name to its corresponding attribute name, if necessary.
|
|
21661
|
+
*
|
|
21662
|
+
* For example, converts `ariaLabel` to `aria-label`.
|
|
21663
|
+
*
|
|
21664
|
+
* https://www.w3.org/TR/wai-aria-1.2/#accessibilityroleandproperties-correspondence
|
|
21665
|
+
*
|
|
21666
|
+
* This must be kept in sync with the the function of the same name in
|
|
21667
|
+
* packages/compiler/src/template/pipeline/src/phases/reify.ts
|
|
21668
|
+
*
|
|
21669
|
+
* @param name A property name that starts with `aria`.
|
|
21670
|
+
* @returns The corresponding attribute name.
|
|
21671
|
+
*/
|
|
21672
|
+
function ariaAttrName(name) {
|
|
21673
|
+
return name.charAt(ARIA_PREFIX.length) !== '-'
|
|
21674
|
+
? ARIA_PREFIX + '-' + name.slice(ARIA_PREFIX.length).toLowerCase()
|
|
21675
|
+
: name; // Property already has attribute name.
|
|
21676
|
+
}
|
|
21677
|
+
|
|
21568
21678
|
/**
|
|
21569
21679
|
* Updates the value of or removes a bound attribute on an Element.
|
|
21570
21680
|
*
|
|
@@ -21590,6 +21700,488 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
|
|
|
21590
21700
|
return ɵɵattribute;
|
|
21591
21701
|
}
|
|
21592
21702
|
|
|
21703
|
+
/**
|
|
21704
|
+
* A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
|
|
21705
|
+
*/
|
|
21706
|
+
const ANIMATIONS_DISABLED = new InjectionToken(ngDevMode ? 'AnimationsDisabled' : '', {
|
|
21707
|
+
providedIn: 'root',
|
|
21708
|
+
factory: () => false,
|
|
21709
|
+
});
|
|
21710
|
+
/**
|
|
21711
|
+
* Animation removal functions have a four second long maximum duration timeout.
|
|
21712
|
+
* This value mirrors from Chrome's cross document navigation view transition timeout.
|
|
21713
|
+
* It's intended to prevent people from accidentally forgetting to call the removal
|
|
21714
|
+
* function in their callback.
|
|
21715
|
+
*/
|
|
21716
|
+
const MAX_ANIMATION_TIMEOUT = 4000;
|
|
21717
|
+
/**
|
|
21718
|
+
* Registers elements for delayed removal action for animation in the case
|
|
21719
|
+
* that `animate.leave` is used. This stores the target element and any
|
|
21720
|
+
* classes, class resolvers, and callback functions that may be needed
|
|
21721
|
+
* to apply the removal animation, and then stashes the actual element
|
|
21722
|
+
* removal function from the dom renderer to be called after the
|
|
21723
|
+
* animation is finished.
|
|
21724
|
+
*/
|
|
21725
|
+
class ElementRegistry {
|
|
21726
|
+
outElements = new WeakMap();
|
|
21727
|
+
remove(el) {
|
|
21728
|
+
this.outElements.delete(el);
|
|
21729
|
+
}
|
|
21730
|
+
/** Used when animate.leave is only applying classes */
|
|
21731
|
+
trackClasses(details, classes) {
|
|
21732
|
+
const classList = typeof classes === 'string' ? [classes] : classes;
|
|
21733
|
+
for (let klass of classList) {
|
|
21734
|
+
details.classes?.add(klass);
|
|
21735
|
+
}
|
|
21736
|
+
}
|
|
21737
|
+
/** Used when animate.leave is applying classes via a bound attribute
|
|
21738
|
+
* which requires resolving the binding function at the right time
|
|
21739
|
+
* to get the proper class list. There may be multiple resolvers due
|
|
21740
|
+
* to composition via host bindings.
|
|
21741
|
+
*/
|
|
21742
|
+
trackResolver(details, resolver) {
|
|
21743
|
+
if (!details.classFns) {
|
|
21744
|
+
details.classFns = [resolver];
|
|
21745
|
+
}
|
|
21746
|
+
else {
|
|
21747
|
+
details.classFns.push(resolver);
|
|
21748
|
+
}
|
|
21749
|
+
}
|
|
21750
|
+
/** Used when `animate.leave` is using the function signature and will have a
|
|
21751
|
+
* callback function, rather than a list of classes.
|
|
21752
|
+
*/
|
|
21753
|
+
addCallback(el, value, animateWrapperFn) {
|
|
21754
|
+
const details = this.outElements.get(el) ?? {
|
|
21755
|
+
classes: null,
|
|
21756
|
+
animateFn: () => { },
|
|
21757
|
+
};
|
|
21758
|
+
details.animateFn = animateWrapperFn(el, value);
|
|
21759
|
+
this.outElements.set(el, details);
|
|
21760
|
+
}
|
|
21761
|
+
/** Used when `animate.leave` is using classes. */
|
|
21762
|
+
add(el, value, animateWrapperFn) {
|
|
21763
|
+
const details = this.outElements.get(el) ?? {
|
|
21764
|
+
classes: new Set(),
|
|
21765
|
+
animateFn: () => { },
|
|
21766
|
+
};
|
|
21767
|
+
if (typeof value === 'function') {
|
|
21768
|
+
this.trackResolver(details, value);
|
|
21769
|
+
}
|
|
21770
|
+
else {
|
|
21771
|
+
this.trackClasses(details, value);
|
|
21772
|
+
}
|
|
21773
|
+
details.animateFn = animateWrapperFn(el, details.classes, details.classFns);
|
|
21774
|
+
this.outElements.set(el, details);
|
|
21775
|
+
}
|
|
21776
|
+
has(el) {
|
|
21777
|
+
return this.outElements.has(el);
|
|
21778
|
+
}
|
|
21779
|
+
/** This is called by the dom renderer to actually initiate the animation
|
|
21780
|
+
* using the animateFn stored in the registry. The DOM renderer passes in
|
|
21781
|
+
* the removal function to be fired off when the animation finishes.
|
|
21782
|
+
*/
|
|
21783
|
+
animate(el, removeFn) {
|
|
21784
|
+
if (!this.outElements.has(el))
|
|
21785
|
+
return;
|
|
21786
|
+
const details = this.outElements.get(el);
|
|
21787
|
+
let timeoutId;
|
|
21788
|
+
let called = false;
|
|
21789
|
+
const remove = () => {
|
|
21790
|
+
// This called check is to prevent a rare race condition where the timing of removal
|
|
21791
|
+
// might result in the removal function being called twice.
|
|
21792
|
+
if (called)
|
|
21793
|
+
return;
|
|
21794
|
+
called = true;
|
|
21795
|
+
clearTimeout(timeoutId);
|
|
21796
|
+
this.remove(el);
|
|
21797
|
+
removeFn();
|
|
21798
|
+
};
|
|
21799
|
+
// this timeout is used to ensure elements actually get removed in the case
|
|
21800
|
+
// that the user forgot to call the remove callback. The timeout is cleared
|
|
21801
|
+
// in the DOM renderer during the remove child process.
|
|
21802
|
+
timeoutId = setTimeout(remove, MAX_ANIMATION_TIMEOUT);
|
|
21803
|
+
details.animateFn(remove);
|
|
21804
|
+
}
|
|
21805
|
+
}
|
|
21806
|
+
|
|
21807
|
+
const DEFAULT_ANIMATIONS_DISABLED = false;
|
|
21808
|
+
const WS_REGEXP = /\s+/;
|
|
21809
|
+
const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
|
|
21810
|
+
typeof document !== 'undefined' &&
|
|
21811
|
+
// tslint:disable-next-line:no-toplevel-property-access
|
|
21812
|
+
typeof document?.documentElement?.getAnimations === 'function';
|
|
21813
|
+
const noOpAnimationComplete = () => { };
|
|
21814
|
+
/**
|
|
21815
|
+
* Instruction to handle the `animate.enter` behavior for class bindings.
|
|
21816
|
+
*
|
|
21817
|
+
* @param value The value bound to `animate.enter`, which is a string or a string array.
|
|
21818
|
+
* @returns This function returns itself so that it may be chained.
|
|
21819
|
+
*
|
|
21820
|
+
* @codeGenApi
|
|
21821
|
+
*/
|
|
21822
|
+
function ɵɵanimateEnter(value) {
|
|
21823
|
+
performanceMarkFeature('NgAnimateEnter');
|
|
21824
|
+
if ((typeof ngServerMode !== 'undefined' && ngServerMode) || !areAnimationSupported) {
|
|
21825
|
+
return ɵɵanimateEnter;
|
|
21826
|
+
}
|
|
21827
|
+
ngDevMode && assertAnimationTypes(value, 'animate.enter');
|
|
21828
|
+
const lView = getLView();
|
|
21829
|
+
const tNode = getCurrentTNode();
|
|
21830
|
+
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21831
|
+
const renderer = lView[RENDERER];
|
|
21832
|
+
const injector = lView[INJECTOR];
|
|
21833
|
+
const ngZone = injector.get(NgZone);
|
|
21834
|
+
const animationsDisabled = injector.get(ANIMATIONS_DISABLED, DEFAULT_ANIMATIONS_DISABLED);
|
|
21835
|
+
// Retrieve the actual class list from the value. This will resolve any resolver functions from
|
|
21836
|
+
// bindings.
|
|
21837
|
+
const activeClasses = getClassListFromValue(value);
|
|
21838
|
+
let longestAnimation;
|
|
21839
|
+
const cleanupFns = [];
|
|
21840
|
+
// In the case where multiple animations are happening on the element, we need
|
|
21841
|
+
// to get the longest animation to ensure we don't complete animations early.
|
|
21842
|
+
// This also allows us to setup cancellation of animations in progress if the
|
|
21843
|
+
// gets removed early.
|
|
21844
|
+
const handleAnimationStart = (event) => {
|
|
21845
|
+
setupAnimationCancel(event, activeClasses, renderer);
|
|
21846
|
+
longestAnimation = getLongestAnimation(event);
|
|
21847
|
+
const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
|
|
21848
|
+
ngZone.runOutsideAngular(() => {
|
|
21849
|
+
cleanupFns.push(renderer.listen(nativeElement, eventName, handleInAnimationEnd));
|
|
21850
|
+
});
|
|
21851
|
+
};
|
|
21852
|
+
// When the longest animation ends, we can remove all the classes
|
|
21853
|
+
const handleInAnimationEnd = (event) => {
|
|
21854
|
+
animationEnd(event, nativeElement, longestAnimation, activeClasses, renderer, cleanupFns);
|
|
21855
|
+
};
|
|
21856
|
+
// We only need to add these event listeners if there are actual classes to apply
|
|
21857
|
+
if (activeClasses && activeClasses.length > 0) {
|
|
21858
|
+
if (!animationsDisabled) {
|
|
21859
|
+
ngZone.runOutsideAngular(() => {
|
|
21860
|
+
cleanupFns.push(renderer.listen(nativeElement, 'animationstart', handleAnimationStart));
|
|
21861
|
+
cleanupFns.push(renderer.listen(nativeElement, 'transitionstart', handleAnimationStart));
|
|
21862
|
+
});
|
|
21863
|
+
}
|
|
21864
|
+
for (const klass of activeClasses) {
|
|
21865
|
+
renderer.addClass(nativeElement, klass);
|
|
21866
|
+
}
|
|
21867
|
+
}
|
|
21868
|
+
if (animationsDisabled) {
|
|
21869
|
+
// The animations will only be disabled in a test environment, and adding a microtask here
|
|
21870
|
+
// will allow the tests to be able to tick forward to resolve the next phase of animation
|
|
21871
|
+
// in their tests.
|
|
21872
|
+
Promise.resolve().then(() => {
|
|
21873
|
+
if (activeClasses !== null) {
|
|
21874
|
+
for (const klass of activeClasses) {
|
|
21875
|
+
renderer.removeClass(nativeElement, klass);
|
|
21876
|
+
}
|
|
21877
|
+
}
|
|
21878
|
+
for (const fn of cleanupFns) {
|
|
21879
|
+
fn();
|
|
21880
|
+
}
|
|
21881
|
+
// Classes remain, no animation, no automatic cleanup of these classes by this instruction.
|
|
21882
|
+
});
|
|
21883
|
+
}
|
|
21884
|
+
return ɵɵanimateEnter; // For chaining
|
|
21885
|
+
}
|
|
21886
|
+
/**
|
|
21887
|
+
* Instruction to handle the `(animate.enter)` behavior for event bindings, aka when
|
|
21888
|
+
* a user wants to use a custom animation function rather than a class.
|
|
21889
|
+
*
|
|
21890
|
+
* @param value The value bound to `(animate.enter)`, an AnimationFunction.
|
|
21891
|
+
* @returns This function returns itself so that it may be chained.
|
|
21892
|
+
*
|
|
21893
|
+
* @codeGenApi
|
|
21894
|
+
*/
|
|
21895
|
+
function ɵɵanimateEnterListener(value) {
|
|
21896
|
+
performanceMarkFeature('NgAnimateEnter');
|
|
21897
|
+
if ((typeof ngServerMode !== 'undefined' && ngServerMode) || !areAnimationSupported) {
|
|
21898
|
+
return ɵɵanimateEnterListener;
|
|
21899
|
+
}
|
|
21900
|
+
ngDevMode && assertAnimationTypes(value, 'animate.enter');
|
|
21901
|
+
const lView = getLView();
|
|
21902
|
+
const tNode = getCurrentTNode();
|
|
21903
|
+
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21904
|
+
value.call(lView[CONTEXT], { target: nativeElement, animationComplete: noOpAnimationComplete });
|
|
21905
|
+
return ɵɵanimateEnterListener;
|
|
21906
|
+
}
|
|
21907
|
+
/**
|
|
21908
|
+
* Instruction to handle the `animate.leave` behavior for class animations.
|
|
21909
|
+
* It registers an animation with the ElementRegistry to be run when the element
|
|
21910
|
+
* is scheduled for removal from the DOM.
|
|
21911
|
+
*
|
|
21912
|
+
* @param value The value bound to `animate.leave`, which can be a string or string array.
|
|
21913
|
+
* @returns This function returns itself so that it may be chained.
|
|
21914
|
+
*
|
|
21915
|
+
* @codeGenApi
|
|
21916
|
+
*/
|
|
21917
|
+
function ɵɵanimateLeave(value) {
|
|
21918
|
+
performanceMarkFeature('NgAnimateLeave');
|
|
21919
|
+
if ((typeof ngServerMode !== 'undefined' && ngServerMode) || !areAnimationSupported) {
|
|
21920
|
+
return ɵɵanimateLeave;
|
|
21921
|
+
}
|
|
21922
|
+
ngDevMode && assertAnimationTypes(value, 'animate.leave');
|
|
21923
|
+
const lView = getLView();
|
|
21924
|
+
const tView = getTView();
|
|
21925
|
+
const tNode = getCurrentTNode();
|
|
21926
|
+
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21927
|
+
// This instruction is called in the update pass.
|
|
21928
|
+
const renderer = lView[RENDERER];
|
|
21929
|
+
const injector = lView[INJECTOR];
|
|
21930
|
+
// Assume ElementRegistry and ANIMATIONS_DISABLED are injectable services.
|
|
21931
|
+
const elementRegistry = getAnimationElementRemovalRegistry();
|
|
21932
|
+
ngDevMode &&
|
|
21933
|
+
assertDefined(elementRegistry.elements, 'Expected `ElementRegistry` to be present in animations subsystem');
|
|
21934
|
+
const animationsDisabled = injector.get(ANIMATIONS_DISABLED, DEFAULT_ANIMATIONS_DISABLED);
|
|
21935
|
+
const ngZone = injector.get(NgZone);
|
|
21936
|
+
// This function gets stashed in the registry to be used once the element removal process
|
|
21937
|
+
// begins. We pass in the values and resolvers so as to evaluate the resolved classes
|
|
21938
|
+
// at the latest possible time, meaning we evaluate them right before the animation
|
|
21939
|
+
// begins.
|
|
21940
|
+
const animate = (el, value, resolvers) => {
|
|
21941
|
+
return (removalFn) => {
|
|
21942
|
+
animateLeaveClassRunner(el, getClassList(value, resolvers), removalFn, renderer, animationsDisabled, ngZone);
|
|
21943
|
+
};
|
|
21944
|
+
};
|
|
21945
|
+
// Ensure cleanup if the LView is destroyed before the animation runs.
|
|
21946
|
+
if (lView[FLAGS] & 8 /* LViewFlags.FirstLViewPass */) {
|
|
21947
|
+
storeCleanupWithContext(tView, lView, nativeElement, (elToClean) => {
|
|
21948
|
+
elementRegistry.elements.remove(elToClean);
|
|
21949
|
+
});
|
|
21950
|
+
}
|
|
21951
|
+
elementRegistry.elements.add(nativeElement, value, animate);
|
|
21952
|
+
return ɵɵanimateLeave; // For chaining
|
|
21953
|
+
}
|
|
21954
|
+
/**
|
|
21955
|
+
* Instruction to handle the `(animate.leave)` behavior for event bindings, aka when
|
|
21956
|
+
* a user wants to use a custom animation function rather than a class. It registers
|
|
21957
|
+
* an animation with the ElementRegistry to be run when the element is scheduled for
|
|
21958
|
+
* removal from the DOM.
|
|
21959
|
+
*
|
|
21960
|
+
* @param value The value bound to `(animate.leave)`, an AnimationFunction.
|
|
21961
|
+
* @returns This function returns itself so that it may be chained.
|
|
21962
|
+
*
|
|
21963
|
+
* @codeGenApi
|
|
21964
|
+
*/
|
|
21965
|
+
function ɵɵanimateLeaveListener(value) {
|
|
21966
|
+
performanceMarkFeature('NgAnimateLeave');
|
|
21967
|
+
if ((typeof ngServerMode !== 'undefined' && ngServerMode) || !areAnimationSupported) {
|
|
21968
|
+
return ɵɵanimateLeaveListener;
|
|
21969
|
+
}
|
|
21970
|
+
ngDevMode && assertAnimationTypes(value, 'animate.leave');
|
|
21971
|
+
const lView = getLView();
|
|
21972
|
+
const tNode = getCurrentTNode();
|
|
21973
|
+
const tView = getTView();
|
|
21974
|
+
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21975
|
+
if (nativeElement.nodeType !== Node.ELEMENT_NODE) {
|
|
21976
|
+
return ɵɵanimateLeaveListener;
|
|
21977
|
+
}
|
|
21978
|
+
// Assume ElementRegistry and ANIMATIONS_DISABLED are injectable services.
|
|
21979
|
+
const injector = lView[INJECTOR];
|
|
21980
|
+
const elementRegistry = getAnimationElementRemovalRegistry();
|
|
21981
|
+
ngDevMode &&
|
|
21982
|
+
assertDefined(elementRegistry.elements, 'Expected `ElementRegistry` to be present in animations subsystem');
|
|
21983
|
+
const animationsDisabled = injector.get(ANIMATIONS_DISABLED, DEFAULT_ANIMATIONS_DISABLED);
|
|
21984
|
+
const animate = (el, value) => {
|
|
21985
|
+
return (removeFn) => {
|
|
21986
|
+
const event = {
|
|
21987
|
+
target: nativeElement,
|
|
21988
|
+
animationComplete: () => {
|
|
21989
|
+
removeFn();
|
|
21990
|
+
},
|
|
21991
|
+
};
|
|
21992
|
+
if (animationsDisabled) {
|
|
21993
|
+
// add a microtask for test environments to be able to see classes
|
|
21994
|
+
// were added, then removed.
|
|
21995
|
+
Promise.resolve().then(() => {
|
|
21996
|
+
removeFn();
|
|
21997
|
+
});
|
|
21998
|
+
}
|
|
21999
|
+
else {
|
|
22000
|
+
value.call(lView[CONTEXT], event);
|
|
22001
|
+
}
|
|
22002
|
+
};
|
|
22003
|
+
};
|
|
22004
|
+
// Ensure cleanup if the LView is destroyed before the animation runs.
|
|
22005
|
+
if (lView[FLAGS] & 8 /* LViewFlags.FirstLViewPass */) {
|
|
22006
|
+
storeCleanupWithContext(tView, lView, nativeElement, (elToClean) => {
|
|
22007
|
+
elementRegistry.elements.remove(elToClean);
|
|
22008
|
+
});
|
|
22009
|
+
}
|
|
22010
|
+
elementRegistry.elements.addCallback(nativeElement, value, animate);
|
|
22011
|
+
return ɵɵanimateLeaveListener; // For chaining
|
|
22012
|
+
}
|
|
22013
|
+
/**
|
|
22014
|
+
* Builds the list of classes to apply to an element based on either the passed in list of strings
|
|
22015
|
+
* or the set of resolver functions that are coming from bindings. Those resolver functions should
|
|
22016
|
+
* resolve into either a string or a string array. There may be multiple to support composition.
|
|
22017
|
+
*/
|
|
22018
|
+
function getClassList(value, resolvers) {
|
|
22019
|
+
const classList = new Set(value);
|
|
22020
|
+
if (resolvers && resolvers.length) {
|
|
22021
|
+
for (const resolverFn of resolvers) {
|
|
22022
|
+
const resolvedValue = resolverFn();
|
|
22023
|
+
if (resolvedValue instanceof Array) {
|
|
22024
|
+
for (const rv of resolvedValue) {
|
|
22025
|
+
classList.add(rv);
|
|
22026
|
+
}
|
|
22027
|
+
}
|
|
22028
|
+
else {
|
|
22029
|
+
classList.add(resolvedValue);
|
|
22030
|
+
}
|
|
22031
|
+
}
|
|
22032
|
+
}
|
|
22033
|
+
return classList;
|
|
22034
|
+
}
|
|
22035
|
+
function cancelAnimationsIfRunning(element) {
|
|
22036
|
+
if (areAnimationSupported) {
|
|
22037
|
+
for (const animation of element.getAnimations()) {
|
|
22038
|
+
if (animation.playState === 'running') {
|
|
22039
|
+
animation.cancel();
|
|
22040
|
+
}
|
|
22041
|
+
}
|
|
22042
|
+
}
|
|
22043
|
+
}
|
|
22044
|
+
/**
|
|
22045
|
+
* Multiple animations can be set on an element. This grabs an element and
|
|
22046
|
+
* determines which of those will be the longest duration. If we didn't do
|
|
22047
|
+
* this, elements would be removed whenever the first animation completes.
|
|
22048
|
+
* This ensures we get the longest running animation and only remove when
|
|
22049
|
+
* that animation completes.
|
|
22050
|
+
*/
|
|
22051
|
+
function getLongestAnimation(event) {
|
|
22052
|
+
if (!areAnimationSupported || !(event.target instanceof Element))
|
|
22053
|
+
return;
|
|
22054
|
+
const nativeElement = event.target;
|
|
22055
|
+
const animations = nativeElement.getAnimations();
|
|
22056
|
+
if (animations.length === 0)
|
|
22057
|
+
return;
|
|
22058
|
+
let currentLongest = {
|
|
22059
|
+
animationName: undefined,
|
|
22060
|
+
propertyName: undefined,
|
|
22061
|
+
duration: 0,
|
|
22062
|
+
};
|
|
22063
|
+
for (const animation of animations) {
|
|
22064
|
+
const timing = animation.effect?.getTiming();
|
|
22065
|
+
// duration can be a string 'auto' or a number.
|
|
22066
|
+
const animDuration = typeof timing?.duration === 'number' ? timing.duration : 0;
|
|
22067
|
+
let duration = (timing?.delay ?? 0) + animDuration;
|
|
22068
|
+
let propertyName;
|
|
22069
|
+
let animationName;
|
|
22070
|
+
if (animation.animationName) {
|
|
22071
|
+
animationName = animation.animationName;
|
|
22072
|
+
}
|
|
22073
|
+
else {
|
|
22074
|
+
// Check for CSSTransition specific property
|
|
22075
|
+
propertyName = animation.transitionProperty;
|
|
22076
|
+
}
|
|
22077
|
+
if (duration >= currentLongest.duration) {
|
|
22078
|
+
currentLongest = { animationName, propertyName, duration };
|
|
22079
|
+
}
|
|
22080
|
+
}
|
|
22081
|
+
return currentLongest;
|
|
22082
|
+
}
|
|
22083
|
+
function getClassListFromValue(value) {
|
|
22084
|
+
const classes = typeof value === 'function' ? value() : value;
|
|
22085
|
+
let classList = classes instanceof Array ? classes : null;
|
|
22086
|
+
if (typeof classes === 'string') {
|
|
22087
|
+
classList = classes
|
|
22088
|
+
.trim()
|
|
22089
|
+
.split(WS_REGEXP)
|
|
22090
|
+
.filter((k) => k);
|
|
22091
|
+
}
|
|
22092
|
+
return classList;
|
|
22093
|
+
}
|
|
22094
|
+
function setupAnimationCancel(event, classList, renderer) {
|
|
22095
|
+
if (!(event.target instanceof Element))
|
|
22096
|
+
return;
|
|
22097
|
+
const nativeElement = event.target;
|
|
22098
|
+
if (areAnimationSupported) {
|
|
22099
|
+
const animations = nativeElement.getAnimations();
|
|
22100
|
+
if (animations.length === 0)
|
|
22101
|
+
return;
|
|
22102
|
+
for (let animation of animations) {
|
|
22103
|
+
animation.addEventListener('cancel', (event) => {
|
|
22104
|
+
if (nativeElement === event.target) {
|
|
22105
|
+
if (classList !== null) {
|
|
22106
|
+
for (const klass of classList) {
|
|
22107
|
+
renderer.removeClass(nativeElement, klass);
|
|
22108
|
+
}
|
|
22109
|
+
}
|
|
22110
|
+
}
|
|
22111
|
+
});
|
|
22112
|
+
}
|
|
22113
|
+
}
|
|
22114
|
+
}
|
|
22115
|
+
function isLongestAnimation(event, nativeElement, longestAnimation) {
|
|
22116
|
+
return (nativeElement === event.target &&
|
|
22117
|
+
longestAnimation !== undefined &&
|
|
22118
|
+
((longestAnimation.animationName !== undefined &&
|
|
22119
|
+
event.animationName === longestAnimation.animationName) ||
|
|
22120
|
+
(longestAnimation.propertyName !== undefined &&
|
|
22121
|
+
event.propertyName === longestAnimation.propertyName)));
|
|
22122
|
+
}
|
|
22123
|
+
function animationEnd(event, nativeElement, longestAnimation, classList, renderer, cleanupFns) {
|
|
22124
|
+
if (isLongestAnimation(event, nativeElement, longestAnimation)) {
|
|
22125
|
+
// Now that we've found the longest animation, there's no need
|
|
22126
|
+
// to keep bubbling up this event as it's not going to apply to
|
|
22127
|
+
// other elements further up. We don't want it to inadvertently
|
|
22128
|
+
// affect any other animations on the page.
|
|
22129
|
+
event.stopImmediatePropagation();
|
|
22130
|
+
if (classList !== null) {
|
|
22131
|
+
for (const klass of classList) {
|
|
22132
|
+
renderer.removeClass(nativeElement, klass);
|
|
22133
|
+
}
|
|
22134
|
+
}
|
|
22135
|
+
for (const fn of cleanupFns) {
|
|
22136
|
+
fn();
|
|
22137
|
+
}
|
|
22138
|
+
}
|
|
22139
|
+
}
|
|
22140
|
+
function assertAnimationTypes(value, instruction) {
|
|
22141
|
+
if (value == null || (typeof value !== 'string' && typeof value !== 'function')) {
|
|
22142
|
+
throw new RuntimeError(650 /* RuntimeErrorCode.ANIMATE_INVALID_VALUE */, `'${instruction}' value must be a string of CSS classes or an animation function, got ${stringify(value)}`);
|
|
22143
|
+
}
|
|
22144
|
+
}
|
|
22145
|
+
/**
|
|
22146
|
+
* This function actually adds the classes that animate element that's leaving the DOM.
|
|
22147
|
+
* Once it finishes, it calls the remove function that was provided by the DOM renderer.
|
|
22148
|
+
*/
|
|
22149
|
+
function animateLeaveClassRunner(el, classList, finalRemoveFn, renderer, animationsDisabled, ngZone) {
|
|
22150
|
+
cancelAnimationsIfRunning(el);
|
|
22151
|
+
let longestAnimation;
|
|
22152
|
+
const handleAnimationStart = (event) => {
|
|
22153
|
+
longestAnimation = getLongestAnimation(event);
|
|
22154
|
+
};
|
|
22155
|
+
const handleOutAnimationEnd = (event) => {
|
|
22156
|
+
if (isLongestAnimation(event, el, longestAnimation)) {
|
|
22157
|
+
// Now that we've found the longest animation, there's no need
|
|
22158
|
+
// to keep bubbling up this event as it's not going to apply to
|
|
22159
|
+
// other elements further up. We don't want it to inadvertently
|
|
22160
|
+
// affect any other animations on the page.
|
|
22161
|
+
event.stopImmediatePropagation();
|
|
22162
|
+
finalRemoveFn();
|
|
22163
|
+
}
|
|
22164
|
+
};
|
|
22165
|
+
if (!animationsDisabled) {
|
|
22166
|
+
ngZone.runOutsideAngular(() => {
|
|
22167
|
+
renderer.listen(el, 'animationstart', handleAnimationStart, { once: true });
|
|
22168
|
+
renderer.listen(el, 'transitionstart', handleAnimationStart, { once: true });
|
|
22169
|
+
renderer.listen(el, 'animationend', handleOutAnimationEnd);
|
|
22170
|
+
renderer.listen(el, 'transitionend', handleOutAnimationEnd);
|
|
22171
|
+
});
|
|
22172
|
+
}
|
|
22173
|
+
for (const item of classList) {
|
|
22174
|
+
renderer.addClass(el, item);
|
|
22175
|
+
}
|
|
22176
|
+
if (animationsDisabled) {
|
|
22177
|
+
// add a microtask for test environments to be able to see classes
|
|
22178
|
+
// were added, then removed.
|
|
22179
|
+
Promise.resolve().then(() => {
|
|
22180
|
+
finalRemoveFn();
|
|
22181
|
+
});
|
|
22182
|
+
}
|
|
22183
|
+
}
|
|
22184
|
+
|
|
21593
22185
|
/*!
|
|
21594
22186
|
* @license
|
|
21595
22187
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -27232,8 +27824,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
27232
27824
|
const endIndex = tNode.directiveStart;
|
|
27233
27825
|
const cptViewProvidersCount = tNode.providerIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
|
|
27234
27826
|
if (isTypeProvider(provider) || !provider.multi) {
|
|
27235
|
-
|
|
27236
|
-
const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject);
|
|
27827
|
+
const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject, ngDevMode ? providerName(provider) : null);
|
|
27237
27828
|
const existingFactoryIndex = indexOf(token, tInjectables, isViewProvider ? beginIndex : beginIndex + cptViewProvidersCount, endIndex);
|
|
27238
27829
|
if (existingFactoryIndex === -1) {
|
|
27239
27830
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);
|
|
@@ -27282,7 +27873,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
27282
27873
|
(!isViewProvider && !doesProvidersFactoryExist)) {
|
|
27283
27874
|
// Cases 1.a and 2.a
|
|
27284
27875
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);
|
|
27285
|
-
const factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent, providerFactory);
|
|
27876
|
+
const factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent, providerFactory, provider);
|
|
27286
27877
|
if (!isViewProvider && doesViewProvidersFactoryExist) {
|
|
27287
27878
|
lInjectablesBlueprint[existingViewProvidersFactoryIndex].providerFactory = factory;
|
|
27288
27879
|
}
|
|
@@ -27410,14 +28001,37 @@ function multiResolve(factories, result) {
|
|
|
27410
28001
|
/**
|
|
27411
28002
|
* Creates a multi factory.
|
|
27412
28003
|
*/
|
|
27413
|
-
function multiFactory(factoryFn, index, isViewProvider, isComponent, f) {
|
|
27414
|
-
const factory = new NodeInjectorFactory(factoryFn, isViewProvider, ɵɵdirectiveInject);
|
|
28004
|
+
function multiFactory(factoryFn, index, isViewProvider, isComponent, f, provider) {
|
|
28005
|
+
const factory = new NodeInjectorFactory(factoryFn, isViewProvider, ɵɵdirectiveInject, ngDevMode ? providerName(provider) : null);
|
|
27415
28006
|
factory.multi = [];
|
|
27416
28007
|
factory.index = index;
|
|
27417
28008
|
factory.componentProviders = 0;
|
|
27418
28009
|
multiFactoryAdd(factory, f, isComponent && !isViewProvider);
|
|
27419
28010
|
return factory;
|
|
27420
28011
|
}
|
|
28012
|
+
function providerName(provider) {
|
|
28013
|
+
if (Array.isArray(provider)) {
|
|
28014
|
+
return null;
|
|
28015
|
+
}
|
|
28016
|
+
if (isTypeProvider(provider)) {
|
|
28017
|
+
return provider.name;
|
|
28018
|
+
}
|
|
28019
|
+
else if (isClassProvider(provider)) {
|
|
28020
|
+
if (provider.provide instanceof InjectionToken) {
|
|
28021
|
+
return `('${provider.provide.toString()}':${provider.useClass.name})`;
|
|
28022
|
+
}
|
|
28023
|
+
return provider.useClass.name;
|
|
28024
|
+
}
|
|
28025
|
+
else if (provider.provide instanceof InjectionToken) {
|
|
28026
|
+
return provider.provide.toString();
|
|
28027
|
+
}
|
|
28028
|
+
else if (typeof provider.provide === 'string') {
|
|
28029
|
+
return provider.provide;
|
|
28030
|
+
}
|
|
28031
|
+
else {
|
|
28032
|
+
return null;
|
|
28033
|
+
}
|
|
28034
|
+
}
|
|
27421
28035
|
|
|
27422
28036
|
/**
|
|
27423
28037
|
* This feature resolves the providers of a directive (or component),
|
|
@@ -27489,6 +28103,18 @@ function ɵɵExternalStylesFeature(styleUrls) {
|
|
|
27489
28103
|
};
|
|
27490
28104
|
}
|
|
27491
28105
|
|
|
28106
|
+
/**
|
|
28107
|
+
* This feature adds the element registry for delayed element removal when animate.leave
|
|
28108
|
+
* is utilized.
|
|
28109
|
+
*
|
|
28110
|
+
* @codeGenApi
|
|
28111
|
+
*/
|
|
28112
|
+
function ɵɵAnimationsFeature() {
|
|
28113
|
+
return () => {
|
|
28114
|
+
setAnimationElementRemovalRegistry(new ElementRegistry());
|
|
28115
|
+
};
|
|
28116
|
+
}
|
|
28117
|
+
|
|
27492
28118
|
/**
|
|
27493
28119
|
* Generated next to NgModules to monkey-patch directive and pipe references onto a component's
|
|
27494
28120
|
* definition, when generating a direct reference in the component file would otherwise create an
|
|
@@ -28422,6 +29048,10 @@ function resetProjectionState(tNode) {
|
|
|
28422
29048
|
* This should be kept up to date with the public exports of @angular/core.
|
|
28423
29049
|
*/
|
|
28424
29050
|
const angularCoreEnv = (() => ({
|
|
29051
|
+
'ɵɵanimateEnter': ɵɵanimateEnter,
|
|
29052
|
+
'ɵɵanimateEnterListener': ɵɵanimateEnterListener,
|
|
29053
|
+
'ɵɵanimateLeave': ɵɵanimateLeave,
|
|
29054
|
+
'ɵɵanimateLeaveListener': ɵɵanimateLeaveListener,
|
|
28425
29055
|
'ɵɵattribute': ɵɵattribute,
|
|
28426
29056
|
'ɵɵdefineComponent': ɵɵdefineComponent,
|
|
28427
29057
|
'ɵɵdefineDirective': ɵɵdefineDirective,
|
|
@@ -28443,6 +29073,7 @@ const angularCoreEnv = (() => ({
|
|
|
28443
29073
|
'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,
|
|
28444
29074
|
'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
|
|
28445
29075
|
'ɵɵExternalStylesFeature': ɵɵExternalStylesFeature,
|
|
29076
|
+
'ɵɵAnimationsFeature': ɵɵAnimationsFeature,
|
|
28446
29077
|
'ɵɵnextContext': ɵɵnextContext,
|
|
28447
29078
|
'ɵɵnamespaceHTML': __namespaceHTML,
|
|
28448
29079
|
'ɵɵnamespaceMathML': __namespaceMathML,
|
|
@@ -28486,6 +29117,7 @@ const angularCoreEnv = (() => ({
|
|
|
28486
29117
|
'ɵɵpipeBindV': ɵɵpipeBindV,
|
|
28487
29118
|
'ɵɵprojectionDef': ɵɵprojectionDef,
|
|
28488
29119
|
'ɵɵdomProperty': ɵɵdomProperty,
|
|
29120
|
+
'ɵɵariaProperty': ɵɵariaProperty,
|
|
28489
29121
|
'ɵɵproperty': ɵɵproperty,
|
|
28490
29122
|
'ɵɵpipe': ɵɵpipe,
|
|
28491
29123
|
'ɵɵqueryRefresh': ɵɵqueryRefresh,
|
|
@@ -30991,5 +31623,5 @@ function getDebugNode(nativeNode) {
|
|
|
30991
31623
|
return null;
|
|
30992
31624
|
}
|
|
30993
31625
|
|
|
30994
|
-
export { AFTER_RENDER_PHASES, 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, ElementRef, EnvironmentNgModuleRefAdapter, EventEmitter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, 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, 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, NgProbeToken, NgZone, NoopNgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, PROVIDED_NG_ZONE, Pipe, 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, 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, getNgZone, getNgZoneOptions, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, inputBinding, internalProvideZoneChangeDetection, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZoneChangeDetection, provideZonelessChangeDetection, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
31626
|
+
export { AFTER_RENDER_PHASES, 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, ElementRef, ElementRegistry, EnvironmentNgModuleRefAdapter, EventEmitter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, 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, 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, NgProbeToken, NgZone, NoopNgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, PROVIDED_NG_ZONE, Pipe, 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, 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, getNgZone, getNgZoneOptions, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, internalProvideZoneChangeDetection, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZoneChangeDetection, provideZonelessChangeDetection, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, readPatchedLView, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵAnimationsFeature, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
30995
31627
|
//# sourceMappingURL=debug_node.mjs.map
|