@angular/core 17.1.1 → 17.1.3
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/esm2022/src/application/application_init.mjs +2 -2
- package/esm2022/src/application/application_ref.mjs +55 -17
- package/esm2022/src/application/application_tokens.mjs +9 -9
- package/esm2022/src/authoring/input.mjs +1 -1
- package/esm2022/src/authoring/input_signal.mjs +1 -1
- package/esm2022/src/authoring/input_type_checking.mjs +1 -1
- package/esm2022/src/authoring.mjs +1 -1
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +51 -18
- package/esm2022/src/core_private_export.mjs +2 -2
- package/esm2022/src/defer/instructions.mjs +16 -7
- package/esm2022/src/di/forward_ref.mjs +1 -1
- package/esm2022/src/di/initializer_token.mjs +2 -2
- package/esm2022/src/di/injector.mjs +4 -4
- package/esm2022/src/di/injector_token.mjs +2 -2
- package/esm2022/src/di/internal_tokens.mjs +2 -2
- package/esm2022/src/di/scope.mjs +2 -2
- package/esm2022/src/hydration/error_handling.mjs +17 -6
- package/esm2022/src/hydration/utils.mjs +54 -8
- package/esm2022/src/i18n/tokens.mjs +5 -5
- package/esm2022/src/linker/compiler.mjs +2 -2
- package/esm2022/src/metadata/di.mjs +1 -1
- package/esm2022/src/platform/platform.mjs +2 -2
- package/esm2022/src/platform/platform_ref.mjs +2 -2
- package/esm2022/src/render3/after_render_hooks.mjs +2 -6
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/definition.mjs +1 -1
- package/esm2022/src/render3/errors_di.mjs +2 -2
- package/esm2022/src/render3/i18n/i18n_locale_id.mjs +2 -2
- package/esm2022/src/render3/instructions/change_detection.mjs +6 -6
- package/esm2022/src/render3/instructions/element.mjs +3 -3
- package/esm2022/src/render3/instructions/write_to_directive_input.mjs +1 -1
- package/esm2022/src/render3/util/view_utils.mjs +3 -3
- package/esm2022/src/render3/view_ref.mjs +1 -1
- package/esm2022/src/util/ng_dev_mode.mjs +11 -3
- package/esm2022/src/util/stringify.mjs +2 -2
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/component_fixture.mjs +127 -92
- package/esm2022/testing/src/logger.mjs +3 -3
- package/esm2022/testing/src/test_bed.mjs +11 -6
- package/esm2022/testing/src/test_bed_common.mjs +9 -2
- package/esm2022/testing/src/test_bed_compiler.mjs +5 -4
- package/esm2022/testing/src/testing.mjs +2 -2
- package/fesm2022/core.mjs +510 -376
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +142 -95
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +85 -23
- package/package.json +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/block-template-entities/bundle.js +255 -208
- package/schematics/migrations/block-template-entities/bundle.js.map +3 -3
- package/schematics/migrations/compiler-options/bundle.js +13 -13
- package/schematics/migrations/transfer-state/bundle.js +13 -13
- package/schematics/ng-generate/control-flow-migration/bundle.js +265 -218
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
- package/schematics/ng-generate/standalone-migration/bundle.js +702 -560
- package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
- package/testing/index.d.ts +6 -17
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.1.
|
|
2
|
+
* @license Angular v17.1.3
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -205,7 +205,7 @@ function concatStringsWithSpace(before, after) {
|
|
|
205
205
|
*
|
|
206
206
|
* @param string
|
|
207
207
|
* @param maxLength of the output string
|
|
208
|
-
* @returns
|
|
208
|
+
* @returns ellipsed string with ... in the middle
|
|
209
209
|
*/
|
|
210
210
|
function truncateMiddle(str, maxLength = 100) {
|
|
211
211
|
if (!str || maxLength < 1 || str.length <= maxLength)
|
|
@@ -369,7 +369,7 @@ function stringifyTypeFromDebugInfo(debugInfo) {
|
|
|
369
369
|
/** Called when directives inject each other (creating a circular dependency) */
|
|
370
370
|
function throwCyclicDependencyError(token, path) {
|
|
371
371
|
const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';
|
|
372
|
-
throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);
|
|
372
|
+
throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, ngDevMode ? `Circular dependency in DI detected for ${token}${depPath}` : token);
|
|
373
373
|
}
|
|
374
374
|
function throwMixedMultiProviderError() {
|
|
375
375
|
throw new Error(`Cannot mix multi providers and regular providers`);
|
|
@@ -716,7 +716,15 @@ function ngDevModeResetPerfCounters() {
|
|
|
716
716
|
};
|
|
717
717
|
// Make sure to refer to ngDevMode as ['ngDevMode'] for closure.
|
|
718
718
|
const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;
|
|
719
|
-
|
|
719
|
+
if (!allowNgDevModeTrue) {
|
|
720
|
+
_global['ngDevMode'] = false;
|
|
721
|
+
}
|
|
722
|
+
else {
|
|
723
|
+
if (typeof _global['ngDevMode'] !== 'object') {
|
|
724
|
+
_global['ngDevMode'] = {};
|
|
725
|
+
}
|
|
726
|
+
Object.assign(_global['ngDevMode'], newCounters);
|
|
727
|
+
}
|
|
720
728
|
return newCounters;
|
|
721
729
|
}
|
|
722
730
|
/**
|
|
@@ -746,7 +754,7 @@ function initNgDevMode() {
|
|
|
746
754
|
// If the `ngDevMode` is not an object, then it means we have not created the perf counters
|
|
747
755
|
// yet.
|
|
748
756
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
749
|
-
if (typeof ngDevMode !== 'object') {
|
|
757
|
+
if (typeof ngDevMode !== 'object' || Object.keys(ngDevMode).length === 0) {
|
|
750
758
|
ngDevModeResetPerfCounters();
|
|
751
759
|
}
|
|
752
760
|
return typeof ngDevMode !== 'undefined' && !!ngDevMode;
|
|
@@ -2783,8 +2791,8 @@ function walkUpViews(nestingLevel, currentView) {
|
|
|
2783
2791
|
return currentView;
|
|
2784
2792
|
}
|
|
2785
2793
|
function requiresRefreshOrTraversal(lView) {
|
|
2786
|
-
return lView[FLAGS] & (1024 /* LViewFlags.RefreshView */ | 8192 /* LViewFlags.HasChildViewsToRefresh */) ||
|
|
2787
|
-
lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty;
|
|
2794
|
+
return !!(lView[FLAGS] & (1024 /* LViewFlags.RefreshView */ | 8192 /* LViewFlags.HasChildViewsToRefresh */) ||
|
|
2795
|
+
lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty);
|
|
2788
2796
|
}
|
|
2789
2797
|
/**
|
|
2790
2798
|
* Updates the `HasChildViewsToRefresh` flag on the parents of the `LView` as well as the
|
|
@@ -5659,7 +5667,7 @@ function componentDefResolved(type) {
|
|
|
5659
5667
|
*
|
|
5660
5668
|
* @publicApi
|
|
5661
5669
|
*/
|
|
5662
|
-
const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
|
|
5670
|
+
const ENVIRONMENT_INITIALIZER = new InjectionToken(ngDevMode ? 'ENVIRONMENT_INITIALIZER' : '');
|
|
5663
5671
|
|
|
5664
5672
|
/**
|
|
5665
5673
|
* An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
|
|
@@ -5669,12 +5677,12 @@ const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
|
|
|
5669
5677
|
*
|
|
5670
5678
|
* @publicApi
|
|
5671
5679
|
*/
|
|
5672
|
-
const INJECTOR = new InjectionToken('INJECTOR',
|
|
5680
|
+
const INJECTOR = new InjectionToken(ngDevMode ? 'INJECTOR' : '',
|
|
5673
5681
|
// Disable tslint because this is const enum which gets inlined not top level prop access.
|
|
5674
5682
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5675
5683
|
-1 /* InjectorMarkers.Injector */);
|
|
5676
5684
|
|
|
5677
|
-
const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
|
|
5685
|
+
const INJECTOR_DEF_TYPES = new InjectionToken(ngDevMode ? 'INJECTOR_DEF_TYPES' : '');
|
|
5678
5686
|
|
|
5679
5687
|
class NullInjector {
|
|
5680
5688
|
get(token, notFoundValue = THROW_IF_NOT_FOUND) {
|
|
@@ -5950,7 +5958,7 @@ function isClassProvider(value) {
|
|
|
5950
5958
|
* as a root scoped injector when processing requests for unknown tokens which may indicate
|
|
5951
5959
|
* they are provided in the root scope.
|
|
5952
5960
|
*/
|
|
5953
|
-
const INJECTOR_SCOPE = new InjectionToken('Set Injector scope.');
|
|
5961
|
+
const INJECTOR_SCOPE = new InjectionToken(ngDevMode ? 'Set Injector scope.' : '');
|
|
5954
5962
|
|
|
5955
5963
|
/**
|
|
5956
5964
|
* Marker which indicates that a value has not yet been created from the factory function.
|
|
@@ -6573,10 +6581,10 @@ function createInjectorWithoutInjectorInstances(defType, parent = null, addition
|
|
|
6573
6581
|
|
|
6574
6582
|
/**
|
|
6575
6583
|
* Concrete injectors implement this interface. Injectors are configured
|
|
6576
|
-
* with [providers](guide/
|
|
6577
|
-
* dependencies of various types with [injection tokens](guide/
|
|
6584
|
+
* with [providers](guide/dependency-injection-providers) that associate
|
|
6585
|
+
* dependencies of various types with [injection tokens](guide/dependency-injection-providers).
|
|
6578
6586
|
*
|
|
6579
|
-
* @see [
|
|
6587
|
+
* @see [DI Providers](guide/dependency-injection-providers).
|
|
6580
6588
|
* @see {@link StaticProvider}
|
|
6581
6589
|
*
|
|
6582
6590
|
* @usageNotes
|
|
@@ -6773,7 +6781,7 @@ function getDocument() {
|
|
|
6773
6781
|
*
|
|
6774
6782
|
* @publicApi
|
|
6775
6783
|
*/
|
|
6776
|
-
const APP_ID = new InjectionToken('AppId', {
|
|
6784
|
+
const APP_ID = new InjectionToken(ngDevMode ? 'AppId' : '', {
|
|
6777
6785
|
providedIn: 'root',
|
|
6778
6786
|
factory: () => DEFAULT_APP_ID,
|
|
6779
6787
|
});
|
|
@@ -6783,12 +6791,12 @@ const DEFAULT_APP_ID = 'ng';
|
|
|
6783
6791
|
* A function that is executed when a platform is initialized.
|
|
6784
6792
|
* @publicApi
|
|
6785
6793
|
*/
|
|
6786
|
-
const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
|
|
6794
|
+
const PLATFORM_INITIALIZER = new InjectionToken(ngDevMode ? 'Platform Initializer' : '');
|
|
6787
6795
|
/**
|
|
6788
6796
|
* A token that indicates an opaque platform ID.
|
|
6789
6797
|
* @publicApi
|
|
6790
6798
|
*/
|
|
6791
|
-
const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
6799
|
+
const PLATFORM_ID = new InjectionToken(ngDevMode ? 'Platform ID' : '', {
|
|
6792
6800
|
providedIn: 'platform',
|
|
6793
6801
|
factory: () => 'unknown', // set a default platform name, when none set explicitly
|
|
6794
6802
|
});
|
|
@@ -6798,16 +6806,16 @@ const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
|
6798
6806
|
* @publicApi
|
|
6799
6807
|
* @deprecated
|
|
6800
6808
|
*/
|
|
6801
|
-
const PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');
|
|
6809
|
+
const PACKAGE_ROOT_URL = new InjectionToken(ngDevMode ? 'Application Packages Root URL' : '');
|
|
6802
6810
|
// We keep this token here, rather than the animations package, so that modules that only care
|
|
6803
6811
|
// about which animations module is loaded (e.g. the CDK) can retrieve it without having to
|
|
6804
6812
|
// include extra dependencies. See #44970 for more context.
|
|
6805
6813
|
/**
|
|
6806
|
-
* A [DI token](
|
|
6814
|
+
* A [DI token](api/core/InjectionToken) that indicates which animations
|
|
6807
6815
|
* module has been loaded.
|
|
6808
6816
|
* @publicApi
|
|
6809
6817
|
*/
|
|
6810
|
-
const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
|
|
6818
|
+
const ANIMATION_MODULE_TYPE = new InjectionToken(ngDevMode ? 'AnimationModuleType' : '');
|
|
6811
6819
|
// TODO(crisbeto): link to CSP guide here.
|
|
6812
6820
|
/**
|
|
6813
6821
|
* Token used to configure the [Content Security Policy](https://web.dev/strict-csp/) nonce that
|
|
@@ -6816,7 +6824,7 @@ const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
|
|
|
6816
6824
|
*
|
|
6817
6825
|
* @publicApi
|
|
6818
6826
|
*/
|
|
6819
|
-
const CSP_NONCE = new InjectionToken('CSP nonce', {
|
|
6827
|
+
const CSP_NONCE = new InjectionToken(ngDevMode ? 'CSP nonce' : '', {
|
|
6820
6828
|
providedIn: 'root',
|
|
6821
6829
|
factory: () => {
|
|
6822
6830
|
// Ideally we wouldn't have to use `querySelector` here since we know that the nonce will be on
|
|
@@ -6853,7 +6861,7 @@ const IMAGE_CONFIG_DEFAULTS = {
|
|
|
6853
6861
|
* @see {@link ImageConfig}
|
|
6854
6862
|
* @publicApi
|
|
6855
6863
|
*/
|
|
6856
|
-
const IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => IMAGE_CONFIG_DEFAULTS });
|
|
6864
|
+
const IMAGE_CONFIG = new InjectionToken(ngDevMode ? 'ImageConfig' : '', { providedIn: 'root', factory: () => IMAGE_CONFIG_DEFAULTS });
|
|
6857
6865
|
|
|
6858
6866
|
/**
|
|
6859
6867
|
*
|
|
@@ -10068,7 +10076,8 @@ function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
|
|
|
10068
10076
|
return null;
|
|
10069
10077
|
// We've read one of the ngh ids, keep the remaining one, so that
|
|
10070
10078
|
// we can set it back on the DOM element.
|
|
10071
|
-
const
|
|
10079
|
+
const rootNgh = rootViewNgh ? `|${rootViewNgh}` : '';
|
|
10080
|
+
const remainingNgh = isRootView ? componentViewNgh : rootNgh;
|
|
10072
10081
|
let data = {};
|
|
10073
10082
|
// An element might have an empty `ngh` attribute value (e.g. `<comp ngh="" />`),
|
|
10074
10083
|
// which means that no special annotations are required. Do not attempt to read
|
|
@@ -10174,7 +10183,7 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10174
10183
|
const content = getTextNodeContent(node);
|
|
10175
10184
|
const isTextNodeMarker = content === "ngetn" /* TextNodeMarker.EmptyNode */ || content === "ngtns" /* TextNodeMarker.Separator */;
|
|
10176
10185
|
return isTextNodeMarker ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
|
|
10177
|
-
}
|
|
10186
|
+
},
|
|
10178
10187
|
});
|
|
10179
10188
|
let currentNode;
|
|
10180
10189
|
// We cannot modify the DOM while using the commentIterator,
|
|
@@ -10183,7 +10192,7 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10183
10192
|
// applying the changes to the DOM: either inserting an empty node
|
|
10184
10193
|
// or just removing the marker if it was used as a separator.
|
|
10185
10194
|
const nodes = [];
|
|
10186
|
-
while (currentNode = commentNodesIterator.nextNode()) {
|
|
10195
|
+
while ((currentNode = commentNodesIterator.nextNode())) {
|
|
10187
10196
|
nodes.push(currentNode);
|
|
10188
10197
|
}
|
|
10189
10198
|
for (const node of nodes) {
|
|
@@ -10195,6 +10204,24 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10195
10204
|
}
|
|
10196
10205
|
}
|
|
10197
10206
|
}
|
|
10207
|
+
/**
|
|
10208
|
+
* Internal type that represents a claimed node.
|
|
10209
|
+
* Only used in dev mode.
|
|
10210
|
+
*/
|
|
10211
|
+
var HydrationStatus;
|
|
10212
|
+
(function (HydrationStatus) {
|
|
10213
|
+
HydrationStatus["Hydrated"] = "hydrated";
|
|
10214
|
+
HydrationStatus["Skipped"] = "skipped";
|
|
10215
|
+
HydrationStatus["Mismatched"] = "mismatched";
|
|
10216
|
+
})(HydrationStatus || (HydrationStatus = {}));
|
|
10217
|
+
// clang-format on
|
|
10218
|
+
const HYDRATION_INFO_KEY = '__ngDebugHydrationInfo__';
|
|
10219
|
+
function patchHydrationInfo(node, info) {
|
|
10220
|
+
node[HYDRATION_INFO_KEY] = info;
|
|
10221
|
+
}
|
|
10222
|
+
function readHydrationInfo(node) {
|
|
10223
|
+
return node[HYDRATION_INFO_KEY] ?? null;
|
|
10224
|
+
}
|
|
10198
10225
|
/**
|
|
10199
10226
|
* Marks a node as "claimed" by hydration process.
|
|
10200
10227
|
* This is needed to make assessments in tests whether
|
|
@@ -10208,11 +10235,38 @@ function markRNodeAsClaimedByHydration(node, checkIfAlreadyClaimed = true) {
|
|
|
10208
10235
|
if (checkIfAlreadyClaimed && isRNodeClaimedForHydration(node)) {
|
|
10209
10236
|
throw new Error('Trying to claim a node, which was claimed already.');
|
|
10210
10237
|
}
|
|
10211
|
-
node.
|
|
10238
|
+
patchHydrationInfo(node, { status: HydrationStatus.Hydrated });
|
|
10212
10239
|
ngDevMode.hydratedNodes++;
|
|
10213
10240
|
}
|
|
10241
|
+
function markRNodeAsSkippedByHydration(node) {
|
|
10242
|
+
if (!ngDevMode) {
|
|
10243
|
+
throw new Error('Calling `markRNodeAsSkippedByHydration` in prod mode ' +
|
|
10244
|
+
'is not supported and likely a mistake.');
|
|
10245
|
+
}
|
|
10246
|
+
patchHydrationInfo(node, { status: HydrationStatus.Skipped });
|
|
10247
|
+
ngDevMode.componentsSkippedHydration++;
|
|
10248
|
+
}
|
|
10249
|
+
function markRNodeAsHavingHydrationMismatch(node, expectedNodeDetails = null, actualNodeDetails = null) {
|
|
10250
|
+
if (!ngDevMode) {
|
|
10251
|
+
throw new Error('Calling `markRNodeAsMismatchedByHydration` in prod mode ' +
|
|
10252
|
+
'is not supported and likely a mistake.');
|
|
10253
|
+
}
|
|
10254
|
+
// The RNode can be a standard HTMLElement
|
|
10255
|
+
// The devtools component tree only displays Angular components & directives
|
|
10256
|
+
// Therefore we attach the debug info to the closest a claimed node.
|
|
10257
|
+
while (node && readHydrationInfo(node)?.status !== HydrationStatus.Hydrated) {
|
|
10258
|
+
node = node?.parentNode;
|
|
10259
|
+
}
|
|
10260
|
+
if (node) {
|
|
10261
|
+
patchHydrationInfo(node, {
|
|
10262
|
+
status: HydrationStatus.Mismatched,
|
|
10263
|
+
expectedNodeDetails,
|
|
10264
|
+
actualNodeDetails,
|
|
10265
|
+
});
|
|
10266
|
+
}
|
|
10267
|
+
}
|
|
10214
10268
|
function isRNodeClaimedForHydration(node) {
|
|
10215
|
-
return
|
|
10269
|
+
return readHydrationInfo(node)?.status === HydrationStatus.Hydrated;
|
|
10216
10270
|
}
|
|
10217
10271
|
function setSegmentHead(hydrationInfo, index, node) {
|
|
10218
10272
|
hydrationInfo.segmentHeads ??= {};
|
|
@@ -10264,7 +10318,7 @@ function isDisconnectedNode$1(hydrationInfo, index) {
|
|
|
10264
10318
|
// Check if we are processing disconnected info for the first time.
|
|
10265
10319
|
if (typeof hydrationInfo.disconnectedNodes === 'undefined') {
|
|
10266
10320
|
const nodeIds = hydrationInfo.data[DISCONNECTED_NODES];
|
|
10267
|
-
hydrationInfo.disconnectedNodes = nodeIds ?
|
|
10321
|
+
hydrationInfo.disconnectedNodes = nodeIds ? new Set(nodeIds) : null;
|
|
10268
10322
|
}
|
|
10269
10323
|
return !!hydrationInfo.disconnectedNodes?.has(index);
|
|
10270
10324
|
}
|
|
@@ -13396,7 +13450,7 @@ function textBindingInternal(lView, index, value) {
|
|
|
13396
13450
|
* The maximum number of times the change detection traversal will rerun before throwing an error.
|
|
13397
13451
|
*/
|
|
13398
13452
|
const MAXIMUM_REFRESH_RERUNS = 100;
|
|
13399
|
-
function detectChangesInternal(lView, notifyErrorHandler = true) {
|
|
13453
|
+
function detectChangesInternal(lView, notifyErrorHandler = true, mode = 0 /* ChangeDetectionMode.Global */) {
|
|
13400
13454
|
const environment = lView[ENVIRONMENT];
|
|
13401
13455
|
const rendererFactory = environment.rendererFactory;
|
|
13402
13456
|
// Check no changes mode is a dev only mode used to verify that bindings have not changed
|
|
@@ -13407,7 +13461,7 @@ function detectChangesInternal(lView, notifyErrorHandler = true) {
|
|
|
13407
13461
|
rendererFactory.begin?.();
|
|
13408
13462
|
}
|
|
13409
13463
|
try {
|
|
13410
|
-
detectChangesInViewWhileDirty(lView);
|
|
13464
|
+
detectChangesInViewWhileDirty(lView, mode);
|
|
13411
13465
|
}
|
|
13412
13466
|
catch (error) {
|
|
13413
13467
|
if (notifyErrorHandler) {
|
|
@@ -13424,8 +13478,8 @@ function detectChangesInternal(lView, notifyErrorHandler = true) {
|
|
|
13424
13478
|
}
|
|
13425
13479
|
}
|
|
13426
13480
|
}
|
|
13427
|
-
function detectChangesInViewWhileDirty(lView) {
|
|
13428
|
-
detectChangesInView(lView,
|
|
13481
|
+
function detectChangesInViewWhileDirty(lView, mode) {
|
|
13482
|
+
detectChangesInView(lView, mode);
|
|
13429
13483
|
let retries = 0;
|
|
13430
13484
|
// If after running change detection, this view still needs to be refreshed or there are
|
|
13431
13485
|
// descendants views that need to be refreshed due to re-dirtying during the change detection
|
|
@@ -15155,11 +15209,9 @@ class AfterRenderCallbackHandlerImpl {
|
|
|
15155
15209
|
this.deferredCallbacks.delete(callback);
|
|
15156
15210
|
}
|
|
15157
15211
|
execute() {
|
|
15158
|
-
let callbacksExecuted = false;
|
|
15159
15212
|
this.executingCallbacks = true;
|
|
15160
15213
|
for (const bucket of Object.values(this.buckets)) {
|
|
15161
15214
|
for (const callback of bucket) {
|
|
15162
|
-
callbacksExecuted = true;
|
|
15163
15215
|
callback.invoke();
|
|
15164
15216
|
}
|
|
15165
15217
|
}
|
|
@@ -15168,7 +15220,6 @@ class AfterRenderCallbackHandlerImpl {
|
|
|
15168
15220
|
this.buckets[callback.phase].add(callback);
|
|
15169
15221
|
}
|
|
15170
15222
|
this.deferredCallbacks.clear();
|
|
15171
|
-
return callbacksExecuted;
|
|
15172
15223
|
}
|
|
15173
15224
|
destroy() {
|
|
15174
15225
|
for (const bucket of Object.values(this.buckets)) {
|
|
@@ -15200,8 +15251,7 @@ class AfterRenderEventManager {
|
|
|
15200
15251
|
for (const callback of callbacks) {
|
|
15201
15252
|
callback();
|
|
15202
15253
|
}
|
|
15203
|
-
|
|
15204
|
-
return !!handlerCallbacksExecuted || callbacks.length > 0;
|
|
15254
|
+
this.handler?.execute();
|
|
15205
15255
|
}
|
|
15206
15256
|
ngOnDestroy() {
|
|
15207
15257
|
this.handler?.destroy();
|
|
@@ -15714,7 +15764,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
15714
15764
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
15715
15765
|
if (rootSelectorOrNode) {
|
|
15716
15766
|
// The placeholder will be replaced with the actual version at build time.
|
|
15717
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.1.
|
|
15767
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.1.3']);
|
|
15718
15768
|
}
|
|
15719
15769
|
else {
|
|
15720
15770
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -16229,16 +16279,21 @@ function validateMatchingNode(node, nodeType, tagName, lView, tNode, isViewConta
|
|
|
16229
16279
|
let header = `During hydration Angular expected ${expectedNode} but `;
|
|
16230
16280
|
const hostComponentDef = getDeclarationComponentDef(lView);
|
|
16231
16281
|
const componentClassName = hostComponentDef?.type?.name;
|
|
16232
|
-
const
|
|
16282
|
+
const expectedDom = describeExpectedDom(lView, tNode, isViewContainerAnchor);
|
|
16283
|
+
const expected = `Angular expected this DOM:\n\n${expectedDom}\n\n`;
|
|
16233
16284
|
let actual = '';
|
|
16234
16285
|
if (!node) {
|
|
16235
16286
|
// No node found during hydration.
|
|
16236
16287
|
header += `the node was not found.\n\n`;
|
|
16288
|
+
// Since the node is missing, we use the closest node to attach the error to
|
|
16289
|
+
markRNodeAsHavingHydrationMismatch(unwrapRNode(lView[HOST]), expectedDom);
|
|
16237
16290
|
}
|
|
16238
16291
|
else {
|
|
16239
16292
|
const actualNode = shortRNodeDescription(node.nodeType, node.tagName ?? null, node.textContent ?? null);
|
|
16240
16293
|
header += `found ${actualNode}.\n\n`;
|
|
16241
|
-
|
|
16294
|
+
const actualDom = describeDomFromNode(node);
|
|
16295
|
+
actual = `Actual DOM is:\n\n${actualDom}\n\n`;
|
|
16296
|
+
markRNodeAsHavingHydrationMismatch(node, expectedDom, actualDom);
|
|
16242
16297
|
}
|
|
16243
16298
|
const footer = getHydrationErrorFooter(componentClassName);
|
|
16244
16299
|
const message = header + expected + actual + getHydrationAttributeNote() + footer;
|
|
@@ -16255,6 +16310,7 @@ function validateSiblingNodeExists(node) {
|
|
|
16255
16310
|
const actual = `Actual DOM is:\n\n${describeDomFromNode(node)}\n\n`;
|
|
16256
16311
|
const footer = getHydrationErrorFooter();
|
|
16257
16312
|
const message = header + actual + footer;
|
|
16313
|
+
markRNodeAsHavingHydrationMismatch(node, '', actual);
|
|
16258
16314
|
throw new RuntimeError(-501 /* RuntimeErrorCode.HYDRATION_MISSING_SIBLINGS */, message);
|
|
16259
16315
|
}
|
|
16260
16316
|
}
|
|
@@ -16267,10 +16323,12 @@ function validateNodeExists(node, lView = null, tNode = null) {
|
|
|
16267
16323
|
let expected = '';
|
|
16268
16324
|
let footer = '';
|
|
16269
16325
|
if (lView !== null && tNode !== null) {
|
|
16270
|
-
expected =
|
|
16326
|
+
expected = describeExpectedDom(lView, tNode, false);
|
|
16271
16327
|
footer = getHydrationErrorFooter();
|
|
16328
|
+
// Since the node is missing, we use the closest node to attach the error to
|
|
16329
|
+
markRNodeAsHavingHydrationMismatch(unwrapRNode(lView[HOST]), expected, '');
|
|
16272
16330
|
}
|
|
16273
|
-
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header
|
|
16331
|
+
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, `${header}${expected}\n\n${footer}`);
|
|
16274
16332
|
}
|
|
16275
16333
|
}
|
|
16276
16334
|
/**
|
|
@@ -16295,6 +16353,7 @@ function nodeNotFoundAtPathError(host, path) {
|
|
|
16295
16353
|
const header = `During hydration Angular was unable to locate a node ` +
|
|
16296
16354
|
`using the "${path}" path, starting from the ${describeRNode(host)} node.\n\n`;
|
|
16297
16355
|
const footer = getHydrationErrorFooter();
|
|
16356
|
+
markRNodeAsHavingHydrationMismatch(host);
|
|
16298
16357
|
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header + footer);
|
|
16299
16358
|
}
|
|
16300
16359
|
/**
|
|
@@ -17541,6 +17600,288 @@ function enableLocateOrCreateContainerRefImpl() {
|
|
|
17541
17600
|
_populateDehydratedViewsInLContainer = populateDehydratedViewsInLContainerImpl;
|
|
17542
17601
|
}
|
|
17543
17602
|
|
|
17603
|
+
/**
|
|
17604
|
+
* The name of a field that Angular monkey-patches onto a component
|
|
17605
|
+
* class to store a function that loads defer-loadable dependencies
|
|
17606
|
+
* and applies metadata to a class.
|
|
17607
|
+
*/
|
|
17608
|
+
const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
|
|
17609
|
+
/**
|
|
17610
|
+
* If a given component has unresolved async metadata - returns a reference
|
|
17611
|
+
* to a function that applies component metadata after resolving defer-loadable
|
|
17612
|
+
* dependencies. Otherwise - this function returns `null`.
|
|
17613
|
+
*/
|
|
17614
|
+
function getAsyncClassMetadataFn(type) {
|
|
17615
|
+
const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
|
|
17616
|
+
return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
|
|
17617
|
+
}
|
|
17618
|
+
/**
|
|
17619
|
+
* Handles the process of applying metadata info to a component class in case
|
|
17620
|
+
* component template has defer blocks (thus some dependencies became deferrable).
|
|
17621
|
+
*
|
|
17622
|
+
* @param type Component class where metadata should be added
|
|
17623
|
+
* @param dependencyLoaderFn Function that loads dependencies
|
|
17624
|
+
* @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
|
|
17625
|
+
*/
|
|
17626
|
+
function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
|
|
17627
|
+
const componentClass = type; // cast to `any`, so that we can monkey-patch it
|
|
17628
|
+
componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
|
|
17629
|
+
metadataSetterFn(...dependencies);
|
|
17630
|
+
// Metadata is now set, reset field value to indicate that this component
|
|
17631
|
+
// can by used/compiled synchronously.
|
|
17632
|
+
componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
|
|
17633
|
+
return dependencies;
|
|
17634
|
+
});
|
|
17635
|
+
return componentClass[ASYNC_COMPONENT_METADATA_FN];
|
|
17636
|
+
}
|
|
17637
|
+
/**
|
|
17638
|
+
* Adds decorator, constructor, and property metadata to a given type via static metadata fields
|
|
17639
|
+
* on the type.
|
|
17640
|
+
*
|
|
17641
|
+
* These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
|
|
17642
|
+
*
|
|
17643
|
+
* Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
|
|
17644
|
+
* being tree-shaken away during production builds.
|
|
17645
|
+
*/
|
|
17646
|
+
function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
|
|
17647
|
+
return noSideEffects(() => {
|
|
17648
|
+
const clazz = type;
|
|
17649
|
+
if (decorators !== null) {
|
|
17650
|
+
if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
|
|
17651
|
+
clazz.decorators.push(...decorators);
|
|
17652
|
+
}
|
|
17653
|
+
else {
|
|
17654
|
+
clazz.decorators = decorators;
|
|
17655
|
+
}
|
|
17656
|
+
}
|
|
17657
|
+
if (ctorParameters !== null) {
|
|
17658
|
+
// Rather than merging, clobber the existing parameters. If other projects exist which
|
|
17659
|
+
// use tsickle-style annotations and reflect over them in the same way, this could
|
|
17660
|
+
// cause issues, but that is vanishingly unlikely.
|
|
17661
|
+
clazz.ctorParameters = ctorParameters;
|
|
17662
|
+
}
|
|
17663
|
+
if (propDecorators !== null) {
|
|
17664
|
+
// The property decorator objects are merged as it is possible different fields have
|
|
17665
|
+
// different decorator types. Decorators on individual fields are not merged, as it's
|
|
17666
|
+
// also incredibly unlikely that a field will be decorated both with an Angular
|
|
17667
|
+
// decorator and a non-Angular decorator that's also been downleveled.
|
|
17668
|
+
if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
|
|
17669
|
+
clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
|
|
17670
|
+
}
|
|
17671
|
+
else {
|
|
17672
|
+
clazz.propDecorators = propDecorators;
|
|
17673
|
+
}
|
|
17674
|
+
}
|
|
17675
|
+
});
|
|
17676
|
+
}
|
|
17677
|
+
|
|
17678
|
+
/**
|
|
17679
|
+
* Represents an instance of an `NgModule` created by an `NgModuleFactory`.
|
|
17680
|
+
* Provides access to the `NgModule` instance and related objects.
|
|
17681
|
+
*
|
|
17682
|
+
* @publicApi
|
|
17683
|
+
*/
|
|
17684
|
+
class NgModuleRef$1 {
|
|
17685
|
+
}
|
|
17686
|
+
/**
|
|
17687
|
+
* @publicApi
|
|
17688
|
+
*
|
|
17689
|
+
* @deprecated
|
|
17690
|
+
* This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
|
|
17691
|
+
* JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
|
|
17692
|
+
* for additional context. Angular provides APIs that accept NgModule classes directly (such as
|
|
17693
|
+
* [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
|
|
17694
|
+
* [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
|
|
17695
|
+
* using factory-based ones.
|
|
17696
|
+
*/
|
|
17697
|
+
class NgModuleFactory$1 {
|
|
17698
|
+
}
|
|
17699
|
+
|
|
17700
|
+
/**
|
|
17701
|
+
* Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
|
|
17702
|
+
*
|
|
17703
|
+
* @param ngModule NgModule class.
|
|
17704
|
+
* @param parentInjector Optional injector instance to use as a parent for the module injector. If
|
|
17705
|
+
* not provided, `NullInjector` will be used instead.
|
|
17706
|
+
* @returns NgModuleRef that represents an NgModule instance.
|
|
17707
|
+
*
|
|
17708
|
+
* @publicApi
|
|
17709
|
+
*/
|
|
17710
|
+
function createNgModule(ngModule, parentInjector) {
|
|
17711
|
+
return new NgModuleRef(ngModule, parentInjector ?? null, []);
|
|
17712
|
+
}
|
|
17713
|
+
/**
|
|
17714
|
+
* The `createNgModule` function alias for backwards-compatibility.
|
|
17715
|
+
* Please avoid using it directly and use `createNgModule` instead.
|
|
17716
|
+
*
|
|
17717
|
+
* @deprecated Use `createNgModule` instead.
|
|
17718
|
+
*/
|
|
17719
|
+
const createNgModuleRef = createNgModule;
|
|
17720
|
+
class NgModuleRef extends NgModuleRef$1 {
|
|
17721
|
+
constructor(ngModuleType, _parent, additionalProviders) {
|
|
17722
|
+
super();
|
|
17723
|
+
this._parent = _parent;
|
|
17724
|
+
// tslint:disable-next-line:require-internal-with-underscore
|
|
17725
|
+
this._bootstrapComponents = [];
|
|
17726
|
+
this.destroyCbs = [];
|
|
17727
|
+
// When bootstrapping a module we have a dependency graph that looks like this:
|
|
17728
|
+
// ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the
|
|
17729
|
+
// module being resolved tries to inject the ComponentFactoryResolver, it'll create a
|
|
17730
|
+
// circular dependency which will result in a runtime error, because the injector doesn't
|
|
17731
|
+
// exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves
|
|
17732
|
+
// and providing it, rather than letting the injector resolve it.
|
|
17733
|
+
this.componentFactoryResolver = new ComponentFactoryResolver(this);
|
|
17734
|
+
const ngModuleDef = getNgModuleDef(ngModuleType);
|
|
17735
|
+
ngDevMode &&
|
|
17736
|
+
assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);
|
|
17737
|
+
this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);
|
|
17738
|
+
this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [
|
|
17739
|
+
{ provide: NgModuleRef$1, useValue: this }, {
|
|
17740
|
+
provide: ComponentFactoryResolver$1,
|
|
17741
|
+
useValue: this.componentFactoryResolver
|
|
17742
|
+
},
|
|
17743
|
+
...additionalProviders
|
|
17744
|
+
], stringify(ngModuleType), new Set(['environment']));
|
|
17745
|
+
// We need to resolve the injector types separately from the injector creation, because
|
|
17746
|
+
// the module might be trying to use this ref in its constructor for DI which will cause a
|
|
17747
|
+
// circular error that will eventually error out, because the injector isn't created yet.
|
|
17748
|
+
this._r3Injector.resolveInjectorInitializers();
|
|
17749
|
+
this.instance = this._r3Injector.get(ngModuleType);
|
|
17750
|
+
}
|
|
17751
|
+
get injector() {
|
|
17752
|
+
return this._r3Injector;
|
|
17753
|
+
}
|
|
17754
|
+
destroy() {
|
|
17755
|
+
ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
|
|
17756
|
+
const injector = this._r3Injector;
|
|
17757
|
+
!injector.destroyed && injector.destroy();
|
|
17758
|
+
this.destroyCbs.forEach(fn => fn());
|
|
17759
|
+
this.destroyCbs = null;
|
|
17760
|
+
}
|
|
17761
|
+
onDestroy(callback) {
|
|
17762
|
+
ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
|
|
17763
|
+
this.destroyCbs.push(callback);
|
|
17764
|
+
}
|
|
17765
|
+
}
|
|
17766
|
+
class NgModuleFactory extends NgModuleFactory$1 {
|
|
17767
|
+
constructor(moduleType) {
|
|
17768
|
+
super();
|
|
17769
|
+
this.moduleType = moduleType;
|
|
17770
|
+
}
|
|
17771
|
+
create(parentInjector) {
|
|
17772
|
+
return new NgModuleRef(this.moduleType, parentInjector, []);
|
|
17773
|
+
}
|
|
17774
|
+
}
|
|
17775
|
+
function createNgModuleRefWithProviders(moduleType, parentInjector, additionalProviders) {
|
|
17776
|
+
return new NgModuleRef(moduleType, parentInjector, additionalProviders);
|
|
17777
|
+
}
|
|
17778
|
+
class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
|
|
17779
|
+
constructor(config) {
|
|
17780
|
+
super();
|
|
17781
|
+
this.componentFactoryResolver = new ComponentFactoryResolver(this);
|
|
17782
|
+
this.instance = null;
|
|
17783
|
+
const injector = new R3Injector([
|
|
17784
|
+
...config.providers,
|
|
17785
|
+
{ provide: NgModuleRef$1, useValue: this },
|
|
17786
|
+
{ provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },
|
|
17787
|
+
], config.parent || getNullInjector(), config.debugName, new Set(['environment']));
|
|
17788
|
+
this.injector = injector;
|
|
17789
|
+
if (config.runEnvironmentInitializers) {
|
|
17790
|
+
injector.resolveInjectorInitializers();
|
|
17791
|
+
}
|
|
17792
|
+
}
|
|
17793
|
+
destroy() {
|
|
17794
|
+
this.injector.destroy();
|
|
17795
|
+
}
|
|
17796
|
+
onDestroy(callback) {
|
|
17797
|
+
this.injector.onDestroy(callback);
|
|
17798
|
+
}
|
|
17799
|
+
}
|
|
17800
|
+
/**
|
|
17801
|
+
* Create a new environment injector.
|
|
17802
|
+
*
|
|
17803
|
+
* Learn more about environment injectors in
|
|
17804
|
+
* [this guide](guide/standalone-components#environment-injectors).
|
|
17805
|
+
*
|
|
17806
|
+
* @param providers An array of providers.
|
|
17807
|
+
* @param parent A parent environment injector.
|
|
17808
|
+
* @param debugName An optional name for this injector instance, which will be used in error
|
|
17809
|
+
* messages.
|
|
17810
|
+
*
|
|
17811
|
+
* @publicApi
|
|
17812
|
+
*/
|
|
17813
|
+
function createEnvironmentInjector(providers, parent, debugName = null) {
|
|
17814
|
+
const adapter = new EnvironmentNgModuleRefAdapter({ providers, parent, debugName, runEnvironmentInitializers: true });
|
|
17815
|
+
return adapter.injector;
|
|
17816
|
+
}
|
|
17817
|
+
|
|
17818
|
+
/*
|
|
17819
|
+
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
17820
|
+
*
|
|
17821
|
+
* When the Angular compiler processes a compilation unit, it normally writes imports to
|
|
17822
|
+
* @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the
|
|
17823
|
+
* compiler writes imports to this file.
|
|
17824
|
+
*
|
|
17825
|
+
* Only a subset of such imports are supported - core is not allowed to declare components or pipes.
|
|
17826
|
+
* A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used
|
|
17827
|
+
* when compiling @angular/core and is responsible for translating an external name (prefixed with
|
|
17828
|
+
* ɵ) to the internal symbol name as exported below.
|
|
17829
|
+
*
|
|
17830
|
+
* The below symbols are used for @Injectable and @NgModule compilation.
|
|
17831
|
+
*/
|
|
17832
|
+
/**
|
|
17833
|
+
* The existence of this constant (in this particular file) informs the Angular compiler that the
|
|
17834
|
+
* current program is actually @angular/core, which needs to be compiled specially.
|
|
17835
|
+
*/
|
|
17836
|
+
const ITS_JUST_ANGULAR = true;
|
|
17837
|
+
|
|
17838
|
+
/**
|
|
17839
|
+
* *Internal* service that keeps track of pending tasks happening in the system.
|
|
17840
|
+
*
|
|
17841
|
+
* This information is needed to make sure that the serialization on the server
|
|
17842
|
+
* is delayed until all tasks in the queue (such as an initial navigation or a
|
|
17843
|
+
* pending HTTP request) are completed.
|
|
17844
|
+
*
|
|
17845
|
+
* Pending tasks continue to contribute to the stableness of `ApplicationRef`
|
|
17846
|
+
* throughout the lifetime of the application.
|
|
17847
|
+
*/
|
|
17848
|
+
class PendingTasks {
|
|
17849
|
+
constructor() {
|
|
17850
|
+
this.taskId = 0;
|
|
17851
|
+
this.pendingTasks = new Set();
|
|
17852
|
+
this.hasPendingTasks = new BehaviorSubject(false);
|
|
17853
|
+
}
|
|
17854
|
+
get _hasPendingTasks() {
|
|
17855
|
+
return this.hasPendingTasks.value;
|
|
17856
|
+
}
|
|
17857
|
+
add() {
|
|
17858
|
+
if (!this._hasPendingTasks) {
|
|
17859
|
+
this.hasPendingTasks.next(true);
|
|
17860
|
+
}
|
|
17861
|
+
const taskId = this.taskId++;
|
|
17862
|
+
this.pendingTasks.add(taskId);
|
|
17863
|
+
return taskId;
|
|
17864
|
+
}
|
|
17865
|
+
remove(taskId) {
|
|
17866
|
+
this.pendingTasks.delete(taskId);
|
|
17867
|
+
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
17868
|
+
this.hasPendingTasks.next(false);
|
|
17869
|
+
}
|
|
17870
|
+
}
|
|
17871
|
+
ngOnDestroy() {
|
|
17872
|
+
this.pendingTasks.clear();
|
|
17873
|
+
if (this._hasPendingTasks) {
|
|
17874
|
+
this.hasPendingTasks.next(false);
|
|
17875
|
+
}
|
|
17876
|
+
}
|
|
17877
|
+
static { this.ɵfac = function PendingTasks_Factory(t) { return new (t || PendingTasks)(); }; }
|
|
17878
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PendingTasks, factory: PendingTasks.ɵfac, providedIn: 'root' }); }
|
|
17879
|
+
}
|
|
17880
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PendingTasks, [{
|
|
17881
|
+
type: Injectable,
|
|
17882
|
+
args: [{ providedIn: 'root' }]
|
|
17883
|
+
}], null, null); })();
|
|
17884
|
+
|
|
17544
17885
|
// TODO(misko): consider inlining
|
|
17545
17886
|
/** Updates binding and returns the value. */
|
|
17546
17887
|
function updateBinding(lView, bindingIndex, value) {
|
|
@@ -18487,9 +18828,11 @@ class TimerScheduler {
|
|
|
18487
18828
|
|
|
18488
18829
|
/**
|
|
18489
18830
|
* **INTERNAL**, avoid referencing it in application code.
|
|
18490
|
-
*
|
|
18831
|
+
* *
|
|
18491
18832
|
* Injector token that allows to provide `DeferBlockDependencyInterceptor` class
|
|
18492
18833
|
* implementation.
|
|
18834
|
+
*
|
|
18835
|
+
* This token is only injected in devMode
|
|
18493
18836
|
*/
|
|
18494
18837
|
const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR = new InjectionToken('DEFER_BLOCK_DEPENDENCY_INTERCEPTOR');
|
|
18495
18838
|
/**
|
|
@@ -18874,14 +19217,14 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
|
|
|
18874
19217
|
lDetails[DEFER_BLOCK_STATE] = newState;
|
|
18875
19218
|
const hostTView = hostLView[TVIEW];
|
|
18876
19219
|
const adjustedIndex = stateTmplIndex + HEADER_OFFSET;
|
|
18877
|
-
const
|
|
19220
|
+
const activeBlockTNode = getTNode(hostTView, adjustedIndex);
|
|
18878
19221
|
// There is only 1 view that can be present in an LContainer that
|
|
18879
19222
|
// represents a defer block, so always refer to the first one.
|
|
18880
19223
|
const viewIndex = 0;
|
|
18881
19224
|
removeLViewFromLContainer(lContainer, viewIndex);
|
|
18882
|
-
const dehydratedView = findMatchingDehydratedView(lContainer,
|
|
18883
|
-
const embeddedLView = createAndRenderEmbeddedLView(hostLView,
|
|
18884
|
-
addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(
|
|
19225
|
+
const dehydratedView = findMatchingDehydratedView(lContainer, activeBlockTNode.tView.ssrId);
|
|
19226
|
+
const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, { dehydratedView });
|
|
19227
|
+
addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
|
|
18885
19228
|
markViewDirty(embeddedLView);
|
|
18886
19229
|
}
|
|
18887
19230
|
}
|
|
@@ -18996,6 +19339,9 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
18996
19339
|
dependenciesFn = deferDependencyInterceptor.intercept(dependenciesFn);
|
|
18997
19340
|
}
|
|
18998
19341
|
}
|
|
19342
|
+
// Indicate that an application is not stable and has a pending task.
|
|
19343
|
+
const pendingTasks = injector.get(PendingTasks);
|
|
19344
|
+
const taskId = pendingTasks.add();
|
|
18999
19345
|
// The `dependenciesFn` might be `null` when all dependencies within
|
|
19000
19346
|
// a given defer block were eagerly referenced elsewhere in a file,
|
|
19001
19347
|
// thus no dynamic `import()`s were produced.
|
|
@@ -19003,6 +19349,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
19003
19349
|
tDetails.loadingPromise = Promise.resolve().then(() => {
|
|
19004
19350
|
tDetails.loadingPromise = null;
|
|
19005
19351
|
tDetails.loadingState = DeferDependenciesLoadingState.COMPLETE;
|
|
19352
|
+
pendingTasks.remove(taskId);
|
|
19006
19353
|
});
|
|
19007
19354
|
return;
|
|
19008
19355
|
}
|
|
@@ -19030,8 +19377,10 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
19030
19377
|
break;
|
|
19031
19378
|
}
|
|
19032
19379
|
}
|
|
19033
|
-
// Loading is completed, we no longer need
|
|
19380
|
+
// Loading is completed, we no longer need the loading Promise
|
|
19381
|
+
// and a pending task should also be removed.
|
|
19034
19382
|
tDetails.loadingPromise = null;
|
|
19383
|
+
pendingTasks.remove(taskId);
|
|
19035
19384
|
if (failed) {
|
|
19036
19385
|
tDetails.loadingState = DeferDependenciesLoadingState.FAILED;
|
|
19037
19386
|
if (tDetails.errorTmplIndex === null) {
|
|
@@ -22251,7 +22600,7 @@ function locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, inde
|
|
|
22251
22600
|
// Since this isn't hydratable, we need to empty the node
|
|
22252
22601
|
// so there's no duplicate content after render
|
|
22253
22602
|
clearElementContents(native);
|
|
22254
|
-
ngDevMode &&
|
|
22603
|
+
ngDevMode && markRNodeAsSkippedByHydration(native);
|
|
22255
22604
|
}
|
|
22256
22605
|
else if (ngDevMode) {
|
|
22257
22606
|
// If this is not a component host, throw an error.
|
|
@@ -22694,7 +23043,7 @@ let LOCALE_ID$1 = DEFAULT_LOCALE_ID;
|
|
|
22694
23043
|
* @param localeId
|
|
22695
23044
|
*/
|
|
22696
23045
|
function setLocaleId(localeId) {
|
|
22697
|
-
assertDefined(localeId, `Expected localeId to be defined`);
|
|
23046
|
+
ngDevMode && assertDefined(localeId, `Expected localeId to be defined`);
|
|
22698
23047
|
if (typeof localeId === 'string') {
|
|
22699
23048
|
LOCALE_ID$1 = localeId.toLowerCase().replace(/_/g, '-');
|
|
22700
23049
|
}
|
|
@@ -27344,146 +27693,6 @@ function ɵɵProvidersFeature(providers, viewProviders = []) {
|
|
|
27344
27693
|
};
|
|
27345
27694
|
}
|
|
27346
27695
|
|
|
27347
|
-
/**
|
|
27348
|
-
* Represents an instance of an `NgModule` created by an `NgModuleFactory`.
|
|
27349
|
-
* Provides access to the `NgModule` instance and related objects.
|
|
27350
|
-
*
|
|
27351
|
-
* @publicApi
|
|
27352
|
-
*/
|
|
27353
|
-
class NgModuleRef$1 {
|
|
27354
|
-
}
|
|
27355
|
-
/**
|
|
27356
|
-
* @publicApi
|
|
27357
|
-
*
|
|
27358
|
-
* @deprecated
|
|
27359
|
-
* This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
|
|
27360
|
-
* JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
|
|
27361
|
-
* for additional context. Angular provides APIs that accept NgModule classes directly (such as
|
|
27362
|
-
* [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
|
|
27363
|
-
* [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
|
|
27364
|
-
* using factory-based ones.
|
|
27365
|
-
*/
|
|
27366
|
-
class NgModuleFactory$1 {
|
|
27367
|
-
}
|
|
27368
|
-
|
|
27369
|
-
/**
|
|
27370
|
-
* Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
|
|
27371
|
-
*
|
|
27372
|
-
* @param ngModule NgModule class.
|
|
27373
|
-
* @param parentInjector Optional injector instance to use as a parent for the module injector. If
|
|
27374
|
-
* not provided, `NullInjector` will be used instead.
|
|
27375
|
-
* @returns NgModuleRef that represents an NgModule instance.
|
|
27376
|
-
*
|
|
27377
|
-
* @publicApi
|
|
27378
|
-
*/
|
|
27379
|
-
function createNgModule(ngModule, parentInjector) {
|
|
27380
|
-
return new NgModuleRef(ngModule, parentInjector ?? null, []);
|
|
27381
|
-
}
|
|
27382
|
-
/**
|
|
27383
|
-
* The `createNgModule` function alias for backwards-compatibility.
|
|
27384
|
-
* Please avoid using it directly and use `createNgModule` instead.
|
|
27385
|
-
*
|
|
27386
|
-
* @deprecated Use `createNgModule` instead.
|
|
27387
|
-
*/
|
|
27388
|
-
const createNgModuleRef = createNgModule;
|
|
27389
|
-
class NgModuleRef extends NgModuleRef$1 {
|
|
27390
|
-
constructor(ngModuleType, _parent, additionalProviders) {
|
|
27391
|
-
super();
|
|
27392
|
-
this._parent = _parent;
|
|
27393
|
-
// tslint:disable-next-line:require-internal-with-underscore
|
|
27394
|
-
this._bootstrapComponents = [];
|
|
27395
|
-
this.destroyCbs = [];
|
|
27396
|
-
// When bootstrapping a module we have a dependency graph that looks like this:
|
|
27397
|
-
// ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the
|
|
27398
|
-
// module being resolved tries to inject the ComponentFactoryResolver, it'll create a
|
|
27399
|
-
// circular dependency which will result in a runtime error, because the injector doesn't
|
|
27400
|
-
// exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves
|
|
27401
|
-
// and providing it, rather than letting the injector resolve it.
|
|
27402
|
-
this.componentFactoryResolver = new ComponentFactoryResolver(this);
|
|
27403
|
-
const ngModuleDef = getNgModuleDef(ngModuleType);
|
|
27404
|
-
ngDevMode &&
|
|
27405
|
-
assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);
|
|
27406
|
-
this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);
|
|
27407
|
-
this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [
|
|
27408
|
-
{ provide: NgModuleRef$1, useValue: this }, {
|
|
27409
|
-
provide: ComponentFactoryResolver$1,
|
|
27410
|
-
useValue: this.componentFactoryResolver
|
|
27411
|
-
},
|
|
27412
|
-
...additionalProviders
|
|
27413
|
-
], stringify(ngModuleType), new Set(['environment']));
|
|
27414
|
-
// We need to resolve the injector types separately from the injector creation, because
|
|
27415
|
-
// the module might be trying to use this ref in its constructor for DI which will cause a
|
|
27416
|
-
// circular error that will eventually error out, because the injector isn't created yet.
|
|
27417
|
-
this._r3Injector.resolveInjectorInitializers();
|
|
27418
|
-
this.instance = this._r3Injector.get(ngModuleType);
|
|
27419
|
-
}
|
|
27420
|
-
get injector() {
|
|
27421
|
-
return this._r3Injector;
|
|
27422
|
-
}
|
|
27423
|
-
destroy() {
|
|
27424
|
-
ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
|
|
27425
|
-
const injector = this._r3Injector;
|
|
27426
|
-
!injector.destroyed && injector.destroy();
|
|
27427
|
-
this.destroyCbs.forEach(fn => fn());
|
|
27428
|
-
this.destroyCbs = null;
|
|
27429
|
-
}
|
|
27430
|
-
onDestroy(callback) {
|
|
27431
|
-
ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
|
|
27432
|
-
this.destroyCbs.push(callback);
|
|
27433
|
-
}
|
|
27434
|
-
}
|
|
27435
|
-
class NgModuleFactory extends NgModuleFactory$1 {
|
|
27436
|
-
constructor(moduleType) {
|
|
27437
|
-
super();
|
|
27438
|
-
this.moduleType = moduleType;
|
|
27439
|
-
}
|
|
27440
|
-
create(parentInjector) {
|
|
27441
|
-
return new NgModuleRef(this.moduleType, parentInjector, []);
|
|
27442
|
-
}
|
|
27443
|
-
}
|
|
27444
|
-
function createNgModuleRefWithProviders(moduleType, parentInjector, additionalProviders) {
|
|
27445
|
-
return new NgModuleRef(moduleType, parentInjector, additionalProviders);
|
|
27446
|
-
}
|
|
27447
|
-
class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
|
|
27448
|
-
constructor(config) {
|
|
27449
|
-
super();
|
|
27450
|
-
this.componentFactoryResolver = new ComponentFactoryResolver(this);
|
|
27451
|
-
this.instance = null;
|
|
27452
|
-
const injector = new R3Injector([
|
|
27453
|
-
...config.providers,
|
|
27454
|
-
{ provide: NgModuleRef$1, useValue: this },
|
|
27455
|
-
{ provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },
|
|
27456
|
-
], config.parent || getNullInjector(), config.debugName, new Set(['environment']));
|
|
27457
|
-
this.injector = injector;
|
|
27458
|
-
if (config.runEnvironmentInitializers) {
|
|
27459
|
-
injector.resolveInjectorInitializers();
|
|
27460
|
-
}
|
|
27461
|
-
}
|
|
27462
|
-
destroy() {
|
|
27463
|
-
this.injector.destroy();
|
|
27464
|
-
}
|
|
27465
|
-
onDestroy(callback) {
|
|
27466
|
-
this.injector.onDestroy(callback);
|
|
27467
|
-
}
|
|
27468
|
-
}
|
|
27469
|
-
/**
|
|
27470
|
-
* Create a new environment injector.
|
|
27471
|
-
*
|
|
27472
|
-
* Learn more about environment injectors in
|
|
27473
|
-
* [this guide](guide/standalone-components#environment-injectors).
|
|
27474
|
-
*
|
|
27475
|
-
* @param providers An array of providers.
|
|
27476
|
-
* @param parent A parent environment injector.
|
|
27477
|
-
* @param debugName An optional name for this injector instance, which will be used in error
|
|
27478
|
-
* messages.
|
|
27479
|
-
*
|
|
27480
|
-
* @publicApi
|
|
27481
|
-
*/
|
|
27482
|
-
function createEnvironmentInjector(providers, parent, debugName = null) {
|
|
27483
|
-
const adapter = new EnvironmentNgModuleRefAdapter({ providers, parent, debugName, runEnvironmentInitializers: true });
|
|
27484
|
-
return adapter.injector;
|
|
27485
|
-
}
|
|
27486
|
-
|
|
27487
27696
|
/**
|
|
27488
27697
|
* A service used by the framework to create instances of standalone injectors. Those injectors are
|
|
27489
27698
|
* created on demand in case of dynamic component instantiation and contain ambient providers
|
|
@@ -28006,81 +28215,6 @@ function extractInputDebugMetadata(inputs) {
|
|
|
28006
28215
|
return res;
|
|
28007
28216
|
}
|
|
28008
28217
|
|
|
28009
|
-
/**
|
|
28010
|
-
* The name of a field that Angular monkey-patches onto a component
|
|
28011
|
-
* class to store a function that loads defer-loadable dependencies
|
|
28012
|
-
* and applies metadata to a class.
|
|
28013
|
-
*/
|
|
28014
|
-
const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
|
|
28015
|
-
/**
|
|
28016
|
-
* If a given component has unresolved async metadata - returns a reference
|
|
28017
|
-
* to a function that applies component metadata after resolving defer-loadable
|
|
28018
|
-
* dependencies. Otherwise - this function returns `null`.
|
|
28019
|
-
*/
|
|
28020
|
-
function getAsyncClassMetadataFn(type) {
|
|
28021
|
-
const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
|
|
28022
|
-
return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
|
|
28023
|
-
}
|
|
28024
|
-
/**
|
|
28025
|
-
* Handles the process of applying metadata info to a component class in case
|
|
28026
|
-
* component template has defer blocks (thus some dependencies became deferrable).
|
|
28027
|
-
*
|
|
28028
|
-
* @param type Component class where metadata should be added
|
|
28029
|
-
* @param dependencyLoaderFn Function that loads dependencies
|
|
28030
|
-
* @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
|
|
28031
|
-
*/
|
|
28032
|
-
function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
|
|
28033
|
-
const componentClass = type; // cast to `any`, so that we can monkey-patch it
|
|
28034
|
-
componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
|
|
28035
|
-
metadataSetterFn(...dependencies);
|
|
28036
|
-
// Metadata is now set, reset field value to indicate that this component
|
|
28037
|
-
// can by used/compiled synchronously.
|
|
28038
|
-
componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
|
|
28039
|
-
return dependencies;
|
|
28040
|
-
});
|
|
28041
|
-
return componentClass[ASYNC_COMPONENT_METADATA_FN];
|
|
28042
|
-
}
|
|
28043
|
-
/**
|
|
28044
|
-
* Adds decorator, constructor, and property metadata to a given type via static metadata fields
|
|
28045
|
-
* on the type.
|
|
28046
|
-
*
|
|
28047
|
-
* These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
|
|
28048
|
-
*
|
|
28049
|
-
* Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
|
|
28050
|
-
* being tree-shaken away during production builds.
|
|
28051
|
-
*/
|
|
28052
|
-
function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
|
|
28053
|
-
return noSideEffects(() => {
|
|
28054
|
-
const clazz = type;
|
|
28055
|
-
if (decorators !== null) {
|
|
28056
|
-
if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
|
|
28057
|
-
clazz.decorators.push(...decorators);
|
|
28058
|
-
}
|
|
28059
|
-
else {
|
|
28060
|
-
clazz.decorators = decorators;
|
|
28061
|
-
}
|
|
28062
|
-
}
|
|
28063
|
-
if (ctorParameters !== null) {
|
|
28064
|
-
// Rather than merging, clobber the existing parameters. If other projects exist which
|
|
28065
|
-
// use tsickle-style annotations and reflect over them in the same way, this could
|
|
28066
|
-
// cause issues, but that is vanishingly unlikely.
|
|
28067
|
-
clazz.ctorParameters = ctorParameters;
|
|
28068
|
-
}
|
|
28069
|
-
if (propDecorators !== null) {
|
|
28070
|
-
// The property decorator objects are merged as it is possible different fields have
|
|
28071
|
-
// different decorator types. Decorators on individual fields are not merged, as it's
|
|
28072
|
-
// also incredibly unlikely that a field will be decorated both with an Angular
|
|
28073
|
-
// decorator and a non-Angular decorator that's also been downleveled.
|
|
28074
|
-
if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
|
|
28075
|
-
clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
|
|
28076
|
-
}
|
|
28077
|
-
else {
|
|
28078
|
-
clazz.propDecorators = propDecorators;
|
|
28079
|
-
}
|
|
28080
|
-
}
|
|
28081
|
-
});
|
|
28082
|
-
}
|
|
28083
|
-
|
|
28084
28218
|
/**
|
|
28085
28219
|
* Bindings for pure functions are stored after regular bindings.
|
|
28086
28220
|
*
|
|
@@ -30043,27 +30177,7 @@ class Version {
|
|
|
30043
30177
|
/**
|
|
30044
30178
|
* @publicApi
|
|
30045
30179
|
*/
|
|
30046
|
-
const VERSION = new Version('17.1.
|
|
30047
|
-
|
|
30048
|
-
/*
|
|
30049
|
-
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
30050
|
-
*
|
|
30051
|
-
* When the Angular compiler processes a compilation unit, it normally writes imports to
|
|
30052
|
-
* @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the
|
|
30053
|
-
* compiler writes imports to this file.
|
|
30054
|
-
*
|
|
30055
|
-
* Only a subset of such imports are supported - core is not allowed to declare components or pipes.
|
|
30056
|
-
* A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used
|
|
30057
|
-
* when compiling @angular/core and is responsible for translating an external name (prefixed with
|
|
30058
|
-
* ɵ) to the internal symbol name as exported below.
|
|
30059
|
-
*
|
|
30060
|
-
* The below symbols are used for @Injectable and @NgModule compilation.
|
|
30061
|
-
*/
|
|
30062
|
-
/**
|
|
30063
|
-
* The existence of this constant (in this particular file) informs the Angular compiler that the
|
|
30064
|
-
* current program is actually @angular/core, which needs to be compiled specially.
|
|
30065
|
-
*/
|
|
30066
|
-
const ITS_JUST_ANGULAR = true;
|
|
30180
|
+
const VERSION = new Version('17.1.3');
|
|
30067
30181
|
|
|
30068
30182
|
class Console {
|
|
30069
30183
|
log(message) {
|
|
@@ -30175,7 +30289,7 @@ class Compiler {
|
|
|
30175
30289
|
*
|
|
30176
30290
|
* @publicApi
|
|
30177
30291
|
*/
|
|
30178
|
-
const COMPILER_OPTIONS = new InjectionToken('compilerOptions');
|
|
30292
|
+
const COMPILER_OPTIONS = new InjectionToken(ngDevMode ? 'compilerOptions' : '');
|
|
30179
30293
|
/**
|
|
30180
30294
|
* A factory for creating a Compiler
|
|
30181
30295
|
*
|
|
@@ -30189,53 +30303,6 @@ const COMPILER_OPTIONS = new InjectionToken('compilerOptions');
|
|
|
30189
30303
|
class CompilerFactory {
|
|
30190
30304
|
}
|
|
30191
30305
|
|
|
30192
|
-
/**
|
|
30193
|
-
* *Internal* service that keeps track of pending tasks happening in the system.
|
|
30194
|
-
*
|
|
30195
|
-
* This information is needed to make sure that the serialization on the server
|
|
30196
|
-
* is delayed until all tasks in the queue (such as an initial navigation or a
|
|
30197
|
-
* pending HTTP request) are completed.
|
|
30198
|
-
*
|
|
30199
|
-
* Pending tasks continue to contribute to the stableness of `ApplicationRef`
|
|
30200
|
-
* throughout the lifetime of the application.
|
|
30201
|
-
*/
|
|
30202
|
-
class PendingTasks {
|
|
30203
|
-
constructor() {
|
|
30204
|
-
this.taskId = 0;
|
|
30205
|
-
this.pendingTasks = new Set();
|
|
30206
|
-
this.hasPendingTasks = new BehaviorSubject(false);
|
|
30207
|
-
}
|
|
30208
|
-
get _hasPendingTasks() {
|
|
30209
|
-
return this.hasPendingTasks.value;
|
|
30210
|
-
}
|
|
30211
|
-
add() {
|
|
30212
|
-
if (!this._hasPendingTasks) {
|
|
30213
|
-
this.hasPendingTasks.next(true);
|
|
30214
|
-
}
|
|
30215
|
-
const taskId = this.taskId++;
|
|
30216
|
-
this.pendingTasks.add(taskId);
|
|
30217
|
-
return taskId;
|
|
30218
|
-
}
|
|
30219
|
-
remove(taskId) {
|
|
30220
|
-
this.pendingTasks.delete(taskId);
|
|
30221
|
-
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
30222
|
-
this.hasPendingTasks.next(false);
|
|
30223
|
-
}
|
|
30224
|
-
}
|
|
30225
|
-
ngOnDestroy() {
|
|
30226
|
-
this.pendingTasks.clear();
|
|
30227
|
-
if (this._hasPendingTasks) {
|
|
30228
|
-
this.hasPendingTasks.next(false);
|
|
30229
|
-
}
|
|
30230
|
-
}
|
|
30231
|
-
static { this.ɵfac = function PendingTasks_Factory(t) { return new (t || PendingTasks)(); }; }
|
|
30232
|
-
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PendingTasks, factory: PendingTasks.ɵfac, providedIn: 'root' }); }
|
|
30233
|
-
}
|
|
30234
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PendingTasks, [{
|
|
30235
|
-
type: Injectable,
|
|
30236
|
-
args: [{ providedIn: 'root' }]
|
|
30237
|
-
}], null, null); })();
|
|
30238
|
-
|
|
30239
30306
|
/**
|
|
30240
30307
|
* These are the data structures that our framework injector profiler will fill with data in order
|
|
30241
30308
|
* to support DI debugging APIs.
|
|
@@ -31500,7 +31567,7 @@ let _testabilityGetter;
|
|
|
31500
31567
|
*
|
|
31501
31568
|
* @publicApi
|
|
31502
31569
|
*/
|
|
31503
|
-
const APP_INITIALIZER = new InjectionToken('Application Initializer');
|
|
31570
|
+
const APP_INITIALIZER = new InjectionToken(ngDevMode ? 'Application Initializer' : '');
|
|
31504
31571
|
/**
|
|
31505
31572
|
* A class that reflects the state of running {@link APP_INITIALIZER} functions.
|
|
31506
31573
|
*
|
|
@@ -31575,7 +31642,7 @@ class ApplicationInitStatus {
|
|
|
31575
31642
|
*
|
|
31576
31643
|
* @publicApi
|
|
31577
31644
|
*/
|
|
31578
|
-
const APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');
|
|
31645
|
+
const APP_BOOTSTRAP_LISTENER = new InjectionToken(ngDevMode ? 'appBootstrapListener' : '');
|
|
31579
31646
|
function compileNgModuleFactory(injector, options, moduleType) {
|
|
31580
31647
|
ngDevMode && assertNgModuleType(moduleType);
|
|
31581
31648
|
const moduleFactory = new NgModuleFactory(moduleType);
|
|
@@ -31891,10 +31958,8 @@ class ApplicationRef {
|
|
|
31891
31958
|
}
|
|
31892
31959
|
try {
|
|
31893
31960
|
this._runningTick = true;
|
|
31894
|
-
|
|
31895
|
-
|
|
31896
|
-
}
|
|
31897
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
31961
|
+
this.detectChangesInAttachedViews();
|
|
31962
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
31898
31963
|
for (let view of this._views) {
|
|
31899
31964
|
view.checkNoChanges();
|
|
31900
31965
|
}
|
|
@@ -31905,21 +31970,52 @@ class ApplicationRef {
|
|
|
31905
31970
|
this.internalErrorHandler(e);
|
|
31906
31971
|
}
|
|
31907
31972
|
finally {
|
|
31908
|
-
// Catch any `ExpressionChanged...` errors and report them to error handler like above
|
|
31909
|
-
try {
|
|
31910
|
-
const callbacksExecuted = this.afterRenderEffectManager.execute();
|
|
31911
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && callbacksExecuted) {
|
|
31912
|
-
for (let view of this._views) {
|
|
31913
|
-
view.checkNoChanges();
|
|
31914
|
-
}
|
|
31915
|
-
}
|
|
31916
|
-
}
|
|
31917
|
-
catch (e) {
|
|
31918
|
-
this.internalErrorHandler(e);
|
|
31919
|
-
}
|
|
31920
31973
|
this._runningTick = false;
|
|
31921
31974
|
}
|
|
31922
31975
|
}
|
|
31976
|
+
detectChangesInAttachedViews() {
|
|
31977
|
+
let runs = 0;
|
|
31978
|
+
do {
|
|
31979
|
+
if (runs === MAXIMUM_REFRESH_RERUNS) {
|
|
31980
|
+
throw new RuntimeError(103 /* RuntimeErrorCode.INFINITE_CHANGE_DETECTION */, ngDevMode &&
|
|
31981
|
+
'Changes in afterRender or afterNextRender hooks caused infinite change detection while refresh views.');
|
|
31982
|
+
}
|
|
31983
|
+
const isFirstPass = runs === 0;
|
|
31984
|
+
for (let { _lView, notifyErrorHandler } of this._views) {
|
|
31985
|
+
// When re-checking, only check views which actually need it.
|
|
31986
|
+
if (!isFirstPass && !shouldRecheckView(_lView)) {
|
|
31987
|
+
continue;
|
|
31988
|
+
}
|
|
31989
|
+
this.detectChangesInView(_lView, notifyErrorHandler, isFirstPass);
|
|
31990
|
+
}
|
|
31991
|
+
this.afterRenderEffectManager.execute();
|
|
31992
|
+
runs++;
|
|
31993
|
+
} while (this._views.some(({ _lView }) => shouldRecheckView(_lView)));
|
|
31994
|
+
}
|
|
31995
|
+
detectChangesInView(lView, notifyErrorHandler, isFirstPass) {
|
|
31996
|
+
let mode;
|
|
31997
|
+
if (isFirstPass) {
|
|
31998
|
+
// The first pass is always in Global mode, which includes `CheckAlways` views.
|
|
31999
|
+
mode = 0 /* ChangeDetectionMode.Global */;
|
|
32000
|
+
// Add `RefreshView` flag to ensure this view is refreshed if not already dirty.
|
|
32001
|
+
// `RefreshView` flag is used intentionally over `Dirty` because it gets cleared before
|
|
32002
|
+
// executing any of the actual refresh code while the `Dirty` flag doesn't get cleared
|
|
32003
|
+
// until the end of the refresh. Using `RefreshView` prevents creating a potential
|
|
32004
|
+
// difference in the state of the LViewFlags during template execution.
|
|
32005
|
+
lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;
|
|
32006
|
+
}
|
|
32007
|
+
else if (lView[FLAGS] & 64 /* LViewFlags.Dirty */) {
|
|
32008
|
+
// The root view has been explicitly marked for check, so check it in Global mode.
|
|
32009
|
+
mode = 0 /* ChangeDetectionMode.Global */;
|
|
32010
|
+
}
|
|
32011
|
+
else {
|
|
32012
|
+
// The view has not been marked for check, but contains a view marked for refresh
|
|
32013
|
+
// (likely via a signal). Start this change detection in Targeted mode to skip the root
|
|
32014
|
+
// view and check just the view(s) that need refreshed.
|
|
32015
|
+
mode = 1 /* ChangeDetectionMode.Targeted */;
|
|
32016
|
+
}
|
|
32017
|
+
detectChangesInternal(lView, notifyErrorHandler, mode);
|
|
32018
|
+
}
|
|
31923
32019
|
/**
|
|
31924
32020
|
* Attaches a view so that it will be dirty checked.
|
|
31925
32021
|
* The view will be automatically detached when it is destroyed.
|
|
@@ -32050,6 +32146,12 @@ function whenStable(applicationRef) {
|
|
|
32050
32146
|
applicationRef.onDestroy(() => whenStableStore?.delete(applicationRef));
|
|
32051
32147
|
return whenStablePromise;
|
|
32052
32148
|
}
|
|
32149
|
+
function shouldRecheckView(view) {
|
|
32150
|
+
return requiresRefreshOrTraversal(view);
|
|
32151
|
+
// TODO(atscott): We need to support rechecking views marked dirty again in afterRender hooks
|
|
32152
|
+
// in order to support the transition to zoneless. b/308152025
|
|
32153
|
+
/* || !!(view[FLAGS] & LViewFlags.Dirty); */
|
|
32154
|
+
}
|
|
32053
32155
|
|
|
32054
32156
|
class NgZoneChangeDetectionScheduler {
|
|
32055
32157
|
constructor() {
|
|
@@ -32249,7 +32351,7 @@ function getGlobalLocale() {
|
|
|
32249
32351
|
*
|
|
32250
32352
|
* @publicApi
|
|
32251
32353
|
*/
|
|
32252
|
-
const LOCALE_ID = new InjectionToken('LocaleId', {
|
|
32354
|
+
const LOCALE_ID = new InjectionToken(ngDevMode ? 'LocaleId' : '', {
|
|
32253
32355
|
providedIn: 'root',
|
|
32254
32356
|
factory: () => inject(LOCALE_ID, InjectFlags.Optional | InjectFlags.SkipSelf) || getGlobalLocale(),
|
|
32255
32357
|
});
|
|
@@ -32291,7 +32393,7 @@ const LOCALE_ID = new InjectionToken('LocaleId', {
|
|
|
32291
32393
|
*
|
|
32292
32394
|
* @publicApi
|
|
32293
32395
|
*/
|
|
32294
|
-
const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
|
|
32396
|
+
const DEFAULT_CURRENCY_CODE = new InjectionToken(ngDevMode ? 'DefaultCurrencyCode' : '', {
|
|
32295
32397
|
providedIn: 'root',
|
|
32296
32398
|
factory: () => USD_CURRENCY_CODE,
|
|
32297
32399
|
});
|
|
@@ -32319,7 +32421,7 @@ const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
|
|
|
32319
32421
|
*
|
|
32320
32422
|
* @publicApi
|
|
32321
32423
|
*/
|
|
32322
|
-
const TRANSLATIONS = new InjectionToken('Translations');
|
|
32424
|
+
const TRANSLATIONS = new InjectionToken(ngDevMode ? 'Translations' : '');
|
|
32323
32425
|
/**
|
|
32324
32426
|
* Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
|
|
32325
32427
|
* `xlf` or `xlf2`.
|
|
@@ -32341,7 +32443,7 @@ const TRANSLATIONS = new InjectionToken('Translations');
|
|
|
32341
32443
|
*
|
|
32342
32444
|
* @publicApi
|
|
32343
32445
|
*/
|
|
32344
|
-
const TRANSLATIONS_FORMAT = new InjectionToken('TranslationsFormat');
|
|
32446
|
+
const TRANSLATIONS_FORMAT = new InjectionToken(ngDevMode ? 'TranslationsFormat' : '');
|
|
32345
32447
|
/**
|
|
32346
32448
|
* Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
|
|
32347
32449
|
* that the compiler should use in case of missing translations:
|
|
@@ -32378,7 +32480,7 @@ var MissingTranslationStrategy;
|
|
|
32378
32480
|
* `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
|
|
32379
32481
|
* entire class tree-shakeable.
|
|
32380
32482
|
*/
|
|
32381
|
-
const PLATFORM_DESTROY_LISTENERS = new InjectionToken('PlatformDestroyListeners');
|
|
32483
|
+
const PLATFORM_DESTROY_LISTENERS = new InjectionToken(ngDevMode ? 'PlatformDestroyListeners' : '');
|
|
32382
32484
|
/**
|
|
32383
32485
|
* The Angular platform is the entry point for Angular on a web page.
|
|
32384
32486
|
* Each page has exactly one platform. Services (such as reflection) which are common
|
|
@@ -32535,7 +32637,7 @@ let _platformInjector = null;
|
|
|
32535
32637
|
* Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
|
|
32536
32638
|
* one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
|
|
32537
32639
|
*/
|
|
32538
|
-
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
32640
|
+
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken(ngDevMode ? 'AllowMultipleToken' : '');
|
|
32539
32641
|
/**
|
|
32540
32642
|
* Creates a platform.
|
|
32541
32643
|
* Platforms must be created on launch using this function.
|
|
@@ -34163,24 +34265,56 @@ class ChangeDetectionSchedulerImpl {
|
|
|
34163
34265
|
if (this.pendingRenderTaskId !== null)
|
|
34164
34266
|
return;
|
|
34165
34267
|
this.pendingRenderTaskId = this.taskService.add();
|
|
34166
|
-
|
|
34167
|
-
|
|
34168
|
-
|
|
34169
|
-
|
|
34170
|
-
|
|
34171
|
-
|
|
34172
|
-
|
|
34173
|
-
|
|
34174
|
-
|
|
34175
|
-
|
|
34176
|
-
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
|
|
34180
|
-
|
|
34181
|
-
|
|
34268
|
+
this.raceTimeoutAndRequestAnimationFrame();
|
|
34269
|
+
}
|
|
34270
|
+
/**
|
|
34271
|
+
* Run change detection after the first of setTimeout and requestAnimationFrame resolves.
|
|
34272
|
+
*
|
|
34273
|
+
* - `requestAnimationFrame` ensures that change detection runs ahead of a browser repaint.
|
|
34274
|
+
* This ensures that the create and update passes of a change detection always happen
|
|
34275
|
+
* in the same frame.
|
|
34276
|
+
* - When the browser is resource-starved, `rAF` can execute _before_ a `setTimeout` because
|
|
34277
|
+
* rendering is a very high priority process. This means that `setTimeout` cannot guarantee
|
|
34278
|
+
* same-frame create and update pass, when `setTimeout` is used to schedule the update phase.
|
|
34279
|
+
* - While `rAF` gives us the desirable same-frame updates, it has two limitations that
|
|
34280
|
+
* prevent it from being used alone. First, it does not run in background tabs, which would
|
|
34281
|
+
* prevent Angular from initializing an application when opened in a new tab (for example).
|
|
34282
|
+
* Second, repeated calls to requestAnimationFrame will execute at the refresh rate of the
|
|
34283
|
+
* hardware (~16ms for a 60Hz display). This would cause significant slowdown of tests that
|
|
34284
|
+
* are written with several updates and asserts in the form of "update; await stable; assert;".
|
|
34285
|
+
* - Both `setTimeout` and `rAF` are able to "coalesce" several events from a single user
|
|
34286
|
+
* interaction into a single change detection. Importantly, this reduces view tree traversals when
|
|
34287
|
+
* compared to an alternative timing mechanism like `queueMicrotask`, where change detection would
|
|
34288
|
+
* then be interleaves between each event.
|
|
34289
|
+
*
|
|
34290
|
+
* By running change detection after the first of `setTimeout` and `rAF` to execute, we get the
|
|
34291
|
+
* best of both worlds.
|
|
34292
|
+
*/
|
|
34293
|
+
async raceTimeoutAndRequestAnimationFrame() {
|
|
34294
|
+
const timeout = new Promise(resolve => setTimeout(resolve));
|
|
34295
|
+
const rAF = typeof _global['requestAnimationFrame'] === 'function' ?
|
|
34296
|
+
new Promise(resolve => requestAnimationFrame(() => resolve())) :
|
|
34297
|
+
null;
|
|
34298
|
+
await Promise.race([timeout, rAF]);
|
|
34299
|
+
this.tick();
|
|
34300
|
+
}
|
|
34301
|
+
tick() {
|
|
34302
|
+
try {
|
|
34303
|
+
if (!this.appRef.destroyed) {
|
|
34304
|
+
this.appRef.tick();
|
|
34182
34305
|
}
|
|
34183
|
-
}
|
|
34306
|
+
}
|
|
34307
|
+
finally {
|
|
34308
|
+
// If this is the last task, the service will synchronously emit a stable notification. If
|
|
34309
|
+
// there is a subscriber that then acts in a way that tries to notify the scheduler again,
|
|
34310
|
+
// we need to be able to respond to schedule a new change detection. Therefore, we should
|
|
34311
|
+
// clear the task ID before removing it from the pending tasks (or the tasks service should
|
|
34312
|
+
// not synchronously emit stable, similar to how Zone stableness only happens if it's still
|
|
34313
|
+
// stable after a microtask).
|
|
34314
|
+
const taskId = this.pendingRenderTaskId;
|
|
34315
|
+
this.pendingRenderTaskId = null;
|
|
34316
|
+
this.taskService.remove(taskId);
|
|
34317
|
+
}
|
|
34184
34318
|
}
|
|
34185
34319
|
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(t) { return new (t || ChangeDetectionSchedulerImpl)(); }; }
|
|
34186
34320
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ChangeDetectionSchedulerImpl, factory: ChangeDetectionSchedulerImpl.ɵfac, providedIn: 'root' }); }
|
|
@@ -35248,5 +35382,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
35248
35382
|
* Generated bundle index. Do not edit.
|
|
35249
35383
|
*/
|
|
35250
35384
|
|
|
35251
|
-
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getEnsureDirtyViewsAreAlwaysReachable as ɵgetEnsureDirtyViewsAreAlwaysReachable, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setEnsureDirtyViewsAreAlwaysReachable as ɵsetEnsureDirtyViewsAreAlwaysReachable, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, InputFlags as ɵɵInputFlags, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
|
|
35385
|
+
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getEnsureDirtyViewsAreAlwaysReachable as ɵgetEnsureDirtyViewsAreAlwaysReachable, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setEnsureDirtyViewsAreAlwaysReachable as ɵsetEnsureDirtyViewsAreAlwaysReachable, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, InputFlags as ɵɵInputFlags, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
|
|
35252
35386
|
//# sourceMappingURL=core.mjs.map
|