@angular/core 21.0.0 → 21.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_attribute-chunk.mjs +1 -1
- package/fesm2022/_attribute-chunk.mjs.map +1 -1
- package/fesm2022/_debug_node-chunk.mjs +469 -367
- 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/_linked_signal-chunk.mjs +1 -1
- package/fesm2022/_linked_signal-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 +33 -19
- package/fesm2022/_resource-chunk.mjs.map +1 -1
- package/fesm2022/_untracked-chunk.mjs +14 -6
- package/fesm2022/_untracked-chunk.mjs.map +1 -1
- package/fesm2022/_weak_ref-chunk.mjs +1 -1
- package/fesm2022/_weak_ref-chunk.mjs.map +1 -1
- package/fesm2022/core.mjs +27 -16
- 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 +3 -3
- package/fesm2022/primitives-signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +12 -4
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +3 -3
- package/resources/best-practices.md +0 -1
- package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
- package/schematics/bundles/application-config-core.cjs +1 -1
- package/schematics/bundles/apply_import_manager-1Zs_gpB6.cjs +1 -1
- package/schematics/bundles/bootstrap-options-migration.cjs +53 -7
- package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
- package/schematics/bundles/common-to-standalone-migration.cjs +5 -3
- package/schematics/bundles/compiler_host-DBwYMlTo.cjs +1 -1
- package/schematics/bundles/control-flow-migration.cjs +1 -1
- package/schematics/bundles/imports-DP72APSx.cjs +1 -1
- package/schematics/bundles/index-B7I9sIUx.cjs +1 -1
- package/schematics/bundles/inject-migration.cjs +1 -1
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/migrate_ts_type_references-UGIUl7En.cjs +1 -1
- package/schematics/bundles/ng_component_template-Dsuq1Lw7.cjs +1 -1
- package/schematics/bundles/ng_decorators-DSFlWYQY.cjs +1 -1
- package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
- package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +1 -1
- package/schematics/bundles/parse_html-8VLCL37B.cjs +1 -1
- package/schematics/bundles/project_paths-DvD50ouC.cjs +1 -1
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +1 -1
- package/schematics/bundles/router-current-navigation.cjs +1 -1
- package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
- package/schematics/bundles/router-testing-module-migration.cjs +1 -1
- package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
- package/schematics/bundles/signal-input-migration.cjs +1 -1
- package/schematics/bundles/signal-queries-migration.cjs +1 -1
- package/schematics/bundles/signals.cjs +1 -1
- package/schematics/bundles/standalone-migration.cjs +1 -1
- package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
- package/types/_api-chunk.d.ts +7 -2
- package/types/_chrome_dev_tools_performance-chunk.d.ts +9 -1
- package/types/_discovery-chunk.d.ts +28 -21
- 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 +158 -147
- 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 +5 -1
- package/types/testing.d.ts +13 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.
|
|
2
|
+
* @license Angular v21.0.2
|
|
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,
|
|
7
|
+
import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, DOCUMENT as DOCUMENT$1, ENVIRONMENT_INITIALIZER, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, NgZone, ChangeDetectionScheduler, ErrorHandler, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, ANIMATIONS, assertParentView, CONTAINER_HEADER_OFFSET, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, stringify, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, assertNotDefined, nextBindingIndex, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, untracked, getBindingIndex, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, 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 './_untracked-chunk.mjs';
|
|
8
8
|
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
@@ -422,6 +422,36 @@ const profiler = function (event, instance = null, eventFn) {
|
|
|
422
422
|
}
|
|
423
423
|
};
|
|
424
424
|
|
|
425
|
+
var ProfilerEvent;
|
|
426
|
+
(function (ProfilerEvent) {
|
|
427
|
+
ProfilerEvent[ProfilerEvent["TemplateCreateStart"] = 0] = "TemplateCreateStart";
|
|
428
|
+
ProfilerEvent[ProfilerEvent["TemplateCreateEnd"] = 1] = "TemplateCreateEnd";
|
|
429
|
+
ProfilerEvent[ProfilerEvent["TemplateUpdateStart"] = 2] = "TemplateUpdateStart";
|
|
430
|
+
ProfilerEvent[ProfilerEvent["TemplateUpdateEnd"] = 3] = "TemplateUpdateEnd";
|
|
431
|
+
ProfilerEvent[ProfilerEvent["LifecycleHookStart"] = 4] = "LifecycleHookStart";
|
|
432
|
+
ProfilerEvent[ProfilerEvent["LifecycleHookEnd"] = 5] = "LifecycleHookEnd";
|
|
433
|
+
ProfilerEvent[ProfilerEvent["OutputStart"] = 6] = "OutputStart";
|
|
434
|
+
ProfilerEvent[ProfilerEvent["OutputEnd"] = 7] = "OutputEnd";
|
|
435
|
+
ProfilerEvent[ProfilerEvent["BootstrapApplicationStart"] = 8] = "BootstrapApplicationStart";
|
|
436
|
+
ProfilerEvent[ProfilerEvent["BootstrapApplicationEnd"] = 9] = "BootstrapApplicationEnd";
|
|
437
|
+
ProfilerEvent[ProfilerEvent["BootstrapComponentStart"] = 10] = "BootstrapComponentStart";
|
|
438
|
+
ProfilerEvent[ProfilerEvent["BootstrapComponentEnd"] = 11] = "BootstrapComponentEnd";
|
|
439
|
+
ProfilerEvent[ProfilerEvent["ChangeDetectionStart"] = 12] = "ChangeDetectionStart";
|
|
440
|
+
ProfilerEvent[ProfilerEvent["ChangeDetectionEnd"] = 13] = "ChangeDetectionEnd";
|
|
441
|
+
ProfilerEvent[ProfilerEvent["ChangeDetectionSyncStart"] = 14] = "ChangeDetectionSyncStart";
|
|
442
|
+
ProfilerEvent[ProfilerEvent["ChangeDetectionSyncEnd"] = 15] = "ChangeDetectionSyncEnd";
|
|
443
|
+
ProfilerEvent[ProfilerEvent["AfterRenderHooksStart"] = 16] = "AfterRenderHooksStart";
|
|
444
|
+
ProfilerEvent[ProfilerEvent["AfterRenderHooksEnd"] = 17] = "AfterRenderHooksEnd";
|
|
445
|
+
ProfilerEvent[ProfilerEvent["ComponentStart"] = 18] = "ComponentStart";
|
|
446
|
+
ProfilerEvent[ProfilerEvent["ComponentEnd"] = 19] = "ComponentEnd";
|
|
447
|
+
ProfilerEvent[ProfilerEvent["DeferBlockStateStart"] = 20] = "DeferBlockStateStart";
|
|
448
|
+
ProfilerEvent[ProfilerEvent["DeferBlockStateEnd"] = 21] = "DeferBlockStateEnd";
|
|
449
|
+
ProfilerEvent[ProfilerEvent["DynamicComponentStart"] = 22] = "DynamicComponentStart";
|
|
450
|
+
ProfilerEvent[ProfilerEvent["DynamicComponentEnd"] = 23] = "DynamicComponentEnd";
|
|
451
|
+
ProfilerEvent[ProfilerEvent["HostBindingsUpdateStart"] = 24] = "HostBindingsUpdateStart";
|
|
452
|
+
ProfilerEvent[ProfilerEvent["HostBindingsUpdateEnd"] = 25] = "HostBindingsUpdateEnd";
|
|
453
|
+
})(ProfilerEvent || (ProfilerEvent = {}));
|
|
454
|
+
|
|
425
455
|
function registerPreOrderHooks(directiveIndex, directiveDef, tView) {
|
|
426
456
|
ngDevMode && assertFirstCreatePass(tView);
|
|
427
457
|
const {
|
|
@@ -519,13 +549,13 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
|
|
|
519
549
|
}
|
|
520
550
|
}
|
|
521
551
|
function callHookInternal(directive, hook) {
|
|
522
|
-
profiler(
|
|
552
|
+
profiler(ProfilerEvent.LifecycleHookStart, directive, hook);
|
|
523
553
|
const prevConsumer = setActiveConsumer(null);
|
|
524
554
|
try {
|
|
525
555
|
hook.call(directive);
|
|
526
556
|
} finally {
|
|
527
557
|
setActiveConsumer(prevConsumer);
|
|
528
|
-
profiler(
|
|
558
|
+
profiler(ProfilerEvent.LifecycleHookEnd, directive, hook);
|
|
529
559
|
}
|
|
530
560
|
}
|
|
531
561
|
function callHook(currentView, initPhase, arr, i) {
|
|
@@ -1757,12 +1787,6 @@ function getDirectives(node) {
|
|
|
1757
1787
|
}
|
|
1758
1788
|
return context.directives === null ? [] : [...context.directives];
|
|
1759
1789
|
}
|
|
1760
|
-
var Framework;
|
|
1761
|
-
(function (Framework) {
|
|
1762
|
-
Framework["Angular"] = "angular";
|
|
1763
|
-
Framework["ACX"] = "acx";
|
|
1764
|
-
Framework["Wiz"] = "wiz";
|
|
1765
|
-
})(Framework || (Framework = {}));
|
|
1766
1790
|
var AcxChangeDetectionStrategy;
|
|
1767
1791
|
(function (AcxChangeDetectionStrategy) {
|
|
1768
1792
|
AcxChangeDetectionStrategy[AcxChangeDetectionStrategy["Default"] = 0] = "Default";
|
|
@@ -1911,7 +1935,7 @@ const PLATFORM_ID = new InjectionToken(typeof ngDevMode !== undefined && ngDevMo
|
|
|
1911
1935
|
const ANIMATION_MODULE_TYPE = new InjectionToken(typeof ngDevMode !== undefined && ngDevMode ? 'AnimationModuleType' : '');
|
|
1912
1936
|
const CSP_NONCE = new InjectionToken(typeof ngDevMode !== undefined && ngDevMode ? 'CSP nonce' : '', {
|
|
1913
1937
|
factory: () => {
|
|
1914
|
-
return
|
|
1938
|
+
return inject(DOCUMENT$1).body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
|
|
1915
1939
|
}
|
|
1916
1940
|
});
|
|
1917
1941
|
const IMAGE_CONFIG_DEFAULTS = {
|
|
@@ -1927,20 +1951,19 @@ const IMAGE_CONFIG = new InjectionToken(typeof ngDevMode !== undefined && ngDevM
|
|
|
1927
1951
|
function makeStateKey(key) {
|
|
1928
1952
|
return key;
|
|
1929
1953
|
}
|
|
1930
|
-
function initTransferState() {
|
|
1931
|
-
const transferState = new TransferState();
|
|
1932
|
-
if (typeof ngServerMode === 'undefined' || !ngServerMode) {
|
|
1933
|
-
transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID));
|
|
1934
|
-
}
|
|
1935
|
-
return transferState;
|
|
1936
|
-
}
|
|
1937
1954
|
class TransferState {
|
|
1938
1955
|
static ɵprov =
|
|
1939
1956
|
/* @__PURE__ */
|
|
1940
1957
|
__defineInjectable({
|
|
1941
1958
|
token: TransferState,
|
|
1942
1959
|
providedIn: 'root',
|
|
1943
|
-
factory:
|
|
1960
|
+
factory: () => {
|
|
1961
|
+
const transferState = new TransferState();
|
|
1962
|
+
if (typeof ngServerMode === 'undefined' || !ngServerMode) {
|
|
1963
|
+
transferState.store = retrieveTransferredState(inject(DOCUMENT$1), inject(APP_ID));
|
|
1964
|
+
}
|
|
1965
|
+
return transferState;
|
|
1966
|
+
}
|
|
1944
1967
|
});
|
|
1945
1968
|
store = {};
|
|
1946
1969
|
onSerializeCallbacks = {};
|
|
@@ -2726,6 +2749,120 @@ var ViewEncapsulation;
|
|
|
2726
2749
|
ViewEncapsulation[ViewEncapsulation["ExperimentalIsolatedShadowDom"] = 4] = "ExperimentalIsolatedShadowDom";
|
|
2727
2750
|
})(ViewEncapsulation || (ViewEncapsulation = {}));
|
|
2728
2751
|
|
|
2752
|
+
const CUSTOM_ELEMENTS_SCHEMA = {
|
|
2753
|
+
name: 'custom-elements'
|
|
2754
|
+
};
|
|
2755
|
+
const NO_ERRORS_SCHEMA = {
|
|
2756
|
+
name: 'no-errors-schema'
|
|
2757
|
+
};
|
|
2758
|
+
|
|
2759
|
+
let shouldThrowErrorOnUnknownElement = false;
|
|
2760
|
+
function ɵsetUnknownElementStrictMode(shouldThrow) {
|
|
2761
|
+
shouldThrowErrorOnUnknownElement = shouldThrow;
|
|
2762
|
+
}
|
|
2763
|
+
function ɵgetUnknownElementStrictMode() {
|
|
2764
|
+
return shouldThrowErrorOnUnknownElement;
|
|
2765
|
+
}
|
|
2766
|
+
let shouldThrowErrorOnUnknownProperty = false;
|
|
2767
|
+
function ɵsetUnknownPropertyStrictMode(shouldThrow) {
|
|
2768
|
+
shouldThrowErrorOnUnknownProperty = shouldThrow;
|
|
2769
|
+
}
|
|
2770
|
+
function ɵgetUnknownPropertyStrictMode() {
|
|
2771
|
+
return shouldThrowErrorOnUnknownProperty;
|
|
2772
|
+
}
|
|
2773
|
+
function validateElementIsKnown(lView, tNode) {
|
|
2774
|
+
const tView = lView[TVIEW];
|
|
2775
|
+
if (tView.schemas === null) return;
|
|
2776
|
+
const tagName = tNode.value;
|
|
2777
|
+
if (!isDirectiveHost(tNode) && tagName !== null) {
|
|
2778
|
+
const isUnknown = typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 && !customElements.get(tagName);
|
|
2779
|
+
if (isUnknown && !matchingSchemas(tView.schemas, tagName)) {
|
|
2780
|
+
const isHostStandalone = isHostComponentStandalone(lView);
|
|
2781
|
+
const templateLocation = getTemplateLocationDetails(lView);
|
|
2782
|
+
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
2783
|
+
let message = `'${tagName}' is not a known element${templateLocation}:\n`;
|
|
2784
|
+
message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared'}.\n`;
|
|
2785
|
+
if (tagName && tagName.indexOf('-') > -1) {
|
|
2786
|
+
message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
|
|
2787
|
+
} else {
|
|
2788
|
+
message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
|
|
2789
|
+
}
|
|
2790
|
+
if (shouldThrowErrorOnUnknownElement) {
|
|
2791
|
+
throw new RuntimeError(304, message);
|
|
2792
|
+
} else {
|
|
2793
|
+
console.error(formatRuntimeError(304, message));
|
|
2794
|
+
}
|
|
2795
|
+
}
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2798
|
+
function isPropertyValid(element, propName, tagName, schemas) {
|
|
2799
|
+
if (schemas === null) return true;
|
|
2800
|
+
if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
|
|
2801
|
+
return true;
|
|
2802
|
+
}
|
|
2803
|
+
return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
|
|
2804
|
+
}
|
|
2805
|
+
function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
|
|
2806
|
+
if (!tagName && nodeType === 4) {
|
|
2807
|
+
tagName = 'ng-template';
|
|
2808
|
+
}
|
|
2809
|
+
const isHostStandalone = isHostComponentStandalone(lView);
|
|
2810
|
+
const templateLocation = getTemplateLocationDetails(lView);
|
|
2811
|
+
let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
|
|
2812
|
+
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
2813
|
+
const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared';
|
|
2814
|
+
if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
|
|
2815
|
+
const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
|
|
2816
|
+
message += `\nIf the '${propName}' is an Angular control flow directive, ` + `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
|
|
2817
|
+
} else {
|
|
2818
|
+
message += `\n1. If '${tagName}' is an Angular component and it has the ` + `'${propName}' input, then verify that it is ${importLocation}.`;
|
|
2819
|
+
if (tagName && tagName.indexOf('-') > -1) {
|
|
2820
|
+
message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` + `to the ${schemas} of this component to suppress this message.`;
|
|
2821
|
+
message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
|
|
2822
|
+
} else {
|
|
2823
|
+
message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
|
|
2824
|
+
}
|
|
2825
|
+
}
|
|
2826
|
+
reportUnknownPropertyError(message);
|
|
2827
|
+
}
|
|
2828
|
+
function reportUnknownPropertyError(message) {
|
|
2829
|
+
if (shouldThrowErrorOnUnknownProperty) {
|
|
2830
|
+
throw new RuntimeError(303, message);
|
|
2831
|
+
} else {
|
|
2832
|
+
console.error(formatRuntimeError(303, message));
|
|
2833
|
+
}
|
|
2834
|
+
}
|
|
2835
|
+
function getDeclarationComponentDef(lView) {
|
|
2836
|
+
!ngDevMode && throwError('Must never be called in production mode');
|
|
2837
|
+
const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
|
|
2838
|
+
const context = declarationLView[CONTEXT];
|
|
2839
|
+
if (!context) return null;
|
|
2840
|
+
return context.constructor ? getComponentDef(context.constructor) : null;
|
|
2841
|
+
}
|
|
2842
|
+
function isHostComponentStandalone(lView) {
|
|
2843
|
+
!ngDevMode && throwError('Must never be called in production mode');
|
|
2844
|
+
const componentDef = getDeclarationComponentDef(lView);
|
|
2845
|
+
return !!componentDef?.standalone;
|
|
2846
|
+
}
|
|
2847
|
+
function getTemplateLocationDetails(lView) {
|
|
2848
|
+
!ngDevMode && throwError('Must never be called in production mode');
|
|
2849
|
+
const hostComponentDef = getDeclarationComponentDef(lView);
|
|
2850
|
+
const componentClassName = hostComponentDef?.type?.name;
|
|
2851
|
+
return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
|
|
2852
|
+
}
|
|
2853
|
+
const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'], ['ngSwitchDefault', 'NgSwitchDefault']]);
|
|
2854
|
+
function matchingSchemas(schemas, tagName) {
|
|
2855
|
+
if (schemas !== null) {
|
|
2856
|
+
for (let i = 0; i < schemas.length; i++) {
|
|
2857
|
+
const schema = schemas[i];
|
|
2858
|
+
if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1) {
|
|
2859
|
+
return true;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
}
|
|
2863
|
+
return false;
|
|
2864
|
+
}
|
|
2865
|
+
|
|
2729
2866
|
let policy$1;
|
|
2730
2867
|
function getPolicy$1() {
|
|
2731
2868
|
if (policy$1 === undefined) {
|
|
@@ -3064,6 +3201,81 @@ function isTemplateElement(el) {
|
|
|
3064
3201
|
return el.nodeType === Node.ELEMENT_NODE && el.nodeName === 'TEMPLATE';
|
|
3065
3202
|
}
|
|
3066
3203
|
|
|
3204
|
+
const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
|
|
3205
|
+
const COMMENT_DELIMITER = /(<|>)/g;
|
|
3206
|
+
const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
|
|
3207
|
+
function escapeCommentText(value) {
|
|
3208
|
+
return value.replace(COMMENT_DISALLOWED, text => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
|
|
3209
|
+
}
|
|
3210
|
+
|
|
3211
|
+
function createTextNode(renderer, value) {
|
|
3212
|
+
return renderer.createText(value);
|
|
3213
|
+
}
|
|
3214
|
+
function updateTextNode(renderer, rNode, value) {
|
|
3215
|
+
renderer.setValue(rNode, value);
|
|
3216
|
+
}
|
|
3217
|
+
function createCommentNode(renderer, value) {
|
|
3218
|
+
return renderer.createComment(escapeCommentText(value));
|
|
3219
|
+
}
|
|
3220
|
+
function createElementNode(renderer, name, namespace) {
|
|
3221
|
+
return renderer.createElement(name, namespace);
|
|
3222
|
+
}
|
|
3223
|
+
function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
|
|
3224
|
+
renderer.insertBefore(parent, child, beforeNode, isMove);
|
|
3225
|
+
}
|
|
3226
|
+
function nativeAppendChild(renderer, parent, child) {
|
|
3227
|
+
ngDevMode && assertDefined(parent, 'parent node must be defined');
|
|
3228
|
+
renderer.appendChild(parent, child);
|
|
3229
|
+
}
|
|
3230
|
+
function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
|
|
3231
|
+
if (beforeNode !== null) {
|
|
3232
|
+
nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
|
|
3233
|
+
} else {
|
|
3234
|
+
nativeAppendChild(renderer, parent, child);
|
|
3235
|
+
}
|
|
3236
|
+
}
|
|
3237
|
+
function nativeRemoveNode(renderer, rNode, isHostElement, requireSynchronousElementRemoval) {
|
|
3238
|
+
renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval);
|
|
3239
|
+
}
|
|
3240
|
+
function clearElementContents(rElement) {
|
|
3241
|
+
rElement.textContent = '';
|
|
3242
|
+
}
|
|
3243
|
+
function writeDirectStyle(renderer, element, newValue) {
|
|
3244
|
+
ngDevMode && assertString(newValue, "'newValue' should be a string");
|
|
3245
|
+
renderer.setAttribute(element, 'style', newValue);
|
|
3246
|
+
}
|
|
3247
|
+
function writeDirectClass(renderer, element, newValue) {
|
|
3248
|
+
ngDevMode && assertString(newValue, "'newValue' should be a string");
|
|
3249
|
+
if (newValue === '') {
|
|
3250
|
+
renderer.removeAttribute(element, 'class');
|
|
3251
|
+
} else {
|
|
3252
|
+
renderer.setAttribute(element, 'class', newValue);
|
|
3253
|
+
}
|
|
3254
|
+
}
|
|
3255
|
+
function setupStaticAttributes(renderer, element, tNode) {
|
|
3256
|
+
const {
|
|
3257
|
+
mergedAttrs,
|
|
3258
|
+
classes,
|
|
3259
|
+
styles
|
|
3260
|
+
} = tNode;
|
|
3261
|
+
if (mergedAttrs !== null) {
|
|
3262
|
+
setUpAttributes(renderer, element, mergedAttrs);
|
|
3263
|
+
}
|
|
3264
|
+
if (classes !== null) {
|
|
3265
|
+
writeDirectClass(renderer, element, classes);
|
|
3266
|
+
}
|
|
3267
|
+
if (styles !== null) {
|
|
3268
|
+
writeDirectStyle(renderer, element, styles);
|
|
3269
|
+
}
|
|
3270
|
+
}
|
|
3271
|
+
|
|
3272
|
+
function enforceIframeSecurity(iframe) {
|
|
3273
|
+
const lView = getLView();
|
|
3274
|
+
iframe.src = '';
|
|
3275
|
+
iframe.srcdoc = trustedHTMLFromString('');
|
|
3276
|
+
nativeRemoveNode(lView[RENDERER], iframe);
|
|
3277
|
+
}
|
|
3278
|
+
|
|
3067
3279
|
var SecurityContext;
|
|
3068
3280
|
(function (SecurityContext) {
|
|
3069
3281
|
SecurityContext[SecurityContext["NONE"] = 0] = "NONE";
|
|
@@ -3161,12 +3373,31 @@ function getSanitizer() {
|
|
|
3161
3373
|
const lView = getLView();
|
|
3162
3374
|
return lView && lView[ENVIRONMENT].sanitizer;
|
|
3163
3375
|
}
|
|
3164
|
-
|
|
3165
|
-
const
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3376
|
+
const attributeName = new Set(['attributename']);
|
|
3377
|
+
const SECURITY_SENSITIVE_ELEMENTS = {
|
|
3378
|
+
'iframe': new Set(['sandbox', 'allow', 'allowfullscreen', 'referrerpolicy', 'csp', 'fetchpriority']),
|
|
3379
|
+
'animate': attributeName,
|
|
3380
|
+
'set': attributeName,
|
|
3381
|
+
'animatemotion': attributeName,
|
|
3382
|
+
'animatetransform': attributeName
|
|
3383
|
+
};
|
|
3384
|
+
function ɵɵvalidateAttribute(value, tagName, attributeName) {
|
|
3385
|
+
const lowerCaseTagName = tagName.toLowerCase();
|
|
3386
|
+
const lowerCaseAttrName = attributeName.toLowerCase();
|
|
3387
|
+
if (!SECURITY_SENSITIVE_ELEMENTS[lowerCaseTagName]?.has(lowerCaseAttrName)) {
|
|
3388
|
+
return value;
|
|
3389
|
+
}
|
|
3390
|
+
const tNode = getSelectedTNode();
|
|
3391
|
+
if (tNode.type !== 2) {
|
|
3392
|
+
return value;
|
|
3393
|
+
}
|
|
3394
|
+
const lView = getLView();
|
|
3395
|
+
if (lowerCaseTagName === 'iframe') {
|
|
3396
|
+
const element = getNativeByTNode(tNode, lView);
|
|
3397
|
+
enforceIframeSecurity(element);
|
|
3398
|
+
}
|
|
3399
|
+
const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${tagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element ` + `as a static attribute only. \n` + `To fix this, switch the \`${attributeName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
|
|
3400
|
+
throw new RuntimeError(-910, errorMessage);
|
|
3170
3401
|
}
|
|
3171
3402
|
|
|
3172
3403
|
const NG_REFLECT_ATTRS_FLAG_DEFAULT = false;
|
|
@@ -3196,120 +3427,6 @@ function normalizeDebugBindingValue(value) {
|
|
|
3196
3427
|
}
|
|
3197
3428
|
}
|
|
3198
3429
|
|
|
3199
|
-
const CUSTOM_ELEMENTS_SCHEMA = {
|
|
3200
|
-
name: 'custom-elements'
|
|
3201
|
-
};
|
|
3202
|
-
const NO_ERRORS_SCHEMA = {
|
|
3203
|
-
name: 'no-errors-schema'
|
|
3204
|
-
};
|
|
3205
|
-
|
|
3206
|
-
let shouldThrowErrorOnUnknownElement = false;
|
|
3207
|
-
function ɵsetUnknownElementStrictMode(shouldThrow) {
|
|
3208
|
-
shouldThrowErrorOnUnknownElement = shouldThrow;
|
|
3209
|
-
}
|
|
3210
|
-
function ɵgetUnknownElementStrictMode() {
|
|
3211
|
-
return shouldThrowErrorOnUnknownElement;
|
|
3212
|
-
}
|
|
3213
|
-
let shouldThrowErrorOnUnknownProperty = false;
|
|
3214
|
-
function ɵsetUnknownPropertyStrictMode(shouldThrow) {
|
|
3215
|
-
shouldThrowErrorOnUnknownProperty = shouldThrow;
|
|
3216
|
-
}
|
|
3217
|
-
function ɵgetUnknownPropertyStrictMode() {
|
|
3218
|
-
return shouldThrowErrorOnUnknownProperty;
|
|
3219
|
-
}
|
|
3220
|
-
function validateElementIsKnown(lView, tNode) {
|
|
3221
|
-
const tView = lView[TVIEW];
|
|
3222
|
-
if (tView.schemas === null) return;
|
|
3223
|
-
const tagName = tNode.value;
|
|
3224
|
-
if (!isDirectiveHost(tNode) && tagName !== null) {
|
|
3225
|
-
const isUnknown = typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 && !customElements.get(tagName);
|
|
3226
|
-
if (isUnknown && !matchingSchemas(tView.schemas, tagName)) {
|
|
3227
|
-
const isHostStandalone = isHostComponentStandalone(lView);
|
|
3228
|
-
const templateLocation = getTemplateLocationDetails(lView);
|
|
3229
|
-
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
3230
|
-
let message = `'${tagName}' is not a known element${templateLocation}:\n`;
|
|
3231
|
-
message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared'}.\n`;
|
|
3232
|
-
if (tagName && tagName.indexOf('-') > -1) {
|
|
3233
|
-
message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
|
|
3234
|
-
} else {
|
|
3235
|
-
message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
|
|
3236
|
-
}
|
|
3237
|
-
if (shouldThrowErrorOnUnknownElement) {
|
|
3238
|
-
throw new RuntimeError(304, message);
|
|
3239
|
-
} else {
|
|
3240
|
-
console.error(formatRuntimeError(304, message));
|
|
3241
|
-
}
|
|
3242
|
-
}
|
|
3243
|
-
}
|
|
3244
|
-
}
|
|
3245
|
-
function isPropertyValid(element, propName, tagName, schemas) {
|
|
3246
|
-
if (schemas === null) return true;
|
|
3247
|
-
if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
|
|
3248
|
-
return true;
|
|
3249
|
-
}
|
|
3250
|
-
return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
|
|
3251
|
-
}
|
|
3252
|
-
function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
|
|
3253
|
-
if (!tagName && nodeType === 4) {
|
|
3254
|
-
tagName = 'ng-template';
|
|
3255
|
-
}
|
|
3256
|
-
const isHostStandalone = isHostComponentStandalone(lView);
|
|
3257
|
-
const templateLocation = getTemplateLocationDetails(lView);
|
|
3258
|
-
let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
|
|
3259
|
-
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
3260
|
-
const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : 'a part of an @NgModule where this component is declared';
|
|
3261
|
-
if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
|
|
3262
|
-
const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
|
|
3263
|
-
message += `\nIf the '${propName}' is an Angular control flow directive, ` + `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
|
|
3264
|
-
} else {
|
|
3265
|
-
message += `\n1. If '${tagName}' is an Angular component and it has the ` + `'${propName}' input, then verify that it is ${importLocation}.`;
|
|
3266
|
-
if (tagName && tagName.indexOf('-') > -1) {
|
|
3267
|
-
message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` + `to the ${schemas} of this component to suppress this message.`;
|
|
3268
|
-
message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
|
|
3269
|
-
} else {
|
|
3270
|
-
message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` + `the ${schemas} of this component.`;
|
|
3271
|
-
}
|
|
3272
|
-
}
|
|
3273
|
-
reportUnknownPropertyError(message);
|
|
3274
|
-
}
|
|
3275
|
-
function reportUnknownPropertyError(message) {
|
|
3276
|
-
if (shouldThrowErrorOnUnknownProperty) {
|
|
3277
|
-
throw new RuntimeError(303, message);
|
|
3278
|
-
} else {
|
|
3279
|
-
console.error(formatRuntimeError(303, message));
|
|
3280
|
-
}
|
|
3281
|
-
}
|
|
3282
|
-
function getDeclarationComponentDef(lView) {
|
|
3283
|
-
!ngDevMode && throwError('Must never be called in production mode');
|
|
3284
|
-
const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
|
|
3285
|
-
const context = declarationLView[CONTEXT];
|
|
3286
|
-
if (!context) return null;
|
|
3287
|
-
return context.constructor ? getComponentDef(context.constructor) : null;
|
|
3288
|
-
}
|
|
3289
|
-
function isHostComponentStandalone(lView) {
|
|
3290
|
-
!ngDevMode && throwError('Must never be called in production mode');
|
|
3291
|
-
const componentDef = getDeclarationComponentDef(lView);
|
|
3292
|
-
return !!componentDef?.standalone;
|
|
3293
|
-
}
|
|
3294
|
-
function getTemplateLocationDetails(lView) {
|
|
3295
|
-
!ngDevMode && throwError('Must never be called in production mode');
|
|
3296
|
-
const hostComponentDef = getDeclarationComponentDef(lView);
|
|
3297
|
-
const componentClassName = hostComponentDef?.type?.name;
|
|
3298
|
-
return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
|
|
3299
|
-
}
|
|
3300
|
-
const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'], ['ngSwitchDefault', 'NgSwitchDefault']]);
|
|
3301
|
-
function matchingSchemas(schemas, tagName) {
|
|
3302
|
-
if (schemas !== null) {
|
|
3303
|
-
for (let i = 0; i < schemas.length; i++) {
|
|
3304
|
-
const schema = schemas[i];
|
|
3305
|
-
if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1) {
|
|
3306
|
-
return true;
|
|
3307
|
-
}
|
|
3308
|
-
}
|
|
3309
|
-
}
|
|
3310
|
-
return false;
|
|
3311
|
-
}
|
|
3312
|
-
|
|
3313
3430
|
function ɵɵresolveWindow(element) {
|
|
3314
3431
|
return element.ownerDocument.defaultView;
|
|
3315
3432
|
}
|
|
@@ -3669,67 +3786,6 @@ const NO_CHANGE = typeof ngDevMode === 'undefined' || ngDevMode ? {
|
|
|
3669
3786
|
__brand__: 'NO_CHANGE'
|
|
3670
3787
|
} : {};
|
|
3671
3788
|
|
|
3672
|
-
function createTextNode(renderer, value) {
|
|
3673
|
-
return renderer.createText(value);
|
|
3674
|
-
}
|
|
3675
|
-
function updateTextNode(renderer, rNode, value) {
|
|
3676
|
-
renderer.setValue(rNode, value);
|
|
3677
|
-
}
|
|
3678
|
-
function createCommentNode(renderer, value) {
|
|
3679
|
-
return renderer.createComment(escapeCommentText(value));
|
|
3680
|
-
}
|
|
3681
|
-
function createElementNode(renderer, name, namespace) {
|
|
3682
|
-
return renderer.createElement(name, namespace);
|
|
3683
|
-
}
|
|
3684
|
-
function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
|
|
3685
|
-
renderer.insertBefore(parent, child, beforeNode, isMove);
|
|
3686
|
-
}
|
|
3687
|
-
function nativeAppendChild(renderer, parent, child) {
|
|
3688
|
-
ngDevMode && assertDefined(parent, 'parent node must be defined');
|
|
3689
|
-
renderer.appendChild(parent, child);
|
|
3690
|
-
}
|
|
3691
|
-
function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
|
|
3692
|
-
if (beforeNode !== null) {
|
|
3693
|
-
nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
|
|
3694
|
-
} else {
|
|
3695
|
-
nativeAppendChild(renderer, parent, child);
|
|
3696
|
-
}
|
|
3697
|
-
}
|
|
3698
|
-
function nativeRemoveNode(renderer, rNode, isHostElement, requireSynchronousElementRemoval) {
|
|
3699
|
-
renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval);
|
|
3700
|
-
}
|
|
3701
|
-
function clearElementContents(rElement) {
|
|
3702
|
-
rElement.textContent = '';
|
|
3703
|
-
}
|
|
3704
|
-
function writeDirectStyle(renderer, element, newValue) {
|
|
3705
|
-
ngDevMode && assertString(newValue, "'newValue' should be a string");
|
|
3706
|
-
renderer.setAttribute(element, 'style', newValue);
|
|
3707
|
-
}
|
|
3708
|
-
function writeDirectClass(renderer, element, newValue) {
|
|
3709
|
-
ngDevMode && assertString(newValue, "'newValue' should be a string");
|
|
3710
|
-
if (newValue === '') {
|
|
3711
|
-
renderer.removeAttribute(element, 'class');
|
|
3712
|
-
} else {
|
|
3713
|
-
renderer.setAttribute(element, 'class', newValue);
|
|
3714
|
-
}
|
|
3715
|
-
}
|
|
3716
|
-
function setupStaticAttributes(renderer, element, tNode) {
|
|
3717
|
-
const {
|
|
3718
|
-
mergedAttrs,
|
|
3719
|
-
classes,
|
|
3720
|
-
styles
|
|
3721
|
-
} = tNode;
|
|
3722
|
-
if (mergedAttrs !== null) {
|
|
3723
|
-
setUpAttributes(renderer, element, mergedAttrs);
|
|
3724
|
-
}
|
|
3725
|
-
if (classes !== null) {
|
|
3726
|
-
writeDirectClass(renderer, element, classes);
|
|
3727
|
-
}
|
|
3728
|
-
if (styles !== null) {
|
|
3729
|
-
writeDirectStyle(renderer, element, styles);
|
|
3730
|
-
}
|
|
3731
|
-
}
|
|
3732
|
-
|
|
3733
3789
|
function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) {
|
|
3734
3790
|
const bindingStartIndex = HEADER_OFFSET + decls;
|
|
3735
3791
|
const initialViewLength = bindingStartIndex + vars;
|
|
@@ -4082,7 +4138,7 @@ class AfterRenderImpl {
|
|
|
4082
4138
|
execute() {
|
|
4083
4139
|
const hasSequencesToExecute = this.sequences.size > 0;
|
|
4084
4140
|
if (hasSequencesToExecute) {
|
|
4085
|
-
profiler(
|
|
4141
|
+
profiler(ProfilerEvent.AfterRenderHooksStart);
|
|
4086
4142
|
}
|
|
4087
4143
|
this.executing = true;
|
|
4088
4144
|
for (const phase of AFTER_RENDER_PHASES) {
|
|
@@ -4118,7 +4174,7 @@ class AfterRenderImpl {
|
|
|
4118
4174
|
}
|
|
4119
4175
|
this.deferredRegistrations.clear();
|
|
4120
4176
|
if (hasSequencesToExecute) {
|
|
4121
|
-
profiler(
|
|
4177
|
+
profiler(ProfilerEvent.AfterRenderHooksEnd);
|
|
4122
4178
|
}
|
|
4123
4179
|
}
|
|
4124
4180
|
register(sequence) {
|
|
@@ -4522,19 +4578,19 @@ function executeOnDestroys(tView, lView) {
|
|
|
4522
4578
|
for (let j = 0; j < toCall.length; j += 2) {
|
|
4523
4579
|
const callContext = context[toCall[j]];
|
|
4524
4580
|
const hook = toCall[j + 1];
|
|
4525
|
-
profiler(
|
|
4581
|
+
profiler(ProfilerEvent.LifecycleHookStart, callContext, hook);
|
|
4526
4582
|
try {
|
|
4527
4583
|
hook.call(callContext);
|
|
4528
4584
|
} finally {
|
|
4529
|
-
profiler(
|
|
4585
|
+
profiler(ProfilerEvent.LifecycleHookEnd, callContext, hook);
|
|
4530
4586
|
}
|
|
4531
4587
|
}
|
|
4532
4588
|
} else {
|
|
4533
|
-
profiler(
|
|
4589
|
+
profiler(ProfilerEvent.LifecycleHookStart, context, toCall);
|
|
4534
4590
|
try {
|
|
4535
4591
|
toCall.call(context);
|
|
4536
4592
|
} finally {
|
|
4537
|
-
profiler(
|
|
4593
|
+
profiler(ProfilerEvent.LifecycleHookEnd, context, toCall);
|
|
4538
4594
|
}
|
|
4539
4595
|
}
|
|
4540
4596
|
}
|
|
@@ -4769,12 +4825,12 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
|
4769
4825
|
if (isUpdatePhase && lView.length > HEADER_OFFSET) {
|
|
4770
4826
|
selectIndexInternal(tView, lView, HEADER_OFFSET, !!ngDevMode && isInCheckNoChangesMode());
|
|
4771
4827
|
}
|
|
4772
|
-
const preHookType = isUpdatePhase ?
|
|
4828
|
+
const preHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateStart : ProfilerEvent.TemplateCreateStart;
|
|
4773
4829
|
profiler(preHookType, context, templateFn);
|
|
4774
4830
|
templateFn(rf, context);
|
|
4775
4831
|
} finally {
|
|
4776
4832
|
setSelectedIndex(prevSelectedIndex);
|
|
4777
|
-
const postHookType = isUpdatePhase ?
|
|
4833
|
+
const postHookType = isUpdatePhase ? ProfilerEvent.TemplateUpdateEnd : ProfilerEvent.TemplateCreateEnd;
|
|
4778
4834
|
profiler(postHookType, context, templateFn);
|
|
4779
4835
|
}
|
|
4780
4836
|
}
|
|
@@ -5147,9 +5203,12 @@ function renderComponent(hostLView, componentHostIdx) {
|
|
|
5147
5203
|
if (hostRNode !== null && componentView[HYDRATION] === null) {
|
|
5148
5204
|
componentView[HYDRATION] = retrieveHydrationInfo(hostRNode, componentView[INJECTOR]);
|
|
5149
5205
|
}
|
|
5150
|
-
profiler(
|
|
5151
|
-
|
|
5152
|
-
|
|
5206
|
+
profiler(ProfilerEvent.ComponentStart);
|
|
5207
|
+
try {
|
|
5208
|
+
renderView(componentTView, componentView, componentView[CONTEXT]);
|
|
5209
|
+
} finally {
|
|
5210
|
+
profiler(ProfilerEvent.ComponentEnd, componentView[CONTEXT]);
|
|
5211
|
+
}
|
|
5153
5212
|
}
|
|
5154
5213
|
function syncViewWithBlueprint(tView, lView) {
|
|
5155
5214
|
for (let i = lView.length; i < tView.blueprint.length; i++) {
|
|
@@ -5549,10 +5608,13 @@ function markTransplantedViewsForRefresh(lView) {
|
|
|
5549
5608
|
}
|
|
5550
5609
|
function detectChangesInComponent(hostLView, componentHostIdx, mode) {
|
|
5551
5610
|
ngDevMode && assertEqual(isCreationMode(hostLView), false, 'Should be run in update mode');
|
|
5552
|
-
profiler(
|
|
5611
|
+
profiler(ProfilerEvent.ComponentStart);
|
|
5553
5612
|
const componentView = getComponentLViewByIndex(componentHostIdx, hostLView);
|
|
5554
|
-
|
|
5555
|
-
|
|
5613
|
+
try {
|
|
5614
|
+
detectChangesInViewIfAttached(componentView, mode);
|
|
5615
|
+
} finally {
|
|
5616
|
+
profiler(ProfilerEvent.ComponentEnd, componentView[CONTEXT]);
|
|
5617
|
+
}
|
|
5556
5618
|
}
|
|
5557
5619
|
function detectChangesInViewIfAttached(lView, mode) {
|
|
5558
5620
|
if (!viewAttachedToChangeDetector(lView)) {
|
|
@@ -5614,9 +5676,12 @@ function processHostBindingOpCodes(tView, lView) {
|
|
|
5614
5676
|
const hostBindingFn = hostBindingOpCodes[++i];
|
|
5615
5677
|
setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
|
|
5616
5678
|
const context = lView[directiveIdx];
|
|
5617
|
-
profiler(
|
|
5618
|
-
|
|
5619
|
-
|
|
5679
|
+
profiler(ProfilerEvent.HostBindingsUpdateStart, context);
|
|
5680
|
+
try {
|
|
5681
|
+
hostBindingFn(2, context);
|
|
5682
|
+
} finally {
|
|
5683
|
+
profiler(ProfilerEvent.HostBindingsUpdateEnd, context);
|
|
5684
|
+
}
|
|
5620
5685
|
}
|
|
5621
5686
|
}
|
|
5622
5687
|
} finally {
|
|
@@ -6211,6 +6276,8 @@ function createTNode(tView, tParent, type, index, value, attrs) {
|
|
|
6211
6276
|
directiveEnd: -1,
|
|
6212
6277
|
directiveStylingLast: -1,
|
|
6213
6278
|
componentOffset: -1,
|
|
6279
|
+
fieldIndex: -1,
|
|
6280
|
+
customControlIndex: -1,
|
|
6214
6281
|
propertyBindings: null,
|
|
6215
6282
|
flags,
|
|
6216
6283
|
providerIndexes: 0,
|
|
@@ -7877,13 +7944,13 @@ function wrapListener(tNode, lView, listenerFn) {
|
|
|
7877
7944
|
function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
|
|
7878
7945
|
const prevConsumer = setActiveConsumer$1(null);
|
|
7879
7946
|
try {
|
|
7880
|
-
profiler(
|
|
7947
|
+
profiler(ProfilerEvent.OutputStart, context, listenerFn);
|
|
7881
7948
|
return listenerFn(e) !== false;
|
|
7882
7949
|
} catch (error) {
|
|
7883
7950
|
handleUncaughtError(lView, error);
|
|
7884
7951
|
return false;
|
|
7885
7952
|
} finally {
|
|
7886
|
-
profiler(
|
|
7953
|
+
profiler(ProfilerEvent.OutputEnd, context, listenerFn);
|
|
7887
7954
|
setActiveConsumer$1(prevConsumer);
|
|
7888
7955
|
}
|
|
7889
7956
|
}
|
|
@@ -8168,7 +8235,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
8168
8235
|
this.isBoundToModule = !!ngModule;
|
|
8169
8236
|
}
|
|
8170
8237
|
create(injector, projectableNodes, rootSelectorOrNode, environmentInjector, directives, componentBindings) {
|
|
8171
|
-
profiler(
|
|
8238
|
+
profiler(ProfilerEvent.DynamicComponentStart);
|
|
8172
8239
|
const prevConsumer = setActiveConsumer(null);
|
|
8173
8240
|
try {
|
|
8174
8241
|
const cmpDef = this.componentDef;
|
|
@@ -8203,7 +8270,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
8203
8270
|
unregisterLView(rootLView);
|
|
8204
8271
|
throw e;
|
|
8205
8272
|
} finally {
|
|
8206
|
-
profiler(
|
|
8273
|
+
profiler(ProfilerEvent.DynamicComponentEnd);
|
|
8207
8274
|
leaveView();
|
|
8208
8275
|
}
|
|
8209
8276
|
return new ComponentRef(this.componentType, rootLView, !!hasInputBindings);
|
|
@@ -8213,7 +8280,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
8213
8280
|
}
|
|
8214
8281
|
}
|
|
8215
8282
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
8216
|
-
const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.
|
|
8283
|
+
const tAttributes = rootSelectorOrNode ? ['ng-version', '21.0.2'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
8217
8284
|
let creationBindings = null;
|
|
8218
8285
|
let updateBindings = null;
|
|
8219
8286
|
let varsToAllocate = 0;
|
|
@@ -9087,21 +9154,6 @@ function setAllowDuplicateNgModuleIdsForTest(allowDuplicates) {
|
|
|
9087
9154
|
checkForDuplicateNgModules = !allowDuplicates;
|
|
9088
9155
|
}
|
|
9089
9156
|
|
|
9090
|
-
function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {
|
|
9091
|
-
const lView = getLView();
|
|
9092
|
-
const tNode = getSelectedTNode();
|
|
9093
|
-
const element = getNativeByTNode(tNode, lView);
|
|
9094
|
-
if (tNode.type === 2 && tagName.toLowerCase() === 'iframe') {
|
|
9095
|
-
const iframe = element;
|
|
9096
|
-
iframe.src = '';
|
|
9097
|
-
iframe.srcdoc = trustedHTMLFromString('');
|
|
9098
|
-
nativeRemoveNode(lView[RENDERER], iframe);
|
|
9099
|
-
const errorMessage = ngDevMode && `Angular has detected that the \`${attrName}\` was applied ` + `as a binding to an <iframe>${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attrName}\` can be set on an <iframe> ` + `as a static attribute only. \n` + `To fix this, switch the \`${attrName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
|
|
9100
|
-
throw new RuntimeError(-910, errorMessage);
|
|
9101
|
-
}
|
|
9102
|
-
return attrValue;
|
|
9103
|
-
}
|
|
9104
|
-
|
|
9105
9157
|
let NgModuleRef$1 = class NgModuleRef {};
|
|
9106
9158
|
let NgModuleFactory$1 = class NgModuleFactory {};
|
|
9107
9159
|
|
|
@@ -10298,7 +10350,7 @@ function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
|
|
|
10298
10350
|
};
|
|
10299
10351
|
}
|
|
10300
10352
|
function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView) {
|
|
10301
|
-
profiler(
|
|
10353
|
+
profiler(ProfilerEvent.DeferBlockStateStart);
|
|
10302
10354
|
const stateTmplIndex = getTemplateIndexForState(newState, hostLView, tNode);
|
|
10303
10355
|
if (stateTmplIndex !== null) {
|
|
10304
10356
|
lDetails[DEFER_BLOCK_STATE] = newState;
|
|
@@ -10335,7 +10387,7 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
|
|
|
10335
10387
|
lDetails[ON_COMPLETE_FNS] = null;
|
|
10336
10388
|
}
|
|
10337
10389
|
}
|
|
10338
|
-
profiler(
|
|
10390
|
+
profiler(ProfilerEvent.DeferBlockStateEnd);
|
|
10339
10391
|
}
|
|
10340
10392
|
function applyDeferBlockStateWithScheduling(newState, lDetails, lContainer, tNode, hostLView) {
|
|
10341
10393
|
const now = Date.now();
|
|
@@ -10519,10 +10571,20 @@ function handleEffectCreatedEvent(context, effect) {
|
|
|
10519
10571
|
const {
|
|
10520
10572
|
resolverToEffects
|
|
10521
10573
|
} = frameworkDIDebugData;
|
|
10522
|
-
|
|
10523
|
-
|
|
10524
|
-
|
|
10525
|
-
|
|
10574
|
+
const cleanupContainer = effect instanceof EffectRefImpl ? effect[SIGNAL] : effect.sequence;
|
|
10575
|
+
let trackedEffects = resolverToEffects.get(diResolver);
|
|
10576
|
+
if (!trackedEffects) {
|
|
10577
|
+
trackedEffects = [];
|
|
10578
|
+
resolverToEffects.set(diResolver, trackedEffects);
|
|
10579
|
+
}
|
|
10580
|
+
trackedEffects.push(effect);
|
|
10581
|
+
cleanupContainer.onDestroyFns ??= [];
|
|
10582
|
+
cleanupContainer.onDestroyFns.push(() => {
|
|
10583
|
+
const index = trackedEffects.indexOf(effect);
|
|
10584
|
+
if (index > -1) {
|
|
10585
|
+
trackedEffects.splice(index, 1);
|
|
10586
|
+
}
|
|
10587
|
+
});
|
|
10526
10588
|
}
|
|
10527
10589
|
function handleInjectEvent(context, data) {
|
|
10528
10590
|
const diResolver = getDIResolver(context.injector);
|
|
@@ -11208,9 +11270,11 @@ function measureStart(startEvent) {
|
|
|
11208
11270
|
console.timeStamp('Event_' + startEvent + '_' + counter++);
|
|
11209
11271
|
}
|
|
11210
11272
|
function measureEnd(startEvent, entryName, color) {
|
|
11211
|
-
|
|
11212
|
-
|
|
11213
|
-
|
|
11273
|
+
let top;
|
|
11274
|
+
do {
|
|
11275
|
+
top = eventsStack.pop();
|
|
11276
|
+
assertDefined(top, 'Profiling error: could not find start event entry ' + startEvent);
|
|
11277
|
+
} while (top[0] !== startEvent);
|
|
11214
11278
|
console.timeStamp(entryName, 'Event_' + top[0] + '_' + top[1], undefined, '\u{1F170}\uFE0F Angular', undefined, color);
|
|
11215
11279
|
}
|
|
11216
11280
|
const chromeDevToolsInjectorProfiler = event => {
|
|
@@ -11224,89 +11288,89 @@ const chromeDevToolsInjectorProfiler = event => {
|
|
|
11224
11288
|
};
|
|
11225
11289
|
const devToolsProfiler = (event, instance, eventFn) => {
|
|
11226
11290
|
switch (event) {
|
|
11227
|
-
case
|
|
11228
|
-
case
|
|
11229
|
-
case
|
|
11230
|
-
case
|
|
11231
|
-
case
|
|
11232
|
-
case
|
|
11233
|
-
case
|
|
11234
|
-
case
|
|
11235
|
-
case
|
|
11236
|
-
case
|
|
11237
|
-
case
|
|
11238
|
-
case
|
|
11239
|
-
case
|
|
11291
|
+
case ProfilerEvent.BootstrapApplicationStart:
|
|
11292
|
+
case ProfilerEvent.BootstrapComponentStart:
|
|
11293
|
+
case ProfilerEvent.ChangeDetectionStart:
|
|
11294
|
+
case ProfilerEvent.ChangeDetectionSyncStart:
|
|
11295
|
+
case ProfilerEvent.AfterRenderHooksStart:
|
|
11296
|
+
case ProfilerEvent.ComponentStart:
|
|
11297
|
+
case ProfilerEvent.DeferBlockStateStart:
|
|
11298
|
+
case ProfilerEvent.DynamicComponentStart:
|
|
11299
|
+
case ProfilerEvent.TemplateCreateStart:
|
|
11300
|
+
case ProfilerEvent.LifecycleHookStart:
|
|
11301
|
+
case ProfilerEvent.TemplateUpdateStart:
|
|
11302
|
+
case ProfilerEvent.HostBindingsUpdateStart:
|
|
11303
|
+
case ProfilerEvent.OutputStart:
|
|
11240
11304
|
{
|
|
11241
11305
|
measureStart(event);
|
|
11242
11306
|
break;
|
|
11243
11307
|
}
|
|
11244
|
-
case
|
|
11308
|
+
case ProfilerEvent.BootstrapApplicationEnd:
|
|
11245
11309
|
{
|
|
11246
|
-
measureEnd(
|
|
11310
|
+
measureEnd(ProfilerEvent.BootstrapApplicationStart, 'Bootstrap application', 'primary-dark');
|
|
11247
11311
|
break;
|
|
11248
11312
|
}
|
|
11249
|
-
case
|
|
11313
|
+
case ProfilerEvent.BootstrapComponentEnd:
|
|
11250
11314
|
{
|
|
11251
|
-
measureEnd(
|
|
11315
|
+
measureEnd(ProfilerEvent.BootstrapComponentStart, 'Bootstrap component', 'primary-dark');
|
|
11252
11316
|
break;
|
|
11253
11317
|
}
|
|
11254
|
-
case
|
|
11318
|
+
case ProfilerEvent.ChangeDetectionEnd:
|
|
11255
11319
|
{
|
|
11256
11320
|
changeDetectionSyncRuns = 0;
|
|
11257
|
-
measureEnd(
|
|
11321
|
+
measureEnd(ProfilerEvent.ChangeDetectionStart, 'Change detection ' + changeDetectionRuns++, 'primary-dark');
|
|
11258
11322
|
break;
|
|
11259
11323
|
}
|
|
11260
|
-
case
|
|
11324
|
+
case ProfilerEvent.ChangeDetectionSyncEnd:
|
|
11261
11325
|
{
|
|
11262
|
-
measureEnd(
|
|
11326
|
+
measureEnd(ProfilerEvent.ChangeDetectionSyncStart, 'Synchronization ' + changeDetectionSyncRuns++, 'primary');
|
|
11263
11327
|
break;
|
|
11264
11328
|
}
|
|
11265
|
-
case
|
|
11329
|
+
case ProfilerEvent.AfterRenderHooksEnd:
|
|
11266
11330
|
{
|
|
11267
|
-
measureEnd(
|
|
11331
|
+
measureEnd(ProfilerEvent.AfterRenderHooksStart, 'After render hooks', 'primary');
|
|
11268
11332
|
break;
|
|
11269
11333
|
}
|
|
11270
|
-
case
|
|
11334
|
+
case ProfilerEvent.ComponentEnd:
|
|
11271
11335
|
{
|
|
11272
11336
|
const typeName = getComponentMeasureName(instance);
|
|
11273
|
-
measureEnd(
|
|
11337
|
+
measureEnd(ProfilerEvent.ComponentStart, typeName, 'primary-light');
|
|
11274
11338
|
break;
|
|
11275
11339
|
}
|
|
11276
|
-
case
|
|
11340
|
+
case ProfilerEvent.DeferBlockStateEnd:
|
|
11277
11341
|
{
|
|
11278
|
-
measureEnd(
|
|
11342
|
+
measureEnd(ProfilerEvent.DeferBlockStateStart, 'Defer block', 'primary-dark');
|
|
11279
11343
|
break;
|
|
11280
11344
|
}
|
|
11281
|
-
case
|
|
11345
|
+
case ProfilerEvent.DynamicComponentEnd:
|
|
11282
11346
|
{
|
|
11283
|
-
measureEnd(
|
|
11347
|
+
measureEnd(ProfilerEvent.DynamicComponentStart, 'Dynamic component creation', 'primary-dark');
|
|
11284
11348
|
break;
|
|
11285
11349
|
}
|
|
11286
|
-
case
|
|
11350
|
+
case ProfilerEvent.TemplateUpdateEnd:
|
|
11287
11351
|
{
|
|
11288
|
-
measureEnd(
|
|
11352
|
+
measureEnd(ProfilerEvent.TemplateUpdateStart, stringifyForError(eventFn) + ' (update)', 'secondary-dark');
|
|
11289
11353
|
break;
|
|
11290
11354
|
}
|
|
11291
|
-
case
|
|
11355
|
+
case ProfilerEvent.TemplateCreateEnd:
|
|
11292
11356
|
{
|
|
11293
|
-
measureEnd(
|
|
11357
|
+
measureEnd(ProfilerEvent.TemplateCreateStart, stringifyForError(eventFn) + ' (create)', 'secondary');
|
|
11294
11358
|
break;
|
|
11295
11359
|
}
|
|
11296
|
-
case
|
|
11360
|
+
case ProfilerEvent.HostBindingsUpdateEnd:
|
|
11297
11361
|
{
|
|
11298
|
-
measureEnd(
|
|
11362
|
+
measureEnd(ProfilerEvent.HostBindingsUpdateStart, 'HostBindings', 'secondary-dark');
|
|
11299
11363
|
break;
|
|
11300
11364
|
}
|
|
11301
|
-
case
|
|
11365
|
+
case ProfilerEvent.LifecycleHookEnd:
|
|
11302
11366
|
{
|
|
11303
11367
|
const typeName = getComponentMeasureName(instance);
|
|
11304
|
-
measureEnd(
|
|
11368
|
+
measureEnd(ProfilerEvent.LifecycleHookStart, `${typeName}:${stringifyForError(eventFn)}`, 'tertiary');
|
|
11305
11369
|
break;
|
|
11306
11370
|
}
|
|
11307
|
-
case
|
|
11371
|
+
case ProfilerEvent.OutputEnd:
|
|
11308
11372
|
{
|
|
11309
|
-
measureEnd(
|
|
11373
|
+
measureEnd(ProfilerEvent.OutputStart, stringifyForError(eventFn), 'tertiary-light');
|
|
11310
11374
|
break;
|
|
11311
11375
|
}
|
|
11312
11376
|
default:
|
|
@@ -11340,7 +11404,7 @@ function enableProfiling() {
|
|
|
11340
11404
|
}
|
|
11341
11405
|
|
|
11342
11406
|
function getTransferState(injector) {
|
|
11343
|
-
const doc =
|
|
11407
|
+
const doc = injector.get(DOCUMENT$1);
|
|
11344
11408
|
const appId = injector.get(APP_ID);
|
|
11345
11409
|
const transferState = retrieveTransferredState(doc, appId);
|
|
11346
11410
|
const filteredEntries = {};
|
|
@@ -11749,7 +11813,7 @@ class ApplicationRef {
|
|
|
11749
11813
|
bootstrapImpl(componentOrFactory, rootSelectorOrNode, injector = Injector.NULL) {
|
|
11750
11814
|
const ngZone = this._injector.get(NgZone);
|
|
11751
11815
|
return ngZone.run(() => {
|
|
11752
|
-
profiler(
|
|
11816
|
+
profiler(ProfilerEvent.BootstrapComponentStart);
|
|
11753
11817
|
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
11754
11818
|
const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
|
|
11755
11819
|
const initStatus = this._injector.get(ApplicationInitStatus);
|
|
@@ -11785,7 +11849,7 @@ class ApplicationRef {
|
|
|
11785
11849
|
const _console = this._injector.get(Console);
|
|
11786
11850
|
_console.log(`Angular is running in development mode.`);
|
|
11787
11851
|
}
|
|
11788
|
-
profiler(
|
|
11852
|
+
profiler(ProfilerEvent.BootstrapComponentEnd, compRef);
|
|
11789
11853
|
return compRef;
|
|
11790
11854
|
});
|
|
11791
11855
|
}
|
|
@@ -11796,7 +11860,7 @@ class ApplicationRef {
|
|
|
11796
11860
|
this._tick();
|
|
11797
11861
|
}
|
|
11798
11862
|
_tick() {
|
|
11799
|
-
profiler(
|
|
11863
|
+
profiler(ProfilerEvent.ChangeDetectionStart);
|
|
11800
11864
|
if (this.tracingSnapshot !== null) {
|
|
11801
11865
|
this.tracingSnapshot.run(TracingAction.CHANGE_DETECTION, this.tickImpl);
|
|
11802
11866
|
} else {
|
|
@@ -11806,6 +11870,7 @@ class ApplicationRef {
|
|
|
11806
11870
|
tickImpl = () => {
|
|
11807
11871
|
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
11808
11872
|
if (this._runningTick) {
|
|
11873
|
+
profiler(ProfilerEvent.ChangeDetectionEnd);
|
|
11809
11874
|
throw new RuntimeError(101, ngDevMode && 'ApplicationRef.tick is called recursively');
|
|
11810
11875
|
}
|
|
11811
11876
|
const prevConsumer = setActiveConsumer(null);
|
|
@@ -11823,7 +11888,7 @@ class ApplicationRef {
|
|
|
11823
11888
|
this.tracingSnapshot = null;
|
|
11824
11889
|
setActiveConsumer(prevConsumer);
|
|
11825
11890
|
this.afterTick.next();
|
|
11826
|
-
profiler(
|
|
11891
|
+
profiler(ProfilerEvent.ChangeDetectionEnd);
|
|
11827
11892
|
}
|
|
11828
11893
|
};
|
|
11829
11894
|
synchronize() {
|
|
@@ -11834,9 +11899,12 @@ class ApplicationRef {
|
|
|
11834
11899
|
}
|
|
11835
11900
|
let runs = 0;
|
|
11836
11901
|
while (this.dirtyFlags !== 0 && runs++ < MAXIMUM_REFRESH_RERUNS) {
|
|
11837
|
-
profiler(
|
|
11838
|
-
|
|
11839
|
-
|
|
11902
|
+
profiler(ProfilerEvent.ChangeDetectionSyncStart);
|
|
11903
|
+
try {
|
|
11904
|
+
this.synchronizeOnce();
|
|
11905
|
+
} finally {
|
|
11906
|
+
profiler(ProfilerEvent.ChangeDetectionSyncEnd);
|
|
11907
|
+
}
|
|
11840
11908
|
}
|
|
11841
11909
|
if ((typeof ngDevMode === 'undefined' || ngDevMode) && runs >= MAXIMUM_REFRESH_RERUNS) {
|
|
11842
11910
|
throw new RuntimeError(103, ngDevMode && 'Infinite change detection while refreshing application views. ' + 'Ensure views are not calling `markForCheck` on every template execution or ' + 'that afterRender hooks always mark views for check.');
|
|
@@ -13175,15 +13243,19 @@ function ɵɵcontrolCreate() {
|
|
|
13175
13243
|
const lView = getLView();
|
|
13176
13244
|
const tView = getTView();
|
|
13177
13245
|
const tNode = getCurrentTNode();
|
|
13178
|
-
|
|
13246
|
+
if (tView.firstCreatePass) {
|
|
13247
|
+
initializeControlFirstCreatePass(tView, tNode, lView);
|
|
13248
|
+
}
|
|
13249
|
+
const control = getControlDirective(tNode, lView);
|
|
13179
13250
|
if (!control) {
|
|
13180
13251
|
return;
|
|
13181
13252
|
}
|
|
13182
|
-
|
|
13253
|
+
performanceMarkFeature('NgSignalForms');
|
|
13254
|
+
if (tNode.flags & 1024) {
|
|
13183
13255
|
listenToCustomControl(lView, tNode, control, 'value');
|
|
13184
|
-
} else if (tNode.flags &
|
|
13256
|
+
} else if (tNode.flags & 2048) {
|
|
13185
13257
|
listenToCustomControl(lView, tNode, control, 'checked');
|
|
13186
|
-
} else if (tNode.flags &
|
|
13258
|
+
} else if (tNode.flags & 4096) {
|
|
13187
13259
|
listenToInteropControl(control);
|
|
13188
13260
|
} else {
|
|
13189
13261
|
listenToNativeControl(lView, tNode, control);
|
|
@@ -13201,11 +13273,12 @@ function ɵɵcontrol(value, sanitizer) {
|
|
|
13201
13273
|
}
|
|
13202
13274
|
const control = getControlDirective(tNode, lView);
|
|
13203
13275
|
if (control) {
|
|
13204
|
-
|
|
13276
|
+
updateControlClasses(lView, tNode, control);
|
|
13277
|
+
if (tNode.flags & 1024) {
|
|
13205
13278
|
updateCustomControl(tNode, lView, control, 'value');
|
|
13206
|
-
} else if (tNode.flags &
|
|
13279
|
+
} else if (tNode.flags & 2048) {
|
|
13207
13280
|
updateCustomControl(tNode, lView, control, 'checked');
|
|
13208
|
-
} else if (tNode.flags &
|
|
13281
|
+
} else if (tNode.flags & 4096) {
|
|
13209
13282
|
updateInteropControl(lView, control);
|
|
13210
13283
|
} else {
|
|
13211
13284
|
updateNativeControl(tNode, lView, control);
|
|
@@ -13213,82 +13286,84 @@ function ɵɵcontrol(value, sanitizer) {
|
|
|
13213
13286
|
}
|
|
13214
13287
|
nextBindingIndex();
|
|
13215
13288
|
}
|
|
13216
|
-
|
|
13217
|
-
|
|
13289
|
+
function initializeControlFirstCreatePass(tView, tNode, lView) {
|
|
13290
|
+
ngDevMode && assertFirstCreatePass(tView);
|
|
13218
13291
|
const directiveIndices = tNode.inputs?.['field'];
|
|
13219
13292
|
if (!directiveIndices) {
|
|
13220
13293
|
return;
|
|
13221
13294
|
}
|
|
13222
|
-
|
|
13223
|
-
|
|
13224
|
-
componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
13225
|
-
if (directiveIndices.includes(componentIndex)) {
|
|
13226
|
-
return;
|
|
13227
|
-
}
|
|
13295
|
+
if (isComponentHost(tNode) && directiveIndices.includes(tNode.directiveStart + tNode.componentOffset)) {
|
|
13296
|
+
return;
|
|
13228
13297
|
}
|
|
13229
|
-
const
|
|
13230
|
-
if (
|
|
13298
|
+
const controlIndex = directiveIndices.find(index => ɵCONTROL in lView[index]);
|
|
13299
|
+
if (controlIndex === undefined) {
|
|
13231
13300
|
return;
|
|
13232
13301
|
}
|
|
13233
|
-
tNode.
|
|
13234
|
-
|
|
13235
|
-
|
|
13236
|
-
|
|
13302
|
+
tNode.fieldIndex = controlIndex;
|
|
13303
|
+
const isCustomControl = isCustomControlFirstCreatePass(tView, tNode);
|
|
13304
|
+
if (!isCustomControl && lView[controlIndex].ɵinteropControl) {
|
|
13305
|
+
tNode.flags |= 4096;
|
|
13306
|
+
return;
|
|
13307
|
+
}
|
|
13308
|
+
const isNativeControl = isNativeControlFirstCreatePass(tView, tNode);
|
|
13309
|
+
if (isNativeControl || isCustomControl) {
|
|
13310
|
+
return;
|
|
13311
|
+
}
|
|
13312
|
+
const tagName = tNode.value;
|
|
13313
|
+
throw new RuntimeError(318, `'<${tagName}>' is an invalid [field] directive host. The host must be a native form control ` + `(such as <input>', '<select>', or '<textarea>') or a custom form control with a 'value' or ` + `'checked' model.`);
|
|
13314
|
+
}
|
|
13315
|
+
function isCustomControlFirstCreatePass(tView, tNode) {
|
|
13316
|
+
for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
|
|
13317
|
+
const directiveDef = tView.data[i];
|
|
13318
|
+
if (hasModelInput(directiveDef, 'value')) {
|
|
13319
|
+
tNode.flags |= 1024;
|
|
13320
|
+
tNode.customControlIndex = i;
|
|
13321
|
+
return true;
|
|
13322
|
+
}
|
|
13323
|
+
if (hasModelInput(directiveDef, 'checked')) {
|
|
13237
13324
|
tNode.flags |= 2048;
|
|
13238
|
-
|
|
13239
|
-
|
|
13325
|
+
tNode.customControlIndex = i;
|
|
13326
|
+
return true;
|
|
13240
13327
|
}
|
|
13241
13328
|
}
|
|
13242
|
-
|
|
13243
|
-
|
|
13244
|
-
|
|
13329
|
+
return false;
|
|
13330
|
+
}
|
|
13331
|
+
function isNativeControlFirstCreatePass(tView, tNode) {
|
|
13332
|
+
if (!isNativeControl(tNode)) {
|
|
13333
|
+
return false;
|
|
13245
13334
|
}
|
|
13246
|
-
|
|
13335
|
+
tNode.flags |= 8192;
|
|
13336
|
+
if (isNumericInput(tNode)) {
|
|
13247
13337
|
tNode.flags |= 16384;
|
|
13248
|
-
if (isNumericInput(tNode)) {
|
|
13249
|
-
tNode.flags |= 32768;
|
|
13250
|
-
}
|
|
13251
|
-
if (isTextControl(tNode)) {
|
|
13252
|
-
tNode.flags |= 65536;
|
|
13253
|
-
}
|
|
13254
13338
|
}
|
|
13255
|
-
if (tNode
|
|
13256
|
-
|
|
13339
|
+
if (isTextControl(tNode)) {
|
|
13340
|
+
tNode.flags |= 32768;
|
|
13257
13341
|
}
|
|
13258
|
-
|
|
13259
|
-
throw new RuntimeError(318, `'<${tagName}>' is an invalid [field] directive host. The host must be a native form control ` + `(such as <input>', '<select>', or '<textarea>') or a custom form control component with a ` + `'value' or 'checked' model.`);
|
|
13342
|
+
return true;
|
|
13260
13343
|
}
|
|
13261
13344
|
function getControlDirective(tNode, lView) {
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
function findControlDirective(lView, directiveIndices) {
|
|
13265
|
-
for (let index of directiveIndices) {
|
|
13266
|
-
const directive = lView[index];
|
|
13267
|
-
if (ɵCONTROL in directive) {
|
|
13268
|
-
return directive;
|
|
13269
|
-
}
|
|
13270
|
-
}
|
|
13271
|
-
return;
|
|
13345
|
+
const index = tNode.fieldIndex;
|
|
13346
|
+
return index === -1 ? null : lView[index];
|
|
13272
13347
|
}
|
|
13273
|
-
function hasModelInput(
|
|
13274
|
-
return hasSignalInput(
|
|
13348
|
+
function hasModelInput(directiveDef, name) {
|
|
13349
|
+
return hasSignalInput(directiveDef, name) && hasOutput(directiveDef, name + 'Change');
|
|
13275
13350
|
}
|
|
13276
|
-
function hasSignalInput(
|
|
13277
|
-
const input =
|
|
13351
|
+
function hasSignalInput(directiveDef, name) {
|
|
13352
|
+
const input = directiveDef.inputs[name];
|
|
13278
13353
|
return input && (input[1] & InputFlags.SignalBased) !== 0;
|
|
13279
13354
|
}
|
|
13280
|
-
function hasOutput(
|
|
13281
|
-
return name in
|
|
13355
|
+
function hasOutput(directiveDef, name) {
|
|
13356
|
+
return name in directiveDef.outputs;
|
|
13282
13357
|
}
|
|
13283
13358
|
function listenToCustomControl(lView, tNode, control, modelName) {
|
|
13284
|
-
const componentIndex = tNode.directiveStart + tNode.componentOffset;
|
|
13285
|
-
const outputName = modelName + 'Change';
|
|
13286
|
-
listenToOutput(tNode, lView, componentIndex, outputName, outputName, wrapListener(tNode, lView, value => control.state().setControlValue(value)));
|
|
13287
13359
|
const tView = getTView();
|
|
13288
|
-
const
|
|
13360
|
+
const directiveIndex = tNode.customControlIndex;
|
|
13361
|
+
const outputName = modelName + 'Change';
|
|
13362
|
+
listenToOutput(tNode, lView, directiveIndex, outputName, outputName, wrapListener(tNode, lView, value => control.state().setControlValue(value)));
|
|
13363
|
+
const directiveDef = tView.data[directiveIndex];
|
|
13289
13364
|
const touchedOutputName = 'touchedChange';
|
|
13290
|
-
if (hasOutput(
|
|
13291
|
-
listenToOutput(tNode, lView,
|
|
13365
|
+
if (hasOutput(directiveDef, touchedOutputName)) {
|
|
13366
|
+
listenToOutput(tNode, lView, directiveIndex, touchedOutputName, touchedOutputName, wrapListener(tNode, lView, () => control.state().markAsTouched()));
|
|
13292
13367
|
}
|
|
13293
13368
|
}
|
|
13294
13369
|
function listenToInteropControl(control) {
|
|
@@ -13317,7 +13392,7 @@ function listenToNativeControl(lView, tNode, control) {
|
|
|
13317
13392
|
};
|
|
13318
13393
|
listenToDomEvent(tNode, tView, lView, undefined, renderer, 'blur', blurListener, wrapListener(tNode, lView, blurListener));
|
|
13319
13394
|
if (tNode.type === 2 && tNode.value === 'select' && typeof MutationObserver === 'function') {
|
|
13320
|
-
const observer = observeSelectMutations(element,
|
|
13395
|
+
const observer = observeSelectMutations(element, control);
|
|
13321
13396
|
storeCleanupWithContext(tView, lView, observer, observer.disconnect);
|
|
13322
13397
|
}
|
|
13323
13398
|
}
|
|
@@ -13358,27 +13433,46 @@ function isRelevantSelectMutation(mutation) {
|
|
|
13358
13433
|
}
|
|
13359
13434
|
return false;
|
|
13360
13435
|
}
|
|
13436
|
+
function updateControlClasses(lView, tNode, control) {
|
|
13437
|
+
if (control.classes) {
|
|
13438
|
+
const bindings = getControlBindings(lView);
|
|
13439
|
+
bindings.classes ??= {};
|
|
13440
|
+
control.state();
|
|
13441
|
+
const renderer = lView[RENDERER];
|
|
13442
|
+
const element = getNativeByTNode(tNode, lView);
|
|
13443
|
+
for (const [className, enabled] of control.classes) {
|
|
13444
|
+
const isEnabled = enabled();
|
|
13445
|
+
if (controlClassBindingUpdated(bindings.classes, className, isEnabled)) {
|
|
13446
|
+
if (isEnabled) {
|
|
13447
|
+
renderer.addClass(element, className);
|
|
13448
|
+
} else {
|
|
13449
|
+
renderer.removeClass(element, className);
|
|
13450
|
+
}
|
|
13451
|
+
}
|
|
13452
|
+
}
|
|
13453
|
+
}
|
|
13454
|
+
}
|
|
13361
13455
|
function updateCustomControl(tNode, lView, control, modelName) {
|
|
13362
13456
|
const tView = getTView();
|
|
13363
|
-
const
|
|
13364
|
-
const
|
|
13365
|
-
const
|
|
13457
|
+
const directiveIndex = tNode.customControlIndex;
|
|
13458
|
+
const directive = lView[directiveIndex];
|
|
13459
|
+
const directiveDef = tView.data[directiveIndex];
|
|
13366
13460
|
const state = control.state();
|
|
13367
13461
|
const bindings = getControlBindings(lView);
|
|
13368
|
-
maybeUpdateInput(
|
|
13462
|
+
maybeUpdateInput(directiveDef, directive, bindings, state, CONTROL_VALUE, modelName);
|
|
13369
13463
|
for (const key of CONTROL_BINDING_KEYS) {
|
|
13370
13464
|
const inputName = CONTROL_BINDING_NAMES[key];
|
|
13371
|
-
maybeUpdateInput(
|
|
13465
|
+
maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName);
|
|
13372
13466
|
}
|
|
13373
|
-
if (tNode.flags &
|
|
13467
|
+
if (tNode.flags & 8192) {
|
|
13374
13468
|
updateNativeControl(tNode, lView, control);
|
|
13375
13469
|
}
|
|
13376
13470
|
}
|
|
13377
|
-
function maybeUpdateInput(
|
|
13378
|
-
if (inputName in
|
|
13471
|
+
function maybeUpdateInput(directiveDef, directive, bindings, state, key, inputName) {
|
|
13472
|
+
if (inputName in directiveDef.inputs) {
|
|
13379
13473
|
const value = state[key]?.();
|
|
13380
13474
|
if (controlBindingUpdated(bindings, key, value)) {
|
|
13381
|
-
writeToDirectiveInput(
|
|
13475
|
+
writeToDirectiveInput(directiveDef, directive, inputName, value);
|
|
13382
13476
|
}
|
|
13383
13477
|
}
|
|
13384
13478
|
}
|
|
@@ -13413,11 +13507,11 @@ function updateNativeControl(tNode, lView, control) {
|
|
|
13413
13507
|
updateBooleanAttribute(renderer, element, bindings, state, DISABLED);
|
|
13414
13508
|
updateBooleanAttribute(renderer, element, bindings, state, READONLY);
|
|
13415
13509
|
updateBooleanAttribute(renderer, element, bindings, state, REQUIRED);
|
|
13416
|
-
if (tNode.flags &
|
|
13510
|
+
if (tNode.flags & 16384) {
|
|
13417
13511
|
updateOptionalAttribute(renderer, element, bindings, state, MAX);
|
|
13418
13512
|
updateOptionalAttribute(renderer, element, bindings, state, MIN);
|
|
13419
13513
|
}
|
|
13420
|
-
if (tNode.flags &
|
|
13514
|
+
if (tNode.flags & 32768) {
|
|
13421
13515
|
updateOptionalAttribute(renderer, element, bindings, state, MAX_LENGTH);
|
|
13422
13516
|
updateOptionalAttribute(renderer, element, bindings, state, MIN_LENGTH);
|
|
13423
13517
|
}
|
|
@@ -13579,6 +13673,14 @@ function controlBindingUpdated(bindings, key, value) {
|
|
|
13579
13673
|
bindings[key] = value;
|
|
13580
13674
|
return true;
|
|
13581
13675
|
}
|
|
13676
|
+
function controlClassBindingUpdated(bindings, className, value) {
|
|
13677
|
+
const oldValue = bindings[className];
|
|
13678
|
+
if (Object.is(oldValue, value)) {
|
|
13679
|
+
return false;
|
|
13680
|
+
}
|
|
13681
|
+
bindings[className] = value;
|
|
13682
|
+
return true;
|
|
13683
|
+
}
|
|
13582
13684
|
function setBooleanAttribute(renderer, element, name, value) {
|
|
13583
13685
|
if (value) {
|
|
13584
13686
|
renderer.setAttribute(element, name, '');
|
|
@@ -16407,6 +16509,7 @@ function ɵɵtwoWayListener(eventName, listenerFn) {
|
|
|
16407
16509
|
|
|
16408
16510
|
const UNINITIALIZED_LET = {};
|
|
16409
16511
|
function ɵɵdeclareLet(index) {
|
|
16512
|
+
performanceMarkFeature('NgLet');
|
|
16410
16513
|
const tView = getTView();
|
|
16411
16514
|
const lView = getLView();
|
|
16412
16515
|
const adjustedIndex = index + HEADER_OFFSET;
|
|
@@ -16416,7 +16519,6 @@ function ɵɵdeclareLet(index) {
|
|
|
16416
16519
|
return ɵɵdeclareLet;
|
|
16417
16520
|
}
|
|
16418
16521
|
function ɵɵstoreLet(value) {
|
|
16419
|
-
performanceMarkFeature('NgLet');
|
|
16420
16522
|
const tView = getTView();
|
|
16421
16523
|
const lView = getLView();
|
|
16422
16524
|
const index = getSelectedIndex();
|
|
@@ -17206,11 +17308,11 @@ const angularCoreEnv = (() => ({
|
|
|
17206
17308
|
'ɵɵsanitizeStyle': ɵɵsanitizeStyle,
|
|
17207
17309
|
'ɵɵsanitizeResourceUrl': ɵɵsanitizeResourceUrl,
|
|
17208
17310
|
'ɵɵsanitizeScript': ɵɵsanitizeScript,
|
|
17311
|
+
'ɵɵvalidateAttribute': ɵɵvalidateAttribute,
|
|
17209
17312
|
'ɵɵsanitizeUrl': ɵɵsanitizeUrl,
|
|
17210
17313
|
'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,
|
|
17211
17314
|
'ɵɵtrustConstantHtml': ɵɵtrustConstantHtml,
|
|
17212
17315
|
'ɵɵtrustConstantResourceUrl': ɵɵtrustConstantResourceUrl,
|
|
17213
|
-
'ɵɵvalidateIframeAttribute': ɵɵvalidateIframeAttribute,
|
|
17214
17316
|
'forwardRef': forwardRef,
|
|
17215
17317
|
'resolveForwardRef': resolveForwardRef,
|
|
17216
17318
|
'ɵɵtwoWayProperty': ɵɵtwoWayProperty,
|
|
@@ -18591,5 +18693,5 @@ function getDebugNode(nativeNode) {
|
|
|
18591
18693
|
return null;
|
|
18592
18694
|
}
|
|
18593
18695
|
|
|
18594
|
-
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,
|
|
18696
|
+
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, 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, ProfilerEvent, 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, isSignal, isSubscribable, isTNodeShape, isViewDirty, isWritableSignal, 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, ɵɵ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, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
18595
18697
|
//# sourceMappingURL=_debug_node-chunk.mjs.map
|