@angular/core 22.0.0-next.8 → 22.0.0-rc.0
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/_debug_node-chunk.mjs +1051 -985
- package/fesm2022/_debug_node-chunk.mjs.map +1 -1
- package/fesm2022/_effect-chunk.mjs +1 -1
- package/fesm2022/_not_found-chunk.mjs +1 -1
- package/fesm2022/_pending_tasks-chunk.mjs +150 -36
- package/fesm2022/_pending_tasks-chunk.mjs.map +1 -1
- package/fesm2022/_resource-chunk.mjs +56 -18
- package/fesm2022/_resource-chunk.mjs.map +1 -1
- package/fesm2022/_untracked-chunk.mjs +1 -1
- package/fesm2022/_weak_ref-chunk.mjs +1 -1
- package/fesm2022/core.mjs +139 -79
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives-di.mjs +1 -1
- package/fesm2022/primitives-event-dispatch.mjs +1 -1
- package/fesm2022/primitives-signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +47 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/package.json +7 -3
- package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
- package/schematics/bundles/can-match-snapshot-required.cjs +1 -1
- package/schematics/bundles/change-detection-eager.cjs +1 -1
- package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
- package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
- package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
- package/schematics/bundles/control-flow-migration.cjs +1 -1
- package/schematics/bundles/http-xhr-backend.cjs +1 -1
- package/schematics/bundles/imports-CKV-ITqD.cjs +1 -1
- package/schematics/bundles/incremental-hydration.cjs +10 -7
- package/schematics/bundles/{index-DADA7AvC.cjs → index-DxFMpcXS.cjs} +7 -2
- package/schematics/bundles/inject-migration.cjs +1 -1
- package/schematics/bundles/json-file-Drblb4E1.cjs +1 -1
- package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-B9LlDDUg.cjs → migrate_ts_type_references-DMv-GSuu.cjs} +28 -10
- package/schematics/bundles/model-output.cjs +200 -0
- package/schematics/bundles/ng_component_template-DPAF1aEA.cjs +1 -1
- package/schematics/bundles/ng_decorators-IVztR9rk.cjs +1 -1
- package/schematics/bundles/ngclass-to-class-migration.cjs +14 -6
- package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
- package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +2 -2
- package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
- package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
- package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
- package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +1 -1
- package/schematics/bundles/router-testing-module-migration.cjs +1 -1
- package/schematics/bundles/safe-optional-chaining.cjs +570 -0
- package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
- package/schematics/bundles/signal-input-migration.cjs +3 -3
- package/schematics/bundles/signal-queries-migration.cjs +3 -3
- package/schematics/bundles/signals.cjs +3 -3
- package/schematics/bundles/standalone-migration.cjs +1 -1
- package/schematics/bundles/strict-safe-navigation-narrow.cjs +1 -1
- package/schematics/bundles/strict-templates-default.cjs +1 -1
- package/schematics/migrations.json +10 -0
- package/third_party/@mcp-b/webmcp-types/LICENSE +21 -0
- package/third_party/@mcp-b/webmcp-types/dist/common.d.ts +297 -0
- package/third_party/@mcp-b/webmcp-types/dist/json-schema.d.ts +196 -0
- package/third_party/@mcp-b/webmcp-types/index.d.ts +9 -0
- package/types/_api-chunk.d.ts +23 -14
- package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
- package/types/_debug_node-chunk.d.ts +1 -1
- package/types/_effect-chunk.d.ts +1 -1
- package/types/_event_dispatcher-chunk.d.ts +1 -1
- package/types/_formatter-chunk.d.ts +1 -1
- package/types/_weak_ref-chunk.d.ts +1 -1
- package/types/core.d.ts +3379 -3064
- 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 +4 -4
- package/types/testing.d.ts +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v22.0.0-
|
|
2
|
+
* @license Angular v22.0.0-rc.0
|
|
3
3
|
* (c) 2010-2026 Google LLC. https://angular.dev/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { assertString, EMPTY_OBJ, assertFirstCreatePass, assertDefined, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, resolveForwardRef, getFactoryDef, convertToBitFlags, isRootView, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, setInjectImplementation, injectRootLimpMode, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, assertDirectiveDef, EMBEDDED_VIEW_INJECTOR, T_HOST, NG_ELEMENT_ID, assertIndexInRange, INJECTOR, TVIEW, isComponentDef, isComponentHost, DECLARATION_COMPONENT_VIEW, makeEnvironmentProviders, InjectionToken, _global, ɵɵinvalidFactoryDep as __invalidFactoryDep, ɵɵinject as __inject, ɵɵdefineInjector as __defineInjector, ɵɵdefineInjectable as __defineInjectable, newArray, attachInjectFlag, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, registerSpecialProvider, flatten, arrayEquals, ID, isLView, assertDomNode, EMPTY_ARRAY, getComponentLViewByIndex, CONTEXT, unwrapRNode, assertLView, HOST, getLViewParent, isLContainer, CONTAINER_HEADER_OFFSET, CHILD_HEAD, NEXT, Injector, CLEANUP, getComponentDef, getDirectiveDef, APP_ID, inject, makeStateKey, formatRuntimeError, TransferState, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, NgZone, ChangeDetectionScheduler, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR$1, isDestroyed, assertLContainer, MOVED_VIEWS, assertProjectionSlots, NATIVE, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertParentView, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, INTERNAL_APPLICATION_ERROR_HANDLER, assertNotSame, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, setCurrentDirectiveIndex, getCurrentDirectiveIndex, unwrapLView, enterView, leaveView, isCreationMode, markViewForRefresh, setIsInCheckNoChangesMode, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setBindingIndex, EFFECTS_TO_SCHEDULE, setBindingRootForHostBindings, viewAttachedToChangeDetector, CheckNoChangesMode, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, DOC_PAGE_BASE_URL, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTIcu, assertTNode, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, getTNode, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, getDirectiveDefOrThrow, DOCUMENT as DOCUMENT$1, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, runInInjectionContext, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, setInjectorProfiler, EffectRefImpl, NullInjector, getAllSpecialProviders, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, VERSION, retrieveTransferredState, isSignal, isInInjectionContext, PendingTasksInternal, ZONELESS_ENABLED, EffectScheduler, arrayInsert2, arraySplice, PendingTasks, decreaseElementDepthCount, assertTNodeCreationIndex, getNamespace, enterSkipHydrationBlock, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getCurrentDirectiveDef, getBindingIndex, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArrayGet, keyValueArraySet, isWritableSignal, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, forwardRef, ɵɵrestoreView as __restoreView, ɵɵdisableBindings as __disableBindings, ɵɵenableBindings as __enableBindings, ɵɵnamespaceSVG as __namespaceSVG, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceHTML as __namespaceHTML, ɵɵresetView as __resetView, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, PROVIDED_ZONELESS, NoopNgZone, angularZoneInstanceIdProperty, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, SCHEDULE_IN_ROOT_ZONE, getNativeByTNodeOrNull } from './_pending_tasks-chunk.mjs';
|
|
8
8
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
9
9
|
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
|
|
10
10
|
import { Subject, Subscription } from 'rxjs';
|
|
@@ -17,315 +17,6 @@ function noSideEffects(fn) {
|
|
|
17
17
|
}.toString();
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
const ANNOTATIONS = '__annotations__';
|
|
21
|
-
const PARAMETERS = '__parameters__';
|
|
22
|
-
const PROP_METADATA = '__prop__metadata__';
|
|
23
|
-
function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {
|
|
24
|
-
return noSideEffects(() => {
|
|
25
|
-
const metaCtor = makeMetadataCtor(props);
|
|
26
|
-
function DecoratorFactory(...args) {
|
|
27
|
-
if (this instanceof DecoratorFactory) {
|
|
28
|
-
metaCtor.call(this, ...args);
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
const annotationInstance = new DecoratorFactory(...args);
|
|
32
|
-
return function TypeDecorator(cls) {
|
|
33
|
-
if (typeFn) typeFn(cls, ...args);
|
|
34
|
-
const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, {
|
|
35
|
-
value: []
|
|
36
|
-
})[ANNOTATIONS];
|
|
37
|
-
annotations.push(annotationInstance);
|
|
38
|
-
return cls;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
if (parentClass) {
|
|
42
|
-
DecoratorFactory.prototype = Object.create(parentClass.prototype);
|
|
43
|
-
}
|
|
44
|
-
DecoratorFactory.prototype.ngMetadataName = name;
|
|
45
|
-
DecoratorFactory.annotationCls = DecoratorFactory;
|
|
46
|
-
return DecoratorFactory;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
function makeMetadataCtor(props) {
|
|
50
|
-
return function ctor(...args) {
|
|
51
|
-
if (props) {
|
|
52
|
-
const values = props(...args);
|
|
53
|
-
for (const propName in values) {
|
|
54
|
-
this[propName] = values[propName];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
function makeParamDecorator(name, props, parentClass) {
|
|
60
|
-
return noSideEffects(() => {
|
|
61
|
-
const metaCtor = makeMetadataCtor(props);
|
|
62
|
-
function ParamDecoratorFactory(...args) {
|
|
63
|
-
if (this instanceof ParamDecoratorFactory) {
|
|
64
|
-
metaCtor.apply(this, args);
|
|
65
|
-
return this;
|
|
66
|
-
}
|
|
67
|
-
const annotationInstance = new ParamDecoratorFactory(...args);
|
|
68
|
-
ParamDecorator.annotation = annotationInstance;
|
|
69
|
-
return ParamDecorator;
|
|
70
|
-
function ParamDecorator(cls, unusedKey, index) {
|
|
71
|
-
const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, {
|
|
72
|
-
value: []
|
|
73
|
-
})[PARAMETERS];
|
|
74
|
-
while (parameters.length <= index) {
|
|
75
|
-
parameters.push(null);
|
|
76
|
-
}
|
|
77
|
-
(parameters[index] = parameters[index] || []).push(annotationInstance);
|
|
78
|
-
return cls;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
ParamDecoratorFactory.prototype.ngMetadataName = name;
|
|
82
|
-
ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;
|
|
83
|
-
return ParamDecoratorFactory;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
function makePropDecorator(name, props, parentClass, additionalProcessing) {
|
|
87
|
-
return noSideEffects(() => {
|
|
88
|
-
const metaCtor = makeMetadataCtor(props);
|
|
89
|
-
function PropDecoratorFactory(...args) {
|
|
90
|
-
if (this instanceof PropDecoratorFactory) {
|
|
91
|
-
metaCtor.apply(this, args);
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
const decoratorInstance = new PropDecoratorFactory(...args);
|
|
95
|
-
function PropDecorator(target, name) {
|
|
96
|
-
if (target === undefined) {
|
|
97
|
-
throw new Error('Standard Angular field decorators are not supported in JIT mode.');
|
|
98
|
-
}
|
|
99
|
-
const constructor = target.constructor;
|
|
100
|
-
const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, {
|
|
101
|
-
value: {}
|
|
102
|
-
})[PROP_METADATA];
|
|
103
|
-
meta[name] = meta.hasOwnProperty(name) && meta[name] || [];
|
|
104
|
-
meta[name].unshift(decoratorInstance);
|
|
105
|
-
}
|
|
106
|
-
return PropDecorator;
|
|
107
|
-
}
|
|
108
|
-
if (parentClass) {
|
|
109
|
-
PropDecoratorFactory.prototype = Object.create(parentClass.prototype);
|
|
110
|
-
}
|
|
111
|
-
PropDecoratorFactory.prototype.ngMetadataName = name;
|
|
112
|
-
PropDecoratorFactory.annotationCls = PropDecoratorFactory;
|
|
113
|
-
return PropDecoratorFactory;
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const Inject = attachInjectFlag(makeParamDecorator('Inject', token => ({
|
|
118
|
-
token
|
|
119
|
-
})), -1);
|
|
120
|
-
const Optional = attachInjectFlag(makeParamDecorator('Optional'), 8);
|
|
121
|
-
const Self = attachInjectFlag(makeParamDecorator('Self'), 2);
|
|
122
|
-
const SkipSelf = attachInjectFlag(makeParamDecorator('SkipSelf'), 4);
|
|
123
|
-
const Host = attachInjectFlag(makeParamDecorator('Host'), 1);
|
|
124
|
-
|
|
125
|
-
function getCompilerFacade(request) {
|
|
126
|
-
const globalNg = _global['ng'];
|
|
127
|
-
if (globalNg && globalNg.ɵcompilerFacade) {
|
|
128
|
-
return globalNg.ɵcompilerFacade;
|
|
129
|
-
}
|
|
130
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
131
|
-
console.error(`JIT compilation failed for ${request.kind}`, request.type);
|
|
132
|
-
let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
|
|
133
|
-
if (request.usage === 1) {
|
|
134
|
-
message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
|
|
135
|
-
message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
|
|
136
|
-
message += '\n';
|
|
137
|
-
message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\n`;
|
|
138
|
-
} else {
|
|
139
|
-
message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\n`;
|
|
140
|
-
}
|
|
141
|
-
message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\n`;
|
|
142
|
-
message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`;
|
|
143
|
-
throw new Error(message);
|
|
144
|
-
} else {
|
|
145
|
-
throw new Error('JIT compiler unavailable');
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const angularCoreDiEnv = {
|
|
150
|
-
'ɵɵdefineInjectable': __defineInjectable,
|
|
151
|
-
'ɵɵdefineInjector': __defineInjector,
|
|
152
|
-
'ɵɵinject': __inject,
|
|
153
|
-
'ɵɵinvalidFactoryDep': __invalidFactoryDep,
|
|
154
|
-
'resolveForwardRef': resolveForwardRef
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
const Type = Function;
|
|
158
|
-
function isType(v) {
|
|
159
|
-
return typeof v === 'function';
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/;
|
|
163
|
-
const ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
|
|
164
|
-
const ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
|
|
165
|
-
const ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;
|
|
166
|
-
function isDelegateCtor(typeStr) {
|
|
167
|
-
return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr);
|
|
168
|
-
}
|
|
169
|
-
class ReflectionCapabilities {
|
|
170
|
-
_reflect;
|
|
171
|
-
constructor(reflect) {
|
|
172
|
-
this._reflect = reflect || _global['Reflect'];
|
|
173
|
-
}
|
|
174
|
-
factory(t) {
|
|
175
|
-
return (...args) => new t(...args);
|
|
176
|
-
}
|
|
177
|
-
_zipTypesAndAnnotations(paramTypes, paramAnnotations) {
|
|
178
|
-
let result;
|
|
179
|
-
if (typeof paramTypes === 'undefined') {
|
|
180
|
-
result = newArray(paramAnnotations.length);
|
|
181
|
-
} else {
|
|
182
|
-
result = newArray(paramTypes.length);
|
|
183
|
-
}
|
|
184
|
-
for (let i = 0; i < result.length; i++) {
|
|
185
|
-
if (typeof paramTypes === 'undefined') {
|
|
186
|
-
result[i] = [];
|
|
187
|
-
} else if (paramTypes[i] && paramTypes[i] != Object) {
|
|
188
|
-
result[i] = [paramTypes[i]];
|
|
189
|
-
} else {
|
|
190
|
-
result[i] = [];
|
|
191
|
-
}
|
|
192
|
-
if (paramAnnotations && paramAnnotations[i] != null) {
|
|
193
|
-
result[i] = result[i].concat(paramAnnotations[i]);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return result;
|
|
197
|
-
}
|
|
198
|
-
_ownParameters(type, parentCtor) {
|
|
199
|
-
const typeStr = type.toString();
|
|
200
|
-
if (isDelegateCtor(typeStr)) {
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
if (type.parameters && type.parameters !== parentCtor.parameters) {
|
|
204
|
-
return type.parameters;
|
|
205
|
-
}
|
|
206
|
-
const tsickleCtorParams = type.ctorParameters;
|
|
207
|
-
if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {
|
|
208
|
-
const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;
|
|
209
|
-
const paramTypes = ctorParameters.map(ctorParam => ctorParam && ctorParam.type);
|
|
210
|
-
const paramAnnotations = ctorParameters.map(ctorParam => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));
|
|
211
|
-
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
|
|
212
|
-
}
|
|
213
|
-
const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];
|
|
214
|
-
const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata('design:paramtypes', type);
|
|
215
|
-
if (paramTypes || paramAnnotations) {
|
|
216
|
-
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
|
|
217
|
-
}
|
|
218
|
-
return newArray(type.length);
|
|
219
|
-
}
|
|
220
|
-
parameters(type) {
|
|
221
|
-
if (!isType(type)) {
|
|
222
|
-
return [];
|
|
223
|
-
}
|
|
224
|
-
const parentCtor = getParentCtor(type);
|
|
225
|
-
let parameters = this._ownParameters(type, parentCtor);
|
|
226
|
-
if (!parameters && parentCtor !== Object) {
|
|
227
|
-
parameters = this.parameters(parentCtor);
|
|
228
|
-
}
|
|
229
|
-
return parameters || [];
|
|
230
|
-
}
|
|
231
|
-
_ownAnnotations(typeOrFunc, parentCtor) {
|
|
232
|
-
if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {
|
|
233
|
-
let annotations = typeOrFunc.annotations;
|
|
234
|
-
if (typeof annotations === 'function' && annotations.annotations) {
|
|
235
|
-
annotations = annotations.annotations;
|
|
236
|
-
}
|
|
237
|
-
return annotations;
|
|
238
|
-
}
|
|
239
|
-
if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {
|
|
240
|
-
return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);
|
|
241
|
-
}
|
|
242
|
-
if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {
|
|
243
|
-
return typeOrFunc[ANNOTATIONS];
|
|
244
|
-
}
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
annotations(typeOrFunc) {
|
|
248
|
-
if (!isType(typeOrFunc)) {
|
|
249
|
-
return [];
|
|
250
|
-
}
|
|
251
|
-
const parentCtor = getParentCtor(typeOrFunc);
|
|
252
|
-
const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];
|
|
253
|
-
const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];
|
|
254
|
-
return parentAnnotations.concat(ownAnnotations);
|
|
255
|
-
}
|
|
256
|
-
_ownPropMetadata(typeOrFunc, parentCtor) {
|
|
257
|
-
if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) {
|
|
258
|
-
let propMetadata = typeOrFunc.propMetadata;
|
|
259
|
-
if (typeof propMetadata === 'function' && propMetadata.propMetadata) {
|
|
260
|
-
propMetadata = propMetadata.propMetadata;
|
|
261
|
-
}
|
|
262
|
-
return propMetadata;
|
|
263
|
-
}
|
|
264
|
-
if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) {
|
|
265
|
-
const propDecorators = typeOrFunc.propDecorators;
|
|
266
|
-
const propMetadata = {};
|
|
267
|
-
Object.keys(propDecorators).forEach(prop => {
|
|
268
|
-
propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);
|
|
269
|
-
});
|
|
270
|
-
return propMetadata;
|
|
271
|
-
}
|
|
272
|
-
if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {
|
|
273
|
-
return typeOrFunc[PROP_METADATA];
|
|
274
|
-
}
|
|
275
|
-
return null;
|
|
276
|
-
}
|
|
277
|
-
propMetadata(typeOrFunc) {
|
|
278
|
-
if (!isType(typeOrFunc)) {
|
|
279
|
-
return {};
|
|
280
|
-
}
|
|
281
|
-
const parentCtor = getParentCtor(typeOrFunc);
|
|
282
|
-
const propMetadata = {};
|
|
283
|
-
if (parentCtor !== Object) {
|
|
284
|
-
const parentPropMetadata = this.propMetadata(parentCtor);
|
|
285
|
-
Object.keys(parentPropMetadata).forEach(propName => {
|
|
286
|
-
propMetadata[propName] = parentPropMetadata[propName];
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);
|
|
290
|
-
if (ownPropMetadata) {
|
|
291
|
-
Object.keys(ownPropMetadata).forEach(propName => {
|
|
292
|
-
const decorators = [];
|
|
293
|
-
if (propMetadata.hasOwnProperty(propName)) {
|
|
294
|
-
decorators.push(...propMetadata[propName]);
|
|
295
|
-
}
|
|
296
|
-
decorators.push(...ownPropMetadata[propName]);
|
|
297
|
-
propMetadata[propName] = decorators;
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
return propMetadata;
|
|
301
|
-
}
|
|
302
|
-
ownPropMetadata(typeOrFunc) {
|
|
303
|
-
if (!isType(typeOrFunc)) {
|
|
304
|
-
return {};
|
|
305
|
-
}
|
|
306
|
-
return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};
|
|
307
|
-
}
|
|
308
|
-
hasLifecycleHook(type, lcProperty) {
|
|
309
|
-
return type instanceof Type && lcProperty in type.prototype;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
function convertTsickleDecoratorIntoMetadata(decoratorInvocations) {
|
|
313
|
-
if (!decoratorInvocations) {
|
|
314
|
-
return [];
|
|
315
|
-
}
|
|
316
|
-
return decoratorInvocations.map(decoratorInvocation => {
|
|
317
|
-
const decoratorType = decoratorInvocation.type;
|
|
318
|
-
const annotationCls = decoratorType.annotationCls;
|
|
319
|
-
const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];
|
|
320
|
-
return new annotationCls(...annotationArgs);
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
function getParentCtor(ctor) {
|
|
324
|
-
const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;
|
|
325
|
-
const parentCtor = parentProto ? parentProto.constructor : null;
|
|
326
|
-
return parentCtor || Object;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
20
|
function applyValueToInputField(instance, inputSignalNode, privateName, value) {
|
|
330
21
|
if (inputSignalNode !== null) {
|
|
331
22
|
inputSignalNode.applyValueToInputSignal(inputSignalNode, value);
|
|
@@ -610,565 +301,920 @@ function toTNodeTypeAsString(tNodeType) {
|
|
|
610
301
|
function isTNodeShape(value) {
|
|
611
302
|
return value != null && typeof value === 'object' && (value.insertBeforeIndex === null || typeof value.insertBeforeIndex === 'number' || Array.isArray(value.insertBeforeIndex));
|
|
612
303
|
}
|
|
613
|
-
function isLetDeclaration(tNode) {
|
|
614
|
-
return !!(tNode.type & 128);
|
|
304
|
+
function isLetDeclaration(tNode) {
|
|
305
|
+
return !!(tNode.type & 128);
|
|
306
|
+
}
|
|
307
|
+
function hasClassInput(tNode) {
|
|
308
|
+
return (tNode.flags & 8) !== 0;
|
|
309
|
+
}
|
|
310
|
+
function hasStyleInput(tNode) {
|
|
311
|
+
return (tNode.flags & 16) !== 0;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function assertTNodeType(tNode, expectedTypes, message) {
|
|
315
|
+
assertDefined(tNode, 'should be called with a TNode');
|
|
316
|
+
if ((tNode.type & expectedTypes) === 0) {
|
|
317
|
+
throwError(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function assertPureTNodeType(type) {
|
|
321
|
+
if (!(type === 2 || type === 1 || type === 4 || type === 8 || type === 32 || type === 16 || type === 64 || type === 128)) {
|
|
322
|
+
throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
function setUpAttributes(renderer, native, attrs) {
|
|
327
|
+
let i = 0;
|
|
328
|
+
while (i < attrs.length) {
|
|
329
|
+
const value = attrs[i];
|
|
330
|
+
if (typeof value === 'number') {
|
|
331
|
+
if (value !== 0) {
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
i++;
|
|
335
|
+
const namespaceURI = attrs[i++];
|
|
336
|
+
const attrName = attrs[i++];
|
|
337
|
+
const attrVal = attrs[i++];
|
|
338
|
+
renderer.setAttribute(native, attrName, attrVal, namespaceURI);
|
|
339
|
+
} else {
|
|
340
|
+
const attrName = value;
|
|
341
|
+
const attrVal = attrs[++i];
|
|
342
|
+
if (isAnimationProp(attrName)) {
|
|
343
|
+
renderer.setProperty(native, attrName, attrVal);
|
|
344
|
+
} else {
|
|
345
|
+
renderer.setAttribute(native, attrName, attrVal);
|
|
346
|
+
}
|
|
347
|
+
i++;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return i;
|
|
351
|
+
}
|
|
352
|
+
function isNameOnlyAttributeMarker(marker) {
|
|
353
|
+
return marker === 3 || marker === 4 || marker === 6;
|
|
354
|
+
}
|
|
355
|
+
function isAnimationProp(name) {
|
|
356
|
+
return name.charCodeAt(0) === 64;
|
|
357
|
+
}
|
|
358
|
+
function mergeHostAttrs(dst, src) {
|
|
359
|
+
if (src === null || src.length === 0) ; else if (dst === null || dst.length === 0) {
|
|
360
|
+
dst = src.slice();
|
|
361
|
+
} else {
|
|
362
|
+
let srcMarker = -1;
|
|
363
|
+
for (let i = 0; i < src.length; i++) {
|
|
364
|
+
const item = src[i];
|
|
365
|
+
if (typeof item === 'number') {
|
|
366
|
+
srcMarker = item;
|
|
367
|
+
} else {
|
|
368
|
+
if (srcMarker === 0) ; else if (srcMarker === -1 || srcMarker === 2) {
|
|
369
|
+
mergeHostAttribute(dst, srcMarker, item, null, src[++i]);
|
|
370
|
+
} else {
|
|
371
|
+
mergeHostAttribute(dst, srcMarker, item, null, null);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return dst;
|
|
377
|
+
}
|
|
378
|
+
function mergeHostAttribute(dst, marker, key1, key2, value) {
|
|
379
|
+
let i = 0;
|
|
380
|
+
let markerInsertPosition = dst.length;
|
|
381
|
+
if (marker === -1) {
|
|
382
|
+
markerInsertPosition = -1;
|
|
383
|
+
} else {
|
|
384
|
+
while (i < dst.length) {
|
|
385
|
+
const dstValue = dst[i++];
|
|
386
|
+
if (typeof dstValue === 'number') {
|
|
387
|
+
if (dstValue === marker) {
|
|
388
|
+
markerInsertPosition = -1;
|
|
389
|
+
break;
|
|
390
|
+
} else if (dstValue > marker) {
|
|
391
|
+
markerInsertPosition = i - 1;
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
while (i < dst.length) {
|
|
398
|
+
const item = dst[i];
|
|
399
|
+
if (typeof item === 'number') {
|
|
400
|
+
break;
|
|
401
|
+
} else if (item === key1) {
|
|
402
|
+
{
|
|
403
|
+
if (value !== null) {
|
|
404
|
+
dst[i + 1] = value;
|
|
405
|
+
}
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
i++;
|
|
410
|
+
if (value !== null) i++;
|
|
411
|
+
}
|
|
412
|
+
if (markerInsertPosition !== -1) {
|
|
413
|
+
dst.splice(markerInsertPosition, 0, marker);
|
|
414
|
+
i = markerInsertPosition + 1;
|
|
415
|
+
}
|
|
416
|
+
dst.splice(i++, 0, key1);
|
|
417
|
+
if (value !== null) {
|
|
418
|
+
dst.splice(i++, 0, value);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
function hasParentInjector(parentLocation) {
|
|
423
|
+
return parentLocation !== NO_PARENT_INJECTOR;
|
|
424
|
+
}
|
|
425
|
+
function getParentInjectorIndex(parentLocation) {
|
|
426
|
+
if (ngDevMode) {
|
|
427
|
+
assertNumber(parentLocation, 'Number expected');
|
|
428
|
+
assertNotEqual(parentLocation, -1, 'Not a valid state.');
|
|
429
|
+
const parentInjectorIndex = parentLocation & 32767;
|
|
430
|
+
assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
|
|
431
|
+
}
|
|
432
|
+
return parentLocation & 32767;
|
|
433
|
+
}
|
|
434
|
+
function getParentInjectorViewOffset(parentLocation) {
|
|
435
|
+
return parentLocation >> 16;
|
|
436
|
+
}
|
|
437
|
+
function getParentInjectorView(location, startView) {
|
|
438
|
+
let viewOffset = getParentInjectorViewOffset(location);
|
|
439
|
+
let parentView = startView;
|
|
440
|
+
while (viewOffset > 0) {
|
|
441
|
+
parentView = parentView[DECLARATION_VIEW];
|
|
442
|
+
viewOffset--;
|
|
443
|
+
}
|
|
444
|
+
return parentView;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
let includeViewProviders = true;
|
|
448
|
+
function setIncludeViewProviders(v) {
|
|
449
|
+
const oldValue = includeViewProviders;
|
|
450
|
+
includeViewProviders = v;
|
|
451
|
+
return oldValue;
|
|
452
|
+
}
|
|
453
|
+
const BLOOM_SIZE = 256;
|
|
454
|
+
const BLOOM_MASK = BLOOM_SIZE - 1;
|
|
455
|
+
const BLOOM_BUCKET_BITS = 5;
|
|
456
|
+
let nextNgElementId = 0;
|
|
457
|
+
const NOT_FOUND = {};
|
|
458
|
+
function bloomAdd(injectorIndex, tView, type) {
|
|
459
|
+
ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');
|
|
460
|
+
let id;
|
|
461
|
+
if (typeof type === 'string') {
|
|
462
|
+
id = type.charCodeAt(0) || 0;
|
|
463
|
+
} else if (type.hasOwnProperty(NG_ELEMENT_ID)) {
|
|
464
|
+
id = type[NG_ELEMENT_ID];
|
|
465
|
+
}
|
|
466
|
+
if (id == null) {
|
|
467
|
+
id = type[NG_ELEMENT_ID] = nextNgElementId++;
|
|
468
|
+
}
|
|
469
|
+
const bloomHash = id & BLOOM_MASK;
|
|
470
|
+
const mask = 1 << bloomHash;
|
|
471
|
+
tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
|
|
472
|
+
}
|
|
473
|
+
function getOrCreateNodeInjectorForNode(tNode, lView) {
|
|
474
|
+
const existingInjectorIndex = getInjectorIndex(tNode, lView);
|
|
475
|
+
if (existingInjectorIndex !== -1) {
|
|
476
|
+
return existingInjectorIndex;
|
|
477
|
+
}
|
|
478
|
+
const tView = lView[TVIEW];
|
|
479
|
+
if (tView.firstCreatePass) {
|
|
480
|
+
tNode.injectorIndex = lView.length;
|
|
481
|
+
insertBloom(tView.data, tNode);
|
|
482
|
+
insertBloom(lView, null);
|
|
483
|
+
insertBloom(tView.blueprint, null);
|
|
484
|
+
}
|
|
485
|
+
const parentLoc = getParentInjectorLocation(tNode, lView);
|
|
486
|
+
const injectorIndex = tNode.injectorIndex;
|
|
487
|
+
if (hasParentInjector(parentLoc)) {
|
|
488
|
+
const parentIndex = getParentInjectorIndex(parentLoc);
|
|
489
|
+
const parentLView = getParentInjectorView(parentLoc, lView);
|
|
490
|
+
const parentData = parentLView[TVIEW].data;
|
|
491
|
+
for (let i = 0; i < 8; i++) {
|
|
492
|
+
lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
lView[injectorIndex + 8] = parentLoc;
|
|
496
|
+
return injectorIndex;
|
|
497
|
+
}
|
|
498
|
+
function insertBloom(arr, footer) {
|
|
499
|
+
arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);
|
|
500
|
+
}
|
|
501
|
+
function getInjectorIndex(tNode, lView) {
|
|
502
|
+
if (tNode.injectorIndex === -1 || tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || lView[tNode.injectorIndex + 8] === null) {
|
|
503
|
+
return -1;
|
|
504
|
+
} else {
|
|
505
|
+
ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);
|
|
506
|
+
return tNode.injectorIndex;
|
|
507
|
+
}
|
|
615
508
|
}
|
|
616
|
-
function
|
|
617
|
-
|
|
509
|
+
function getParentInjectorLocation(tNode, lView) {
|
|
510
|
+
if (tNode.parent && tNode.parent.injectorIndex !== -1) {
|
|
511
|
+
return tNode.parent.injectorIndex;
|
|
512
|
+
}
|
|
513
|
+
let declarationViewOffset = 0;
|
|
514
|
+
let parentTNode = null;
|
|
515
|
+
let lViewCursor = lView;
|
|
516
|
+
while (lViewCursor !== null) {
|
|
517
|
+
parentTNode = getTNodeFromLView(lViewCursor);
|
|
518
|
+
if (parentTNode === null) {
|
|
519
|
+
return NO_PARENT_INJECTOR;
|
|
520
|
+
}
|
|
521
|
+
ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);
|
|
522
|
+
declarationViewOffset++;
|
|
523
|
+
lViewCursor = lViewCursor[DECLARATION_VIEW];
|
|
524
|
+
if (parentTNode.injectorIndex !== -1) {
|
|
525
|
+
return parentTNode.injectorIndex | declarationViewOffset << 16;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
return NO_PARENT_INJECTOR;
|
|
618
529
|
}
|
|
619
|
-
function
|
|
620
|
-
|
|
530
|
+
function diPublicInInjector(injectorIndex, tView, token) {
|
|
531
|
+
bloomAdd(injectorIndex, tView, token);
|
|
621
532
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
assertDefined(tNode, '
|
|
625
|
-
if (
|
|
626
|
-
|
|
533
|
+
function injectAttributeImpl(tNode, attrNameToInject) {
|
|
534
|
+
ngDevMode && assertTNodeType(tNode, 12 | 3);
|
|
535
|
+
ngDevMode && assertDefined(tNode, 'expecting tNode');
|
|
536
|
+
if (attrNameToInject === 'class') {
|
|
537
|
+
return tNode.classes;
|
|
538
|
+
}
|
|
539
|
+
if (attrNameToInject === 'style') {
|
|
540
|
+
return tNode.styles;
|
|
541
|
+
}
|
|
542
|
+
const attrs = tNode.attrs;
|
|
543
|
+
if (attrs) {
|
|
544
|
+
const attrsLength = attrs.length;
|
|
545
|
+
let i = 0;
|
|
546
|
+
while (i < attrsLength) {
|
|
547
|
+
const value = attrs[i];
|
|
548
|
+
if (isNameOnlyAttributeMarker(value)) break;
|
|
549
|
+
if (value === 0) {
|
|
550
|
+
i = i + 2;
|
|
551
|
+
} else if (typeof value === 'number') {
|
|
552
|
+
i++;
|
|
553
|
+
while (i < attrsLength && typeof attrs[i] === 'string') {
|
|
554
|
+
i++;
|
|
555
|
+
}
|
|
556
|
+
} else if (value === attrNameToInject) {
|
|
557
|
+
return attrs[i + 1];
|
|
558
|
+
} else {
|
|
559
|
+
i = i + 2;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
627
562
|
}
|
|
563
|
+
return null;
|
|
628
564
|
}
|
|
629
|
-
function
|
|
630
|
-
if (
|
|
631
|
-
|
|
565
|
+
function notFoundValueOrThrow(notFoundValue, token, flags) {
|
|
566
|
+
if (flags & 8 || notFoundValue !== undefined) {
|
|
567
|
+
return notFoundValue;
|
|
568
|
+
} else {
|
|
569
|
+
throwProviderNotFoundError(token, 'NodeInjector');
|
|
632
570
|
}
|
|
633
571
|
}
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
const namespaceURI = attrs[i++];
|
|
645
|
-
const attrName = attrs[i++];
|
|
646
|
-
const attrVal = attrs[i++];
|
|
647
|
-
renderer.setAttribute(native, attrName, attrVal, namespaceURI);
|
|
648
|
-
} else {
|
|
649
|
-
const attrName = value;
|
|
650
|
-
const attrVal = attrs[++i];
|
|
651
|
-
if (isAnimationProp(attrName)) {
|
|
652
|
-
renderer.setProperty(native, attrName, attrVal);
|
|
572
|
+
function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
|
|
573
|
+
if (flags & 8 && notFoundValue === undefined) {
|
|
574
|
+
notFoundValue = null;
|
|
575
|
+
}
|
|
576
|
+
if ((flags & (2 | 1)) === 0) {
|
|
577
|
+
const moduleInjector = lView[INJECTOR];
|
|
578
|
+
const previousInjectImplementation = setInjectImplementation(undefined);
|
|
579
|
+
try {
|
|
580
|
+
if (moduleInjector) {
|
|
581
|
+
return moduleInjector.get(token, notFoundValue, flags & 8);
|
|
653
582
|
} else {
|
|
654
|
-
|
|
583
|
+
return injectRootLimpMode(token, notFoundValue, flags & 8);
|
|
655
584
|
}
|
|
656
|
-
|
|
585
|
+
} finally {
|
|
586
|
+
setInjectImplementation(previousInjectImplementation);
|
|
657
587
|
}
|
|
658
588
|
}
|
|
659
|
-
return
|
|
660
|
-
}
|
|
661
|
-
function isNameOnlyAttributeMarker(marker) {
|
|
662
|
-
return marker === 3 || marker === 4 || marker === 6;
|
|
589
|
+
return notFoundValueOrThrow(notFoundValue, token, flags);
|
|
663
590
|
}
|
|
664
|
-
function
|
|
665
|
-
|
|
591
|
+
function getOrCreateInjectable(tNode, lView, token, flags = 0, notFoundValue) {
|
|
592
|
+
if (tNode !== null) {
|
|
593
|
+
if (lView[FLAGS] & 2048 && !(flags & 2)) {
|
|
594
|
+
const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
|
|
595
|
+
if (embeddedInjectorValue !== NOT_FOUND) {
|
|
596
|
+
return embeddedInjectorValue;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);
|
|
600
|
+
if (value !== NOT_FOUND) {
|
|
601
|
+
return value;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
|
|
666
605
|
}
|
|
667
|
-
function
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
606
|
+
function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {
|
|
607
|
+
const bloomHash = bloomHashBitOrFactory(token);
|
|
608
|
+
if (typeof bloomHash === 'function') {
|
|
609
|
+
if (!enterDI(lView, tNode, flags)) {
|
|
610
|
+
return flags & 1 ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
|
|
611
|
+
}
|
|
612
|
+
try {
|
|
613
|
+
let value;
|
|
614
|
+
if (ngDevMode) {
|
|
615
|
+
runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {
|
|
616
|
+
emitInjectorToCreateInstanceEvent(token);
|
|
617
|
+
value = bloomHash(flags);
|
|
618
|
+
emitInstanceCreatedByInjectorEvent(value);
|
|
619
|
+
});
|
|
676
620
|
} else {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
621
|
+
value = bloomHash(flags);
|
|
622
|
+
}
|
|
623
|
+
if (value == null && !(flags & 8)) {
|
|
624
|
+
throwProviderNotFoundError(token);
|
|
625
|
+
} else {
|
|
626
|
+
return value;
|
|
627
|
+
}
|
|
628
|
+
} finally {
|
|
629
|
+
leaveDI();
|
|
630
|
+
}
|
|
631
|
+
} else if (typeof bloomHash === 'number') {
|
|
632
|
+
let previousTView = null;
|
|
633
|
+
let injectorIndex = getInjectorIndex(tNode, lView);
|
|
634
|
+
let parentLocation = NO_PARENT_INJECTOR;
|
|
635
|
+
let hostTElementNode = flags & 1 ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
|
|
636
|
+
if (injectorIndex === -1 || flags & 4) {
|
|
637
|
+
parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[injectorIndex + 8];
|
|
638
|
+
if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
|
|
639
|
+
injectorIndex = -1;
|
|
640
|
+
} else {
|
|
641
|
+
previousTView = lView[TVIEW];
|
|
642
|
+
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
643
|
+
lView = getParentInjectorView(parentLocation, lView);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
while (injectorIndex !== -1) {
|
|
647
|
+
ngDevMode && assertNodeInjector(lView, injectorIndex);
|
|
648
|
+
const tView = lView[TVIEW];
|
|
649
|
+
ngDevMode && assertTNodeForLView(tView.data[injectorIndex + 8], lView);
|
|
650
|
+
if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
|
|
651
|
+
const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);
|
|
652
|
+
if (instance !== NOT_FOUND) {
|
|
653
|
+
return instance;
|
|
681
654
|
}
|
|
682
655
|
}
|
|
656
|
+
parentLocation = lView[injectorIndex + 8];
|
|
657
|
+
if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) {
|
|
658
|
+
previousTView = tView;
|
|
659
|
+
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
660
|
+
lView = getParentInjectorView(parentLocation, lView);
|
|
661
|
+
} else {
|
|
662
|
+
injectorIndex = -1;
|
|
663
|
+
}
|
|
683
664
|
}
|
|
684
665
|
}
|
|
685
|
-
return
|
|
666
|
+
return notFoundValue;
|
|
686
667
|
}
|
|
687
|
-
function
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
668
|
+
function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
|
|
669
|
+
const currentTView = lView[TVIEW];
|
|
670
|
+
const tNode = currentTView.data[injectorIndex + 8];
|
|
671
|
+
const canAccessViewProviders = previousTView == null ? isComponentHost(tNode) && includeViewProviders : previousTView != currentTView && (tNode.type & 3) !== 0;
|
|
672
|
+
const isHostSpecialCase = flags & 1 && hostTElementNode === tNode;
|
|
673
|
+
const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);
|
|
674
|
+
if (injectableIdx !== null) {
|
|
675
|
+
return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags);
|
|
692
676
|
} else {
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
677
|
+
return NOT_FOUND;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {
|
|
681
|
+
const nodeProviderIndexes = tNode.providerIndexes;
|
|
682
|
+
const tInjectables = tView.data;
|
|
683
|
+
const injectablesStart = nodeProviderIndexes & 1048575;
|
|
684
|
+
const directivesStart = tNode.directiveStart;
|
|
685
|
+
const directiveEnd = tNode.directiveEnd;
|
|
686
|
+
const cptViewProvidersCount = nodeProviderIndexes >> 20;
|
|
687
|
+
const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
|
|
688
|
+
const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
|
|
689
|
+
for (let i = startingIndex; i < endIndex; i++) {
|
|
690
|
+
const providerTokenOrDef = tInjectables[i];
|
|
691
|
+
if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) {
|
|
692
|
+
return i;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
if (isHostSpecialCase) {
|
|
696
|
+
const dirDef = tInjectables[directivesStart];
|
|
697
|
+
if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {
|
|
698
|
+
return directivesStart;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
let injectionPath = [];
|
|
704
|
+
function getNodeInjectable(lView, tView, index, tNode, flags) {
|
|
705
|
+
let value = lView[index];
|
|
706
|
+
const tData = tView.data;
|
|
707
|
+
if (value instanceof NodeInjectorFactory) {
|
|
708
|
+
const factory = value;
|
|
709
|
+
ngDevMode && injectionPath.push(factory.name ?? 'unknown');
|
|
710
|
+
if (factory.resolving) {
|
|
711
|
+
let token = '';
|
|
712
|
+
if (ngDevMode) {
|
|
713
|
+
token = stringifyForError(tData[index]);
|
|
714
|
+
throw cyclicDependencyErrorWithDetails(token, injectionPath);
|
|
715
|
+
} else {
|
|
716
|
+
throw cyclicDependencyError(token);
|
|
703
717
|
}
|
|
704
718
|
}
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
{
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
719
|
+
const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
|
|
720
|
+
factory.resolving = true;
|
|
721
|
+
const token = tData[index].type || tData[index];
|
|
722
|
+
let prevInjectContext;
|
|
723
|
+
if (ngDevMode) {
|
|
724
|
+
const injector = new NodeInjector(tNode, lView);
|
|
725
|
+
prevInjectContext = setInjectorProfilerContext({
|
|
726
|
+
injector,
|
|
727
|
+
token
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;
|
|
731
|
+
const success = enterDI(lView, tNode, 0);
|
|
732
|
+
ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
|
|
733
|
+
try {
|
|
734
|
+
ngDevMode && emitInjectorToCreateInstanceEvent(token);
|
|
735
|
+
value = lView[index] = factory.factory(undefined, flags, tData, lView, tNode);
|
|
736
|
+
ngDevMode && emitInstanceCreatedByInjectorEvent(value);
|
|
737
|
+
if (tView.firstCreatePass && index >= tNode.directiveStart) {
|
|
738
|
+
ngDevMode && assertDirectiveDef(tData[index]);
|
|
739
|
+
registerPreOrderHooks(index, tData[index], tView);
|
|
716
740
|
}
|
|
741
|
+
} finally {
|
|
742
|
+
ngDevMode && setInjectorProfilerContext(prevInjectContext);
|
|
743
|
+
previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation);
|
|
744
|
+
setIncludeViewProviders(previousIncludeViewProviders);
|
|
745
|
+
factory.resolving = false;
|
|
746
|
+
leaveDI();
|
|
747
|
+
ngDevMode && (injectionPath = []);
|
|
717
748
|
}
|
|
718
|
-
i++;
|
|
719
|
-
if (value !== null) i++;
|
|
720
749
|
}
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
750
|
+
return value;
|
|
751
|
+
}
|
|
752
|
+
function bloomHashBitOrFactory(token) {
|
|
753
|
+
ngDevMode && assertDefined(token, 'token must be defined');
|
|
754
|
+
if (typeof token === 'string') {
|
|
755
|
+
return token.charCodeAt(0) || 0;
|
|
724
756
|
}
|
|
725
|
-
|
|
726
|
-
if (
|
|
727
|
-
|
|
757
|
+
const tokenId = token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;
|
|
758
|
+
if (typeof tokenId === 'number') {
|
|
759
|
+
if (tokenId >= 0) {
|
|
760
|
+
return tokenId & BLOOM_MASK;
|
|
761
|
+
} else {
|
|
762
|
+
ngDevMode && assertEqual(tokenId, -1, 'Expecting to get Special Injector Id');
|
|
763
|
+
return createNodeInjector;
|
|
764
|
+
}
|
|
765
|
+
} else {
|
|
766
|
+
return tokenId;
|
|
728
767
|
}
|
|
729
768
|
}
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
function getParentInjectorIndex(parentLocation) {
|
|
735
|
-
if (ngDevMode) {
|
|
736
|
-
assertNumber(parentLocation, 'Number expected');
|
|
737
|
-
assertNotEqual(parentLocation, -1, 'Not a valid state.');
|
|
738
|
-
const parentInjectorIndex = parentLocation & 32767;
|
|
739
|
-
assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
|
|
740
|
-
}
|
|
741
|
-
return parentLocation & 32767;
|
|
769
|
+
function bloomHasToken(bloomHash, injectorIndex, injectorView) {
|
|
770
|
+
const mask = 1 << bloomHash;
|
|
771
|
+
const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
|
|
772
|
+
return !!(value & mask);
|
|
742
773
|
}
|
|
743
|
-
function
|
|
744
|
-
return
|
|
774
|
+
function shouldSearchParent(flags, isFirstHostTNode) {
|
|
775
|
+
return !(flags & 2) && !(flags & 1 && isFirstHostTNode);
|
|
745
776
|
}
|
|
746
|
-
function
|
|
747
|
-
|
|
748
|
-
let parentView = startView;
|
|
749
|
-
while (viewOffset > 0) {
|
|
750
|
-
parentView = parentView[DECLARATION_VIEW];
|
|
751
|
-
viewOffset--;
|
|
752
|
-
}
|
|
753
|
-
return parentView;
|
|
777
|
+
function getNodeInjectorLView(nodeInjector) {
|
|
778
|
+
return nodeInjector._lView;
|
|
754
779
|
}
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
function setIncludeViewProviders(v) {
|
|
758
|
-
const oldValue = includeViewProviders;
|
|
759
|
-
includeViewProviders = v;
|
|
760
|
-
return oldValue;
|
|
780
|
+
function getNodeInjectorTNode(nodeInjector) {
|
|
781
|
+
return nodeInjector._tNode;
|
|
761
782
|
}
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');
|
|
769
|
-
let id;
|
|
770
|
-
if (typeof type === 'string') {
|
|
771
|
-
id = type.charCodeAt(0) || 0;
|
|
772
|
-
} else if (type.hasOwnProperty(NG_ELEMENT_ID)) {
|
|
773
|
-
id = type[NG_ELEMENT_ID];
|
|
783
|
+
class NodeInjector {
|
|
784
|
+
_tNode;
|
|
785
|
+
_lView;
|
|
786
|
+
constructor(_tNode, _lView) {
|
|
787
|
+
this._tNode = _tNode;
|
|
788
|
+
this._lView = _lView;
|
|
774
789
|
}
|
|
775
|
-
|
|
776
|
-
|
|
790
|
+
get(token, notFoundValue, flags) {
|
|
791
|
+
return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);
|
|
777
792
|
}
|
|
778
|
-
const bloomHash = id & BLOOM_MASK;
|
|
779
|
-
const mask = 1 << bloomHash;
|
|
780
|
-
tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
|
|
781
793
|
}
|
|
782
|
-
function
|
|
783
|
-
|
|
784
|
-
if (existingInjectorIndex !== -1) {
|
|
785
|
-
return existingInjectorIndex;
|
|
786
|
-
}
|
|
787
|
-
const tView = lView[TVIEW];
|
|
788
|
-
if (tView.firstCreatePass) {
|
|
789
|
-
tNode.injectorIndex = lView.length;
|
|
790
|
-
insertBloom(tView.data, tNode);
|
|
791
|
-
insertBloom(lView, null);
|
|
792
|
-
insertBloom(tView.blueprint, null);
|
|
793
|
-
}
|
|
794
|
-
const parentLoc = getParentInjectorLocation(tNode, lView);
|
|
795
|
-
const injectorIndex = tNode.injectorIndex;
|
|
796
|
-
if (hasParentInjector(parentLoc)) {
|
|
797
|
-
const parentIndex = getParentInjectorIndex(parentLoc);
|
|
798
|
-
const parentLView = getParentInjectorView(parentLoc, lView);
|
|
799
|
-
const parentData = parentLView[TVIEW].data;
|
|
800
|
-
for (let i = 0; i < 8; i++) {
|
|
801
|
-
lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
lView[injectorIndex + 8] = parentLoc;
|
|
805
|
-
return injectorIndex;
|
|
794
|
+
function createNodeInjector() {
|
|
795
|
+
return new NodeInjector(getCurrentTNode(), getLView());
|
|
806
796
|
}
|
|
807
|
-
function
|
|
808
|
-
|
|
797
|
+
function ɵɵgetInheritedFactory(type) {
|
|
798
|
+
return noSideEffects(() => {
|
|
799
|
+
const ownConstructor = type.prototype.constructor;
|
|
800
|
+
const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);
|
|
801
|
+
const objectPrototype = Object.prototype;
|
|
802
|
+
let parent = Object.getPrototypeOf(type.prototype).constructor;
|
|
803
|
+
while (parent && parent !== objectPrototype) {
|
|
804
|
+
const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);
|
|
805
|
+
if (factory && factory !== ownFactory) {
|
|
806
|
+
return factory;
|
|
807
|
+
}
|
|
808
|
+
parent = Object.getPrototypeOf(parent);
|
|
809
|
+
}
|
|
810
|
+
return t => new t();
|
|
811
|
+
});
|
|
809
812
|
}
|
|
810
|
-
function
|
|
811
|
-
if (
|
|
812
|
-
return
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
813
|
+
function getFactoryOf(type) {
|
|
814
|
+
if (isForwardRef(type)) {
|
|
815
|
+
return () => {
|
|
816
|
+
const factory = getFactoryOf(resolveForwardRef(type));
|
|
817
|
+
return factory && factory();
|
|
818
|
+
};
|
|
816
819
|
}
|
|
820
|
+
return getFactoryDef(type);
|
|
817
821
|
}
|
|
818
|
-
function
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
parentTNode = getTNodeFromLView(lViewCursor);
|
|
827
|
-
if (parentTNode === null) {
|
|
828
|
-
return NO_PARENT_INJECTOR;
|
|
829
|
-
}
|
|
830
|
-
ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);
|
|
831
|
-
declarationViewOffset++;
|
|
832
|
-
lViewCursor = lViewCursor[DECLARATION_VIEW];
|
|
833
|
-
if (parentTNode.injectorIndex !== -1) {
|
|
834
|
-
return parentTNode.injectorIndex | declarationViewOffset << 16;
|
|
822
|
+
function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {
|
|
823
|
+
let currentTNode = tNode;
|
|
824
|
+
let currentLView = lView;
|
|
825
|
+
while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !isRootView(currentLView)) {
|
|
826
|
+
ngDevMode && assertTNodeForLView(currentTNode, currentLView);
|
|
827
|
+
const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | 2, NOT_FOUND);
|
|
828
|
+
if (nodeInjectorValue !== NOT_FOUND) {
|
|
829
|
+
return nodeInjectorValue;
|
|
835
830
|
}
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
ngDevMode && assertTNodeType(tNode, 12 | 3);
|
|
844
|
-
ngDevMode && assertDefined(tNode, 'expecting tNode');
|
|
845
|
-
if (attrNameToInject === 'class') {
|
|
846
|
-
return tNode.classes;
|
|
847
|
-
}
|
|
848
|
-
if (attrNameToInject === 'style') {
|
|
849
|
-
return tNode.styles;
|
|
850
|
-
}
|
|
851
|
-
const attrs = tNode.attrs;
|
|
852
|
-
if (attrs) {
|
|
853
|
-
const attrsLength = attrs.length;
|
|
854
|
-
let i = 0;
|
|
855
|
-
while (i < attrsLength) {
|
|
856
|
-
const value = attrs[i];
|
|
857
|
-
if (isNameOnlyAttributeMarker(value)) break;
|
|
858
|
-
if (value === 0) {
|
|
859
|
-
i = i + 2;
|
|
860
|
-
} else if (typeof value === 'number') {
|
|
861
|
-
i++;
|
|
862
|
-
while (i < attrsLength && typeof attrs[i] === 'string') {
|
|
863
|
-
i++;
|
|
831
|
+
let parentTNode = currentTNode.parent;
|
|
832
|
+
if (!parentTNode) {
|
|
833
|
+
const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];
|
|
834
|
+
if (embeddedViewInjector) {
|
|
835
|
+
const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags & -5);
|
|
836
|
+
if (embeddedViewInjectorValue !== NOT_FOUND) {
|
|
837
|
+
return embeddedViewInjectorValue;
|
|
864
838
|
}
|
|
865
|
-
} else if (value === attrNameToInject) {
|
|
866
|
-
return attrs[i + 1];
|
|
867
|
-
} else {
|
|
868
|
-
i = i + 2;
|
|
869
839
|
}
|
|
840
|
+
parentTNode = getTNodeFromLView(currentLView);
|
|
841
|
+
currentLView = currentLView[DECLARATION_VIEW];
|
|
870
842
|
}
|
|
843
|
+
currentTNode = parentTNode;
|
|
871
844
|
}
|
|
872
|
-
return
|
|
845
|
+
return notFoundValue;
|
|
873
846
|
}
|
|
874
|
-
function
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
847
|
+
function getTNodeFromLView(lView) {
|
|
848
|
+
const tView = lView[TVIEW];
|
|
849
|
+
const tViewType = tView.type;
|
|
850
|
+
if (tViewType === 2) {
|
|
851
|
+
ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
852
|
+
return tView.declTNode;
|
|
853
|
+
} else if (tViewType === 1) {
|
|
854
|
+
return lView[T_HOST];
|
|
879
855
|
}
|
|
856
|
+
return null;
|
|
880
857
|
}
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
858
|
+
|
|
859
|
+
function ɵɵinjectAttribute(attrNameToInject) {
|
|
860
|
+
return injectAttributeImpl(getCurrentTNode(), attrNameToInject);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
const _requestIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : cb => setTimeout(cb)).bind(globalThis);
|
|
864
|
+
const _cancelIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
|
|
865
|
+
const IDLE_SERVICE = new InjectionToken(ngDevMode ? 'IDLE_SERVICE' : '', {
|
|
866
|
+
factory: () => new RequestIdleCallbackService()
|
|
867
|
+
});
|
|
868
|
+
function provideIdleServiceWith(useExisting) {
|
|
869
|
+
return makeEnvironmentProviders([{
|
|
870
|
+
provide: IDLE_SERVICE,
|
|
871
|
+
useExisting
|
|
872
|
+
}]);
|
|
873
|
+
}
|
|
874
|
+
class RequestIdleCallbackService {
|
|
875
|
+
requestIdleCallback = _requestIdleCallback();
|
|
876
|
+
cancelIdleCallback = _cancelIdleCallback();
|
|
877
|
+
requestOnIdle(callback, options) {
|
|
878
|
+
return this.requestIdleCallback(callback, options);
|
|
884
879
|
}
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
const previousInjectImplementation = setInjectImplementation(undefined);
|
|
888
|
-
try {
|
|
889
|
-
if (moduleInjector) {
|
|
890
|
-
return moduleInjector.get(token, notFoundValue, flags & 8);
|
|
891
|
-
} else {
|
|
892
|
-
return injectRootLimpMode(token, notFoundValue, flags & 8);
|
|
893
|
-
}
|
|
894
|
-
} finally {
|
|
895
|
-
setInjectImplementation(previousInjectImplementation);
|
|
896
|
-
}
|
|
880
|
+
cancelOnIdle(id) {
|
|
881
|
+
return this.cancelIdleCallback(id);
|
|
897
882
|
}
|
|
898
|
-
return notFoundValueOrThrow(notFoundValue, token, flags);
|
|
899
883
|
}
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
884
|
+
|
|
885
|
+
function promiseWithResolvers() {
|
|
886
|
+
let resolve;
|
|
887
|
+
let reject;
|
|
888
|
+
const promise = new Promise((res, rej) => {
|
|
889
|
+
resolve = res;
|
|
890
|
+
reject = rej;
|
|
891
|
+
});
|
|
892
|
+
return {
|
|
893
|
+
promise,
|
|
894
|
+
resolve,
|
|
895
|
+
reject
|
|
896
|
+
};
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
const ANNOTATIONS = '__annotations__';
|
|
900
|
+
const PARAMETERS = '__parameters__';
|
|
901
|
+
const PROP_METADATA = '__prop__metadata__';
|
|
902
|
+
function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {
|
|
903
|
+
return noSideEffects(() => {
|
|
904
|
+
const metaCtor = makeMetadataCtor(props);
|
|
905
|
+
function DecoratorFactory(...args) {
|
|
906
|
+
if (this instanceof DecoratorFactory) {
|
|
907
|
+
metaCtor.call(this, ...args);
|
|
908
|
+
return this;
|
|
906
909
|
}
|
|
910
|
+
const annotationInstance = new DecoratorFactory(...args);
|
|
911
|
+
return function TypeDecorator(cls) {
|
|
912
|
+
if (typeFn) typeFn(cls, ...args);
|
|
913
|
+
const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, {
|
|
914
|
+
value: []
|
|
915
|
+
})[ANNOTATIONS];
|
|
916
|
+
annotations.push(annotationInstance);
|
|
917
|
+
return cls;
|
|
918
|
+
};
|
|
907
919
|
}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
return value;
|
|
920
|
+
if (parentClass) {
|
|
921
|
+
DecoratorFactory.prototype = Object.create(parentClass.prototype);
|
|
911
922
|
}
|
|
912
|
-
|
|
913
|
-
|
|
923
|
+
DecoratorFactory.prototype.ngMetadataName = name;
|
|
924
|
+
DecoratorFactory.annotationCls = DecoratorFactory;
|
|
925
|
+
return DecoratorFactory;
|
|
926
|
+
});
|
|
914
927
|
}
|
|
915
|
-
function
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
928
|
+
function makeMetadataCtor(props) {
|
|
929
|
+
return function ctor(...args) {
|
|
930
|
+
if (props) {
|
|
931
|
+
const values = props(...args);
|
|
932
|
+
for (const propName in values) {
|
|
933
|
+
this[propName] = values[propName];
|
|
934
|
+
}
|
|
920
935
|
}
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
value = bloomHash(flags);
|
|
936
|
+
};
|
|
937
|
+
}
|
|
938
|
+
function makeParamDecorator(name, props, parentClass) {
|
|
939
|
+
return noSideEffects(() => {
|
|
940
|
+
const metaCtor = makeMetadataCtor(props);
|
|
941
|
+
function ParamDecoratorFactory(...args) {
|
|
942
|
+
if (this instanceof ParamDecoratorFactory) {
|
|
943
|
+
metaCtor.apply(this, args);
|
|
944
|
+
return this;
|
|
931
945
|
}
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
946
|
+
const annotationInstance = new ParamDecoratorFactory(...args);
|
|
947
|
+
ParamDecorator.annotation = annotationInstance;
|
|
948
|
+
return ParamDecorator;
|
|
949
|
+
function ParamDecorator(cls, unusedKey, index) {
|
|
950
|
+
const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, {
|
|
951
|
+
value: []
|
|
952
|
+
})[PARAMETERS];
|
|
953
|
+
while (parameters.length <= index) {
|
|
954
|
+
parameters.push(null);
|
|
955
|
+
}
|
|
956
|
+
(parameters[index] = parameters[index] || []).push(annotationInstance);
|
|
957
|
+
return cls;
|
|
936
958
|
}
|
|
937
|
-
} finally {
|
|
938
|
-
leaveDI();
|
|
939
959
|
}
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
960
|
+
ParamDecoratorFactory.prototype.ngMetadataName = name;
|
|
961
|
+
ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;
|
|
962
|
+
return ParamDecoratorFactory;
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
function makePropDecorator(name, props, parentClass, additionalProcessing) {
|
|
966
|
+
return noSideEffects(() => {
|
|
967
|
+
const metaCtor = makeMetadataCtor(props);
|
|
968
|
+
function PropDecoratorFactory(...args) {
|
|
969
|
+
if (this instanceof PropDecoratorFactory) {
|
|
970
|
+
metaCtor.apply(this, args);
|
|
971
|
+
return this;
|
|
972
|
+
}
|
|
973
|
+
const decoratorInstance = new PropDecoratorFactory(...args);
|
|
974
|
+
function PropDecorator(target, name) {
|
|
975
|
+
if (target === undefined) {
|
|
976
|
+
throw new Error('Standard Angular field decorators are not supported in JIT mode.');
|
|
977
|
+
}
|
|
978
|
+
const constructor = target.constructor;
|
|
979
|
+
const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, {
|
|
980
|
+
value: {}
|
|
981
|
+
})[PROP_METADATA];
|
|
982
|
+
meta[name] = meta.hasOwnProperty(name) && meta[name] || [];
|
|
983
|
+
meta[name].unshift(decoratorInstance);
|
|
984
|
+
}
|
|
985
|
+
return PropDecorator;
|
|
986
|
+
}
|
|
987
|
+
if (parentClass) {
|
|
988
|
+
PropDecoratorFactory.prototype = Object.create(parentClass.prototype);
|
|
989
|
+
}
|
|
990
|
+
PropDecoratorFactory.prototype.ngMetadataName = name;
|
|
991
|
+
PropDecoratorFactory.annotationCls = PropDecoratorFactory;
|
|
992
|
+
return PropDecoratorFactory;
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
function getCompilerFacade(request) {
|
|
997
|
+
const globalNg = _global['ng'];
|
|
998
|
+
if (globalNg && globalNg.ɵcompilerFacade) {
|
|
999
|
+
return globalNg.ɵcompilerFacade;
|
|
1000
|
+
}
|
|
1001
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
1002
|
+
console.error(`JIT compilation failed for ${request.kind}`, request.type);
|
|
1003
|
+
let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
|
|
1004
|
+
if (request.usage === 1) {
|
|
1005
|
+
message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
|
|
1006
|
+
message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
|
|
1007
|
+
message += '\n';
|
|
1008
|
+
message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\n`;
|
|
1009
|
+
} else {
|
|
1010
|
+
message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\n`;
|
|
1011
|
+
}
|
|
1012
|
+
message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\n`;
|
|
1013
|
+
message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`;
|
|
1014
|
+
throw new Error(message);
|
|
1015
|
+
} else {
|
|
1016
|
+
throw new Error('JIT compiler unavailable');
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
function ɵɵdefineService(opts) {
|
|
1021
|
+
return {
|
|
1022
|
+
token: opts.token,
|
|
1023
|
+
providedIn: opts.autoProvided === false ? null : 'root',
|
|
1024
|
+
factory: opts.factory,
|
|
1025
|
+
value: undefined
|
|
1026
|
+
};
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
const angularCoreDiEnv = {
|
|
1030
|
+
'ɵɵdefineInjectable': __defineInjectable,
|
|
1031
|
+
'ɵɵdefineInjector': __defineInjector,
|
|
1032
|
+
'ɵɵdefineService': ɵɵdefineService,
|
|
1033
|
+
'ɵɵinject': __inject,
|
|
1034
|
+
'ɵɵinvalidFactoryDep': __invalidFactoryDep,
|
|
1035
|
+
'resolveForwardRef': resolveForwardRef
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
const Type = Function;
|
|
1039
|
+
function isType(v) {
|
|
1040
|
+
return typeof v === 'function';
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
const ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/;
|
|
1044
|
+
const ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
|
|
1045
|
+
const ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
|
|
1046
|
+
const ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;
|
|
1047
|
+
function isDelegateCtor(typeStr) {
|
|
1048
|
+
return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr);
|
|
1049
|
+
}
|
|
1050
|
+
class ReflectionCapabilities {
|
|
1051
|
+
_reflect;
|
|
1052
|
+
constructor(reflect) {
|
|
1053
|
+
this._reflect = reflect || _global['Reflect'];
|
|
1054
|
+
}
|
|
1055
|
+
factory(t) {
|
|
1056
|
+
return (...args) => new t(...args);
|
|
1057
|
+
}
|
|
1058
|
+
_zipTypesAndAnnotations(paramTypes, paramAnnotations) {
|
|
1059
|
+
let result;
|
|
1060
|
+
if (typeof paramTypes === 'undefined') {
|
|
1061
|
+
result = newArray(paramAnnotations.length);
|
|
1062
|
+
} else {
|
|
1063
|
+
result = newArray(paramTypes.length);
|
|
1064
|
+
}
|
|
1065
|
+
for (let i = 0; i < result.length; i++) {
|
|
1066
|
+
if (typeof paramTypes === 'undefined') {
|
|
1067
|
+
result[i] = [];
|
|
1068
|
+
} else if (paramTypes[i] && paramTypes[i] != Object) {
|
|
1069
|
+
result[i] = [paramTypes[i]];
|
|
949
1070
|
} else {
|
|
950
|
-
|
|
951
|
-
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
952
|
-
lView = getParentInjectorView(parentLocation, lView);
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
while (injectorIndex !== -1) {
|
|
956
|
-
ngDevMode && assertNodeInjector(lView, injectorIndex);
|
|
957
|
-
const tView = lView[TVIEW];
|
|
958
|
-
ngDevMode && assertTNodeForLView(tView.data[injectorIndex + 8], lView);
|
|
959
|
-
if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
|
|
960
|
-
const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);
|
|
961
|
-
if (instance !== NOT_FOUND) {
|
|
962
|
-
return instance;
|
|
963
|
-
}
|
|
1071
|
+
result[i] = [];
|
|
964
1072
|
}
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
previousTView = tView;
|
|
968
|
-
injectorIndex = getParentInjectorIndex(parentLocation);
|
|
969
|
-
lView = getParentInjectorView(parentLocation, lView);
|
|
970
|
-
} else {
|
|
971
|
-
injectorIndex = -1;
|
|
1073
|
+
if (paramAnnotations && paramAnnotations[i] != null) {
|
|
1074
|
+
result[i] = result[i].concat(paramAnnotations[i]);
|
|
972
1075
|
}
|
|
973
1076
|
}
|
|
1077
|
+
return result;
|
|
974
1078
|
}
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
const directiveEnd = tNode.directiveEnd;
|
|
995
|
-
const cptViewProvidersCount = nodeProviderIndexes >> 20;
|
|
996
|
-
const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
|
|
997
|
-
const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
|
|
998
|
-
for (let i = startingIndex; i < endIndex; i++) {
|
|
999
|
-
const providerTokenOrDef = tInjectables[i];
|
|
1000
|
-
if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) {
|
|
1001
|
-
return i;
|
|
1079
|
+
_ownParameters(type, parentCtor) {
|
|
1080
|
+
const typeStr = type.toString();
|
|
1081
|
+
if (isDelegateCtor(typeStr)) {
|
|
1082
|
+
return null;
|
|
1083
|
+
}
|
|
1084
|
+
if (type.parameters && type.parameters !== parentCtor.parameters) {
|
|
1085
|
+
return type.parameters;
|
|
1086
|
+
}
|
|
1087
|
+
const tsickleCtorParams = type.ctorParameters;
|
|
1088
|
+
if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {
|
|
1089
|
+
const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;
|
|
1090
|
+
const paramTypes = ctorParameters.map(ctorParam => ctorParam && ctorParam.type);
|
|
1091
|
+
const paramAnnotations = ctorParameters.map(ctorParam => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));
|
|
1092
|
+
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
|
|
1093
|
+
}
|
|
1094
|
+
const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];
|
|
1095
|
+
const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata('design:paramtypes', type);
|
|
1096
|
+
if (paramTypes || paramAnnotations) {
|
|
1097
|
+
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
|
|
1002
1098
|
}
|
|
1099
|
+
return newArray(type.length);
|
|
1003
1100
|
}
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1101
|
+
parameters(type) {
|
|
1102
|
+
if (!isType(type)) {
|
|
1103
|
+
return [];
|
|
1104
|
+
}
|
|
1105
|
+
const parentCtor = getParentCtor(type);
|
|
1106
|
+
let parameters = this._ownParameters(type, parentCtor);
|
|
1107
|
+
if (!parameters && parentCtor !== Object) {
|
|
1108
|
+
parameters = this.parameters(parentCtor);
|
|
1008
1109
|
}
|
|
1110
|
+
return parameters || [];
|
|
1009
1111
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
let
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
const tData = tView.data;
|
|
1016
|
-
if (value instanceof NodeInjectorFactory) {
|
|
1017
|
-
const factory = value;
|
|
1018
|
-
ngDevMode && injectionPath.push(factory.name ?? 'unknown');
|
|
1019
|
-
if (factory.resolving) {
|
|
1020
|
-
let token = '';
|
|
1021
|
-
if (ngDevMode) {
|
|
1022
|
-
token = stringifyForError(tData[index]);
|
|
1023
|
-
throw cyclicDependencyErrorWithDetails(token, injectionPath);
|
|
1024
|
-
} else {
|
|
1025
|
-
throw cyclicDependencyError(token);
|
|
1112
|
+
_ownAnnotations(typeOrFunc, parentCtor) {
|
|
1113
|
+
if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {
|
|
1114
|
+
let annotations = typeOrFunc.annotations;
|
|
1115
|
+
if (typeof annotations === 'function' && annotations.annotations) {
|
|
1116
|
+
annotations = annotations.annotations;
|
|
1026
1117
|
}
|
|
1118
|
+
return annotations;
|
|
1027
1119
|
}
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
const token = tData[index].type || tData[index];
|
|
1031
|
-
let prevInjectContext;
|
|
1032
|
-
if (ngDevMode) {
|
|
1033
|
-
const injector = new NodeInjector(tNode, lView);
|
|
1034
|
-
prevInjectContext = setInjectorProfilerContext({
|
|
1035
|
-
injector,
|
|
1036
|
-
token
|
|
1037
|
-
});
|
|
1120
|
+
if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {
|
|
1121
|
+
return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);
|
|
1038
1122
|
}
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
|
|
1042
|
-
try {
|
|
1043
|
-
ngDevMode && emitInjectorToCreateInstanceEvent(token);
|
|
1044
|
-
value = lView[index] = factory.factory(undefined, flags, tData, lView, tNode);
|
|
1045
|
-
ngDevMode && emitInstanceCreatedByInjectorEvent(value);
|
|
1046
|
-
if (tView.firstCreatePass && index >= tNode.directiveStart) {
|
|
1047
|
-
ngDevMode && assertDirectiveDef(tData[index]);
|
|
1048
|
-
registerPreOrderHooks(index, tData[index], tView);
|
|
1049
|
-
}
|
|
1050
|
-
} finally {
|
|
1051
|
-
ngDevMode && setInjectorProfilerContext(prevInjectContext);
|
|
1052
|
-
previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation);
|
|
1053
|
-
setIncludeViewProviders(previousIncludeViewProviders);
|
|
1054
|
-
factory.resolving = false;
|
|
1055
|
-
leaveDI();
|
|
1056
|
-
ngDevMode && (injectionPath = []);
|
|
1123
|
+
if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {
|
|
1124
|
+
return typeOrFunc[ANNOTATIONS];
|
|
1057
1125
|
}
|
|
1126
|
+
return null;
|
|
1058
1127
|
}
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
ngDevMode && assertDefined(token, 'token must be defined');
|
|
1063
|
-
if (typeof token === 'string') {
|
|
1064
|
-
return token.charCodeAt(0) || 0;
|
|
1065
|
-
}
|
|
1066
|
-
const tokenId = token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;
|
|
1067
|
-
if (typeof tokenId === 'number') {
|
|
1068
|
-
if (tokenId >= 0) {
|
|
1069
|
-
return tokenId & BLOOM_MASK;
|
|
1070
|
-
} else {
|
|
1071
|
-
ngDevMode && assertEqual(tokenId, -1, 'Expecting to get Special Injector Id');
|
|
1072
|
-
return createNodeInjector;
|
|
1128
|
+
annotations(typeOrFunc) {
|
|
1129
|
+
if (!isType(typeOrFunc)) {
|
|
1130
|
+
return [];
|
|
1073
1131
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
function bloomHasToken(bloomHash, injectorIndex, injectorView) {
|
|
1079
|
-
const mask = 1 << bloomHash;
|
|
1080
|
-
const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
|
|
1081
|
-
return !!(value & mask);
|
|
1082
|
-
}
|
|
1083
|
-
function shouldSearchParent(flags, isFirstHostTNode) {
|
|
1084
|
-
return !(flags & 2) && !(flags & 1 && isFirstHostTNode);
|
|
1085
|
-
}
|
|
1086
|
-
function getNodeInjectorLView(nodeInjector) {
|
|
1087
|
-
return nodeInjector._lView;
|
|
1088
|
-
}
|
|
1089
|
-
function getNodeInjectorTNode(nodeInjector) {
|
|
1090
|
-
return nodeInjector._tNode;
|
|
1091
|
-
}
|
|
1092
|
-
class NodeInjector {
|
|
1093
|
-
_tNode;
|
|
1094
|
-
_lView;
|
|
1095
|
-
constructor(_tNode, _lView) {
|
|
1096
|
-
this._tNode = _tNode;
|
|
1097
|
-
this._lView = _lView;
|
|
1098
|
-
}
|
|
1099
|
-
get(token, notFoundValue, flags) {
|
|
1100
|
-
return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);
|
|
1132
|
+
const parentCtor = getParentCtor(typeOrFunc);
|
|
1133
|
+
const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];
|
|
1134
|
+
const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];
|
|
1135
|
+
return parentAnnotations.concat(ownAnnotations);
|
|
1101
1136
|
}
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
return noSideEffects(() => {
|
|
1108
|
-
const ownConstructor = type.prototype.constructor;
|
|
1109
|
-
const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);
|
|
1110
|
-
const objectPrototype = Object.prototype;
|
|
1111
|
-
let parent = Object.getPrototypeOf(type.prototype).constructor;
|
|
1112
|
-
while (parent && parent !== objectPrototype) {
|
|
1113
|
-
const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);
|
|
1114
|
-
if (factory && factory !== ownFactory) {
|
|
1115
|
-
return factory;
|
|
1137
|
+
_ownPropMetadata(typeOrFunc, parentCtor) {
|
|
1138
|
+
if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) {
|
|
1139
|
+
let propMetadata = typeOrFunc.propMetadata;
|
|
1140
|
+
if (typeof propMetadata === 'function' && propMetadata.propMetadata) {
|
|
1141
|
+
propMetadata = propMetadata.propMetadata;
|
|
1116
1142
|
}
|
|
1117
|
-
|
|
1143
|
+
return propMetadata;
|
|
1118
1144
|
}
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
ngDevMode && assertTNodeForLView(currentTNode, currentLView);
|
|
1136
|
-
const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | 2, NOT_FOUND);
|
|
1137
|
-
if (nodeInjectorValue !== NOT_FOUND) {
|
|
1138
|
-
return nodeInjectorValue;
|
|
1145
|
+
if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) {
|
|
1146
|
+
const propDecorators = typeOrFunc.propDecorators;
|
|
1147
|
+
const propMetadata = {};
|
|
1148
|
+
Object.keys(propDecorators).forEach(prop => {
|
|
1149
|
+
propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);
|
|
1150
|
+
});
|
|
1151
|
+
return propMetadata;
|
|
1152
|
+
}
|
|
1153
|
+
if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {
|
|
1154
|
+
return typeOrFunc[PROP_METADATA];
|
|
1155
|
+
}
|
|
1156
|
+
return null;
|
|
1157
|
+
}
|
|
1158
|
+
propMetadata(typeOrFunc) {
|
|
1159
|
+
if (!isType(typeOrFunc)) {
|
|
1160
|
+
return {};
|
|
1139
1161
|
}
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1162
|
+
const parentCtor = getParentCtor(typeOrFunc);
|
|
1163
|
+
const propMetadata = {};
|
|
1164
|
+
if (parentCtor !== Object) {
|
|
1165
|
+
const parentPropMetadata = this.propMetadata(parentCtor);
|
|
1166
|
+
Object.keys(parentPropMetadata).forEach(propName => {
|
|
1167
|
+
propMetadata[propName] = parentPropMetadata[propName];
|
|
1168
|
+
});
|
|
1169
|
+
}
|
|
1170
|
+
const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);
|
|
1171
|
+
if (ownPropMetadata) {
|
|
1172
|
+
Object.keys(ownPropMetadata).forEach(propName => {
|
|
1173
|
+
const decorators = [];
|
|
1174
|
+
if (propMetadata.hasOwnProperty(propName)) {
|
|
1175
|
+
decorators.push(...propMetadata[propName]);
|
|
1147
1176
|
}
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1177
|
+
decorators.push(...ownPropMetadata[propName]);
|
|
1178
|
+
propMetadata[propName] = decorators;
|
|
1179
|
+
});
|
|
1151
1180
|
}
|
|
1152
|
-
|
|
1181
|
+
return propMetadata;
|
|
1182
|
+
}
|
|
1183
|
+
ownPropMetadata(typeOrFunc) {
|
|
1184
|
+
if (!isType(typeOrFunc)) {
|
|
1185
|
+
return {};
|
|
1186
|
+
}
|
|
1187
|
+
return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};
|
|
1188
|
+
}
|
|
1189
|
+
hasLifecycleHook(type, lcProperty) {
|
|
1190
|
+
return type instanceof Type && lcProperty in type.prototype;
|
|
1153
1191
|
}
|
|
1154
|
-
return notFoundValue;
|
|
1155
1192
|
}
|
|
1156
|
-
function
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
if (tViewType === 2) {
|
|
1160
|
-
ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
|
|
1161
|
-
return tView.declTNode;
|
|
1162
|
-
} else if (tViewType === 1) {
|
|
1163
|
-
return lView[T_HOST];
|
|
1193
|
+
function convertTsickleDecoratorIntoMetadata(decoratorInvocations) {
|
|
1194
|
+
if (!decoratorInvocations) {
|
|
1195
|
+
return [];
|
|
1164
1196
|
}
|
|
1165
|
-
return
|
|
1197
|
+
return decoratorInvocations.map(decoratorInvocation => {
|
|
1198
|
+
const decoratorType = decoratorInvocation.type;
|
|
1199
|
+
const annotationCls = decoratorType.annotationCls;
|
|
1200
|
+
const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];
|
|
1201
|
+
return new annotationCls(...annotationArgs);
|
|
1202
|
+
});
|
|
1166
1203
|
}
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1204
|
+
function getParentCtor(ctor) {
|
|
1205
|
+
const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;
|
|
1206
|
+
const parentCtor = parentProto ? parentProto.constructor : null;
|
|
1207
|
+
return parentCtor || Object;
|
|
1170
1208
|
}
|
|
1171
1209
|
|
|
1210
|
+
const Inject = attachInjectFlag(makeParamDecorator('Inject', token => ({
|
|
1211
|
+
token
|
|
1212
|
+
})), -1);
|
|
1213
|
+
const Optional = attachInjectFlag(makeParamDecorator('Optional'), 8);
|
|
1214
|
+
const Self = attachInjectFlag(makeParamDecorator('Self'), 2);
|
|
1215
|
+
const SkipSelf = attachInjectFlag(makeParamDecorator('SkipSelf'), 4);
|
|
1216
|
+
const Host = attachInjectFlag(makeParamDecorator('Host'), 1);
|
|
1217
|
+
|
|
1172
1218
|
const Attribute = makeParamDecorator('Attribute', attributeName => ({
|
|
1173
1219
|
attributeName,
|
|
1174
1220
|
__NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName)
|
|
@@ -1311,6 +1357,60 @@ function getInjectableMetadata(type, srcMeta) {
|
|
|
1311
1357
|
|
|
1312
1358
|
const Injectable = makeDecorator('Injectable', undefined, undefined, undefined, (type, meta) => compileInjectable(type, meta));
|
|
1313
1359
|
|
|
1360
|
+
function compileService(type, meta) {
|
|
1361
|
+
let def = null;
|
|
1362
|
+
let factoryDef = null;
|
|
1363
|
+
if (!type.hasOwnProperty(NG_PROV_DEF)) {
|
|
1364
|
+
Object.defineProperty(type, NG_PROV_DEF, {
|
|
1365
|
+
get: () => {
|
|
1366
|
+
if (def === null) {
|
|
1367
|
+
const compiler = getCompilerFacade({
|
|
1368
|
+
usage: 0,
|
|
1369
|
+
kind: 'service',
|
|
1370
|
+
type
|
|
1371
|
+
});
|
|
1372
|
+
def = compiler.compileService(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getServiceMetadata(type, meta));
|
|
1373
|
+
}
|
|
1374
|
+
return def;
|
|
1375
|
+
}
|
|
1376
|
+
});
|
|
1377
|
+
}
|
|
1378
|
+
if (!type.hasOwnProperty(NG_FACTORY_DEF)) {
|
|
1379
|
+
Object.defineProperty(type, NG_FACTORY_DEF, {
|
|
1380
|
+
get: () => {
|
|
1381
|
+
if (factoryDef === null) {
|
|
1382
|
+
const compiler = getCompilerFacade({
|
|
1383
|
+
usage: 0,
|
|
1384
|
+
kind: 'service',
|
|
1385
|
+
type
|
|
1386
|
+
});
|
|
1387
|
+
factoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {
|
|
1388
|
+
name: type.name,
|
|
1389
|
+
type,
|
|
1390
|
+
typeArgumentCount: 0,
|
|
1391
|
+
deps: reflectDependencies(type),
|
|
1392
|
+
target: compiler.FactoryTarget.Service
|
|
1393
|
+
});
|
|
1394
|
+
}
|
|
1395
|
+
return factoryDef;
|
|
1396
|
+
},
|
|
1397
|
+
configurable: true
|
|
1398
|
+
});
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
function getServiceMetadata(type, srcMeta) {
|
|
1402
|
+
const compilerMeta = {
|
|
1403
|
+
name: type.name,
|
|
1404
|
+
type: type,
|
|
1405
|
+
typeArgumentCount: 0,
|
|
1406
|
+
autoProvided: srcMeta?.autoProvided,
|
|
1407
|
+
factory: srcMeta?.factory
|
|
1408
|
+
};
|
|
1409
|
+
return compilerMeta;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
const Service = makeDecorator('Service', undefined, undefined, undefined, (type, meta) => compileService(type, meta));
|
|
1413
|
+
|
|
1314
1414
|
function injectElementRef() {
|
|
1315
1415
|
return createElementRef(getCurrentTNode(), getLView());
|
|
1316
1416
|
}
|
|
@@ -1324,6 +1424,9 @@ class ElementRef {
|
|
|
1324
1424
|
}
|
|
1325
1425
|
static __NG_ELEMENT_ID__ = injectElementRef;
|
|
1326
1426
|
}
|
|
1427
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
1428
|
+
registerSpecialProvider(ElementRef);
|
|
1429
|
+
}
|
|
1327
1430
|
function unwrapElementRef(value) {
|
|
1328
1431
|
return value instanceof ElementRef ? value.nativeElement : value;
|
|
1329
1432
|
}
|
|
@@ -1965,104 +2068,6 @@ function getDocument() {
|
|
|
1965
2068
|
throw new RuntimeError(210, (typeof ngDevMode === 'undefined' || ngDevMode) && `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`);
|
|
1966
2069
|
}
|
|
1967
2070
|
|
|
1968
|
-
const APP_ID = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AppId' : '', {
|
|
1969
|
-
factory: () => DEFAULT_APP_ID
|
|
1970
|
-
});
|
|
1971
|
-
const DEFAULT_APP_ID = 'ng';
|
|
1972
|
-
const validAppIdInitializer = {
|
|
1973
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
1974
|
-
multi: true,
|
|
1975
|
-
useValue: () => {
|
|
1976
|
-
const appId = inject(APP_ID);
|
|
1977
|
-
const isAlphanumeric = /^[a-zA-Z0-9\-_]+$/.test(appId);
|
|
1978
|
-
if (!isAlphanumeric) {
|
|
1979
|
-
throw new RuntimeError(211, `APP_ID value "${appId}" is not alphanumeric. ` + `The APP_ID must be a string of alphanumeric characters. (a-zA-Z0-9), hyphens (-) and underscores (_) are allowed.`);
|
|
1980
|
-
}
|
|
1981
|
-
}
|
|
1982
|
-
};
|
|
1983
|
-
const PLATFORM_INITIALIZER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'Platform Initializer' : '');
|
|
1984
|
-
const PLATFORM_ID = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'Platform ID' : '', {
|
|
1985
|
-
providedIn: 'platform',
|
|
1986
|
-
factory: () => 'unknown'
|
|
1987
|
-
});
|
|
1988
|
-
const ANIMATION_MODULE_TYPE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationModuleType' : '');
|
|
1989
|
-
const CSP_NONCE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'CSP nonce' : '', {
|
|
1990
|
-
factory: () => {
|
|
1991
|
-
return inject(DOCUMENT$1).body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
|
|
1992
|
-
}
|
|
1993
|
-
});
|
|
1994
|
-
const IMAGE_CONFIG_DEFAULTS = {
|
|
1995
|
-
breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
1996
|
-
placeholderResolution: 30,
|
|
1997
|
-
disableImageSizeWarning: false,
|
|
1998
|
-
disableImageLazyLoadWarning: false
|
|
1999
|
-
};
|
|
2000
|
-
const IMAGE_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'ImageConfig' : '', {
|
|
2001
|
-
factory: () => IMAGE_CONFIG_DEFAULTS
|
|
2002
|
-
});
|
|
2003
|
-
|
|
2004
|
-
function makeStateKey(key) {
|
|
2005
|
-
return key;
|
|
2006
|
-
}
|
|
2007
|
-
class TransferState {
|
|
2008
|
-
static ɵprov =
|
|
2009
|
-
/* @__PURE__ */
|
|
2010
|
-
__defineInjectable({
|
|
2011
|
-
token: TransferState,
|
|
2012
|
-
providedIn: 'root',
|
|
2013
|
-
factory: () => {
|
|
2014
|
-
const transferState = new TransferState();
|
|
2015
|
-
if (typeof ngServerMode === 'undefined' || !ngServerMode) {
|
|
2016
|
-
transferState.store = retrieveTransferredState(inject(DOCUMENT$1), inject(APP_ID));
|
|
2017
|
-
}
|
|
2018
|
-
return transferState;
|
|
2019
|
-
}
|
|
2020
|
-
});
|
|
2021
|
-
store = {};
|
|
2022
|
-
onSerializeCallbacks = {};
|
|
2023
|
-
get(key, defaultValue) {
|
|
2024
|
-
return this.store[key] !== undefined ? this.store[key] : defaultValue;
|
|
2025
|
-
}
|
|
2026
|
-
set(key, value) {
|
|
2027
|
-
this.store[key] = value;
|
|
2028
|
-
}
|
|
2029
|
-
remove(key) {
|
|
2030
|
-
delete this.store[key];
|
|
2031
|
-
}
|
|
2032
|
-
hasKey(key) {
|
|
2033
|
-
return this.store.hasOwnProperty(key);
|
|
2034
|
-
}
|
|
2035
|
-
get isEmpty() {
|
|
2036
|
-
return Object.keys(this.store).length === 0;
|
|
2037
|
-
}
|
|
2038
|
-
onSerialize(key, callback) {
|
|
2039
|
-
this.onSerializeCallbacks[key] = callback;
|
|
2040
|
-
}
|
|
2041
|
-
toJson() {
|
|
2042
|
-
for (const key in this.onSerializeCallbacks) {
|
|
2043
|
-
if (this.onSerializeCallbacks.hasOwnProperty(key)) {
|
|
2044
|
-
try {
|
|
2045
|
-
this.store[key] = this.onSerializeCallbacks[key]();
|
|
2046
|
-
} catch (e) {
|
|
2047
|
-
console.warn('Exception in onSerialize callback: ', e);
|
|
2048
|
-
}
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
|
-
return JSON.stringify(this.store).replace(/</g, '\\u003C').replace(/\//g, '\\u002F');
|
|
2052
|
-
}
|
|
2053
|
-
}
|
|
2054
|
-
function retrieveTransferredState(doc, appId) {
|
|
2055
|
-
const script = doc.getElementById(appId + '-state');
|
|
2056
|
-
if (script?.textContent) {
|
|
2057
|
-
try {
|
|
2058
|
-
return JSON.parse(script.textContent);
|
|
2059
|
-
} catch (e) {
|
|
2060
|
-
console.warn('Exception while restoring TransferState for app ' + appId, e);
|
|
2061
|
-
}
|
|
2062
|
-
}
|
|
2063
|
-
return {};
|
|
2064
|
-
}
|
|
2065
|
-
|
|
2066
2071
|
const REFERENCE_NODE_HOST = 'h';
|
|
2067
2072
|
const REFERENCE_NODE_BODY = 'b';
|
|
2068
2073
|
const NODE_NAVIGATION_STEP_FIRST_CHILD = 'f';
|
|
@@ -2279,11 +2284,24 @@ const removeListeners = el => {
|
|
|
2279
2284
|
const JSACTION_EVENT_CONTRACT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'EVENT_CONTRACT_DETAILS' : '', {
|
|
2280
2285
|
factory: () => ({})
|
|
2281
2286
|
});
|
|
2287
|
+
const handledEventElements = new WeakMap();
|
|
2288
|
+
function markEventHandledForElement(event, element) {
|
|
2289
|
+
if (event == null || typeof event !== 'object') return;
|
|
2290
|
+
let elements = handledEventElements.get(event);
|
|
2291
|
+
if (!elements) {
|
|
2292
|
+
elements = new WeakSet();
|
|
2293
|
+
handledEventElements.set(event, elements);
|
|
2294
|
+
}
|
|
2295
|
+
elements.add(element);
|
|
2296
|
+
}
|
|
2282
2297
|
function invokeListeners(event, currentTarget) {
|
|
2283
2298
|
const handlerFns = currentTarget?.__jsaction_fns?.get(event.type);
|
|
2284
2299
|
if (!handlerFns || !currentTarget?.isConnected) {
|
|
2285
2300
|
return;
|
|
2286
2301
|
}
|
|
2302
|
+
if (currentTarget && handledEventElements.get(event)?.has(currentTarget)) {
|
|
2303
|
+
return;
|
|
2304
|
+
}
|
|
2287
2305
|
for (const handler of handlerFns) {
|
|
2288
2306
|
handler(event);
|
|
2289
2307
|
}
|
|
@@ -3447,12 +3465,6 @@ function validateAgainstEventProperties(name) {
|
|
|
3447
3465
|
throw new RuntimeError(306, errorMessage);
|
|
3448
3466
|
}
|
|
3449
3467
|
}
|
|
3450
|
-
function validateAgainstEventAttributes(name) {
|
|
3451
|
-
if (name.toLowerCase().startsWith('on')) {
|
|
3452
|
-
const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...`;
|
|
3453
|
-
throw new RuntimeError(306, errorMessage);
|
|
3454
|
-
}
|
|
3455
|
-
}
|
|
3456
3468
|
function getSanitizer() {
|
|
3457
3469
|
const lView = getLView();
|
|
3458
3470
|
return lView && lView[ENVIRONMENT].sanitizer;
|
|
@@ -5306,7 +5318,9 @@ function setDomProperty(tNode, lView, propName, value, renderer, sanitizer) {
|
|
|
5306
5318
|
if (tNode.type & 3) {
|
|
5307
5319
|
const element = getNativeByTNode(tNode, lView);
|
|
5308
5320
|
if (ngDevMode) {
|
|
5309
|
-
|
|
5321
|
+
if (lView[TVIEW].firstUpdatePass) {
|
|
5322
|
+
validateAgainstEventProperties(propName);
|
|
5323
|
+
}
|
|
5310
5324
|
if (!isPropertyValid(element, propName, tNode.value, lView[TVIEW].schemas)) {
|
|
5311
5325
|
handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);
|
|
5312
5326
|
}
|
|
@@ -5448,7 +5462,6 @@ function findDirectiveDefMatches(tView, tNode) {
|
|
|
5448
5462
|
function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {
|
|
5449
5463
|
if (ngDevMode) {
|
|
5450
5464
|
assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
|
|
5451
|
-
validateAgainstEventAttributes(name);
|
|
5452
5465
|
assertTNodeType(tNode, 2, `Attempted to set attribute \`${name}\` on a container node. ` + `Host bindings are not valid on ng-container or ng-template.`);
|
|
5453
5466
|
}
|
|
5454
5467
|
const element = getNativeByTNode(tNode, lView);
|
|
@@ -6366,6 +6379,7 @@ function createTemplateRef(hostTNode, hostLView) {
|
|
|
6366
6379
|
}
|
|
6367
6380
|
|
|
6368
6381
|
const AT_THIS_LOCATION = '<-- AT THIS LOCATION';
|
|
6382
|
+
const THIRD_PARTY_SCRIPTS_URL = `/guide/hydration#third-party-scripts-with-dom-manipulation`;
|
|
6369
6383
|
function getFriendlyStringFromTNodeType(tNodeType) {
|
|
6370
6384
|
switch (tNodeType) {
|
|
6371
6385
|
case 4:
|
|
@@ -6409,7 +6423,10 @@ function validateMatchingNode(node, nodeType, tagName, lView, tNode, isViewConta
|
|
|
6409
6423
|
markRNodeAsHavingHydrationMismatch(componentHostElement, expectedDom, actualDom);
|
|
6410
6424
|
}
|
|
6411
6425
|
const footer = getHydrationErrorFooter(componentClassName);
|
|
6412
|
-
|
|
6426
|
+
let message = header + expected + actual + getHydrationAttributeNote() + footer;
|
|
6427
|
+
if (!node || node && isLikelyExternalSourceNode(node)) {
|
|
6428
|
+
message += `Note: It looks like this mismatch may have been caused by a third-party script or ` + `browser extension that modified the DOM outside of Angular's control. ` + `Angular hydration does not support nodes injected or removed outside of the Angular-managed DOM. ` + `Note: If you know which element in the DOM this will be inserted, consider adding ngSkipHydration to prevent this error. \n\n`;
|
|
6429
|
+
}
|
|
6413
6430
|
throw new RuntimeError(-500, message);
|
|
6414
6431
|
}
|
|
6415
6432
|
}
|
|
@@ -6574,7 +6591,17 @@ function shortRNodeDescription(nodeType, tagName, textContent) {
|
|
|
6574
6591
|
}
|
|
6575
6592
|
function getHydrationErrorFooter(componentClassName) {
|
|
6576
6593
|
const componentInfo = componentClassName ? `the "${componentClassName}"` : 'corresponding';
|
|
6577
|
-
return `To fix this problem:\n` + ` * check ${componentInfo} component for hydration-related issues\n` + ` * check to see if your template has valid HTML structure\n` + ` * or skip hydration by adding the \`ngSkipHydration\` attribute ` + `to its host node in a template\n\n`;
|
|
6594
|
+
return `To fix this problem:\n` + ` * check ${componentInfo} component for hydration-related issues\n` + ` * check to see if your template has valid HTML structure\n` + ` * check if there are any third-party scripts that manipulate the DOM. More info: ${DOC_PAGE_BASE_URL}${THIRD_PARTY_SCRIPTS_URL}\n` + ` * or skip hydration by adding the \`ngSkipHydration\` attribute ` + `to its host node in a template\n\n`;
|
|
6595
|
+
}
|
|
6596
|
+
function isLikelyExternalSourceNode(rNode) {
|
|
6597
|
+
const node = rNode;
|
|
6598
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
6599
|
+
return false;
|
|
6600
|
+
}
|
|
6601
|
+
if (readPatchedData(node)) {
|
|
6602
|
+
return false;
|
|
6603
|
+
}
|
|
6604
|
+
return true;
|
|
6578
6605
|
}
|
|
6579
6606
|
function getHydrationAttributeNote() {
|
|
6580
6607
|
return 'Note: attributes are only displayed to better represent the DOM' + ' but have no effect on hydration mismatches.\n\n';
|
|
@@ -7617,6 +7644,9 @@ class Renderer2 {
|
|
|
7617
7644
|
destroyNode = null;
|
|
7618
7645
|
static __NG_ELEMENT_ID__ = () => injectRenderer2();
|
|
7619
7646
|
}
|
|
7647
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
7648
|
+
registerSpecialProvider(Renderer2);
|
|
7649
|
+
}
|
|
7620
7650
|
function injectRenderer2() {
|
|
7621
7651
|
const lView = getLView();
|
|
7622
7652
|
const tNode = getCurrentTNode();
|
|
@@ -8010,6 +8040,10 @@ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
|
|
|
8010
8040
|
|
|
8011
8041
|
function wrapListener(tNode, lView, listenerFn) {
|
|
8012
8042
|
return function wrapListenerIn_markDirtyAndPreventDefault(event) {
|
|
8043
|
+
const nativeEl = wrapListenerIn_markDirtyAndPreventDefault.__ngNativeEl__;
|
|
8044
|
+
if (nativeEl !== undefined) {
|
|
8045
|
+
markEventHandledForElement(event, nativeEl);
|
|
8046
|
+
}
|
|
8013
8047
|
const startView = isComponentHost(tNode) ? getComponentLViewByIndex(tNode.index, lView) : lView;
|
|
8014
8048
|
markViewDirty(startView, 5);
|
|
8015
8049
|
const context = lView[CONTEXT];
|
|
@@ -8052,6 +8086,9 @@ function listenToDomEvent(tNode, tView, lView, eventTargetResolver, renderer, ev
|
|
|
8052
8086
|
const native = getNativeByTNode(tNode, lView);
|
|
8053
8087
|
const target = eventTargetResolver ? eventTargetResolver(native) : native;
|
|
8054
8088
|
stashEventListenerImpl(lView, target, eventName, wrappedListener);
|
|
8089
|
+
if (!eventTargetResolver) {
|
|
8090
|
+
wrappedListener.__ngNativeEl__ = native;
|
|
8091
|
+
}
|
|
8055
8092
|
const cleanupFn = renderer.listen(target, eventName, wrappedListener);
|
|
8056
8093
|
if (!isAnimationEventType(eventName)) {
|
|
8057
8094
|
const idxOrTargetGetter = eventTargetResolver ? _lView => eventTargetResolver(unwrapRNode(_lView[tNode.index])) : tNode.index;
|
|
@@ -8986,7 +9023,7 @@ class ComponentFactory {
|
|
|
8986
9023
|
}
|
|
8987
9024
|
}
|
|
8988
9025
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
8989
|
-
const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-
|
|
9026
|
+
const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-rc.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
8990
9027
|
let creationBindings = null;
|
|
8991
9028
|
let updateBindings = null;
|
|
8992
9029
|
let varsToAllocate = 0;
|
|
@@ -9131,6 +9168,9 @@ function projectNodes(tNode, ngContentSelectors, projectableNodes) {
|
|
|
9131
9168
|
class ViewContainerRef {
|
|
9132
9169
|
static __NG_ELEMENT_ID__ = injectViewContainerRef;
|
|
9133
9170
|
}
|
|
9171
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
9172
|
+
registerSpecialProvider(ViewContainerRef);
|
|
9173
|
+
}
|
|
9134
9174
|
function injectViewContainerRef() {
|
|
9135
9175
|
const previousTNode = getCurrentTNode();
|
|
9136
9176
|
return createContainerRef(previousTNode, getLView());
|
|
@@ -10086,15 +10126,19 @@ function getComponentId(componentDef) {
|
|
|
10086
10126
|
}
|
|
10087
10127
|
|
|
10088
10128
|
const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
|
|
10129
|
+
const ASYNC_METADATA_LOADED = '__ngAsyncMetadataLoaded__';
|
|
10089
10130
|
function getAsyncClassMetadataFn(type) {
|
|
10090
10131
|
const componentClass = type;
|
|
10132
|
+
if (componentClass[ASYNC_COMPONENT_METADATA_FN] === ASYNC_METADATA_LOADED) {
|
|
10133
|
+
return null;
|
|
10134
|
+
}
|
|
10091
10135
|
return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
|
|
10092
10136
|
}
|
|
10093
10137
|
function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
|
|
10094
10138
|
const componentClass = type;
|
|
10095
10139
|
componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
|
|
10096
10140
|
metadataSetterFn(...dependencies);
|
|
10097
|
-
componentClass[ASYNC_COMPONENT_METADATA_FN] =
|
|
10141
|
+
componentClass[ASYNC_COMPONENT_METADATA_FN] = ASYNC_METADATA_LOADED;
|
|
10098
10142
|
return dependencies;
|
|
10099
10143
|
});
|
|
10100
10144
|
return componentClass[ASYNC_COMPONENT_METADATA_FN];
|
|
@@ -10187,18 +10231,14 @@ class ApplicationInitStatus {
|
|
|
10187
10231
|
static ɵfac = function ApplicationInitStatus_Factory(__ngFactoryType__) {
|
|
10188
10232
|
return new (__ngFactoryType__ || ApplicationInitStatus)();
|
|
10189
10233
|
};
|
|
10190
|
-
static ɵprov = /*@__PURE__
|
|
10234
|
+
static ɵprov = /*@__PURE__*/ɵɵdefineService({
|
|
10191
10235
|
token: ApplicationInitStatus,
|
|
10192
|
-
factory: ApplicationInitStatus.ɵfac
|
|
10193
|
-
providedIn: 'root'
|
|
10236
|
+
factory: ApplicationInitStatus.ɵfac
|
|
10194
10237
|
});
|
|
10195
10238
|
}
|
|
10196
10239
|
(() => {
|
|
10197
10240
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
|
|
10198
|
-
type:
|
|
10199
|
-
args: [{
|
|
10200
|
-
providedIn: 'root'
|
|
10201
|
-
}]
|
|
10241
|
+
type: Service
|
|
10202
10242
|
}], () => [], null);
|
|
10203
10243
|
})();
|
|
10204
10244
|
|
|
@@ -10928,28 +10968,6 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
|
|
|
10928
10968
|
});
|
|
10929
10969
|
}
|
|
10930
10970
|
|
|
10931
|
-
const _requestIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : cb => setTimeout(cb)).bind(globalThis);
|
|
10932
|
-
const _cancelIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
|
|
10933
|
-
const IDLE_SERVICE = new InjectionToken(ngDevMode ? 'IDLE_SERVICE' : '', {
|
|
10934
|
-
factory: () => new RequestIdleCallbackService()
|
|
10935
|
-
});
|
|
10936
|
-
function provideIdleServiceWith(useExisting) {
|
|
10937
|
-
return makeEnvironmentProviders([{
|
|
10938
|
-
provide: IDLE_SERVICE,
|
|
10939
|
-
useExisting
|
|
10940
|
-
}]);
|
|
10941
|
-
}
|
|
10942
|
-
class RequestIdleCallbackService {
|
|
10943
|
-
requestIdleCallback = _requestIdleCallback();
|
|
10944
|
-
cancelIdleCallback = _cancelIdleCallback();
|
|
10945
|
-
requestOnIdle(callback, options) {
|
|
10946
|
-
return this.requestIdleCallback(callback, options);
|
|
10947
|
-
}
|
|
10948
|
-
cancelOnIdle(id) {
|
|
10949
|
-
return this.cancelIdleCallback(id);
|
|
10950
|
-
}
|
|
10951
|
-
}
|
|
10952
|
-
|
|
10953
10971
|
class Console {
|
|
10954
10972
|
log(message) {
|
|
10955
10973
|
console.log(message);
|
|
@@ -11466,7 +11484,13 @@ function getNodeInjectorProviders(injector) {
|
|
|
11466
11484
|
const {
|
|
11467
11485
|
resolverToProviders
|
|
11468
11486
|
} = getFrameworkDIDebugData();
|
|
11469
|
-
|
|
11487
|
+
const existingProviders = resolverToProviders.get(diResolver) ?? [];
|
|
11488
|
+
const specialProviders = Array.from(getAllSpecialProviders()).map(token => ({
|
|
11489
|
+
token: token,
|
|
11490
|
+
isViewProvider: false,
|
|
11491
|
+
provider: token
|
|
11492
|
+
}));
|
|
11493
|
+
return [...existingProviders, ...specialProviders];
|
|
11470
11494
|
}
|
|
11471
11495
|
function getProviderImportPaths(providerImportsContainer) {
|
|
11472
11496
|
const providerToPath = new Map();
|
|
@@ -11775,7 +11799,7 @@ let counter = 0;
|
|
|
11775
11799
|
const eventsStack = [];
|
|
11776
11800
|
function getBaseDocUrl() {
|
|
11777
11801
|
const full = VERSION.full;
|
|
11778
|
-
const isPreRelease = full.includes('-next') || full.includes('-rc') || full === '22.0.0-
|
|
11802
|
+
const isPreRelease = full.includes('-next') || full.includes('-rc') || full === '22.0.0-rc.0';
|
|
11779
11803
|
const prefix = isPreRelease ? 'next' : `v${VERSION.major}`;
|
|
11780
11804
|
return `https://${prefix}.angular.dev`;
|
|
11781
11805
|
}
|
|
@@ -12013,6 +12037,10 @@ function publishUtil(name, fn) {
|
|
|
12013
12037
|
|
|
12014
12038
|
const TESTABILITY = new InjectionToken('');
|
|
12015
12039
|
const TESTABILITY_GETTER = new InjectionToken('');
|
|
12040
|
+
const USE_PENDING_TASKS = new InjectionToken('USE_PENDING_TASKS', {
|
|
12041
|
+
providedIn: 'root',
|
|
12042
|
+
factory: () => typeof Zone === 'undefined'
|
|
12043
|
+
});
|
|
12016
12044
|
class Testability {
|
|
12017
12045
|
_ngZone;
|
|
12018
12046
|
registry;
|
|
@@ -12020,6 +12048,8 @@ class Testability {
|
|
|
12020
12048
|
_callbacks = [];
|
|
12021
12049
|
_taskTrackingZone = null;
|
|
12022
12050
|
_destroyRef;
|
|
12051
|
+
pendingTasksInternal = inject(PendingTasksInternal);
|
|
12052
|
+
_usePendingTasks = inject(USE_PENDING_TASKS);
|
|
12023
12053
|
constructor(_ngZone, registry, testabilityGetter) {
|
|
12024
12054
|
this._ngZone = _ngZone;
|
|
12025
12055
|
this.registry = registry;
|
|
@@ -12043,22 +12073,36 @@ class Testability {
|
|
|
12043
12073
|
this._isZoneStable = false;
|
|
12044
12074
|
}
|
|
12045
12075
|
});
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
this.
|
|
12076
|
+
let pendingTasksSubscription;
|
|
12077
|
+
let onStableSubscription;
|
|
12078
|
+
this._ngZone.runOutsideAngular(() => {
|
|
12079
|
+
if (this._usePendingTasks) {
|
|
12080
|
+
pendingTasksSubscription = this.pendingTasksInternal.hasPendingTasksObservable.subscribe(() => {
|
|
12081
|
+
if (this.isStable()) {
|
|
12082
|
+
this._ngZone.runOutsideAngular(() => {
|
|
12083
|
+
this._runCallbacksIfReady();
|
|
12084
|
+
});
|
|
12085
|
+
}
|
|
12052
12086
|
});
|
|
12053
12087
|
}
|
|
12054
|
-
|
|
12088
|
+
onStableSubscription = this._ngZone.onStable.subscribe({
|
|
12089
|
+
next: () => {
|
|
12090
|
+
NgZone.assertNotInAngularZone();
|
|
12091
|
+
queueMicrotask(() => {
|
|
12092
|
+
this._isZoneStable = true;
|
|
12093
|
+
this._runCallbacksIfReady();
|
|
12094
|
+
});
|
|
12095
|
+
}
|
|
12096
|
+
});
|
|
12097
|
+
});
|
|
12055
12098
|
this._destroyRef?.onDestroy(() => {
|
|
12056
12099
|
onUnstableSubscription.unsubscribe();
|
|
12100
|
+
pendingTasksSubscription?.unsubscribe();
|
|
12057
12101
|
onStableSubscription.unsubscribe();
|
|
12058
12102
|
});
|
|
12059
12103
|
}
|
|
12060
12104
|
isStable() {
|
|
12061
|
-
return this._isZoneStable && !this._ngZone.hasPendingMacrotasks;
|
|
12105
|
+
return this._isZoneStable && !this._ngZone.hasPendingMacrotasks && (!this._usePendingTasks || !this.pendingTasksInternal.hasPendingTasks);
|
|
12062
12106
|
}
|
|
12063
12107
|
_runCallbacksIfReady() {
|
|
12064
12108
|
if (this.isStable()) {
|
|
@@ -12470,18 +12514,14 @@ class ApplicationRef {
|
|
|
12470
12514
|
static ɵfac = function ApplicationRef_Factory(__ngFactoryType__) {
|
|
12471
12515
|
return new (__ngFactoryType__ || ApplicationRef)();
|
|
12472
12516
|
};
|
|
12473
|
-
static ɵprov = /*@__PURE__
|
|
12517
|
+
static ɵprov = /*@__PURE__*/ɵɵdefineService({
|
|
12474
12518
|
token: ApplicationRef,
|
|
12475
|
-
factory: ApplicationRef.ɵfac
|
|
12476
|
-
providedIn: 'root'
|
|
12519
|
+
factory: ApplicationRef.ɵfac
|
|
12477
12520
|
});
|
|
12478
12521
|
}
|
|
12479
12522
|
(() => {
|
|
12480
12523
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
12481
|
-
type:
|
|
12482
|
-
args: [{
|
|
12483
|
-
providedIn: 'root'
|
|
12484
|
-
}]
|
|
12524
|
+
type: Service
|
|
12485
12525
|
}], () => [], null);
|
|
12486
12526
|
})();
|
|
12487
12527
|
function normalizeBootstrapOptions(hostElementOrOptions) {
|
|
@@ -12923,20 +12963,6 @@ function ɵɵdeferEnableTimerScheduling(tView, tDetails, placeholderConfigIndex,
|
|
|
12923
12963
|
}
|
|
12924
12964
|
}
|
|
12925
12965
|
|
|
12926
|
-
function promiseWithResolvers() {
|
|
12927
|
-
let resolve;
|
|
12928
|
-
let reject;
|
|
12929
|
-
const promise = new Promise((res, rej) => {
|
|
12930
|
-
resolve = res;
|
|
12931
|
-
reject = rej;
|
|
12932
|
-
});
|
|
12933
|
-
return {
|
|
12934
|
-
promise,
|
|
12935
|
-
resolve,
|
|
12936
|
-
reject
|
|
12937
|
-
};
|
|
12938
|
-
}
|
|
12939
|
-
|
|
12940
12966
|
function scheduleDelayedTrigger(scheduleFn) {
|
|
12941
12967
|
const lView = getLView();
|
|
12942
12968
|
const tNode = getCurrentTNode();
|
|
@@ -14899,15 +14925,18 @@ function setMaskBit(hasChange) {
|
|
|
14899
14925
|
changeMaskCounter++;
|
|
14900
14926
|
}
|
|
14901
14927
|
function applyI18n(tView, lView, index) {
|
|
14902
|
-
|
|
14903
|
-
|
|
14904
|
-
|
|
14905
|
-
|
|
14906
|
-
|
|
14907
|
-
|
|
14928
|
+
try {
|
|
14929
|
+
if (changeMaskCounter > 0) {
|
|
14930
|
+
ngDevMode && assertDefined(tView, `tView should be defined`);
|
|
14931
|
+
const tI18n = tView.data[index];
|
|
14932
|
+
const updateOpCodes = Array.isArray(tI18n) ? tI18n : tI18n.update;
|
|
14933
|
+
const bindingsStartIndex = getBindingIndex() - changeMaskCounter - 1;
|
|
14934
|
+
applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, changeMask);
|
|
14935
|
+
}
|
|
14936
|
+
} finally {
|
|
14937
|
+
changeMask = 0b0;
|
|
14938
|
+
changeMaskCounter = 0;
|
|
14908
14939
|
}
|
|
14909
|
-
changeMask = 0b0;
|
|
14910
|
-
changeMaskCounter = 0;
|
|
14911
14940
|
}
|
|
14912
14941
|
function createNodeWithoutHydration(lView, textOrName, nodeType) {
|
|
14913
14942
|
const renderer = lView[RENDERER];
|
|
@@ -15459,7 +15488,7 @@ function i18nAttributesFirstPass(tView, index, values) {
|
|
|
15459
15488
|
if (ICU_REGEXP.test(message)) {
|
|
15460
15489
|
throw new Error(`ICU expressions are not supported in attributes. Message: "${message}".`);
|
|
15461
15490
|
}
|
|
15462
|
-
generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes),
|
|
15491
|
+
generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), i18nSanitizeAttribute(attrName));
|
|
15463
15492
|
}
|
|
15464
15493
|
}
|
|
15465
15494
|
tView.data[index] = updateOpCodes;
|
|
@@ -15691,7 +15720,7 @@ function walkIcuTree(ast, tView, tIcu, lView, sharedUpdateOpCodes, create, remov
|
|
|
15691
15720
|
const hasBinding = !!attr.value.match(BINDING_REGEXP);
|
|
15692
15721
|
if (hasBinding) {
|
|
15693
15722
|
if (VALID_ATTRS.hasOwnProperty(lowerAttrName)) {
|
|
15694
|
-
generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0,
|
|
15723
|
+
generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, i18nSanitizeAttribute(lowerAttrName));
|
|
15695
15724
|
} else {
|
|
15696
15725
|
ngDevMode && console.warn(`WARNING: ignoring unsafe attribute value ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
|
|
15697
15726
|
}
|
|
@@ -15774,6 +15803,17 @@ function addCreateNodeAndAppend(create, marker, text, appendToParentIdx, createA
|
|
|
15774
15803
|
function addCreateAttribute(create, newIndex, attrName, attrValue) {
|
|
15775
15804
|
create.push(newIndex << 1 | 1, attrName, attrValue);
|
|
15776
15805
|
}
|
|
15806
|
+
const SECURITY_SENSITIVE_ATTRS = /* @__PURE__ */(() => new Set(Object.values(SECURITY_SENSITIVE_ELEMENTS).flatMap(attrs => attrs ? Object.keys(attrs) : [])))();
|
|
15807
|
+
function i18nSanitizeAttribute(attrName) {
|
|
15808
|
+
const lowerAttrName = attrName.toLowerCase();
|
|
15809
|
+
if (SENSITIVE_ATTRS[lowerAttrName]) {
|
|
15810
|
+
return _sanitizeUrl;
|
|
15811
|
+
}
|
|
15812
|
+
if (SECURITY_SENSITIVE_ATTRS.has(lowerAttrName)) {
|
|
15813
|
+
return ɵɵvalidateAttribute;
|
|
15814
|
+
}
|
|
15815
|
+
return null;
|
|
15816
|
+
}
|
|
15777
15817
|
|
|
15778
15818
|
const ROOT_TEMPLATE_ID = 0;
|
|
15779
15819
|
const PP_MULTI_VALUE_PLACEHOLDERS_REGEXP = /\[(�.+?�?)\]/;
|
|
@@ -17145,6 +17185,31 @@ function maybeUnwrapModuleWithProviders(value) {
|
|
|
17145
17185
|
return isModuleWithProviders(value) ? value.ngModule : value;
|
|
17146
17186
|
}
|
|
17147
17187
|
|
|
17188
|
+
let _dehydratedBlockRegistryFactory = () => null;
|
|
17189
|
+
let _runIncrementalHydrationBootstrap = () => {};
|
|
17190
|
+
let isIncrementalHydrationRuntimeActive = false;
|
|
17191
|
+
function createDehydratedBlockRegistry() {
|
|
17192
|
+
return _dehydratedBlockRegistryFactory();
|
|
17193
|
+
}
|
|
17194
|
+
function runIncrementalHydrationBootstrap(injector, doc) {
|
|
17195
|
+
_runIncrementalHydrationBootstrap(injector, doc);
|
|
17196
|
+
}
|
|
17197
|
+
function ɵɵenableIncrementalHydrationRuntime() {
|
|
17198
|
+
if (isIncrementalHydrationRuntimeActive) {
|
|
17199
|
+
return;
|
|
17200
|
+
}
|
|
17201
|
+
isIncrementalHydrationRuntimeActive = true;
|
|
17202
|
+
enableRetrieveDeferBlockDataImpl();
|
|
17203
|
+
performanceMarkFeature('NgIncrementalHydration');
|
|
17204
|
+
_dehydratedBlockRegistryFactory = () => new DehydratedBlockRegistry();
|
|
17205
|
+
_runIncrementalHydrationBootstrap = (injector, doc) => {
|
|
17206
|
+
const deferBlockData = processBlockData(injector);
|
|
17207
|
+
const commentsByBlockId = gatherDeferBlocksCommentNodes(doc, doc.body);
|
|
17208
|
+
processAndInitTriggers(injector, deferBlockData, commentsByBlockId);
|
|
17209
|
+
appendDeferBlocksToJSActionMap(doc, injector);
|
|
17210
|
+
};
|
|
17211
|
+
}
|
|
17212
|
+
|
|
17148
17213
|
function ɵɵpureFunction0(slotOffset, pureFn) {
|
|
17149
17214
|
const bindingIndex = getBindingRoot() + slotOffset;
|
|
17150
17215
|
const lView = getLView();
|
|
@@ -17502,6 +17567,7 @@ const angularCoreEnv = (() => ({
|
|
|
17502
17567
|
'ɵɵdefineInjectable': __defineInjectable,
|
|
17503
17568
|
'ɵɵdefineInjector': __defineInjector,
|
|
17504
17569
|
'ɵɵdefineNgModule': ɵɵdefineNgModule,
|
|
17570
|
+
'ɵɵdefineService': ɵɵdefineService,
|
|
17505
17571
|
'ɵɵdefinePipe': ɵɵdefinePipe,
|
|
17506
17572
|
'ɵɵdirectiveInject': ɵɵdirectiveInject,
|
|
17507
17573
|
'ɵɵgetInheritedFactory': ɵɵgetInheritedFactory,
|
|
@@ -17606,6 +17672,7 @@ const angularCoreEnv = (() => ({
|
|
|
17606
17672
|
'ɵɵdeferHydrateOnInteraction': ɵɵdeferHydrateOnInteraction,
|
|
17607
17673
|
'ɵɵdeferHydrateOnViewport': ɵɵdeferHydrateOnViewport,
|
|
17608
17674
|
'ɵɵdeferEnableTimerScheduling': ɵɵdeferEnableTimerScheduling,
|
|
17675
|
+
'ɵɵenableIncrementalHydrationRuntime': ɵɵenableIncrementalHydrationRuntime,
|
|
17609
17676
|
'ɵɵrepeater': ɵɵrepeater,
|
|
17610
17677
|
'ɵɵrepeaterCreate': ɵɵrepeaterCreate,
|
|
17611
17678
|
'ɵɵrepeaterTrackByIndex': ɵɵrepeaterTrackByIndex,
|
|
@@ -17834,12 +17901,12 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
17834
17901
|
verifySemanticsOfNgModuleImport(modOrStandaloneCmpt, moduleType);
|
|
17835
17902
|
verifySemanticsOfNgModuleDef(modOrStandaloneCmpt, false, moduleType);
|
|
17836
17903
|
});
|
|
17837
|
-
const exports
|
|
17904
|
+
const exports = maybeUnwrapFn(ngModuleDef.exports);
|
|
17838
17905
|
declarations.forEach(verifyDeclarationsHaveDefinitions);
|
|
17839
17906
|
declarations.forEach(verifyDirectivesHaveSelector);
|
|
17840
17907
|
declarations.forEach(declarationType => verifyNotStandalone(declarationType, moduleType));
|
|
17841
17908
|
const combinedDeclarations = [...declarations.map(resolveForwardRef), ...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef)];
|
|
17842
|
-
exports
|
|
17909
|
+
exports.forEach(verifyExportsAreDeclaredOrReExported);
|
|
17843
17910
|
declarations.forEach(decl => verifyDeclarationIsUnique(decl, allowDuplicateDeclarationsInRoot));
|
|
17844
17911
|
const ngModule = getAnnotation(moduleType, 'NgModule');
|
|
17845
17912
|
if (ngModule) {
|
|
@@ -18249,6 +18316,7 @@ function directiveMetadata(type, metadata) {
|
|
|
18249
18316
|
const propMetadata = reflect.ownPropMetadata(type);
|
|
18250
18317
|
return {
|
|
18251
18318
|
name: type.name,
|
|
18319
|
+
legacyOptionalChaining: false,
|
|
18252
18320
|
type: type,
|
|
18253
18321
|
selector: metadata.selector !== undefined ? metadata.selector : null,
|
|
18254
18322
|
host: metadata.host || EMPTY_OBJ,
|
|
@@ -18300,7 +18368,8 @@ function convertToR3QueryMetadata(propertyName, ann) {
|
|
|
18300
18368
|
};
|
|
18301
18369
|
}
|
|
18302
18370
|
function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
|
|
18303
|
-
const
|
|
18371
|
+
const signalQueriesMeta = [];
|
|
18372
|
+
const decoratorQueriesMeta = [];
|
|
18304
18373
|
for (const field in propMetadata) {
|
|
18305
18374
|
if (propMetadata.hasOwnProperty(field)) {
|
|
18306
18375
|
const annotations = propMetadata[field];
|
|
@@ -18312,12 +18381,17 @@ function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
|
|
|
18312
18381
|
if (annotations.some(isInputAnnotation)) {
|
|
18313
18382
|
throw new Error(`Cannot combine @Input decorators with query decorators`);
|
|
18314
18383
|
}
|
|
18315
|
-
|
|
18384
|
+
const queryMeta = convertToR3QueryMetadata(field, ann);
|
|
18385
|
+
if (queryMeta.isSignal) {
|
|
18386
|
+
signalQueriesMeta.push(queryMeta);
|
|
18387
|
+
} else {
|
|
18388
|
+
decoratorQueriesMeta.push(queryMeta);
|
|
18389
|
+
}
|
|
18316
18390
|
}
|
|
18317
18391
|
});
|
|
18318
18392
|
}
|
|
18319
18393
|
}
|
|
18320
|
-
return
|
|
18394
|
+
return [...signalQueriesMeta, ...decoratorQueriesMeta];
|
|
18321
18395
|
}
|
|
18322
18396
|
function extractExportAs(exportAs) {
|
|
18323
18397
|
return exportAs === undefined ? null : splitByComma(exportAs);
|
|
@@ -18624,18 +18698,14 @@ class ChangeDetectionSchedulerImpl {
|
|
|
18624
18698
|
static ɵfac = function ChangeDetectionSchedulerImpl_Factory(__ngFactoryType__) {
|
|
18625
18699
|
return new (__ngFactoryType__ || ChangeDetectionSchedulerImpl)();
|
|
18626
18700
|
};
|
|
18627
|
-
static ɵprov = /*@__PURE__
|
|
18701
|
+
static ɵprov = /*@__PURE__*/ɵɵdefineService({
|
|
18628
18702
|
token: ChangeDetectionSchedulerImpl,
|
|
18629
|
-
factory: ChangeDetectionSchedulerImpl.ɵfac
|
|
18630
|
-
providedIn: 'root'
|
|
18703
|
+
factory: ChangeDetectionSchedulerImpl.ɵfac
|
|
18631
18704
|
});
|
|
18632
18705
|
}
|
|
18633
18706
|
(() => {
|
|
18634
18707
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChangeDetectionSchedulerImpl, [{
|
|
18635
|
-
type:
|
|
18636
|
-
args: [{
|
|
18637
|
-
providedIn: 'root'
|
|
18638
|
-
}]
|
|
18708
|
+
type: Service
|
|
18639
18709
|
}], () => [], null);
|
|
18640
18710
|
})();
|
|
18641
18711
|
function provideZonelessChangeDetection() {
|
|
@@ -18677,18 +18747,14 @@ class Compiler {
|
|
|
18677
18747
|
static ɵfac = function Compiler_Factory(__ngFactoryType__) {
|
|
18678
18748
|
return new (__ngFactoryType__ || Compiler)();
|
|
18679
18749
|
};
|
|
18680
|
-
static ɵprov = /*@__PURE__
|
|
18750
|
+
static ɵprov = /*@__PURE__*/ɵɵdefineService({
|
|
18681
18751
|
token: Compiler,
|
|
18682
|
-
factory: Compiler.ɵfac
|
|
18683
|
-
providedIn: 'root'
|
|
18752
|
+
factory: Compiler.ɵfac
|
|
18684
18753
|
});
|
|
18685
18754
|
}
|
|
18686
18755
|
(() => {
|
|
18687
18756
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
|
|
18688
|
-
type:
|
|
18689
|
-
args: [{
|
|
18690
|
-
providedIn: 'root'
|
|
18691
|
-
}]
|
|
18757
|
+
type: Service
|
|
18692
18758
|
}], null, null);
|
|
18693
18759
|
})();
|
|
18694
18760
|
const COMPILER_OPTIONS = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'compilerOptions' : '');
|
|
@@ -19066,5 +19132,5 @@ function getDebugNode(nativeNode) {
|
|
|
19066
19132
|
return null;
|
|
19067
19133
|
}
|
|
19068
19134
|
|
|
19069
|
-
export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED,
|
|
19135
|
+
export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CUSTOM_ELEMENTS_SCHEMA, ChainedInjector, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, ControlFlowBlockType, 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, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IDLE_SERVICE, 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, 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, NodeInjector, Optional, Output, PRESERVE_HOST_CONTENT, Pipe, ProfilerEvent, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SHARED_STYLES_HOST, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, Service, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, Type, USE_PENDING_TASKS, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createDehydratedBlockRegistry, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getClosestComponentName, getCompilerFacade, getDebugNode, getDeferBlocks, getDirectives, getDocument, getHostElement, getInjector, getInjectorMetadata, getInjectorProviders, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getNodeInjectorTNode, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getSignalGraph, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideIdleServiceWith, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, runIncrementalHydrationBootstrap, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, walkLViewDirectives, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵ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, ɵɵdefineService, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableIncrementalHydrationRuntime, ɵɵ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 };
|
|
19070
19136
|
//# sourceMappingURL=_debug_node-chunk.mjs.map
|