@angular/core 21.0.0-next.7 → 21.0.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_attribute-chunk.mjs +1 -1
- package/fesm2022/_attribute-chunk.mjs.map +1 -1
- package/fesm2022/_debug_node-chunk.mjs +265 -155
- package/fesm2022/_debug_node-chunk.mjs.map +1 -1
- package/fesm2022/_effect-chunk.mjs +1 -1
- package/fesm2022/_effect-chunk.mjs.map +1 -1
- package/fesm2022/_not_found-chunk.mjs +1 -1
- package/fesm2022/_not_found-chunk.mjs.map +1 -1
- package/fesm2022/_resource-chunk.mjs +1 -1
- package/fesm2022/_resource-chunk.mjs.map +1 -1
- package/fesm2022/_root_effect_scheduler-chunk.mjs +7 -2
- package/fesm2022/_root_effect_scheduler-chunk.mjs.map +1 -1
- package/fesm2022/_signal-chunk.mjs +1 -1
- package/fesm2022/_signal-chunk.mjs.map +1 -1
- package/fesm2022/_weak_ref-chunk.mjs +1 -1
- package/fesm2022/_weak_ref-chunk.mjs.map +1 -1
- package/fesm2022/core.mjs +8 -12
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives-di.mjs +1 -1
- package/fesm2022/primitives-di.mjs.map +1 -1
- package/fesm2022/primitives-event-dispatch.mjs +1 -1
- package/fesm2022/primitives-event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives-signals.mjs +1 -1
- package/fesm2022/primitives-signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +2 -2
- package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +5 -5
- package/schematics/bundles/application-config-core.cjs +5 -5
- package/schematics/bundles/{apply_import_manager-D_4NSuRa.cjs → apply_import_manager-CBLmogDD.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-C1KRWoxv.cjs → compiler_host-T6xncpiw.cjs} +2 -2
- package/schematics/bundles/control-flow-migration.cjs +4 -4
- package/schematics/bundles/imports-DwPXlGFl.cjs +1 -1
- package/schematics/bundles/{index-BFENxhdR.cjs → index-BnmACOsq.cjs} +237 -98
- package/schematics/bundles/{index-DYqR8Lpq.cjs → index-DWSaRJdz.cjs} +4 -4
- package/schematics/bundles/inject-migration.cjs +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-CemH7A8e.cjs → migrate_ts_type_references-Cu-FR4L5.cjs} +47 -5
- package/schematics/bundles/{ng_component_template-AYs8YXuT.cjs → ng_component_template-BkWiUuGG.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-6-AB4O-A.cjs → parse_html-C97tKKp3.cjs} +2 -2
- package/schematics/bundles/{project_paths-EiOrjlNS.cjs → project_paths-C6g3lqjX.cjs} +3 -3
- package/schematics/bundles/{project_tsconfig_paths-BbVhi4fG.cjs → project_tsconfig_paths-CdhVNYMk.cjs} +326 -46
- 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/router-testing-module-migration.cjs +513 -0
- package/schematics/bundles/self-closing-tags-migration.cjs +6 -6
- package/schematics/bundles/signal-input-migration.cjs +7 -7
- 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-BObKoqes.cjs +1 -1
- package/schematics/collection.json +5 -0
- package/schematics/migrations/router-testing-module-migration/schema.json +14 -0
- package/types/_api-chunk.d.ts +1 -1
- package/types/_chrome_dev_tools_performance-chunk.d.ts +3 -1
- package/types/_discovery-chunk.d.ts +51 -9
- package/types/_effect-chunk.d.ts +1 -1
- package/types/_event_dispatcher-chunk.d.ts +1 -1
- package/types/_formatter-chunk.d.ts +1 -1
- package/types/_weak_ref-chunk.d.ts +1 -1
- package/types/core.d.ts +21 -15
- package/types/primitives-di.d.ts +1 -1
- package/types/primitives-event-dispatch.d.ts +1 -1
- package/types/primitives-signals.d.ts +1 -1
- package/types/rxjs-interop.d.ts +1 -1
- package/types/testing.d.ts +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.0-next.
|
|
2
|
+
* @license Angular v21.0.0-next.8
|
|
3
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,
|
|
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, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, 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
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';
|
|
@@ -3880,9 +3880,7 @@ const interactionEventNames = ['click', 'keydown'];
|
|
|
3880
3880
|
/** Names of the events considered as hover events. */
|
|
3881
3881
|
const hoverEventNames = ['mouseenter', 'mouseover', 'focusin'];
|
|
3882
3882
|
/** `IntersectionObserver` used to observe `viewport` triggers. */
|
|
3883
|
-
|
|
3884
|
-
/** Number of elements currently observed with `viewport` triggers. */
|
|
3885
|
-
let observedViewportElements = 0;
|
|
3883
|
+
const intersectionObservers = new Map();
|
|
3886
3884
|
/** Object keeping track of registered callbacks for a deferred block trigger. */
|
|
3887
3885
|
class DeferEventEntry {
|
|
3888
3886
|
callbacks = new Set();
|
|
@@ -3965,14 +3963,15 @@ function onHover(trigger, callback) {
|
|
|
3965
3963
|
* Used to create an IntersectionObserver instance.
|
|
3966
3964
|
* @return IntersectionObserver that is used by onViewport
|
|
3967
3965
|
*/
|
|
3968
|
-
function createIntersectionObserver() {
|
|
3966
|
+
function createIntersectionObserver(options) {
|
|
3967
|
+
const key = getIntersectionObserverKey(options);
|
|
3969
3968
|
return new IntersectionObserver((entries) => {
|
|
3970
3969
|
for (const current of entries) {
|
|
3971
3970
|
if (current.isIntersecting && viewportTriggers.has(current.target)) {
|
|
3972
|
-
viewportTriggers.get(current.target)
|
|
3971
|
+
viewportTriggers.get(current.target)?.get(key)?.listener();
|
|
3973
3972
|
}
|
|
3974
3973
|
}
|
|
3975
|
-
});
|
|
3974
|
+
}, options);
|
|
3976
3975
|
}
|
|
3977
3976
|
/**
|
|
3978
3977
|
* Registers a viewport trigger.
|
|
@@ -3983,32 +3982,57 @@ function createIntersectionObserver() {
|
|
|
3983
3982
|
* and tells the intersection observer to stop observing trigger Element and set
|
|
3984
3983
|
* intersectionObserver to null if there are no more Elements to observe
|
|
3985
3984
|
*/
|
|
3986
|
-
function onViewport(trigger, callback, observerFactoryFn) {
|
|
3987
|
-
|
|
3988
|
-
|
|
3985
|
+
function onViewport(trigger, callback, observerFactoryFn, options) {
|
|
3986
|
+
const key = getIntersectionObserverKey(options);
|
|
3987
|
+
let entry = viewportTriggers.get(trigger)?.get(key);
|
|
3988
|
+
if (!intersectionObservers.has(key)) {
|
|
3989
|
+
intersectionObservers.set(key, { observer: observerFactoryFn(options), count: 0 });
|
|
3990
|
+
}
|
|
3991
|
+
const config = intersectionObservers.get(key);
|
|
3989
3992
|
if (!entry) {
|
|
3990
3993
|
entry = new DeferEventEntry();
|
|
3991
|
-
|
|
3992
|
-
viewportTriggers.
|
|
3993
|
-
|
|
3994
|
+
config.observer.observe(trigger);
|
|
3995
|
+
let triggerConfig = viewportTriggers.get(trigger);
|
|
3996
|
+
if (triggerConfig) {
|
|
3997
|
+
triggerConfig.set(key, entry);
|
|
3998
|
+
}
|
|
3999
|
+
else {
|
|
4000
|
+
triggerConfig = new Map();
|
|
4001
|
+
viewportTriggers.set(trigger, triggerConfig);
|
|
4002
|
+
}
|
|
4003
|
+
triggerConfig.set(key, entry);
|
|
4004
|
+
config.count++;
|
|
3994
4005
|
}
|
|
3995
4006
|
entry.callbacks.add(callback);
|
|
3996
4007
|
return () => {
|
|
3997
|
-
if (!viewportTriggers.
|
|
4008
|
+
if (!viewportTriggers.get(trigger)?.has(key)) {
|
|
3998
4009
|
return;
|
|
3999
4010
|
}
|
|
4000
4011
|
entry.callbacks.delete(callback);
|
|
4001
4012
|
if (entry.callbacks.size === 0) {
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4013
|
+
config.observer.unobserve(trigger);
|
|
4014
|
+
config.count--;
|
|
4015
|
+
const triggerConfig = viewportTriggers.get(trigger);
|
|
4016
|
+
if (triggerConfig) {
|
|
4017
|
+
triggerConfig.delete(key);
|
|
4018
|
+
if (triggerConfig.size === 0) {
|
|
4019
|
+
viewportTriggers.delete(trigger);
|
|
4020
|
+
}
|
|
4021
|
+
}
|
|
4005
4022
|
}
|
|
4006
|
-
if (
|
|
4007
|
-
|
|
4008
|
-
|
|
4023
|
+
if (config.count === 0) {
|
|
4024
|
+
config.observer.disconnect();
|
|
4025
|
+
intersectionObservers.delete(key);
|
|
4009
4026
|
}
|
|
4010
4027
|
};
|
|
4011
4028
|
}
|
|
4029
|
+
/** Generates a string that can be used to find identical intersection observer option objects. */
|
|
4030
|
+
function getIntersectionObserverKey(options) {
|
|
4031
|
+
if (!options) {
|
|
4032
|
+
return '';
|
|
4033
|
+
}
|
|
4034
|
+
return `${options.rootMargin}/${typeof options.threshold === 'number' ? options.threshold : options.threshold?.join('\n')}`;
|
|
4035
|
+
}
|
|
4012
4036
|
|
|
4013
4037
|
const DEFER_BLOCK_SSR_ID_ATTRIBUTE = 'ngb';
|
|
4014
4038
|
function setJSActionAttributes(nativeElement, eventTypes, parentDeferBlockId = null) {
|
|
@@ -4498,13 +4522,18 @@ function isIncrementalHydrationEnabled(injector) {
|
|
|
4498
4522
|
optional: true,
|
|
4499
4523
|
});
|
|
4500
4524
|
}
|
|
4525
|
+
let incrementalHydrationEnabledWarned = false;
|
|
4526
|
+
function resetIncrementalHydrationEnabledWarnedForTests() {
|
|
4527
|
+
incrementalHydrationEnabledWarned = false;
|
|
4528
|
+
}
|
|
4501
4529
|
/** Throws an error if the incremental hydration is not enabled */
|
|
4502
|
-
function
|
|
4503
|
-
if (!
|
|
4504
|
-
|
|
4530
|
+
function warnIncrementalHydrationNotConfigured() {
|
|
4531
|
+
if (!incrementalHydrationEnabledWarned) {
|
|
4532
|
+
incrementalHydrationEnabledWarned = true;
|
|
4533
|
+
console.warn(formatRuntimeError(508 /* RuntimeErrorCode.MISCONFIGURED_INCREMENTAL_HYDRATION */, 'Angular has detected that some `@defer` blocks use `hydrate` triggers, ' +
|
|
4505
4534
|
'but incremental hydration was not enabled. Please ensure that the `withIncrementalHydration()` ' +
|
|
4506
4535
|
'call is added as an argument for the `provideClientHydration()` function call ' +
|
|
4507
|
-
'in your application config.');
|
|
4536
|
+
'in your application config.'));
|
|
4508
4537
|
}
|
|
4509
4538
|
}
|
|
4510
4539
|
/** Throws an error if the ssrUniqueId on the LDeferBlockDetails is not present */
|
|
@@ -4727,6 +4756,20 @@ function getHydrateTimerTrigger(blockData) {
|
|
|
4727
4756
|
const trigger = blockData[DEFER_HYDRATE_TRIGGERS]?.find((t) => isTimerTrigger(t));
|
|
4728
4757
|
return trigger?.delay ?? null;
|
|
4729
4758
|
}
|
|
4759
|
+
function getHydrateViewportTrigger(blockData) {
|
|
4760
|
+
const details = blockData[DEFER_HYDRATE_TRIGGERS];
|
|
4761
|
+
if (details) {
|
|
4762
|
+
for (const current of details) {
|
|
4763
|
+
if (current === 2 /* DeferBlockTrigger.Viewport */) {
|
|
4764
|
+
return true;
|
|
4765
|
+
}
|
|
4766
|
+
else if (typeof current === 'object' && current.trigger === 2 /* DeferBlockTrigger.Viewport */) {
|
|
4767
|
+
return current.intersectionObserverOptions || true;
|
|
4768
|
+
}
|
|
4769
|
+
}
|
|
4770
|
+
}
|
|
4771
|
+
return null;
|
|
4772
|
+
}
|
|
4730
4773
|
function hasHydrateTrigger(blockData, trigger) {
|
|
4731
4774
|
return blockData[DEFER_HYDRATE_TRIGGERS]?.includes(trigger) ?? false;
|
|
4732
4775
|
}
|
|
@@ -4741,7 +4784,7 @@ function createBlockSummary(blockInfo) {
|
|
|
4741
4784
|
idle: hasHydrateTrigger(blockInfo, 0 /* DeferBlockTrigger.Idle */),
|
|
4742
4785
|
immediate: hasHydrateTrigger(blockInfo, 1 /* DeferBlockTrigger.Immediate */),
|
|
4743
4786
|
timer: getHydrateTimerTrigger(blockInfo),
|
|
4744
|
-
viewport:
|
|
4787
|
+
viewport: getHydrateViewportTrigger(blockInfo),
|
|
4745
4788
|
},
|
|
4746
4789
|
};
|
|
4747
4790
|
}
|
|
@@ -7629,6 +7672,8 @@ function runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
|
|
|
7629
7672
|
animations.skipLeaveAnimations = false;
|
|
7630
7673
|
return callback(false);
|
|
7631
7674
|
}
|
|
7675
|
+
if (lView)
|
|
7676
|
+
allLeavingAnimations.add(lView);
|
|
7632
7677
|
addToAnimationQueue(injector, () => {
|
|
7633
7678
|
// it's possible that in the time between when the leave animation was
|
|
7634
7679
|
// and the time it was executed, the data structure changed. So we need
|
|
@@ -13771,7 +13816,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
13771
13816
|
}
|
|
13772
13817
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
13773
13818
|
const tAttributes = rootSelectorOrNode
|
|
13774
|
-
? ['ng-version', '21.0.0-next.
|
|
13819
|
+
? ['ng-version', '21.0.0-next.8']
|
|
13775
13820
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
13776
13821
|
extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
13777
13822
|
let creationBindings = null;
|
|
@@ -16831,9 +16876,9 @@ function trackTriggerForDebugging(tView, tNode, textRepresentation) {
|
|
|
16831
16876
|
* @param callback Callback to be invoked when the trigger comes into the viewport.
|
|
16832
16877
|
* @param injector Injector that can be used by the trigger to resolve DI tokens.
|
|
16833
16878
|
*/
|
|
16834
|
-
function onViewportWrapper(trigger, callback, injector) {
|
|
16879
|
+
function onViewportWrapper(trigger, callback, injector, wrapperOptions) {
|
|
16835
16880
|
const ngZone = injector.get(NgZone);
|
|
16836
|
-
return onViewport(trigger, () => ngZone.run(callback), () => ngZone.runOutsideAngular(() => createIntersectionObserver()));
|
|
16881
|
+
return onViewport(trigger, () => ngZone.run(callback), (options) => ngZone.runOutsideAngular(() => createIntersectionObserver(options)), wrapperOptions);
|
|
16837
16882
|
}
|
|
16838
16883
|
/**
|
|
16839
16884
|
* Helper function to get the LView in which a deferred block's trigger is rendered.
|
|
@@ -16886,7 +16931,7 @@ function getTriggerElement(triggerLView, triggerIndex) {
|
|
|
16886
16931
|
* the deferred block.
|
|
16887
16932
|
* @param type Trigger type to distinguish between regular and prefetch triggers.
|
|
16888
16933
|
*/
|
|
16889
|
-
function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, registerFn, callback, type) {
|
|
16934
|
+
function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, registerFn, callback, type, options) {
|
|
16890
16935
|
const injector = initialLView[INJECTOR];
|
|
16891
16936
|
const zone = injector.get(NgZone);
|
|
16892
16937
|
let poll;
|
|
@@ -16925,7 +16970,7 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
|
|
|
16925
16970
|
}
|
|
16926
16971
|
callback();
|
|
16927
16972
|
});
|
|
16928
|
-
}, injector);
|
|
16973
|
+
}, injector, options);
|
|
16929
16974
|
// The trigger and deferred block might be in different LViews.
|
|
16930
16975
|
// For the main LView the cleanup would happen as a part of
|
|
16931
16976
|
// `storeTriggerCleanupFn` logic. For trigger LView we register
|
|
@@ -20652,6 +20697,9 @@ function processAndInitTriggers(injector, blockData, nodes) {
|
|
|
20652
20697
|
timerElements.push(elementTrigger);
|
|
20653
20698
|
}
|
|
20654
20699
|
if (blockSummary.hydrate.viewport) {
|
|
20700
|
+
if (typeof blockSummary.hydrate.viewport !== 'boolean') {
|
|
20701
|
+
elementTrigger.intersectionObserverOptions = blockSummary.hydrate.viewport;
|
|
20702
|
+
}
|
|
20655
20703
|
viewportElements.push(elementTrigger);
|
|
20656
20704
|
}
|
|
20657
20705
|
}
|
|
@@ -20674,7 +20722,7 @@ function setViewportTriggers(injector, elementTriggers) {
|
|
|
20674
20722
|
if (elementTriggers.length > 0) {
|
|
20675
20723
|
const registry = injector.get(DEHYDRATED_BLOCK_REGISTRY);
|
|
20676
20724
|
for (let elementTrigger of elementTriggers) {
|
|
20677
|
-
const cleanupFn = onViewportWrapper(elementTrigger.el, () => triggerHydrationFromBlockName(injector, elementTrigger.blockName), injector);
|
|
20725
|
+
const cleanupFn = onViewportWrapper(elementTrigger.el, () => triggerHydrationFromBlockName(injector, elementTrigger.blockName), injector, elementTrigger.intersectionObserverOptions);
|
|
20678
20726
|
registry.addCleanupFn(elementTrigger.blockName, cleanupFn);
|
|
20679
20727
|
}
|
|
20680
20728
|
}
|
|
@@ -20742,14 +20790,15 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
20742
20790
|
const adjustedIndex = index + HEADER_OFFSET;
|
|
20743
20791
|
const tNode = declareNoDirectiveHostTemplate(lView, tView, index, null, 0, 0);
|
|
20744
20792
|
const injector = lView[INJECTOR];
|
|
20793
|
+
const incrementalHydrationEnabled = isIncrementalHydrationEnabled(injector);
|
|
20745
20794
|
if (tView.firstCreatePass) {
|
|
20746
20795
|
performanceMarkFeature('NgDefer');
|
|
20747
20796
|
if (ngDevMode) {
|
|
20748
20797
|
if (typeof ngHmrMode !== 'undefined' && ngHmrMode) {
|
|
20749
20798
|
logHmrWarning(injector);
|
|
20750
20799
|
}
|
|
20751
|
-
if (hasHydrateTriggers(flags)) {
|
|
20752
|
-
|
|
20800
|
+
if (hasHydrateTriggers(flags) && !incrementalHydrationEnabled) {
|
|
20801
|
+
warnIncrementalHydrationNotConfigured();
|
|
20753
20802
|
}
|
|
20754
20803
|
}
|
|
20755
20804
|
const tDetails = {
|
|
@@ -20797,7 +20846,7 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
20797
20846
|
];
|
|
20798
20847
|
setLDeferBlockDetails(lView, adjustedIndex, lDetails);
|
|
20799
20848
|
let registry = null;
|
|
20800
|
-
if (ssrUniqueId !== null) {
|
|
20849
|
+
if (ssrUniqueId !== null && incrementalHydrationEnabled) {
|
|
20801
20850
|
// Store this defer block in the registry, to have an access to
|
|
20802
20851
|
// internal data structures from hydration runtime code.
|
|
20803
20852
|
registry = injector.get(DEHYDRATED_BLOCK_REGISTRY);
|
|
@@ -21097,7 +21146,7 @@ function ɵɵdeferHydrateOnTimer(delay) {
|
|
|
21097
21146
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
21098
21147
|
return;
|
|
21099
21148
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
21100
|
-
hydrateTriggers.set(5 /* DeferBlockTrigger.Timer */, { delay });
|
|
21149
|
+
hydrateTriggers.set(5 /* DeferBlockTrigger.Timer */, { type: 5 /* DeferBlockTrigger.Timer */, delay });
|
|
21101
21150
|
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
21102
21151
|
// We are on the server and SSR for defer blocks is enabled.
|
|
21103
21152
|
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
@@ -21234,18 +21283,25 @@ function ɵɵdeferHydrateOnInteraction() {
|
|
|
21234
21283
|
* @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
|
|
21235
21284
|
* @codeGenApi
|
|
21236
21285
|
*/
|
|
21237
|
-
function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
21286
|
+
function ɵɵdeferOnViewport(triggerIndex, walkUpTimes, options) {
|
|
21238
21287
|
const lView = getLView();
|
|
21239
21288
|
const tNode = getCurrentTNode();
|
|
21240
21289
|
if (ngDevMode) {
|
|
21241
|
-
|
|
21290
|
+
const args = [];
|
|
21291
|
+
if (walkUpTimes !== undefined && walkUpTimes !== -1) {
|
|
21292
|
+
args.push('<target>');
|
|
21293
|
+
}
|
|
21294
|
+
if (options) {
|
|
21295
|
+
args.push(JSON.stringify(options));
|
|
21296
|
+
}
|
|
21297
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `on viewport${args.length === 0 ? '' : `(${args.join(', ')})`}`);
|
|
21242
21298
|
}
|
|
21243
21299
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
21244
21300
|
return;
|
|
21245
21301
|
renderPlaceholder(lView, tNode);
|
|
21246
21302
|
// Avoid adding event listeners when this instruction is invoked on the server.
|
|
21247
21303
|
if (!(typeof ngServerMode !== 'undefined' && ngServerMode)) {
|
|
21248
|
-
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewportWrapper, () => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), 0 /* TriggerType.Regular
|
|
21304
|
+
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewportWrapper, () => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), 0 /* TriggerType.Regular */, options);
|
|
21249
21305
|
}
|
|
21250
21306
|
}
|
|
21251
21307
|
/**
|
|
@@ -21254,34 +21310,46 @@ function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
|
21254
21310
|
* @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
|
|
21255
21311
|
* @codeGenApi
|
|
21256
21312
|
*/
|
|
21257
|
-
function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes) {
|
|
21313
|
+
function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes, options) {
|
|
21258
21314
|
const lView = getLView();
|
|
21259
21315
|
const tNode = getCurrentTNode();
|
|
21260
21316
|
if (ngDevMode) {
|
|
21261
|
-
|
|
21317
|
+
const args = [];
|
|
21318
|
+
if (walkUpTimes !== undefined && walkUpTimes !== -1) {
|
|
21319
|
+
args.push('<target>');
|
|
21320
|
+
}
|
|
21321
|
+
if (options) {
|
|
21322
|
+
args.push(JSON.stringify(options));
|
|
21323
|
+
}
|
|
21324
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `prefetch on viewport${args.length === 0 ? '' : `(${args.join(', ')})`}`);
|
|
21262
21325
|
}
|
|
21263
21326
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
21264
21327
|
return;
|
|
21265
21328
|
const tView = lView[TVIEW];
|
|
21266
21329
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
21267
21330
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
21268
|
-
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewportWrapper, () => triggerPrefetching(tDetails, lView, tNode), 1 /* TriggerType.Prefetch
|
|
21331
|
+
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewportWrapper, () => triggerPrefetching(tDetails, lView, tNode), 1 /* TriggerType.Prefetch */, options);
|
|
21269
21332
|
}
|
|
21270
21333
|
}
|
|
21271
21334
|
/**
|
|
21272
21335
|
* Creates runtime data structures for the `on viewport` hydrate trigger.
|
|
21273
21336
|
* @codeGenApi
|
|
21274
21337
|
*/
|
|
21275
|
-
function ɵɵdeferHydrateOnViewport() {
|
|
21338
|
+
function ɵɵdeferHydrateOnViewport(options) {
|
|
21276
21339
|
const lView = getLView();
|
|
21277
21340
|
const tNode = getCurrentTNode();
|
|
21278
21341
|
if (ngDevMode) {
|
|
21279
|
-
trackTriggerForDebugging(lView[TVIEW], tNode,
|
|
21342
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `hydrate on viewport${options ? `(${JSON.stringify(options)})` : ''}`);
|
|
21280
21343
|
}
|
|
21281
21344
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
21282
21345
|
return;
|
|
21283
21346
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
21284
|
-
hydrateTriggers.set(2 /* DeferBlockTrigger.Viewport */,
|
|
21347
|
+
hydrateTriggers.set(2 /* DeferBlockTrigger.Viewport */, options
|
|
21348
|
+
? {
|
|
21349
|
+
type: 2 /* DeferBlockTrigger.Viewport */,
|
|
21350
|
+
intersectionObserverOptions: options,
|
|
21351
|
+
}
|
|
21352
|
+
: null);
|
|
21285
21353
|
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
21286
21354
|
// We are on the server and SSR for defer blocks is enabled.
|
|
21287
21355
|
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
@@ -21575,6 +21643,11 @@ function clearLViewNodeAnimationResolvers(lView, tNode) {
|
|
|
21575
21643
|
if (nodeAnimations)
|
|
21576
21644
|
nodeAnimations.resolvers = undefined;
|
|
21577
21645
|
}
|
|
21646
|
+
function leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns) {
|
|
21647
|
+
clearLeavingNodes(tNode, nativeElement);
|
|
21648
|
+
cleanupAfterLeaveAnimations(resolvers, cleanupFns);
|
|
21649
|
+
clearLViewNodeAnimationResolvers(lView, tNode);
|
|
21650
|
+
}
|
|
21578
21651
|
|
|
21579
21652
|
/**
|
|
21580
21653
|
* Instruction to handle the `animate.enter` behavior for class bindings.
|
|
@@ -21836,36 +21909,36 @@ function runLeaveAnimationFunction(lView, tNode, value) {
|
|
|
21836
21909
|
const { promise, resolve } = promiseWithResolvers();
|
|
21837
21910
|
const nativeElement = getNativeByTNode(tNode, lView);
|
|
21838
21911
|
ngDevMode && assertElementNodes(nativeElement, 'animate.leave');
|
|
21912
|
+
const cleanupFns = [];
|
|
21839
21913
|
const renderer = lView[RENDERER];
|
|
21840
21914
|
const animationsDisabled = areAnimationsDisabled(lView);
|
|
21841
21915
|
const ngZone = lView[INJECTOR].get(NgZone);
|
|
21842
21916
|
const maxAnimationTimeout = lView[INJECTOR].get(MAX_ANIMATION_TIMEOUT);
|
|
21917
|
+
(getLViewLeaveAnimations(lView).get(tNode.index).resolvers ??= []).push(resolve);
|
|
21918
|
+
const resolvers = getLViewLeaveAnimations(lView).get(tNode.index)?.resolvers;
|
|
21843
21919
|
if (animationsDisabled) {
|
|
21844
|
-
|
|
21920
|
+
leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
|
|
21845
21921
|
}
|
|
21846
21922
|
else {
|
|
21847
|
-
const timeoutId = setTimeout(() =>
|
|
21848
|
-
clearLeavingNodes(tNode, nativeElement);
|
|
21849
|
-
resolve();
|
|
21850
|
-
}, maxAnimationTimeout);
|
|
21923
|
+
const timeoutId = setTimeout(() => leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns), maxAnimationTimeout);
|
|
21851
21924
|
const event = {
|
|
21852
21925
|
target: nativeElement,
|
|
21853
21926
|
animationComplete: () => {
|
|
21854
|
-
|
|
21927
|
+
leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
|
|
21855
21928
|
clearTimeout(timeoutId);
|
|
21856
|
-
resolve();
|
|
21857
21929
|
},
|
|
21858
21930
|
};
|
|
21859
21931
|
trackLeavingNodes(tNode, nativeElement);
|
|
21860
21932
|
ngZone.runOutsideAngular(() => {
|
|
21861
|
-
renderer.listen(nativeElement, 'animationend', () => {
|
|
21862
|
-
|
|
21863
|
-
|
|
21933
|
+
cleanupFns.push(renderer.listen(nativeElement, 'animationend', () => {
|
|
21934
|
+
leaveAnimationFunctionCleanup(lView, tNode, nativeElement, resolvers, cleanupFns);
|
|
21935
|
+
clearTimeout(timeoutId);
|
|
21936
|
+
}, { once: true }));
|
|
21864
21937
|
});
|
|
21865
21938
|
value.call(lView[CONTEXT], event);
|
|
21866
21939
|
}
|
|
21867
21940
|
// Ensure cleanup if the LView is destroyed before the animation runs.
|
|
21868
|
-
return promise;
|
|
21941
|
+
return { promise, resolve };
|
|
21869
21942
|
}
|
|
21870
21943
|
function queueEnterAnimations(lView) {
|
|
21871
21944
|
enableAnimationQueueScheduler(lView[INJECTOR]);
|
|
@@ -21923,44 +21996,35 @@ const ɵCONTROL = Symbol('CONTROL');
|
|
|
21923
21996
|
/**
|
|
21924
21997
|
* Possibly sets up a {@link ɵControl} to manage a native or custom form control.
|
|
21925
21998
|
*
|
|
21926
|
-
* Setup occurs if a `
|
|
21927
|
-
* but not to a component. If a `
|
|
21999
|
+
* Setup occurs if a `field` input is bound to a {@link ɵControl} directive on the current node,
|
|
22000
|
+
* but not to a component. If a `field` input is bound to a component, we assume the component
|
|
21928
22001
|
* will manage the control in its own template.
|
|
21929
22002
|
*
|
|
21930
22003
|
* @codeGenApi
|
|
21931
22004
|
*/
|
|
21932
22005
|
function ɵɵcontrolCreate() {
|
|
21933
22006
|
const lView = getLView();
|
|
22007
|
+
const tView = getTView();
|
|
21934
22008
|
const tNode = getCurrentTNode();
|
|
21935
|
-
|
|
21936
|
-
|
|
21937
|
-
|
|
22009
|
+
const control = tView.firstCreatePass
|
|
22010
|
+
? getControlDirectiveFirstCreatePass(tView, tNode, lView)
|
|
22011
|
+
: getControlDirective(tNode, lView);
|
|
21938
22012
|
if (!control) {
|
|
21939
22013
|
return;
|
|
21940
22014
|
}
|
|
21941
|
-
|
|
21942
|
-
|
|
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);
|
|
22015
|
+
if (tNode.flags & 2048 /* TNodeFlags.isFormValueControl */) {
|
|
22016
|
+
listenToCustomControl(lView, tNode, control, 'value');
|
|
21948
22017
|
}
|
|
21949
|
-
else if (
|
|
21950
|
-
|
|
22018
|
+
else if (tNode.flags & 4096 /* TNodeFlags.isFormCheckboxControl */) {
|
|
22019
|
+
listenToCustomControl(lView, tNode, control, 'checked');
|
|
21951
22020
|
}
|
|
21952
22021
|
else {
|
|
21953
|
-
|
|
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.`);
|
|
22022
|
+
listenToNativeControl(lView, tNode, control);
|
|
21959
22023
|
}
|
|
21960
22024
|
control.register();
|
|
21961
22025
|
}
|
|
21962
22026
|
/**
|
|
21963
|
-
* Updates a `
|
|
22027
|
+
* Updates a `field` property, and possibly other form control properties, on the current element.
|
|
21964
22028
|
*
|
|
21965
22029
|
* This is a specialized version of the `ɵɵproperty` instruction that handles updating additional
|
|
21966
22030
|
* form control properties, if set up to do so by {@link ɵɵcontrolCreate} during creation.
|
|
@@ -21972,88 +22036,97 @@ function ɵɵcontrolCreate() {
|
|
|
21972
22036
|
*/
|
|
21973
22037
|
function ɵɵcontrol(value, sanitizer) {
|
|
21974
22038
|
const lView = getLView();
|
|
21975
|
-
const bindingIndex = nextBindingIndex();
|
|
21976
22039
|
const tNode = getSelectedTNode();
|
|
22040
|
+
const bindingIndex = nextBindingIndex();
|
|
21977
22041
|
if (bindingUpdated(lView, bindingIndex, value)) {
|
|
21978
22042
|
const tView = getTView();
|
|
21979
|
-
setPropertyAndInputs(tNode, lView, '
|
|
21980
|
-
ngDevMode && storePropertyBindingMetadata(tView.data, tNode, '
|
|
22043
|
+
setPropertyAndInputs(tNode, lView, 'field', value, lView[RENDERER], sanitizer);
|
|
22044
|
+
ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'field', bindingIndex);
|
|
21981
22045
|
}
|
|
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
22046
|
const control = getControlDirective(tNode, lView);
|
|
21985
|
-
if (
|
|
21986
|
-
|
|
21987
|
-
|
|
21988
|
-
|
|
21989
|
-
|
|
21990
|
-
|
|
21991
|
-
|
|
21992
|
-
|
|
21993
|
-
|
|
21994
|
-
|
|
22047
|
+
if (control) {
|
|
22048
|
+
if (tNode.flags & 2048 /* TNodeFlags.isFormValueControl */) {
|
|
22049
|
+
updateCustomControl(tNode, lView, control, 'value');
|
|
22050
|
+
}
|
|
22051
|
+
else if (tNode.flags & 4096 /* TNodeFlags.isFormCheckboxControl */) {
|
|
22052
|
+
updateCustomControl(tNode, lView, control, 'checked');
|
|
22053
|
+
}
|
|
22054
|
+
else {
|
|
22055
|
+
updateNativeControl(tNode, lView, control);
|
|
22056
|
+
}
|
|
21995
22057
|
}
|
|
21996
22058
|
}
|
|
21997
|
-
|
|
21998
|
-
|
|
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'];
|
|
22059
|
+
function getControlDirectiveFirstCreatePass(tView, tNode, lView) {
|
|
22060
|
+
const directiveIndices = tNode.inputs?.['field'];
|
|
22008
22061
|
if (!directiveIndices) {
|
|
22009
|
-
// There are no matching inputs for the `[
|
|
22062
|
+
// There are no matching inputs for the `[field]` property binding.
|
|
22010
22063
|
return;
|
|
22011
22064
|
}
|
|
22065
|
+
let componentIndex;
|
|
22012
22066
|
if (isComponentHost(tNode)) {
|
|
22013
|
-
|
|
22067
|
+
componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
22014
22068
|
if (directiveIndices.includes(componentIndex)) {
|
|
22015
|
-
// If component has a `
|
|
22069
|
+
// If component has a `field` input, we assume that it will handle binding the field to the
|
|
22016
22070
|
// appropriate native/custom control in its template, so we do not attempt to bind any inputs
|
|
22017
22071
|
// on this component.
|
|
22018
22072
|
return;
|
|
22019
22073
|
}
|
|
22020
22074
|
}
|
|
22021
|
-
// Search for the
|
|
22022
|
-
|
|
22023
|
-
|
|
22024
|
-
|
|
22025
|
-
|
|
22075
|
+
// Search for the `ɵControl` directive.
|
|
22076
|
+
const control = findControlDirective(lView, directiveIndices);
|
|
22077
|
+
if (!control) {
|
|
22078
|
+
// The `ɵControl` directive was not imported by this component.
|
|
22079
|
+
return;
|
|
22080
|
+
}
|
|
22081
|
+
tNode.flags |= 1024 /* TNodeFlags.isFormControl */;
|
|
22082
|
+
if (isComponentHost(tNode)) {
|
|
22083
|
+
const componentDef = tView.data[componentIndex];
|
|
22084
|
+
// TODO: should we check that any additional field state inputs are signal based?
|
|
22085
|
+
if (hasModelInput(componentDef, 'value')) {
|
|
22086
|
+
tNode.flags |= 2048 /* TNodeFlags.isFormValueControl */;
|
|
22087
|
+
return control;
|
|
22088
|
+
}
|
|
22089
|
+
else if (hasModelInput(componentDef, 'checked')) {
|
|
22090
|
+
tNode.flags |= 4096 /* TNodeFlags.isFormCheckboxControl */;
|
|
22091
|
+
return control;
|
|
22026
22092
|
}
|
|
22027
22093
|
}
|
|
22028
|
-
|
|
22029
|
-
|
|
22094
|
+
if (isNativeControl(tNode)) {
|
|
22095
|
+
if (isNumericInput(tNode)) {
|
|
22096
|
+
tNode.flags |= 8192 /* TNodeFlags.isNativeNumericControl */;
|
|
22097
|
+
}
|
|
22098
|
+
if (isTextControl(tNode)) {
|
|
22099
|
+
tNode.flags |= 16384 /* TNodeFlags.isNativeTextControl */;
|
|
22100
|
+
}
|
|
22101
|
+
return control;
|
|
22102
|
+
}
|
|
22103
|
+
const tagName = tNode.value;
|
|
22104
|
+
throw new RuntimeError(318 /* RuntimeErrorCode.INVALID_FIELD_DIRECTIVE_HOST */, `'<${tagName}>' is an invalid [field] directive host. The host must be a native form control ` +
|
|
22105
|
+
`(such as <input>', '<select>', or '<textarea>') or a custom form control component with a ` +
|
|
22106
|
+
`'value' or 'checked' model.`);
|
|
22030
22107
|
}
|
|
22031
22108
|
/**
|
|
22032
|
-
* Returns
|
|
22033
|
-
*
|
|
22034
|
-
*
|
|
22035
|
-
*
|
|
22036
|
-
* `checked`.
|
|
22109
|
+
* Returns the {@link ɵControl} directive on the specified node, if one is present and a `field`
|
|
22110
|
+
* input is bound to it, but not to a component. If a `field` input is bound to a component, we
|
|
22111
|
+
* assume the component will manage the control in its own template and return nothing to indicate
|
|
22112
|
+
* that the directive should not be set up.
|
|
22037
22113
|
*
|
|
22038
22114
|
* @param tNode The `TNode` of the element to check.
|
|
22039
|
-
* @
|
|
22040
|
-
* control, or undefined.
|
|
22115
|
+
* @param lView The `LView` that contains the element.
|
|
22041
22116
|
*/
|
|
22042
|
-
function
|
|
22043
|
-
|
|
22044
|
-
|
|
22045
|
-
|
|
22046
|
-
|
|
22047
|
-
|
|
22048
|
-
|
|
22049
|
-
|
|
22050
|
-
|
|
22051
|
-
|
|
22052
|
-
|
|
22053
|
-
return [componentIndex, 'checked'];
|
|
22117
|
+
function getControlDirective(tNode, lView) {
|
|
22118
|
+
return tNode.flags & 1024 /* TNodeFlags.isFormControl */
|
|
22119
|
+
? findControlDirective(lView, tNode.inputs['field'])
|
|
22120
|
+
: undefined;
|
|
22121
|
+
}
|
|
22122
|
+
function findControlDirective(lView, directiveIndices) {
|
|
22123
|
+
for (let index of directiveIndices) {
|
|
22124
|
+
const directive = lView[index];
|
|
22125
|
+
if (ɵCONTROL in directive) {
|
|
22126
|
+
return directive;
|
|
22127
|
+
}
|
|
22054
22128
|
}
|
|
22055
|
-
//
|
|
22056
|
-
// * should we check that any additional field state inputs are signal based?
|
|
22129
|
+
// The `Field` directive was not imported by this component.
|
|
22057
22130
|
return;
|
|
22058
22131
|
}
|
|
22059
22132
|
/** Returns whether the specified `componentDef` has a model input named `name`. */
|
|
@@ -22070,7 +22143,7 @@ function hasOutput(componentDef, name) {
|
|
|
22070
22143
|
return name in componentDef.outputs;
|
|
22071
22144
|
}
|
|
22072
22145
|
/**
|
|
22073
|
-
* Adds event listeners to a custom form control component to notify the `
|
|
22146
|
+
* Adds event listeners to a custom form control component to notify the `field` of changes.
|
|
22074
22147
|
*
|
|
22075
22148
|
* @param lView The `LView` that contains the custom form control.
|
|
22076
22149
|
* @param tNode The `TNode` of the custom form control.
|
|
@@ -22078,7 +22151,8 @@ function hasOutput(componentDef, name) {
|
|
|
22078
22151
|
* @param componentIndex The index of the custom form control component in the `LView`.
|
|
22079
22152
|
* @param modelName The name of the model property on the custom form control.
|
|
22080
22153
|
*/
|
|
22081
|
-
function listenToCustomControl(lView, tNode, control,
|
|
22154
|
+
function listenToCustomControl(lView, tNode, control, modelName) {
|
|
22155
|
+
const componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
22082
22156
|
const outputName = modelName + 'Change';
|
|
22083
22157
|
listenToOutput(tNode, lView, componentIndex, outputName, outputName, wrapListener(tNode, lView, (newValue) => {
|
|
22084
22158
|
control.state().value.set(newValue);
|
|
@@ -22092,14 +22166,15 @@ function listenToCustomControl(lView, tNode, control, componentIndex, modelName)
|
|
|
22092
22166
|
}));
|
|
22093
22167
|
}
|
|
22094
22168
|
}
|
|
22095
|
-
function isNativeControl(
|
|
22096
|
-
|
|
22097
|
-
|
|
22098
|
-
|
|
22099
|
-
|
|
22169
|
+
function isNativeControl(tNode) {
|
|
22170
|
+
if (tNode.type !== 2 /* TNodeType.Element */) {
|
|
22171
|
+
return false;
|
|
22172
|
+
}
|
|
22173
|
+
const tagName = tNode.value;
|
|
22174
|
+
return tagName === 'input' || tagName === 'textarea' || tagName === 'select';
|
|
22100
22175
|
}
|
|
22101
22176
|
/**
|
|
22102
|
-
* Adds event listeners to a native form control element to notify the `
|
|
22177
|
+
* Adds event listeners to a native form control element to notify the `field` of changes.
|
|
22103
22178
|
*
|
|
22104
22179
|
* @param lView The `LView` that contains the native form control.
|
|
22105
22180
|
* @param tNode The `TNode` of the native form control.
|
|
@@ -22121,15 +22196,16 @@ function listenToNativeControl(lView, tNode, control) {
|
|
|
22121
22196
|
listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
|
|
22122
22197
|
}
|
|
22123
22198
|
/**
|
|
22124
|
-
* Updates the inputs of a custom form control component with the latest state from the `
|
|
22199
|
+
* Updates the inputs of a custom form control component with the latest state from the `field`.
|
|
22125
22200
|
*
|
|
22126
22201
|
* @param lView The `LView` that contains the custom form control.
|
|
22127
22202
|
* @param componentIndex The index of the custom form control component in the `LView`.
|
|
22128
22203
|
* @param modelName The name of the model property on the custom form control.
|
|
22129
22204
|
* @param control The `ɵControl` directive instance.
|
|
22130
22205
|
*/
|
|
22131
|
-
function updateCustomControl(lView,
|
|
22206
|
+
function updateCustomControl(tNode, lView, control, modelName) {
|
|
22132
22207
|
const tView = getTView();
|
|
22208
|
+
const componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
22133
22209
|
const component = lView[componentIndex];
|
|
22134
22210
|
const componentDef = tView.data[componentIndex];
|
|
22135
22211
|
const state = control.state();
|
|
@@ -22142,11 +22218,11 @@ function updateCustomControl(lView, componentIndex, modelName, control) {
|
|
|
22142
22218
|
maybeWriteToDirectiveInput(componentDef, component, 'disabledReasons', state.disabledReasons);
|
|
22143
22219
|
maybeWriteToDirectiveInput(componentDef, component, 'max', state.max);
|
|
22144
22220
|
maybeWriteToDirectiveInput(componentDef, component, 'maxLength', state.maxLength);
|
|
22145
|
-
maybeWriteToDirectiveInput(componentDef, component, 'min', state.
|
|
22221
|
+
maybeWriteToDirectiveInput(componentDef, component, 'min', state.min);
|
|
22146
22222
|
maybeWriteToDirectiveInput(componentDef, component, 'minLength', state.minLength);
|
|
22147
22223
|
maybeWriteToDirectiveInput(componentDef, component, 'name', state.name);
|
|
22148
22224
|
maybeWriteToDirectiveInput(componentDef, component, 'pattern', state.pattern);
|
|
22149
|
-
maybeWriteToDirectiveInput(componentDef, component, '
|
|
22225
|
+
maybeWriteToDirectiveInput(componentDef, component, 'readonly', state.readonly);
|
|
22150
22226
|
maybeWriteToDirectiveInput(componentDef, component, 'required', state.required);
|
|
22151
22227
|
maybeWriteToDirectiveInput(componentDef, component, 'touched', state.touched);
|
|
22152
22228
|
}
|
|
@@ -22164,7 +22240,7 @@ function maybeWriteToDirectiveInput(componentDef, component, inputName, source)
|
|
|
22164
22240
|
}
|
|
22165
22241
|
}
|
|
22166
22242
|
/**
|
|
22167
|
-
* Updates the properties of a native form control element with the latest state from the `
|
|
22243
|
+
* Updates the properties of a native form control element with the latest state from the `field`.
|
|
22168
22244
|
*
|
|
22169
22245
|
* @param tNode The `TNode` of the native form control.
|
|
22170
22246
|
* @param lView The `LView` that contains the native form control.
|
|
@@ -22178,20 +22254,54 @@ function updateNativeControl(tNode, lView, control) {
|
|
|
22178
22254
|
// * check if bindings changed before writing.
|
|
22179
22255
|
setNativeControlValue(input, state.value());
|
|
22180
22256
|
renderer.setAttribute(input, 'name', state.name());
|
|
22181
|
-
setBooleanAttribute(renderer, input, '
|
|
22257
|
+
setBooleanAttribute(renderer, input, 'disabled', state.disabled());
|
|
22182
22258
|
setBooleanAttribute(renderer, input, 'readonly', state.readonly());
|
|
22183
22259
|
setBooleanAttribute(renderer, input, 'required', state.required());
|
|
22184
|
-
|
|
22185
|
-
|
|
22186
|
-
|
|
22187
|
-
|
|
22188
|
-
|
|
22189
|
-
|
|
22260
|
+
if (tNode.flags & 8192 /* TNodeFlags.isNativeNumericControl */) {
|
|
22261
|
+
setOptionalAttribute(renderer, input, 'max', state.max());
|
|
22262
|
+
setOptionalAttribute(renderer, input, 'min', state.min());
|
|
22263
|
+
}
|
|
22264
|
+
if (tNode.flags & 16384 /* TNodeFlags.isNativeTextControl */) {
|
|
22265
|
+
setOptionalAttribute(renderer, input, 'maxLength', state.maxLength());
|
|
22266
|
+
setOptionalAttribute(renderer, input, 'minLength', state.minLength());
|
|
22267
|
+
}
|
|
22190
22268
|
}
|
|
22191
22269
|
/** Checks if a given value is a Date or null */
|
|
22192
22270
|
function isDateOrNull(value) {
|
|
22193
22271
|
return value === null || value instanceof Date;
|
|
22194
22272
|
}
|
|
22273
|
+
/** Returns whether `control` has a numeric input type. */
|
|
22274
|
+
function isNumericInput(tNode) {
|
|
22275
|
+
if (!tNode.attrs || tNode.value !== 'input') {
|
|
22276
|
+
return false;
|
|
22277
|
+
}
|
|
22278
|
+
for (let i = 0; i < tNode.attrs.length; i += 2) {
|
|
22279
|
+
const name = tNode.attrs[i];
|
|
22280
|
+
if (isNameOnlyAttributeMarker(name)) {
|
|
22281
|
+
break;
|
|
22282
|
+
}
|
|
22283
|
+
if (name === 'type') {
|
|
22284
|
+
const value = tNode.attrs[i + 1];
|
|
22285
|
+
return (value === 'date' ||
|
|
22286
|
+
value === 'datetime-local' ||
|
|
22287
|
+
value === 'month' ||
|
|
22288
|
+
value === 'number' ||
|
|
22289
|
+
value === 'range' ||
|
|
22290
|
+
value === 'time' ||
|
|
22291
|
+
value === 'week');
|
|
22292
|
+
}
|
|
22293
|
+
}
|
|
22294
|
+
return false;
|
|
22295
|
+
}
|
|
22296
|
+
/**
|
|
22297
|
+
* Returns whether `control` is a text-based input.
|
|
22298
|
+
*
|
|
22299
|
+
* This is not the same as an input with `type="text"`, but rather any input that accepts
|
|
22300
|
+
* text-based input which includes numeric types.
|
|
22301
|
+
*/
|
|
22302
|
+
function isTextControl(tNode) {
|
|
22303
|
+
return tNode.value !== 'select';
|
|
22304
|
+
}
|
|
22195
22305
|
/**
|
|
22196
22306
|
* Returns the value from a native control element.
|
|
22197
22307
|
*
|
|
@@ -31516,5 +31626,5 @@ function getDebugNode(nativeNode) {
|
|
|
31516
31626
|
return null;
|
|
31517
31627
|
}
|
|
31518
31628
|
|
|
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 };
|
|
31629
|
+
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, resetIncrementalHydrationEnabledWarnedForTests, 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
31630
|
//# sourceMappingURL=_debug_node-chunk.mjs.map
|