@angular/core 21.0.0-next.5 → 21.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{attribute.mjs → _attribute-chunk.mjs} +3 -3
- package/fesm2022/_attribute-chunk.mjs.map +1 -0
- package/fesm2022/{debug_node.mjs → _debug_node-chunk.mjs} +606 -92
- package/fesm2022/_debug_node-chunk.mjs.map +1 -0
- package/fesm2022/{effect.mjs → _effect-chunk.mjs} +4 -4
- package/fesm2022/_effect-chunk.mjs.map +1 -0
- package/fesm2022/{not_found.mjs → _not_found-chunk.mjs} +3 -3
- package/fesm2022/_not_found-chunk.mjs.map +1 -0
- package/fesm2022/{resource.mjs → _resource-chunk.mjs} +6 -6
- package/fesm2022/_resource-chunk.mjs.map +1 -0
- package/fesm2022/{root_effect_scheduler.mjs → _root_effect_scheduler-chunk.mjs} +6 -6
- package/fesm2022/_root_effect_scheduler-chunk.mjs.map +1 -0
- package/fesm2022/{signal.mjs → _signal-chunk.mjs} +10 -10
- package/fesm2022/_signal-chunk.mjs.map +1 -0
- package/fesm2022/{weak_ref.mjs → _weak_ref-chunk.mjs} +3 -3
- package/fesm2022/_weak_ref-chunk.mjs.map +1 -0
- package/fesm2022/core.mjs +14 -14
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/{primitives/di.mjs → primitives-di.mjs} +4 -4
- package/fesm2022/primitives-di.mjs.map +1 -0
- package/fesm2022/{primitives/event-dispatch.mjs → primitives-event-dispatch.mjs} +4 -4
- package/fesm2022/primitives-event-dispatch.mjs.map +1 -0
- package/fesm2022/primitives-signals.mjs +221 -0
- package/fesm2022/primitives-signals.mjs.map +1 -0
- package/fesm2022/rxjs-interop.mjs +7 -7
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +7 -7
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +12 -12
- package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +5 -5
- package/schematics/bundles/application-config-core.cjs +5 -5
- package/schematics/bundles/{apply_import_manager-Bx60Uquz.cjs → apply_import_manager-D_4NSuRa.cjs} +3 -3
- package/schematics/bundles/bootstrap-options-migration.cjs +5 -5
- package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
- package/schematics/bundles/{compiler_host-Aouk-n4F.cjs → compiler_host-C1KRWoxv.cjs} +2 -2
- package/schematics/bundles/control-flow-migration.cjs +22 -21
- package/schematics/bundles/imports-DwPXlGFl.cjs +1 -1
- package/schematics/bundles/{index-Bb6iejCd.cjs → index-BFENxhdR.cjs} +32 -36
- package/schematics/bundles/{index-BZQb51Qf.cjs → index-DYqR8Lpq.cjs} +4 -6
- package/schematics/bundles/inject-migration.cjs +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-By2ZtKls.cjs → migrate_ts_type_references-CemH7A8e.cjs} +5 -5
- package/schematics/bundles/{ng_component_template-B4M8mTyv.cjs → ng_component_template-AYs8YXuT.cjs} +2 -2
- package/schematics/bundles/ng_decorators-BI0uV7KI.cjs +1 -1
- package/schematics/bundles/ngclass-to-class-migration.cjs +7 -7
- package/schematics/bundles/ngstyle-to-style-migration.cjs +7 -7
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +6 -6
- package/schematics/bundles/{parse_html-7Wl_HDnw.cjs → parse_html-6-AB4O-A.cjs} +2 -2
- package/schematics/bundles/{project_paths-Dr2s3Pq3.cjs → project_paths-EiOrjlNS.cjs} +3 -3
- package/schematics/bundles/{project_tsconfig_paths-DX9KHLn9.cjs → project_tsconfig_paths-BbVhi4fG.cjs} +156 -133
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +3 -3
- package/schematics/bundles/router-current-navigation.cjs +4 -4
- package/schematics/bundles/router-last-successful-navigation.cjs +4 -4
- package/schematics/bundles/self-closing-tags-migration.cjs +6 -6
- package/schematics/bundles/signal-input-migration.cjs +67 -8
- package/schematics/bundles/signal-queries-migration.cjs +7 -7
- package/schematics/bundles/signals.cjs +7 -7
- package/schematics/bundles/standalone-migration.cjs +106 -46
- package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
- package/schematics/migrations.json +1 -2
- package/{api.d.d.ts → types/_api-chunk.d.ts} +3 -3
- package/{chrome_dev_tools_performance.d.d.ts → types/_chrome_dev_tools_performance-chunk.d.ts} +4 -4
- package/{discovery.d.d.ts → types/_discovery-chunk.d.ts} +15 -8
- package/{effect.d.d.ts → types/_effect-chunk.d.ts} +3 -3
- package/{event_dispatcher.d.d.ts → types/_event_dispatcher-chunk.d.ts} +2 -2
- package/{graph.d.d.ts → types/_formatter-chunk.d.ts} +15 -3
- package/{weak_ref.d.d.ts → types/_weak_ref-chunk.d.ts} +2 -2
- package/{index.d.ts → types/core.d.ts} +134 -16
- package/{primitives/di/index.d.ts → types/primitives-di.d.ts} +2 -2
- package/{primitives/event-dispatch/index.d.ts → types/primitives-event-dispatch.d.ts} +4 -4
- package/{primitives/signals/index.d.ts → types/primitives-signals.d.ts} +7 -7
- package/{rxjs-interop/index.d.ts → types/rxjs-interop.d.ts} +6 -6
- package/{testing/index.d.ts → types/testing.d.ts} +7 -7
- package/fesm2022/attribute.mjs.map +0 -1
- package/fesm2022/debug_node.mjs.map +0 -1
- package/fesm2022/effect.mjs.map +0 -1
- package/fesm2022/not_found.mjs.map +0 -1
- package/fesm2022/primitives/di.mjs.map +0 -1
- package/fesm2022/primitives/event-dispatch.mjs.map +0 -1
- package/fesm2022/primitives/signals.mjs +0 -88
- package/fesm2022/primitives/signals.mjs.map +0 -1
- package/fesm2022/resource.mjs.map +0 -1
- package/fesm2022/root_effect_scheduler.mjs.map +0 -1
- package/fesm2022/signal.mjs.map +0 -1
- package/fesm2022/weak_ref.mjs.map +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.0-next.
|
|
3
|
-
* (c) 2010-2025 Google LLC. https://angular.
|
|
2
|
+
* @license Angular v21.0.0-next.7
|
|
3
|
+
* (c) 2010-2025 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, ENVIRONMENT_INITIALIZER, 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,
|
|
8
|
-
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './
|
|
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, ENVIRONMENT_INITIALIZER, 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, ANIMATIONS, 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, NgZone, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, isWritableSignal, store, providerToFactory, emitProviderConfiguredEvent, isClassProvider, 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, angularZoneInstanceIdProperty, SCHEDULE_IN_ROOT_ZONE, scheduleCallbackWithMicrotask, PROVIDED_ZONELESS, NoopNgZone, scheduleCallbackWithRafRace, getNativeByTNodeOrNull } from './_root_effect_scheduler-chunk.mjs';
|
|
8
|
+
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_signal-chunk.mjs';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
11
11
|
import { map } from 'rxjs/operators';
|
|
12
|
-
import { Attribute as Attribute$1 } from './
|
|
12
|
+
import { Attribute as Attribute$1 } from './_attribute-chunk.mjs';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Convince closure compiler that the wrapped function has no side-effects.
|
|
@@ -7225,6 +7225,8 @@ function ensureIcuContainerVisitorLoaded(loader) {
|
|
|
7225
7225
|
|
|
7226
7226
|
/** Parses a CSS time value to milliseconds. */
|
|
7227
7227
|
function parseCssTimeUnitsToMs(value) {
|
|
7228
|
+
if (!value)
|
|
7229
|
+
return 0;
|
|
7228
7230
|
// Some browsers will return it in seconds, whereas others will return milliseconds.
|
|
7229
7231
|
const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
|
|
7230
7232
|
return parseFloat(value) * multiplier;
|
|
@@ -7335,11 +7337,54 @@ function determineLongestAnimationFromElementAnimations(el, animationsMap, anima
|
|
|
7335
7337
|
}
|
|
7336
7338
|
const allLeavingAnimations = new Set();
|
|
7337
7339
|
|
|
7340
|
+
/**
|
|
7341
|
+
* A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
|
|
7342
|
+
*/
|
|
7343
|
+
const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
|
|
7344
|
+
providedIn: 'root',
|
|
7345
|
+
factory: () => false,
|
|
7346
|
+
});
|
|
7347
|
+
/**
|
|
7348
|
+
* A [DI token](api/core/InjectionToken) for the queue of all animations.
|
|
7349
|
+
*/
|
|
7350
|
+
const ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationQueue' : '', {
|
|
7351
|
+
providedIn: 'root',
|
|
7352
|
+
factory: () => {
|
|
7353
|
+
return {
|
|
7354
|
+
queue: new Set(),
|
|
7355
|
+
isScheduled: false,
|
|
7356
|
+
};
|
|
7357
|
+
},
|
|
7358
|
+
});
|
|
7359
|
+
/**
|
|
7360
|
+
* A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
|
|
7361
|
+
* before element removal. The default value mirrors from Chrome's cross document
|
|
7362
|
+
* navigation view transition timeout. It's intended to prevent people from accidentally
|
|
7363
|
+
* forgetting to call the removal function in their callback. Also serves as a delay
|
|
7364
|
+
* for when stylesheets are pruned.
|
|
7365
|
+
*
|
|
7366
|
+
* @publicApi 20.2
|
|
7367
|
+
*/
|
|
7368
|
+
const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
|
|
7369
|
+
providedIn: 'root',
|
|
7370
|
+
factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
|
|
7371
|
+
});
|
|
7372
|
+
const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
|
|
7373
|
+
|
|
7374
|
+
function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
|
|
7375
|
+
const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
|
|
7376
|
+
if (parent !== null && enterAnimations && enterAnimations.has(tNode.index)) {
|
|
7377
|
+
const animationQueue = injector.get(ANIMATION_QUEUE);
|
|
7378
|
+
for (const animateFn of enterAnimations.get(tNode.index).animateFns) {
|
|
7379
|
+
animationQueue.queue.add(animateFn);
|
|
7380
|
+
}
|
|
7381
|
+
}
|
|
7382
|
+
}
|
|
7338
7383
|
/**
|
|
7339
7384
|
* NOTE: for performance reasons, the possible actions are inlined within the function instead of
|
|
7340
7385
|
* being passed as an argument.
|
|
7341
7386
|
*/
|
|
7342
|
-
function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode, parentLView) {
|
|
7387
|
+
function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
|
|
7343
7388
|
// If this slot was allocated for a text node dynamically created by i18n, the text node itself
|
|
7344
7389
|
// won't be created until i18nApply() in the update block, so this node should be skipped.
|
|
7345
7390
|
// For more info, see "ICU expressions should work inside an ngTemplateOutlet inside an ngFor"
|
|
@@ -7360,6 +7405,7 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
|
|
|
7360
7405
|
}
|
|
7361
7406
|
const rNode = unwrapRNode(lNodeToHandle);
|
|
7362
7407
|
if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
|
|
7408
|
+
maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
|
|
7363
7409
|
if (beforeNode == null) {
|
|
7364
7410
|
nativeAppendChild(renderer, parent, rNode);
|
|
7365
7411
|
}
|
|
@@ -7368,10 +7414,11 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
|
|
|
7368
7414
|
}
|
|
7369
7415
|
}
|
|
7370
7416
|
else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {
|
|
7417
|
+
maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
|
|
7371
7418
|
nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
|
|
7372
7419
|
}
|
|
7373
7420
|
else if (action === 2 /* WalkTNodeTreeAction.Detach */) {
|
|
7374
|
-
runLeaveAnimationsWithCallback(parentLView, (nodeHasLeaveAnimations) => {
|
|
7421
|
+
runLeaveAnimationsWithCallback(parentLView, tNode, injector, (nodeHasLeaveAnimations) => {
|
|
7375
7422
|
// the nodeHasLeaveAnimations indicates to the renderer that the element needs to
|
|
7376
7423
|
// be removed synchronously and sets the requireSynchronousElementRemoval flag in
|
|
7377
7424
|
// the renderer.
|
|
@@ -7379,14 +7426,25 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
|
|
|
7379
7426
|
});
|
|
7380
7427
|
}
|
|
7381
7428
|
else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {
|
|
7382
|
-
runLeaveAnimationsWithCallback(parentLView, () => {
|
|
7429
|
+
runLeaveAnimationsWithCallback(parentLView, tNode, injector, () => {
|
|
7383
7430
|
renderer.destroyNode(rNode);
|
|
7384
7431
|
});
|
|
7385
7432
|
}
|
|
7386
7433
|
if (lContainer != null) {
|
|
7387
|
-
applyContainer(renderer, action, lContainer, parent, beforeNode);
|
|
7434
|
+
applyContainer(renderer, action, injector, lContainer, tNode, parent, beforeNode);
|
|
7435
|
+
}
|
|
7436
|
+
}
|
|
7437
|
+
}
|
|
7438
|
+
function addToAnimationQueue(injector, animationFns) {
|
|
7439
|
+
const animationQueue = injector.get(ANIMATION_QUEUE);
|
|
7440
|
+
if (Array.isArray(animationFns)) {
|
|
7441
|
+
for (const animateFn of animationFns) {
|
|
7442
|
+
animationQueue.queue.add(animateFn);
|
|
7388
7443
|
}
|
|
7389
7444
|
}
|
|
7445
|
+
else {
|
|
7446
|
+
animationQueue.queue.add(animationFns);
|
|
7447
|
+
}
|
|
7390
7448
|
}
|
|
7391
7449
|
/**
|
|
7392
7450
|
* Removes all DOM elements associated with a view.
|
|
@@ -7561,30 +7619,46 @@ function cleanUpView(tView, lView) {
|
|
|
7561
7619
|
setActiveConsumer(prevConsumer);
|
|
7562
7620
|
}
|
|
7563
7621
|
}
|
|
7564
|
-
function runLeaveAnimationsWithCallback(lView, callback) {
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7622
|
+
function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
|
|
7623
|
+
const animations = lView?.[ANIMATIONS];
|
|
7624
|
+
if (animations == null || animations.leave == undefined || !animations.leave.has(tNode.index))
|
|
7625
|
+
return callback(false);
|
|
7626
|
+
// this is solely for move operations to prevent leave animations from running
|
|
7627
|
+
// on the moved nodes, which would have deleted the node.
|
|
7628
|
+
if (animations.skipLeaveAnimations) {
|
|
7629
|
+
animations.skipLeaveAnimations = false;
|
|
7630
|
+
return callback(false);
|
|
7631
|
+
}
|
|
7632
|
+
addToAnimationQueue(injector, () => {
|
|
7633
|
+
// it's possible that in the time between when the leave animation was
|
|
7634
|
+
// and the time it was executed, the data structure changed. So we need
|
|
7635
|
+
// to be safe here.
|
|
7636
|
+
if (animations.leave && animations.leave.has(tNode.index)) {
|
|
7637
|
+
const leaveAnimationMap = animations.leave;
|
|
7638
|
+
const leaveAnimations = leaveAnimationMap.get(tNode.index);
|
|
7571
7639
|
const runningAnimations = [];
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7640
|
+
if (leaveAnimations) {
|
|
7641
|
+
for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
|
|
7642
|
+
const animationFn = leaveAnimations.animateFns[index];
|
|
7643
|
+
const { promise } = animationFn();
|
|
7644
|
+
runningAnimations.push(promise);
|
|
7645
|
+
}
|
|
7575
7646
|
}
|
|
7576
|
-
|
|
7577
|
-
lView
|
|
7647
|
+
animations.running = Promise.allSettled(runningAnimations);
|
|
7648
|
+
runAfterLeaveAnimations(lView, callback);
|
|
7578
7649
|
}
|
|
7579
|
-
|
|
7580
|
-
|
|
7650
|
+
else {
|
|
7651
|
+
if (lView)
|
|
7652
|
+
allLeavingAnimations.delete(lView);
|
|
7653
|
+
callback(false);
|
|
7654
|
+
}
|
|
7655
|
+
});
|
|
7581
7656
|
}
|
|
7582
7657
|
function runAfterLeaveAnimations(lView, callback) {
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
}
|
|
7658
|
+
const runningAnimations = lView[ANIMATIONS]?.running;
|
|
7659
|
+
if (runningAnimations) {
|
|
7660
|
+
runningAnimations.then(() => {
|
|
7661
|
+
lView[ANIMATIONS].running = undefined;
|
|
7588
7662
|
allLeavingAnimations.delete(lView);
|
|
7589
7663
|
callback(true);
|
|
7590
7664
|
});
|
|
@@ -7911,6 +7985,7 @@ function getBeforeNodeForView(viewIndexInContainer, lContainer) {
|
|
|
7911
7985
|
function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) {
|
|
7912
7986
|
while (tNode != null) {
|
|
7913
7987
|
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
7988
|
+
const injector = lView[INJECTOR];
|
|
7914
7989
|
// Let declarations don't have corresponding DOM nodes so we skip over them.
|
|
7915
7990
|
if (tNode.type === 128 /* TNodeType.LetDeclaration */) {
|
|
7916
7991
|
tNode = tNode.next;
|
|
@@ -7929,22 +8004,22 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
|
|
|
7929
8004
|
if (!isDetachedByI18n(tNode)) {
|
|
7930
8005
|
if (tNodeType & 8 /* TNodeType.ElementContainer */) {
|
|
7931
8006
|
applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);
|
|
7932
|
-
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
|
|
8007
|
+
applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
|
|
7933
8008
|
}
|
|
7934
8009
|
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
7935
8010
|
const nextRNode = icuContainerIterate(tNode, lView);
|
|
7936
8011
|
let rNode;
|
|
7937
8012
|
while ((rNode = nextRNode())) {
|
|
7938
|
-
applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
|
|
8013
|
+
applyToElementOrContainer(action, renderer, injector, parentRElement, rNode, tNode, beforeNode, lView);
|
|
7939
8014
|
}
|
|
7940
|
-
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
|
|
8015
|
+
applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
|
|
7941
8016
|
}
|
|
7942
8017
|
else if (tNodeType & 16 /* TNodeType.Projection */) {
|
|
7943
8018
|
applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
|
|
7944
8019
|
}
|
|
7945
8020
|
else {
|
|
7946
8021
|
ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
|
|
7947
|
-
applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode, lView);
|
|
8022
|
+
applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
|
|
7948
8023
|
}
|
|
7949
8024
|
}
|
|
7950
8025
|
tNode = isProjection ? tNode.projectionNext : tNode.next;
|
|
@@ -7998,7 +8073,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
|
|
|
7998
8073
|
// This should be refactored and cleaned up.
|
|
7999
8074
|
for (let i = 0; i < nodeToProjectOrRNodes.length; i++) {
|
|
8000
8075
|
const rNode = nodeToProjectOrRNodes[i];
|
|
8001
|
-
applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode, lView);
|
|
8076
|
+
applyToElementOrContainer(action, renderer, lView[INJECTOR], parentRElement, rNode, tProjectionNode, beforeNode, lView);
|
|
8002
8077
|
}
|
|
8003
8078
|
}
|
|
8004
8079
|
else {
|
|
@@ -8025,7 +8100,7 @@ function applyProjectionRecursive(renderer, action, lView, tProjectionNode, pare
|
|
|
8025
8100
|
* @param parentRElement parent DOM element for insertion/removal.
|
|
8026
8101
|
* @param beforeNode Before which node the insertions should happen.
|
|
8027
8102
|
*/
|
|
8028
|
-
function applyContainer(renderer, action, lContainer, parentRElement, beforeNode) {
|
|
8103
|
+
function applyContainer(renderer, action, injector, lContainer, tNode, parentRElement, beforeNode) {
|
|
8029
8104
|
ngDevMode && assertLContainer(lContainer);
|
|
8030
8105
|
const anchor = lContainer[NATIVE]; // LContainer has its own before node.
|
|
8031
8106
|
const native = unwrapRNode(lContainer);
|
|
@@ -8040,7 +8115,7 @@ function applyContainer(renderer, action, lContainer, parentRElement, beforeNode
|
|
|
8040
8115
|
// don't see a reason why they should be different, but they are.
|
|
8041
8116
|
//
|
|
8042
8117
|
// If they are we need to process the second anchor as well.
|
|
8043
|
-
applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode);
|
|
8118
|
+
applyToElementOrContainer(action, renderer, injector, parentRElement, anchor, tNode, beforeNode);
|
|
8044
8119
|
}
|
|
8045
8120
|
for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
|
|
8046
8121
|
const lView = lContainer[i];
|
|
@@ -9140,7 +9215,6 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9140
9215
|
if (templateFn !== null) {
|
|
9141
9216
|
executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);
|
|
9142
9217
|
}
|
|
9143
|
-
runEnterAnimations(lView);
|
|
9144
9218
|
const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
|
|
9145
9219
|
// execute pre-order hooks (OnInit, OnChanges, DoCheck)
|
|
9146
9220
|
// PERF WARNING: do NOT extract this to a separate function without running benchmarks
|
|
@@ -9268,15 +9342,6 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
9268
9342
|
leaveView();
|
|
9269
9343
|
}
|
|
9270
9344
|
}
|
|
9271
|
-
function runEnterAnimations(lView) {
|
|
9272
|
-
const animationData = lView[ANIMATIONS];
|
|
9273
|
-
if (animationData?.enter) {
|
|
9274
|
-
for (const animateFn of animationData.enter) {
|
|
9275
|
-
animateFn();
|
|
9276
|
-
}
|
|
9277
|
-
animationData.enter = undefined;
|
|
9278
|
-
}
|
|
9279
|
-
}
|
|
9280
9345
|
/**
|
|
9281
9346
|
* Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
|
|
9282
9347
|
* them by executing an associated template function.
|
|
@@ -13706,7 +13771,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
13706
13771
|
}
|
|
13707
13772
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
13708
13773
|
const tAttributes = rootSelectorOrNode
|
|
13709
|
-
? ['ng-version', '21.0.0-next.
|
|
13774
|
+
? ['ng-version', '21.0.0-next.7']
|
|
13710
13775
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
13711
13776
|
extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
13712
13777
|
let creationBindings = null;
|
|
@@ -21283,28 +21348,6 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
|
|
|
21283
21348
|
return ɵɵattribute;
|
|
21284
21349
|
}
|
|
21285
21350
|
|
|
21286
|
-
/**
|
|
21287
|
-
* A [DI token](api/core/InjectionToken) that enables or disables all enter and leave animations.
|
|
21288
|
-
*/
|
|
21289
|
-
const ANIMATIONS_DISABLED = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationsDisabled' : '', {
|
|
21290
|
-
providedIn: 'root',
|
|
21291
|
-
factory: () => false,
|
|
21292
|
-
});
|
|
21293
|
-
/**
|
|
21294
|
-
* A [DI token](api/core/InjectionToken) that configures the maximum animation timeout
|
|
21295
|
-
* before element removal. The default value mirrors from Chrome's cross document
|
|
21296
|
-
* navigation view transition timeout. It's intended to prevent people from accidentally
|
|
21297
|
-
* forgetting to call the removal function in their callback. Also serves as a delay
|
|
21298
|
-
* for when stylesheets are pruned.
|
|
21299
|
-
*
|
|
21300
|
-
* @publicApi 20.2
|
|
21301
|
-
*/
|
|
21302
|
-
const MAX_ANIMATION_TIMEOUT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', {
|
|
21303
|
-
providedIn: 'root',
|
|
21304
|
-
factory: () => MAX_ANIMATION_TIMEOUT_DEFAULT,
|
|
21305
|
-
});
|
|
21306
|
-
const MAX_ANIMATION_TIMEOUT_DEFAULT = 4000;
|
|
21307
|
-
|
|
21308
21351
|
const DEFAULT_ANIMATIONS_DISABLED = false;
|
|
21309
21352
|
const areAnimationSupported = (typeof ngServerMode === 'undefined' || !ngServerMode) &&
|
|
21310
21353
|
typeof document !== 'undefined' &&
|
|
@@ -21434,14 +21477,14 @@ function trackLeavingNodes(tNode, el) {
|
|
|
21434
21477
|
*/
|
|
21435
21478
|
function getLViewEnterAnimations(lView) {
|
|
21436
21479
|
const animationData = (lView[ANIMATIONS] ??= {});
|
|
21437
|
-
return (animationData.enter ??=
|
|
21480
|
+
return (animationData.enter ??= new Map());
|
|
21438
21481
|
}
|
|
21439
21482
|
/**
|
|
21440
21483
|
* Retrieves the list of specified leave animations from the lView
|
|
21441
21484
|
*/
|
|
21442
21485
|
function getLViewLeaveAnimations(lView) {
|
|
21443
21486
|
const animationData = (lView[ANIMATIONS] ??= {});
|
|
21444
|
-
return (animationData.leave ??=
|
|
21487
|
+
return (animationData.leave ??= new Map());
|
|
21445
21488
|
}
|
|
21446
21489
|
/**
|
|
21447
21490
|
* Gets the list of classes from a passed in value
|
|
@@ -21495,13 +21538,43 @@ function elementHasClassList(element, classList) {
|
|
|
21495
21538
|
*/
|
|
21496
21539
|
function isLongestAnimation(event, nativeElement) {
|
|
21497
21540
|
const longestAnimation = longestAnimations.get(nativeElement);
|
|
21541
|
+
// If we don't have any record of a longest animation, then we shouldn't
|
|
21542
|
+
// block the animationend/transitionend event from doing its work.
|
|
21543
|
+
if (longestAnimation === undefined)
|
|
21544
|
+
return true;
|
|
21498
21545
|
return (nativeElement === event.target &&
|
|
21499
|
-
longestAnimation !== undefined &&
|
|
21500
21546
|
((longestAnimation.animationName !== undefined &&
|
|
21501
21547
|
event.animationName === longestAnimation.animationName) ||
|
|
21502
21548
|
(longestAnimation.propertyName !== undefined &&
|
|
21503
21549
|
event.propertyName === longestAnimation.propertyName)));
|
|
21504
21550
|
}
|
|
21551
|
+
/**
|
|
21552
|
+
* Stores a given animation function in the LView's animation map for later execution
|
|
21553
|
+
*
|
|
21554
|
+
* @param animations Either the enter or leave animation map from the LView
|
|
21555
|
+
* @param tNode The TNode the animation is associated with
|
|
21556
|
+
* @param fn The animation function to be called later
|
|
21557
|
+
*/
|
|
21558
|
+
function addAnimationToLView(animations, tNode, fn) {
|
|
21559
|
+
const nodeAnimations = animations.get(tNode.index) ?? { animateFns: [] };
|
|
21560
|
+
nodeAnimations.animateFns.push(fn);
|
|
21561
|
+
animations.set(tNode.index, nodeAnimations);
|
|
21562
|
+
}
|
|
21563
|
+
function cleanupAfterLeaveAnimations(resolvers, cleanupFns) {
|
|
21564
|
+
if (resolvers) {
|
|
21565
|
+
for (const fn of resolvers) {
|
|
21566
|
+
fn();
|
|
21567
|
+
}
|
|
21568
|
+
}
|
|
21569
|
+
for (const fn of cleanupFns) {
|
|
21570
|
+
fn();
|
|
21571
|
+
}
|
|
21572
|
+
}
|
|
21573
|
+
function clearLViewNodeAnimationResolvers(lView, tNode) {
|
|
21574
|
+
const nodeAnimations = getLViewLeaveAnimations(lView).get(tNode.index);
|
|
21575
|
+
if (nodeAnimations)
|
|
21576
|
+
nodeAnimations.resolvers = undefined;
|
|
21577
|
+
}
|
|
21505
21578
|
|
|
21506
21579
|
/**
|
|
21507
21580
|
* Instruction to handle the `animate.enter` behavior for class bindings.
|
|
@@ -21523,7 +21596,8 @@ function ɵɵanimateEnter(value) {
|
|
|
21523
21596
|
}
|
|
21524
21597
|
const tNode = getCurrentTNode();
|
|
21525
21598
|
cancelLeavingNodes(tNode, lView);
|
|
21526
|
-
getLViewEnterAnimations(lView)
|
|
21599
|
+
addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimation(lView, tNode, value));
|
|
21600
|
+
queueEnterAnimations(lView);
|
|
21527
21601
|
return ɵɵanimateEnter; // For chaining
|
|
21528
21602
|
}
|
|
21529
21603
|
function runEnterAnimation(lView, tNode, value) {
|
|
@@ -21540,13 +21614,19 @@ function runEnterAnimation(lView, tNode, value) {
|
|
|
21540
21614
|
// This also allows us to setup cancellation of animations in progress if the
|
|
21541
21615
|
// gets removed early.
|
|
21542
21616
|
const handleEnterAnimationStart = (event) => {
|
|
21617
|
+
// this early exit case is to prevent issues with bubbling events that are from child element animations
|
|
21618
|
+
if (event.target !== nativeElement)
|
|
21619
|
+
return;
|
|
21543
21620
|
const eventName = event instanceof AnimationEvent ? 'animationend' : 'transitionend';
|
|
21544
21621
|
ngZone.runOutsideAngular(() => {
|
|
21545
|
-
|
|
21622
|
+
renderer.listen(nativeElement, eventName, handleEnterAnimationEnd);
|
|
21546
21623
|
});
|
|
21547
21624
|
};
|
|
21548
21625
|
// When the longest animation ends, we can remove all the classes
|
|
21549
21626
|
const handleEnterAnimationEnd = (event) => {
|
|
21627
|
+
// this early exit case is to prevent issues with bubbling events that are from child element animations
|
|
21628
|
+
if (event.target !== nativeElement)
|
|
21629
|
+
return;
|
|
21550
21630
|
enterAnimationEnd(event, nativeElement, renderer);
|
|
21551
21631
|
};
|
|
21552
21632
|
// We only need to add these event listeners if there are actual classes to apply
|
|
@@ -21577,7 +21657,8 @@ function runEnterAnimation(lView, tNode, value) {
|
|
|
21577
21657
|
}
|
|
21578
21658
|
function enterAnimationEnd(event, nativeElement, renderer) {
|
|
21579
21659
|
const elementData = enterClassMap.get(nativeElement);
|
|
21580
|
-
|
|
21660
|
+
// this event.target check is to prevent issues with bubbling events that are from child element animations
|
|
21661
|
+
if (event.target !== nativeElement || !elementData)
|
|
21581
21662
|
return;
|
|
21582
21663
|
if (isLongestAnimation(event, nativeElement)) {
|
|
21583
21664
|
// Now that we've found the longest animation, there's no need
|
|
@@ -21612,7 +21693,8 @@ function ɵɵanimateEnterListener(value) {
|
|
|
21612
21693
|
}
|
|
21613
21694
|
const tNode = getCurrentTNode();
|
|
21614
21695
|
cancelLeavingNodes(tNode, lView);
|
|
21615
|
-
getLViewEnterAnimations(lView)
|
|
21696
|
+
addAnimationToLView(getLViewEnterAnimations(lView), tNode, () => runEnterAnimationFunction(lView, tNode, value));
|
|
21697
|
+
queueEnterAnimations(lView);
|
|
21616
21698
|
return ɵɵanimateEnterListener;
|
|
21617
21699
|
}
|
|
21618
21700
|
/**
|
|
@@ -21645,37 +21727,39 @@ function ɵɵanimateLeave(value) {
|
|
|
21645
21727
|
return ɵɵanimateLeave;
|
|
21646
21728
|
}
|
|
21647
21729
|
const tNode = getCurrentTNode();
|
|
21648
|
-
getLViewLeaveAnimations(lView)
|
|
21730
|
+
addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimations(lView, tNode, value));
|
|
21731
|
+
enableAnimationQueueScheduler(lView[INJECTOR]);
|
|
21649
21732
|
return ɵɵanimateLeave; // For chaining
|
|
21650
21733
|
}
|
|
21651
|
-
function runLeaveAnimations(lView, tNode, value
|
|
21734
|
+
function runLeaveAnimations(lView, tNode, value) {
|
|
21652
21735
|
const { promise, resolve } = promiseWithResolvers();
|
|
21653
21736
|
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21654
21737
|
ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
|
|
21655
21738
|
const renderer = lView[RENDERER];
|
|
21656
21739
|
const ngZone = lView[INJECTOR].get(NgZone);
|
|
21657
21740
|
allLeavingAnimations.add(lView);
|
|
21741
|
+
(getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
|
|
21658
21742
|
const activeClasses = getClassListFromValue(value);
|
|
21659
21743
|
if (activeClasses && activeClasses.length > 0) {
|
|
21660
|
-
animateLeaveClassRunner(nativeElement, tNode, activeClasses, renderer,
|
|
21744
|
+
animateLeaveClassRunner(nativeElement, tNode, lView, activeClasses, renderer, ngZone);
|
|
21661
21745
|
}
|
|
21662
21746
|
else {
|
|
21663
21747
|
resolve();
|
|
21664
21748
|
}
|
|
21665
|
-
return promise;
|
|
21749
|
+
return { promise, resolve };
|
|
21666
21750
|
}
|
|
21667
21751
|
/**
|
|
21668
21752
|
* This function actually adds the classes that animate element that's leaving the DOM.
|
|
21669
21753
|
* Once it finishes, it calls the remove function that was provided by the DOM renderer.
|
|
21670
21754
|
*/
|
|
21671
|
-
function animateLeaveClassRunner(el, tNode, classList, renderer,
|
|
21672
|
-
if (animationsDisabled) {
|
|
21673
|
-
longestAnimations.delete(el);
|
|
21674
|
-
resolver();
|
|
21675
|
-
return;
|
|
21676
|
-
}
|
|
21755
|
+
function animateLeaveClassRunner(el, tNode, lView, classList, renderer, ngZone) {
|
|
21677
21756
|
cancelAnimationsIfRunning(el, renderer);
|
|
21757
|
+
const cleanupFns = [];
|
|
21758
|
+
const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
|
|
21678
21759
|
const handleOutAnimationEnd = (event) => {
|
|
21760
|
+
// this early exit case is to prevent issues with bubbling events that are from child element animations
|
|
21761
|
+
if (event.target !== el)
|
|
21762
|
+
return;
|
|
21679
21763
|
if (event instanceof CustomEvent || isLongestAnimation(event, el)) {
|
|
21680
21764
|
// Now that we've found the longest animation, there's no need
|
|
21681
21765
|
// to keep bubbling up this event as it's not going to apply to
|
|
@@ -21692,12 +21776,13 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
|
|
|
21692
21776
|
renderer.removeClass(el, item);
|
|
21693
21777
|
}
|
|
21694
21778
|
}
|
|
21779
|
+
cleanupAfterLeaveAnimations(resolvers, cleanupFns);
|
|
21780
|
+
clearLViewNodeAnimationResolvers(lView, tNode);
|
|
21695
21781
|
}
|
|
21696
|
-
resolver();
|
|
21697
21782
|
};
|
|
21698
21783
|
ngZone.runOutsideAngular(() => {
|
|
21699
|
-
renderer.listen(el, 'animationend', handleOutAnimationEnd);
|
|
21700
|
-
renderer.listen(el, 'transitionend', handleOutAnimationEnd);
|
|
21784
|
+
cleanupFns.push(renderer.listen(el, 'animationend', handleOutAnimationEnd));
|
|
21785
|
+
cleanupFns.push(renderer.listen(el, 'transitionend', handleOutAnimationEnd));
|
|
21701
21786
|
});
|
|
21702
21787
|
trackLeavingNodes(tNode, el);
|
|
21703
21788
|
for (const item of classList) {
|
|
@@ -21711,7 +21796,8 @@ function animateLeaveClassRunner(el, tNode, classList, renderer, animationsDisab
|
|
|
21711
21796
|
determineLongestAnimation(el, longestAnimations, areAnimationSupported);
|
|
21712
21797
|
if (!longestAnimations.has(el)) {
|
|
21713
21798
|
clearLeavingNodes(tNode, el);
|
|
21714
|
-
|
|
21799
|
+
cleanupAfterLeaveAnimations(resolvers, cleanupFns);
|
|
21800
|
+
clearLViewNodeAnimationResolvers(lView, tNode);
|
|
21715
21801
|
}
|
|
21716
21802
|
});
|
|
21717
21803
|
});
|
|
@@ -21739,7 +21825,8 @@ function ɵɵanimateLeaveListener(value) {
|
|
|
21739
21825
|
const lView = getLView();
|
|
21740
21826
|
const tNode = getCurrentTNode();
|
|
21741
21827
|
allLeavingAnimations.add(lView);
|
|
21742
|
-
getLViewLeaveAnimations(lView)
|
|
21828
|
+
addAnimationToLView(getLViewLeaveAnimations(lView), tNode, () => runLeaveAnimationFunction(lView, tNode, value));
|
|
21829
|
+
enableAnimationQueueScheduler(lView[INJECTOR]);
|
|
21743
21830
|
return ɵɵanimateLeaveListener; // For chaining
|
|
21744
21831
|
}
|
|
21745
21832
|
/**
|
|
@@ -21780,6 +21867,35 @@ function runLeaveAnimationFunction(lView, tNode, value) {
|
|
|
21780
21867
|
// Ensure cleanup if the LView is destroyed before the animation runs.
|
|
21781
21868
|
return promise;
|
|
21782
21869
|
}
|
|
21870
|
+
function queueEnterAnimations(lView) {
|
|
21871
|
+
enableAnimationQueueScheduler(lView[INJECTOR]);
|
|
21872
|
+
const enterAnimations = lView[ANIMATIONS]?.enter;
|
|
21873
|
+
if (enterAnimations) {
|
|
21874
|
+
const animationQueue = lView[INJECTOR].get(ANIMATION_QUEUE);
|
|
21875
|
+
for (const [_, nodeAnimations] of enterAnimations) {
|
|
21876
|
+
for (const animateFn of nodeAnimations.animateFns) {
|
|
21877
|
+
animationQueue.queue.add(animateFn);
|
|
21878
|
+
}
|
|
21879
|
+
}
|
|
21880
|
+
}
|
|
21881
|
+
}
|
|
21882
|
+
function enableAnimationQueueScheduler(injector) {
|
|
21883
|
+
const animationQueue = injector.get(ANIMATION_QUEUE);
|
|
21884
|
+
// We only need to schedule the animation queue runner once per application.
|
|
21885
|
+
if (!animationQueue.isScheduled) {
|
|
21886
|
+
afterEveryRender(() => {
|
|
21887
|
+
runQueuedAnimations(injector);
|
|
21888
|
+
}, { injector });
|
|
21889
|
+
animationQueue.isScheduled = true;
|
|
21890
|
+
}
|
|
21891
|
+
}
|
|
21892
|
+
function runQueuedAnimations(injector) {
|
|
21893
|
+
const animationQueue = injector.get(ANIMATION_QUEUE);
|
|
21894
|
+
for (let animateFn of animationQueue.queue) {
|
|
21895
|
+
animateFn();
|
|
21896
|
+
}
|
|
21897
|
+
animationQueue.queue.clear();
|
|
21898
|
+
}
|
|
21783
21899
|
|
|
21784
21900
|
/*!
|
|
21785
21901
|
* @license
|
|
@@ -21801,6 +21917,402 @@ function ɵɵcomponentInstance() {
|
|
|
21801
21917
|
return instance;
|
|
21802
21918
|
}
|
|
21803
21919
|
|
|
21920
|
+
/** A unique symbol used to identify {@link ɵControl} implementations. */
|
|
21921
|
+
const ɵCONTROL = Symbol('CONTROL');
|
|
21922
|
+
|
|
21923
|
+
/**
|
|
21924
|
+
* Possibly sets up a {@link ɵControl} to manage a native or custom form control.
|
|
21925
|
+
*
|
|
21926
|
+
* Setup occurs if a `control` input is bound to a {@link ɵControl} directive on the current node,
|
|
21927
|
+
* but not to a component. If a `control` input is bound to a component, we assume the component
|
|
21928
|
+
* will manage the control in its own template.
|
|
21929
|
+
*
|
|
21930
|
+
* @codeGenApi
|
|
21931
|
+
*/
|
|
21932
|
+
function ɵɵcontrolCreate() {
|
|
21933
|
+
const lView = getLView();
|
|
21934
|
+
const tNode = getCurrentTNode();
|
|
21935
|
+
// TODO(https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131712274)
|
|
21936
|
+
// * cache the control directive index or instance for reuse.
|
|
21937
|
+
const control = getControlDirective(tNode, lView);
|
|
21938
|
+
if (!control) {
|
|
21939
|
+
return;
|
|
21940
|
+
}
|
|
21941
|
+
// TODO(https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131712274):
|
|
21942
|
+
// * cache the custom control component index or instance for reuse.
|
|
21943
|
+
// * cache the control model name for reuse.
|
|
21944
|
+
const customControl = getCustomControlComponent(tNode);
|
|
21945
|
+
if (customControl) {
|
|
21946
|
+
const [componentIndex, modelName] = customControl;
|
|
21947
|
+
listenToCustomControl(lView, tNode, control, componentIndex, modelName);
|
|
21948
|
+
}
|
|
21949
|
+
else if (isNativeControl(lView, tNode)) {
|
|
21950
|
+
listenToNativeControl(lView, tNode, control);
|
|
21951
|
+
}
|
|
21952
|
+
else {
|
|
21953
|
+
// For example, user wrote <div [control]="f">.
|
|
21954
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131860276
|
|
21955
|
+
const tagName = tNode.value;
|
|
21956
|
+
throw new RuntimeError(318 /* RuntimeErrorCode.INVALID_CONTROL_HOST */, `'<${tagName}>' is an invalid control host. The host must be a native form control (such ` +
|
|
21957
|
+
`as <input>', '<select>', or '<textarea>') or a custom form control component with a ` +
|
|
21958
|
+
`'value' or 'checked' model.`);
|
|
21959
|
+
}
|
|
21960
|
+
control.register();
|
|
21961
|
+
}
|
|
21962
|
+
/**
|
|
21963
|
+
* Updates a `control` property, and possibly other form control properties, on the current element.
|
|
21964
|
+
*
|
|
21965
|
+
* This is a specialized version of the `ɵɵproperty` instruction that handles updating additional
|
|
21966
|
+
* form control properties, if set up to do so by {@link ɵɵcontrolCreate} during creation.
|
|
21967
|
+
*
|
|
21968
|
+
* @param value New value to write.
|
|
21969
|
+
* @param sanitizer An optional function used to sanitize the value.
|
|
21970
|
+
*
|
|
21971
|
+
* @codeGenApi
|
|
21972
|
+
*/
|
|
21973
|
+
function ɵɵcontrol(value, sanitizer) {
|
|
21974
|
+
const lView = getLView();
|
|
21975
|
+
const bindingIndex = nextBindingIndex();
|
|
21976
|
+
const tNode = getSelectedTNode();
|
|
21977
|
+
if (bindingUpdated(lView, bindingIndex, value)) {
|
|
21978
|
+
const tView = getTView();
|
|
21979
|
+
setPropertyAndInputs(tNode, lView, 'control', value, lView[RENDERER], sanitizer);
|
|
21980
|
+
ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'control', bindingIndex);
|
|
21981
|
+
}
|
|
21982
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
|
|
21983
|
+
// * only run if this is really a control binding determine in the create pass.
|
|
21984
|
+
const control = getControlDirective(tNode, lView);
|
|
21985
|
+
if (!control) {
|
|
21986
|
+
return;
|
|
21987
|
+
}
|
|
21988
|
+
const customControl = getCustomControlComponent(tNode);
|
|
21989
|
+
if (customControl) {
|
|
21990
|
+
const [componentIndex, modelName] = customControl;
|
|
21991
|
+
updateCustomControl(lView, componentIndex, modelName, control);
|
|
21992
|
+
}
|
|
21993
|
+
else {
|
|
21994
|
+
updateNativeControl(tNode, lView, control);
|
|
21995
|
+
}
|
|
21996
|
+
}
|
|
21997
|
+
/**
|
|
21998
|
+
* Returns the {@link ɵControl} directive on the specified node, if one is present and a `control`
|
|
21999
|
+
* input is bound to it, but not to a component. If a `control` input is bound to a component, we
|
|
22000
|
+
* assume the component will manage the control in its own template and return nothing to indicate
|
|
22001
|
+
* that the directive should not be set up.
|
|
22002
|
+
*
|
|
22003
|
+
* @param tNode The `TNode` of the element to check.
|
|
22004
|
+
* @param lView The `LView` that contains the element.
|
|
22005
|
+
*/
|
|
22006
|
+
function getControlDirective(tNode, lView) {
|
|
22007
|
+
const directiveIndices = tNode.inputs?.['control'];
|
|
22008
|
+
if (!directiveIndices) {
|
|
22009
|
+
// There are no matching inputs for the `[control]` property binding.
|
|
22010
|
+
return;
|
|
22011
|
+
}
|
|
22012
|
+
if (isComponentHost(tNode)) {
|
|
22013
|
+
const componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
22014
|
+
if (directiveIndices.includes(componentIndex)) {
|
|
22015
|
+
// If component has a `control` input, we assume that it will handle binding the field to the
|
|
22016
|
+
// appropriate native/custom control in its template, so we do not attempt to bind any inputs
|
|
22017
|
+
// on this component.
|
|
22018
|
+
return;
|
|
22019
|
+
}
|
|
22020
|
+
}
|
|
22021
|
+
// Search for the `Control` directive.
|
|
22022
|
+
for (let index of directiveIndices) {
|
|
22023
|
+
const directive = lView[index];
|
|
22024
|
+
if (ɵCONTROL in directive) {
|
|
22025
|
+
return directive;
|
|
22026
|
+
}
|
|
22027
|
+
}
|
|
22028
|
+
// The `Control` directive was not imported by this component.
|
|
22029
|
+
return;
|
|
22030
|
+
}
|
|
22031
|
+
/**
|
|
22032
|
+
* Returns information about the component on the specified node, if it appears to be a custom form
|
|
22033
|
+
* control.
|
|
22034
|
+
*
|
|
22035
|
+
* A component is considered a custom form control if it has a model input named `value` or
|
|
22036
|
+
* `checked`.
|
|
22037
|
+
*
|
|
22038
|
+
* @param tNode The `TNode` of the element to check.
|
|
22039
|
+
* @returns an array containing the component index and model input name if it's a custom form
|
|
22040
|
+
* control, or undefined.
|
|
22041
|
+
*/
|
|
22042
|
+
function getCustomControlComponent(tNode) {
|
|
22043
|
+
if (!isComponentHost(tNode)) {
|
|
22044
|
+
return;
|
|
22045
|
+
}
|
|
22046
|
+
const tView = getTView();
|
|
22047
|
+
const componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
22048
|
+
const componentDef = tView.data[componentIndex];
|
|
22049
|
+
if (hasModelInput(componentDef, 'value')) {
|
|
22050
|
+
return [componentIndex, 'value'];
|
|
22051
|
+
}
|
|
22052
|
+
if (hasModelInput(componentDef, 'checked')) {
|
|
22053
|
+
return [componentIndex, 'checked'];
|
|
22054
|
+
}
|
|
22055
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131861022
|
|
22056
|
+
// * should we check that any additional field state inputs are signal based?
|
|
22057
|
+
return;
|
|
22058
|
+
}
|
|
22059
|
+
/** Returns whether the specified `componentDef` has a model input named `name`. */
|
|
22060
|
+
function hasModelInput(componentDef, name) {
|
|
22061
|
+
return hasSignalInput(componentDef, name) && hasOutput(componentDef, name + 'Change');
|
|
22062
|
+
}
|
|
22063
|
+
/** Returns whether the specified `componentDef` has a signal-based input named `name`.*/
|
|
22064
|
+
function hasSignalInput(componentDef, name) {
|
|
22065
|
+
const input = componentDef.inputs[name];
|
|
22066
|
+
return input && (input[1] & InputFlags.SignalBased) !== 0;
|
|
22067
|
+
}
|
|
22068
|
+
/** Returns whether the specified `componentDef` has an output named `name`. */
|
|
22069
|
+
function hasOutput(componentDef, name) {
|
|
22070
|
+
return name in componentDef.outputs;
|
|
22071
|
+
}
|
|
22072
|
+
/**
|
|
22073
|
+
* Adds event listeners to a custom form control component to notify the `control` of changes.
|
|
22074
|
+
*
|
|
22075
|
+
* @param lView The `LView` that contains the custom form control.
|
|
22076
|
+
* @param tNode The `TNode` of the custom form control.
|
|
22077
|
+
* @param control The `ɵControl` directive instance.
|
|
22078
|
+
* @param componentIndex The index of the custom form control component in the `LView`.
|
|
22079
|
+
* @param modelName The name of the model property on the custom form control.
|
|
22080
|
+
*/
|
|
22081
|
+
function listenToCustomControl(lView, tNode, control, componentIndex, modelName) {
|
|
22082
|
+
const outputName = modelName + 'Change';
|
|
22083
|
+
listenToOutput(tNode, lView, componentIndex, outputName, outputName, wrapListener(tNode, lView, (newValue) => {
|
|
22084
|
+
control.state().value.set(newValue);
|
|
22085
|
+
}));
|
|
22086
|
+
const tView = getTView();
|
|
22087
|
+
const componentDef = tView.data[componentIndex];
|
|
22088
|
+
const touchedOutputName = 'touchedChange';
|
|
22089
|
+
if (hasOutput(componentDef, touchedOutputName)) {
|
|
22090
|
+
listenToOutput(tNode, lView, componentIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => {
|
|
22091
|
+
control.state().markAsTouched();
|
|
22092
|
+
}));
|
|
22093
|
+
}
|
|
22094
|
+
}
|
|
22095
|
+
function isNativeControl(lView, tNode) {
|
|
22096
|
+
const element = lView[tNode.index];
|
|
22097
|
+
return (element instanceof HTMLInputElement ||
|
|
22098
|
+
element instanceof HTMLSelectElement ||
|
|
22099
|
+
element instanceof HTMLTextAreaElement);
|
|
22100
|
+
}
|
|
22101
|
+
/**
|
|
22102
|
+
* Adds event listeners to a native form control element to notify the `control` of changes.
|
|
22103
|
+
*
|
|
22104
|
+
* @param lView The `LView` that contains the native form control.
|
|
22105
|
+
* @param tNode The `TNode` of the native form control.
|
|
22106
|
+
* @param control The `ɵControl` directive instance.
|
|
22107
|
+
*/
|
|
22108
|
+
function listenToNativeControl(lView, tNode, control) {
|
|
22109
|
+
const tView = getTView();
|
|
22110
|
+
const renderer = lView[RENDERER];
|
|
22111
|
+
const inputListener = () => {
|
|
22112
|
+
const element = getNativeByTNode(tNode, lView);
|
|
22113
|
+
const value = control.state().value;
|
|
22114
|
+
value.set(getNativeControlValue(element, value));
|
|
22115
|
+
};
|
|
22116
|
+
listenToDomEvent(tNode, tView, lView, undefined, renderer, 'input', inputListener, wrapListener(tNode, lView, inputListener));
|
|
22117
|
+
const blurListener = () => {
|
|
22118
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131860538
|
|
22119
|
+
control.state().markAsTouched();
|
|
22120
|
+
};
|
|
22121
|
+
listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
|
|
22122
|
+
}
|
|
22123
|
+
/**
|
|
22124
|
+
* Updates the inputs of a custom form control component with the latest state from the `control`.
|
|
22125
|
+
*
|
|
22126
|
+
* @param lView The `LView` that contains the custom form control.
|
|
22127
|
+
* @param componentIndex The index of the custom form control component in the `LView`.
|
|
22128
|
+
* @param modelName The name of the model property on the custom form control.
|
|
22129
|
+
* @param control The `ɵControl` directive instance.
|
|
22130
|
+
*/
|
|
22131
|
+
function updateCustomControl(lView, componentIndex, modelName, control) {
|
|
22132
|
+
const tView = getTView();
|
|
22133
|
+
const component = lView[componentIndex];
|
|
22134
|
+
const componentDef = tView.data[componentIndex];
|
|
22135
|
+
const state = control.state();
|
|
22136
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
|
|
22137
|
+
// * check if bindings changed before writing.
|
|
22138
|
+
// * cache which inputs exist.
|
|
22139
|
+
writeToDirectiveInput(componentDef, component, modelName, state.value());
|
|
22140
|
+
maybeWriteToDirectiveInput(componentDef, component, 'errors', state.errors);
|
|
22141
|
+
maybeWriteToDirectiveInput(componentDef, component, 'disabled', state.disabled);
|
|
22142
|
+
maybeWriteToDirectiveInput(componentDef, component, 'disabledReasons', state.disabledReasons);
|
|
22143
|
+
maybeWriteToDirectiveInput(componentDef, component, 'max', state.max);
|
|
22144
|
+
maybeWriteToDirectiveInput(componentDef, component, 'maxLength', state.maxLength);
|
|
22145
|
+
maybeWriteToDirectiveInput(componentDef, component, 'min', state.max);
|
|
22146
|
+
maybeWriteToDirectiveInput(componentDef, component, 'minLength', state.minLength);
|
|
22147
|
+
maybeWriteToDirectiveInput(componentDef, component, 'name', state.name);
|
|
22148
|
+
maybeWriteToDirectiveInput(componentDef, component, 'pattern', state.pattern);
|
|
22149
|
+
maybeWriteToDirectiveInput(componentDef, component, 'readOnly', state.readonly);
|
|
22150
|
+
maybeWriteToDirectiveInput(componentDef, component, 'required', state.required);
|
|
22151
|
+
maybeWriteToDirectiveInput(componentDef, component, 'touched', state.touched);
|
|
22152
|
+
}
|
|
22153
|
+
/**
|
|
22154
|
+
* Writes the specified value to a directive input if the input exists.
|
|
22155
|
+
*
|
|
22156
|
+
* @param componentDef The definition of the component that owns the input.
|
|
22157
|
+
* @param component The component instance.
|
|
22158
|
+
* @param inputName The name of the input to write to.
|
|
22159
|
+
* @param source A function that returns the value to write.
|
|
22160
|
+
*/
|
|
22161
|
+
function maybeWriteToDirectiveInput(componentDef, component, inputName, source) {
|
|
22162
|
+
if (inputName in componentDef.inputs) {
|
|
22163
|
+
writeToDirectiveInput(componentDef, component, inputName, source());
|
|
22164
|
+
}
|
|
22165
|
+
}
|
|
22166
|
+
/**
|
|
22167
|
+
* Updates the properties of a native form control element with the latest state from the `control`.
|
|
22168
|
+
*
|
|
22169
|
+
* @param tNode The `TNode` of the native form control.
|
|
22170
|
+
* @param lView The `LView` that contains the native form control.
|
|
22171
|
+
* @param control The `ɵControl` directive instance.
|
|
22172
|
+
*/
|
|
22173
|
+
function updateNativeControl(tNode, lView, control) {
|
|
22174
|
+
const input = getNativeByTNode(tNode, lView);
|
|
22175
|
+
const renderer = lView[RENDERER];
|
|
22176
|
+
const state = control.state();
|
|
22177
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
|
|
22178
|
+
// * check if bindings changed before writing.
|
|
22179
|
+
setNativeControlValue(input, state.value());
|
|
22180
|
+
renderer.setAttribute(input, 'name', state.name());
|
|
22181
|
+
setBooleanAttribute(renderer, input, 'disable', state.disabled());
|
|
22182
|
+
setBooleanAttribute(renderer, input, 'readonly', state.readonly());
|
|
22183
|
+
setBooleanAttribute(renderer, input, 'required', state.required());
|
|
22184
|
+
// TODO: https://github.com/orgs/angular/projects/60/views/1?pane=issue&itemId=131711472
|
|
22185
|
+
// * use tag and type attribute to determine which of these properties to bind.
|
|
22186
|
+
setOptionalAttribute(renderer, input, 'max', state.max());
|
|
22187
|
+
setOptionalAttribute(renderer, input, 'maxLength', state.maxLength());
|
|
22188
|
+
setOptionalAttribute(renderer, input, 'min', state.min());
|
|
22189
|
+
setOptionalAttribute(renderer, input, 'minLength', state.minLength());
|
|
22190
|
+
}
|
|
22191
|
+
/** Checks if a given value is a Date or null */
|
|
22192
|
+
function isDateOrNull(value) {
|
|
22193
|
+
return value === null || value instanceof Date;
|
|
22194
|
+
}
|
|
22195
|
+
/**
|
|
22196
|
+
* Returns the value from a native control element.
|
|
22197
|
+
*
|
|
22198
|
+
* @param element The native control element.
|
|
22199
|
+
* @param currentValue A function that returns the current value from the control's corresponding
|
|
22200
|
+
* field state.
|
|
22201
|
+
*
|
|
22202
|
+
* The type of the returned value depends on the `type` property of the control, and will attempt to
|
|
22203
|
+
* match the current value's type. For example, the value of `<input type="number">` can be read as
|
|
22204
|
+
* a `string` or a `number`. If the current value is a `number`, then this will return a `number`.
|
|
22205
|
+
* Otherwise, this will return the value as a `string`.
|
|
22206
|
+
*/
|
|
22207
|
+
function getNativeControlValue(element, currentValue) {
|
|
22208
|
+
// Special cases for specific input types.
|
|
22209
|
+
switch (element.type) {
|
|
22210
|
+
case 'checkbox':
|
|
22211
|
+
return element.checked;
|
|
22212
|
+
case 'number':
|
|
22213
|
+
case 'range':
|
|
22214
|
+
case 'datetime-local':
|
|
22215
|
+
// We can read a `number` or a `string` from this input type. Prefer whichever is consistent
|
|
22216
|
+
// with the current type.
|
|
22217
|
+
if (typeof currentValue() === 'number') {
|
|
22218
|
+
return element.valueAsNumber;
|
|
22219
|
+
}
|
|
22220
|
+
break;
|
|
22221
|
+
case 'date':
|
|
22222
|
+
case 'month':
|
|
22223
|
+
case 'time':
|
|
22224
|
+
case 'week':
|
|
22225
|
+
// We can read a `Date | null`, `number`, or `string` from this input type. Prefer whichever
|
|
22226
|
+
// is consistent with the current type.
|
|
22227
|
+
const value = currentValue();
|
|
22228
|
+
if (isDateOrNull(value)) {
|
|
22229
|
+
return element.valueAsDate;
|
|
22230
|
+
}
|
|
22231
|
+
else if (typeof value === 'number') {
|
|
22232
|
+
return element.valueAsNumber;
|
|
22233
|
+
}
|
|
22234
|
+
break;
|
|
22235
|
+
}
|
|
22236
|
+
// Default to reading the value as a string.
|
|
22237
|
+
return element.value;
|
|
22238
|
+
}
|
|
22239
|
+
/**
|
|
22240
|
+
* Sets a native control element's value.
|
|
22241
|
+
*
|
|
22242
|
+
* @param element The native control element.
|
|
22243
|
+
* @param value The new value to set.
|
|
22244
|
+
*/
|
|
22245
|
+
function setNativeControlValue(element, value) {
|
|
22246
|
+
// Special cases for specific input types.
|
|
22247
|
+
switch (element.type) {
|
|
22248
|
+
case 'checkbox':
|
|
22249
|
+
element.checked = value;
|
|
22250
|
+
return;
|
|
22251
|
+
case 'radio':
|
|
22252
|
+
// Although HTML behavior is to clear the input already, we do this just in case. It seems
|
|
22253
|
+
// like it might be necessary in certain environments (e.g. Domino).
|
|
22254
|
+
element.checked = value === element.value;
|
|
22255
|
+
return;
|
|
22256
|
+
case 'number':
|
|
22257
|
+
case 'range':
|
|
22258
|
+
case 'datetime-local':
|
|
22259
|
+
// This input type can receive a `number` or a `string`.
|
|
22260
|
+
if (typeof value === 'number') {
|
|
22261
|
+
element.valueAsNumber = value;
|
|
22262
|
+
return;
|
|
22263
|
+
}
|
|
22264
|
+
break;
|
|
22265
|
+
case 'date':
|
|
22266
|
+
case 'month':
|
|
22267
|
+
case 'time':
|
|
22268
|
+
case 'week':
|
|
22269
|
+
// This input type can receive a `Date | null` or a `number` or a `string`.
|
|
22270
|
+
if (isDateOrNull(value)) {
|
|
22271
|
+
element.valueAsDate = value;
|
|
22272
|
+
return;
|
|
22273
|
+
}
|
|
22274
|
+
else if (typeof value === 'number') {
|
|
22275
|
+
element.valueAsNumber = value;
|
|
22276
|
+
return;
|
|
22277
|
+
}
|
|
22278
|
+
}
|
|
22279
|
+
// Default to setting the value as a string.
|
|
22280
|
+
element.value = value;
|
|
22281
|
+
}
|
|
22282
|
+
/**
|
|
22283
|
+
* Sets a boolean attribute on an element.
|
|
22284
|
+
*
|
|
22285
|
+
* @param renderer The `Renderer` instance to use.
|
|
22286
|
+
* @param element The element to set the attribute on.
|
|
22287
|
+
* @param name The name of the attribute.
|
|
22288
|
+
* @param value The boolean value of the attribute. If `true`, the attribute is added. If `false`,
|
|
22289
|
+
* the attribute is removed.
|
|
22290
|
+
*/
|
|
22291
|
+
function setBooleanAttribute(renderer, element, name, value) {
|
|
22292
|
+
if (value) {
|
|
22293
|
+
renderer.setAttribute(element, name, '');
|
|
22294
|
+
}
|
|
22295
|
+
else {
|
|
22296
|
+
renderer.removeAttribute(element, name);
|
|
22297
|
+
}
|
|
22298
|
+
}
|
|
22299
|
+
/**
|
|
22300
|
+
* Sets an attribute on an element if the value is not `undefined`.
|
|
22301
|
+
*
|
|
22302
|
+
* @param renderer The `Renderer` instance to use.
|
|
22303
|
+
* @param element The element to set the attribute on.
|
|
22304
|
+
* @param name The name of the attribute.
|
|
22305
|
+
* @param value The value of the attribute. If `undefined`, the attribute is removed.
|
|
22306
|
+
*/
|
|
22307
|
+
function setOptionalAttribute(renderer, element, name, value) {
|
|
22308
|
+
if (value !== undefined) {
|
|
22309
|
+
renderer.setAttribute(element, name, value.toString());
|
|
22310
|
+
}
|
|
22311
|
+
else {
|
|
22312
|
+
renderer.removeAttribute(element, name);
|
|
22313
|
+
}
|
|
22314
|
+
}
|
|
22315
|
+
|
|
21804
22316
|
/**
|
|
21805
22317
|
* A type representing the live collection to be reconciled with any new (incoming) collection. This
|
|
21806
22318
|
* is an adapter class that makes it possible to work with different internal data structures,
|
|
@@ -28723,6 +29235,8 @@ const angularCoreEnv = (() => ({
|
|
|
28723
29235
|
'ɵɵdomProperty': ɵɵdomProperty,
|
|
28724
29236
|
'ɵɵariaProperty': ɵɵariaProperty,
|
|
28725
29237
|
'ɵɵproperty': ɵɵproperty,
|
|
29238
|
+
'ɵɵcontrol': ɵɵcontrol,
|
|
29239
|
+
'ɵɵcontrolCreate': ɵɵcontrolCreate,
|
|
28726
29240
|
'ɵɵpipe': ɵɵpipe,
|
|
28727
29241
|
'ɵɵqueryRefresh': ɵɵqueryRefresh,
|
|
28728
29242
|
'ɵɵqueryAdvance': ɵɵqueryAdvance,
|
|
@@ -31002,5 +31516,5 @@ function getDebugNode(nativeNode) {
|
|
|
31002
31516
|
return null;
|
|
31003
31517
|
}
|
|
31004
31518
|
|
|
31005
|
-
export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, ElementRef, EnvironmentNgModuleRefAdapter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, Pipe, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵ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 };
|
|
31006
|
-
//# sourceMappingURL=
|
|
31519
|
+
export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactory$1, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, ElementRef, EnvironmentNgModuleRefAdapter, Framework, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, ModuleWithComponentFactories, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, Pipe, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRef, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getCompilerFacade, getDebugNode, getDeferBlocks$1 as getDeferBlocks, getDirectives, getDocument, getHostElement, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isBoundToModule, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, 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, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, ɵCONTROL, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵcontrol, ɵɵcontrolCreate, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
31520
|
+
//# sourceMappingURL=_debug_node-chunk.mjs.map
|