@angular/core 17.2.0-next.0 → 17.2.0-next.1
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/primitives/signals/index.mjs +2 -2
- package/esm2022/src/application/application_init.mjs +2 -2
- package/esm2022/src/application/application_ref.mjs +2 -2
- package/esm2022/src/application/application_tokens.mjs +10 -9
- package/esm2022/src/authoring/input.mjs +1 -1
- package/esm2022/src/authoring/input_signal.mjs +4 -1
- package/esm2022/src/authoring/input_type_checking.mjs +1 -1
- package/esm2022/src/authoring/queries.mjs +8 -7
- 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 +4 -2
- 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/linker/query_list.mjs +7 -1
- 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/component_ref.mjs +1 -1
- package/esm2022/src/render3/instructions/all.mjs +2 -1
- package/esm2022/src/render3/instructions/element.mjs +3 -3
- package/esm2022/src/render3/instructions/queries.mjs +6 -40
- package/esm2022/src/render3/instructions/queries_signals.mjs +55 -0
- package/esm2022/src/render3/instructions/write_to_directive_input.mjs +1 -1
- package/esm2022/src/render3/query.mjs +46 -7
- package/esm2022/src/render3/query_reactive.mjs +110 -0
- package/esm2022/src/render3/reactivity/computed.mjs +4 -1
- package/esm2022/src/render3/reactivity/signal.mjs +4 -1
- package/esm2022/src/util/ng_dev_mode.mjs +11 -3
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/component_fixture.mjs +128 -93
- 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 +359 -100
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +2 -2
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +143 -96
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +120 -21
- package/package.json +1 -1
- package/primitives/signals/index.d.ts +3 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/block-template-entities/bundle.js +242 -207
- 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 +252 -217
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
- package/schematics/ng-generate/standalone-migration/bundle.js +1942 -1675
- package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
- package/testing/index.d.ts +6 -17
package/fesm2022/core.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.2.0-next.
|
|
2
|
+
* @license Angular v17.2.0-next.1
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, createComputed as createComputed$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, getActiveConsumer as getActiveConsumer$1, createWatch as createWatch$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1 } from '@angular/core/primitives/signals';
|
|
7
|
+
import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, createComputed as createComputed$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, getActiveConsumer as getActiveConsumer$1, createWatch as createWatch$1, producerUpdateValueVersion as producerUpdateValueVersion$1, consumerMarkDirty as consumerMarkDirty$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1 } from '@angular/core/primitives/signals';
|
|
8
8
|
import { Subject, Subscription, BehaviorSubject } from 'rxjs';
|
|
9
9
|
import { map, first } from 'rxjs/operators';
|
|
10
10
|
|
|
@@ -100,6 +100,9 @@ function createInputSignal(initialValue, options) {
|
|
|
100
100
|
return node.value;
|
|
101
101
|
}
|
|
102
102
|
inputValueFn[SIGNAL$1] = node;
|
|
103
|
+
if (ngDevMode) {
|
|
104
|
+
inputValueFn.toString = () => `[Input Signal: ${inputValueFn()}]`;
|
|
105
|
+
}
|
|
103
106
|
return inputValueFn;
|
|
104
107
|
}
|
|
105
108
|
|
|
@@ -716,7 +719,15 @@ function ngDevModeResetPerfCounters() {
|
|
|
716
719
|
};
|
|
717
720
|
// Make sure to refer to ngDevMode as ['ngDevMode'] for closure.
|
|
718
721
|
const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;
|
|
719
|
-
|
|
722
|
+
if (!allowNgDevModeTrue) {
|
|
723
|
+
_global['ngDevMode'] = false;
|
|
724
|
+
}
|
|
725
|
+
else {
|
|
726
|
+
if (typeof _global['ngDevMode'] !== 'object') {
|
|
727
|
+
_global['ngDevMode'] = {};
|
|
728
|
+
}
|
|
729
|
+
Object.assign(_global['ngDevMode'], newCounters);
|
|
730
|
+
}
|
|
720
731
|
return newCounters;
|
|
721
732
|
}
|
|
722
733
|
/**
|
|
@@ -746,7 +757,7 @@ function initNgDevMode() {
|
|
|
746
757
|
// If the `ngDevMode` is not an object, then it means we have not created the perf counters
|
|
747
758
|
// yet.
|
|
748
759
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
749
|
-
if (typeof ngDevMode !== 'object') {
|
|
760
|
+
if (typeof ngDevMode !== 'object' || Object.keys(ngDevMode).length === 0) {
|
|
750
761
|
ngDevModeResetPerfCounters();
|
|
751
762
|
}
|
|
752
763
|
return typeof ngDevMode !== 'undefined' && !!ngDevMode;
|
|
@@ -5659,7 +5670,7 @@ function componentDefResolved(type) {
|
|
|
5659
5670
|
*
|
|
5660
5671
|
* @publicApi
|
|
5661
5672
|
*/
|
|
5662
|
-
const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
|
|
5673
|
+
const ENVIRONMENT_INITIALIZER = new InjectionToken(ngDevMode ? 'ENVIRONMENT_INITIALIZER' : '');
|
|
5663
5674
|
|
|
5664
5675
|
/**
|
|
5665
5676
|
* An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
|
|
@@ -5669,12 +5680,12 @@ const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
|
|
|
5669
5680
|
*
|
|
5670
5681
|
* @publicApi
|
|
5671
5682
|
*/
|
|
5672
|
-
const INJECTOR = new InjectionToken('INJECTOR',
|
|
5683
|
+
const INJECTOR = new InjectionToken(ngDevMode ? 'INJECTOR' : '',
|
|
5673
5684
|
// Disable tslint because this is const enum which gets inlined not top level prop access.
|
|
5674
5685
|
// tslint:disable-next-line: no-toplevel-property-access
|
|
5675
5686
|
-1 /* InjectorMarkers.Injector */);
|
|
5676
5687
|
|
|
5677
|
-
const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
|
|
5688
|
+
const INJECTOR_DEF_TYPES = new InjectionToken(ngDevMode ? 'INJECTOR_DEF_TYPES' : '');
|
|
5678
5689
|
|
|
5679
5690
|
class NullInjector {
|
|
5680
5691
|
get(token, notFoundValue = THROW_IF_NOT_FOUND) {
|
|
@@ -5950,7 +5961,7 @@ function isClassProvider(value) {
|
|
|
5950
5961
|
* as a root scoped injector when processing requests for unknown tokens which may indicate
|
|
5951
5962
|
* they are provided in the root scope.
|
|
5952
5963
|
*/
|
|
5953
|
-
const INJECTOR_SCOPE = new InjectionToken('Set Injector scope.');
|
|
5964
|
+
const INJECTOR_SCOPE = new InjectionToken(ngDevMode ? 'Set Injector scope.' : '');
|
|
5954
5965
|
|
|
5955
5966
|
/**
|
|
5956
5967
|
* Marker which indicates that a value has not yet been created from the factory function.
|
|
@@ -6573,10 +6584,10 @@ function createInjectorWithoutInjectorInstances(defType, parent = null, addition
|
|
|
6573
6584
|
|
|
6574
6585
|
/**
|
|
6575
6586
|
* Concrete injectors implement this interface. Injectors are configured
|
|
6576
|
-
* with [providers](guide/
|
|
6577
|
-
* dependencies of various types with [injection tokens](guide/
|
|
6587
|
+
* with [providers](guide/dependency-injection-providers) that associate
|
|
6588
|
+
* dependencies of various types with [injection tokens](guide/dependency-injection-providers).
|
|
6578
6589
|
*
|
|
6579
|
-
* @see [
|
|
6590
|
+
* @see [DI Providers](guide/dependency-injection-providers).
|
|
6580
6591
|
* @see {@link StaticProvider}
|
|
6581
6592
|
*
|
|
6582
6593
|
* @usageNotes
|
|
@@ -6773,7 +6784,7 @@ function getDocument() {
|
|
|
6773
6784
|
*
|
|
6774
6785
|
* @publicApi
|
|
6775
6786
|
*/
|
|
6776
|
-
const APP_ID = new InjectionToken('AppId', {
|
|
6787
|
+
const APP_ID = new InjectionToken(ngDevMode ? 'AppId' : '', {
|
|
6777
6788
|
providedIn: 'root',
|
|
6778
6789
|
factory: () => DEFAULT_APP_ID,
|
|
6779
6790
|
});
|
|
@@ -6783,12 +6794,12 @@ const DEFAULT_APP_ID = 'ng';
|
|
|
6783
6794
|
* A function that is executed when a platform is initialized.
|
|
6784
6795
|
* @publicApi
|
|
6785
6796
|
*/
|
|
6786
|
-
const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
|
|
6797
|
+
const PLATFORM_INITIALIZER = new InjectionToken(ngDevMode ? 'Platform Initializer' : '');
|
|
6787
6798
|
/**
|
|
6788
6799
|
* A token that indicates an opaque platform ID.
|
|
6789
6800
|
* @publicApi
|
|
6790
6801
|
*/
|
|
6791
|
-
const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
6802
|
+
const PLATFORM_ID = new InjectionToken(ngDevMode ? 'Platform ID' : '', {
|
|
6792
6803
|
providedIn: 'platform',
|
|
6793
6804
|
factory: () => 'unknown', // set a default platform name, when none set explicitly
|
|
6794
6805
|
});
|
|
@@ -6798,16 +6809,16 @@ const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
|
6798
6809
|
* @publicApi
|
|
6799
6810
|
* @deprecated
|
|
6800
6811
|
*/
|
|
6801
|
-
const PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');
|
|
6812
|
+
const PACKAGE_ROOT_URL = new InjectionToken(ngDevMode ? 'Application Packages Root URL' : '');
|
|
6802
6813
|
// We keep this token here, rather than the animations package, so that modules that only care
|
|
6803
6814
|
// about which animations module is loaded (e.g. the CDK) can retrieve it without having to
|
|
6804
6815
|
// include extra dependencies. See #44970 for more context.
|
|
6805
6816
|
/**
|
|
6806
|
-
* A [DI token](
|
|
6817
|
+
* A [DI token](api/core/InjectionToken) that indicates which animations
|
|
6807
6818
|
* module has been loaded.
|
|
6808
6819
|
* @publicApi
|
|
6809
6820
|
*/
|
|
6810
|
-
const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
|
|
6821
|
+
const ANIMATION_MODULE_TYPE = new InjectionToken(ngDevMode ? 'AnimationModuleType' : '');
|
|
6811
6822
|
// TODO(crisbeto): link to CSP guide here.
|
|
6812
6823
|
/**
|
|
6813
6824
|
* Token used to configure the [Content Security Policy](https://web.dev/strict-csp/) nonce that
|
|
@@ -6816,7 +6827,7 @@ const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
|
|
|
6816
6827
|
*
|
|
6817
6828
|
* @publicApi
|
|
6818
6829
|
*/
|
|
6819
|
-
const CSP_NONCE = new InjectionToken('CSP nonce', {
|
|
6830
|
+
const CSP_NONCE = new InjectionToken(ngDevMode ? 'CSP nonce' : '', {
|
|
6820
6831
|
providedIn: 'root',
|
|
6821
6832
|
factory: () => {
|
|
6822
6833
|
// Ideally we wouldn't have to use `querySelector` here since we know that the nonce will be on
|
|
@@ -6841,6 +6852,7 @@ const CSP_NONCE = new InjectionToken('CSP nonce', {
|
|
|
6841
6852
|
});
|
|
6842
6853
|
const IMAGE_CONFIG_DEFAULTS = {
|
|
6843
6854
|
breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
6855
|
+
placeholderResolution: 30,
|
|
6844
6856
|
disableImageSizeWarning: false,
|
|
6845
6857
|
disableImageLazyLoadWarning: false,
|
|
6846
6858
|
};
|
|
@@ -6853,7 +6865,7 @@ const IMAGE_CONFIG_DEFAULTS = {
|
|
|
6853
6865
|
* @see {@link ImageConfig}
|
|
6854
6866
|
* @publicApi
|
|
6855
6867
|
*/
|
|
6856
|
-
const IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => IMAGE_CONFIG_DEFAULTS });
|
|
6868
|
+
const IMAGE_CONFIG = new InjectionToken(ngDevMode ? 'ImageConfig' : '', { providedIn: 'root', factory: () => IMAGE_CONFIG_DEFAULTS });
|
|
6857
6869
|
|
|
6858
6870
|
/**
|
|
6859
6871
|
*
|
|
@@ -10068,7 +10080,8 @@ function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
|
|
|
10068
10080
|
return null;
|
|
10069
10081
|
// We've read one of the ngh ids, keep the remaining one, so that
|
|
10070
10082
|
// we can set it back on the DOM element.
|
|
10071
|
-
const
|
|
10083
|
+
const rootNgh = rootViewNgh ? `|${rootViewNgh}` : '';
|
|
10084
|
+
const remainingNgh = isRootView ? componentViewNgh : rootNgh;
|
|
10072
10085
|
let data = {};
|
|
10073
10086
|
// An element might have an empty `ngh` attribute value (e.g. `<comp ngh="" />`),
|
|
10074
10087
|
// which means that no special annotations are required. Do not attempt to read
|
|
@@ -10174,7 +10187,7 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10174
10187
|
const content = getTextNodeContent(node);
|
|
10175
10188
|
const isTextNodeMarker = content === "ngetn" /* TextNodeMarker.EmptyNode */ || content === "ngtns" /* TextNodeMarker.Separator */;
|
|
10176
10189
|
return isTextNodeMarker ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
|
|
10177
|
-
}
|
|
10190
|
+
},
|
|
10178
10191
|
});
|
|
10179
10192
|
let currentNode;
|
|
10180
10193
|
// We cannot modify the DOM while using the commentIterator,
|
|
@@ -10183,7 +10196,7 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10183
10196
|
// applying the changes to the DOM: either inserting an empty node
|
|
10184
10197
|
// or just removing the marker if it was used as a separator.
|
|
10185
10198
|
const nodes = [];
|
|
10186
|
-
while (currentNode = commentNodesIterator.nextNode()) {
|
|
10199
|
+
while ((currentNode = commentNodesIterator.nextNode())) {
|
|
10187
10200
|
nodes.push(currentNode);
|
|
10188
10201
|
}
|
|
10189
10202
|
for (const node of nodes) {
|
|
@@ -10195,6 +10208,24 @@ function processTextNodeMarkersBeforeHydration(node) {
|
|
|
10195
10208
|
}
|
|
10196
10209
|
}
|
|
10197
10210
|
}
|
|
10211
|
+
/**
|
|
10212
|
+
* Internal type that represents a claimed node.
|
|
10213
|
+
* Only used in dev mode.
|
|
10214
|
+
*/
|
|
10215
|
+
var HydrationStatus;
|
|
10216
|
+
(function (HydrationStatus) {
|
|
10217
|
+
HydrationStatus["Hydrated"] = "hydrated";
|
|
10218
|
+
HydrationStatus["Skipped"] = "skipped";
|
|
10219
|
+
HydrationStatus["Mismatched"] = "mismatched";
|
|
10220
|
+
})(HydrationStatus || (HydrationStatus = {}));
|
|
10221
|
+
// clang-format on
|
|
10222
|
+
const HYDRATION_INFO_KEY = '__ngDebugHydrationInfo__';
|
|
10223
|
+
function patchHydrationInfo(node, info) {
|
|
10224
|
+
node[HYDRATION_INFO_KEY] = info;
|
|
10225
|
+
}
|
|
10226
|
+
function readHydrationInfo(node) {
|
|
10227
|
+
return node[HYDRATION_INFO_KEY] ?? null;
|
|
10228
|
+
}
|
|
10198
10229
|
/**
|
|
10199
10230
|
* Marks a node as "claimed" by hydration process.
|
|
10200
10231
|
* This is needed to make assessments in tests whether
|
|
@@ -10208,11 +10239,38 @@ function markRNodeAsClaimedByHydration(node, checkIfAlreadyClaimed = true) {
|
|
|
10208
10239
|
if (checkIfAlreadyClaimed && isRNodeClaimedForHydration(node)) {
|
|
10209
10240
|
throw new Error('Trying to claim a node, which was claimed already.');
|
|
10210
10241
|
}
|
|
10211
|
-
node.
|
|
10242
|
+
patchHydrationInfo(node, { status: HydrationStatus.Hydrated });
|
|
10212
10243
|
ngDevMode.hydratedNodes++;
|
|
10213
10244
|
}
|
|
10245
|
+
function markRNodeAsSkippedByHydration(node) {
|
|
10246
|
+
if (!ngDevMode) {
|
|
10247
|
+
throw new Error('Calling `markRNodeAsSkippedByHydration` in prod mode ' +
|
|
10248
|
+
'is not supported and likely a mistake.');
|
|
10249
|
+
}
|
|
10250
|
+
patchHydrationInfo(node, { status: HydrationStatus.Skipped });
|
|
10251
|
+
ngDevMode.componentsSkippedHydration++;
|
|
10252
|
+
}
|
|
10253
|
+
function markRNodeAsHavingHydrationMismatch(node, expectedNodeDetails = null, actualNodeDetails = null) {
|
|
10254
|
+
if (!ngDevMode) {
|
|
10255
|
+
throw new Error('Calling `markRNodeAsMismatchedByHydration` in prod mode ' +
|
|
10256
|
+
'is not supported and likely a mistake.');
|
|
10257
|
+
}
|
|
10258
|
+
// The RNode can be a standard HTMLElement
|
|
10259
|
+
// The devtools component tree only displays Angular components & directives
|
|
10260
|
+
// Therefore we attach the debug info to the closest a claimed node.
|
|
10261
|
+
while (node && readHydrationInfo(node)?.status !== HydrationStatus.Hydrated) {
|
|
10262
|
+
node = node?.parentNode;
|
|
10263
|
+
}
|
|
10264
|
+
if (node) {
|
|
10265
|
+
patchHydrationInfo(node, {
|
|
10266
|
+
status: HydrationStatus.Mismatched,
|
|
10267
|
+
expectedNodeDetails,
|
|
10268
|
+
actualNodeDetails,
|
|
10269
|
+
});
|
|
10270
|
+
}
|
|
10271
|
+
}
|
|
10214
10272
|
function isRNodeClaimedForHydration(node) {
|
|
10215
|
-
return
|
|
10273
|
+
return readHydrationInfo(node)?.status === HydrationStatus.Hydrated;
|
|
10216
10274
|
}
|
|
10217
10275
|
function setSegmentHead(hydrationInfo, index, node) {
|
|
10218
10276
|
hydrationInfo.segmentHeads ??= {};
|
|
@@ -10264,7 +10322,7 @@ function isDisconnectedNode$1(hydrationInfo, index) {
|
|
|
10264
10322
|
// Check if we are processing disconnected info for the first time.
|
|
10265
10323
|
if (typeof hydrationInfo.disconnectedNodes === 'undefined') {
|
|
10266
10324
|
const nodeIds = hydrationInfo.data[DISCONNECTED_NODES];
|
|
10267
|
-
hydrationInfo.disconnectedNodes = nodeIds ?
|
|
10325
|
+
hydrationInfo.disconnectedNodes = nodeIds ? new Set(nodeIds) : null;
|
|
10268
10326
|
}
|
|
10269
10327
|
return !!hydrationInfo.disconnectedNodes?.has(index);
|
|
10270
10328
|
}
|
|
@@ -10471,6 +10529,9 @@ function computed(computation, options) {
|
|
|
10471
10529
|
if (options?.equal) {
|
|
10472
10530
|
getter[SIGNAL$1].equal = options.equal;
|
|
10473
10531
|
}
|
|
10532
|
+
if (ngDevMode) {
|
|
10533
|
+
getter.toString = () => `[Computed: ${getter()}]`;
|
|
10534
|
+
}
|
|
10474
10535
|
return getter;
|
|
10475
10536
|
}
|
|
10476
10537
|
|
|
@@ -10486,6 +10547,9 @@ function signal(initialValue, options) {
|
|
|
10486
10547
|
signalFn.set = (newValue) => signalSetFn$1(node, newValue);
|
|
10487
10548
|
signalFn.update = (updateFn) => signalUpdateFn$1(node, updateFn);
|
|
10488
10549
|
signalFn.asReadonly = signalAsReadonlyFn.bind(signalFn);
|
|
10550
|
+
if (ngDevMode) {
|
|
10551
|
+
signalFn.toString = () => `[Signal: ${signalFn()}]`;
|
|
10552
|
+
}
|
|
10489
10553
|
return signalFn;
|
|
10490
10554
|
}
|
|
10491
10555
|
function signalAsReadonlyFn() {
|
|
@@ -15714,7 +15778,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
15714
15778
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
15715
15779
|
if (rootSelectorOrNode) {
|
|
15716
15780
|
// The placeholder will be replaced with the actual version at build time.
|
|
15717
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.2.0-next.
|
|
15781
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.2.0-next.1']);
|
|
15718
15782
|
}
|
|
15719
15783
|
else {
|
|
15720
15784
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -16229,16 +16293,21 @@ function validateMatchingNode(node, nodeType, tagName, lView, tNode, isViewConta
|
|
|
16229
16293
|
let header = `During hydration Angular expected ${expectedNode} but `;
|
|
16230
16294
|
const hostComponentDef = getDeclarationComponentDef(lView);
|
|
16231
16295
|
const componentClassName = hostComponentDef?.type?.name;
|
|
16232
|
-
const
|
|
16296
|
+
const expectedDom = describeExpectedDom(lView, tNode, isViewContainerAnchor);
|
|
16297
|
+
const expected = `Angular expected this DOM:\n\n${expectedDom}\n\n`;
|
|
16233
16298
|
let actual = '';
|
|
16234
16299
|
if (!node) {
|
|
16235
16300
|
// No node found during hydration.
|
|
16236
16301
|
header += `the node was not found.\n\n`;
|
|
16302
|
+
// Since the node is missing, we use the closest node to attach the error to
|
|
16303
|
+
markRNodeAsHavingHydrationMismatch(unwrapRNode(lView[HOST]), expectedDom);
|
|
16237
16304
|
}
|
|
16238
16305
|
else {
|
|
16239
16306
|
const actualNode = shortRNodeDescription(node.nodeType, node.tagName ?? null, node.textContent ?? null);
|
|
16240
16307
|
header += `found ${actualNode}.\n\n`;
|
|
16241
|
-
|
|
16308
|
+
const actualDom = describeDomFromNode(node);
|
|
16309
|
+
actual = `Actual DOM is:\n\n${actualDom}\n\n`;
|
|
16310
|
+
markRNodeAsHavingHydrationMismatch(node, expectedDom, actualDom);
|
|
16242
16311
|
}
|
|
16243
16312
|
const footer = getHydrationErrorFooter(componentClassName);
|
|
16244
16313
|
const message = header + expected + actual + getHydrationAttributeNote() + footer;
|
|
@@ -16255,6 +16324,7 @@ function validateSiblingNodeExists(node) {
|
|
|
16255
16324
|
const actual = `Actual DOM is:\n\n${describeDomFromNode(node)}\n\n`;
|
|
16256
16325
|
const footer = getHydrationErrorFooter();
|
|
16257
16326
|
const message = header + actual + footer;
|
|
16327
|
+
markRNodeAsHavingHydrationMismatch(node, '', actual);
|
|
16258
16328
|
throw new RuntimeError(-501 /* RuntimeErrorCode.HYDRATION_MISSING_SIBLINGS */, message);
|
|
16259
16329
|
}
|
|
16260
16330
|
}
|
|
@@ -16267,10 +16337,12 @@ function validateNodeExists(node, lView = null, tNode = null) {
|
|
|
16267
16337
|
let expected = '';
|
|
16268
16338
|
let footer = '';
|
|
16269
16339
|
if (lView !== null && tNode !== null) {
|
|
16270
|
-
expected =
|
|
16340
|
+
expected = describeExpectedDom(lView, tNode, false);
|
|
16271
16341
|
footer = getHydrationErrorFooter();
|
|
16342
|
+
// Since the node is missing, we use the closest node to attach the error to
|
|
16343
|
+
markRNodeAsHavingHydrationMismatch(unwrapRNode(lView[HOST]), expected, '');
|
|
16272
16344
|
}
|
|
16273
|
-
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header
|
|
16345
|
+
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, `${header}${expected}\n\n${footer}`);
|
|
16274
16346
|
}
|
|
16275
16347
|
}
|
|
16276
16348
|
/**
|
|
@@ -16295,6 +16367,7 @@ function nodeNotFoundAtPathError(host, path) {
|
|
|
16295
16367
|
const header = `During hydration Angular was unable to locate a node ` +
|
|
16296
16368
|
`using the "${path}" path, starting from the ${describeRNode(host)} node.\n\n`;
|
|
16297
16369
|
const footer = getHydrationErrorFooter();
|
|
16370
|
+
markRNodeAsHavingHydrationMismatch(host);
|
|
16298
16371
|
throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header + footer);
|
|
16299
16372
|
}
|
|
16300
16373
|
/**
|
|
@@ -18487,9 +18560,11 @@ class TimerScheduler {
|
|
|
18487
18560
|
|
|
18488
18561
|
/**
|
|
18489
18562
|
* **INTERNAL**, avoid referencing it in application code.
|
|
18490
|
-
*
|
|
18563
|
+
* *
|
|
18491
18564
|
* Injector token that allows to provide `DeferBlockDependencyInterceptor` class
|
|
18492
18565
|
* implementation.
|
|
18566
|
+
*
|
|
18567
|
+
* This token is only injected in devMode
|
|
18493
18568
|
*/
|
|
18494
18569
|
const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR = new InjectionToken('DEFER_BLOCK_DEPENDENCY_INTERCEPTOR');
|
|
18495
18570
|
/**
|
|
@@ -22251,7 +22326,7 @@ function locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, inde
|
|
|
22251
22326
|
// Since this isn't hydratable, we need to empty the node
|
|
22252
22327
|
// so there's no duplicate content after render
|
|
22253
22328
|
clearElementContents(native);
|
|
22254
|
-
ngDevMode &&
|
|
22329
|
+
ngDevMode && markRNodeAsSkippedByHydration(native);
|
|
22255
22330
|
}
|
|
22256
22331
|
else if (ngDevMode) {
|
|
22257
22332
|
// If this is not a component host, throw an error.
|
|
@@ -25376,6 +25451,7 @@ class QueryList {
|
|
|
25376
25451
|
constructor(_emitDistinctChangesOnly = false) {
|
|
25377
25452
|
this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
|
|
25378
25453
|
this.dirty = true;
|
|
25454
|
+
this._onDirty = undefined;
|
|
25379
25455
|
this._results = [];
|
|
25380
25456
|
this._changesDetected = false;
|
|
25381
25457
|
this._changes = undefined;
|
|
@@ -25472,9 +25548,14 @@ class QueryList {
|
|
|
25472
25548
|
if (this._changes !== undefined && (this._changesDetected || !this._emitDistinctChangesOnly))
|
|
25473
25549
|
this._changes.emit(this);
|
|
25474
25550
|
}
|
|
25551
|
+
/** @internal */
|
|
25552
|
+
onDirty(cb) {
|
|
25553
|
+
this._onDirty = cb;
|
|
25554
|
+
}
|
|
25475
25555
|
/** internal */
|
|
25476
25556
|
setDirty() {
|
|
25477
25557
|
this.dirty = true;
|
|
25558
|
+
this._onDirty?.();
|
|
25478
25559
|
}
|
|
25479
25560
|
/** internal */
|
|
25480
25561
|
destroy() {
|
|
@@ -25613,9 +25694,15 @@ class LQueries_ {
|
|
|
25613
25694
|
}
|
|
25614
25695
|
class TQueryMetadata_ {
|
|
25615
25696
|
constructor(predicate, flags, read = null) {
|
|
25616
|
-
this.predicate = predicate;
|
|
25617
25697
|
this.flags = flags;
|
|
25618
25698
|
this.read = read;
|
|
25699
|
+
// Compiler might not be able to pre-optimize and split multiple selectors.
|
|
25700
|
+
if (typeof predicate === 'string') {
|
|
25701
|
+
this.predicate = splitQueryMultiSelectors(predicate);
|
|
25702
|
+
}
|
|
25703
|
+
else {
|
|
25704
|
+
this.predicate = predicate;
|
|
25705
|
+
}
|
|
25619
25706
|
}
|
|
25620
25707
|
}
|
|
25621
25708
|
class TQueries_ {
|
|
@@ -25911,12 +25998,44 @@ function loadQueryInternal(lView, queryIndex) {
|
|
|
25911
25998
|
ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex);
|
|
25912
25999
|
return lView[QUERIES].queries[queryIndex].queryList;
|
|
25913
26000
|
}
|
|
26001
|
+
/**
|
|
26002
|
+
* Creates a new instance of LQuery and returns its index in the collection of LQuery objects.
|
|
26003
|
+
*
|
|
26004
|
+
* @returns index in the collection of LQuery objects
|
|
26005
|
+
*/
|
|
25914
26006
|
function createLQuery(tView, lView, flags) {
|
|
25915
26007
|
const queryList = new QueryList((flags & 4 /* QueryFlags.emitDistinctChangesOnly */) === 4 /* QueryFlags.emitDistinctChangesOnly */);
|
|
25916
26008
|
storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
|
|
25917
|
-
|
|
25918
|
-
|
|
25919
|
-
|
|
26009
|
+
const lQueries = (lView[QUERIES] ??= new LQueries_()).queries;
|
|
26010
|
+
return lQueries.push(new LQuery_(queryList)) - 1;
|
|
26011
|
+
}
|
|
26012
|
+
function createViewQuery(predicate, flags, read) {
|
|
26013
|
+
ngDevMode && assertNumber(flags, 'Expecting flags');
|
|
26014
|
+
const tView = getTView();
|
|
26015
|
+
if (tView.firstCreatePass) {
|
|
26016
|
+
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
|
|
26017
|
+
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
26018
|
+
tView.staticViewQueries = true;
|
|
26019
|
+
}
|
|
26020
|
+
}
|
|
26021
|
+
return createLQuery(tView, getLView(), flags);
|
|
26022
|
+
}
|
|
26023
|
+
function createContentQuery(directiveIndex, predicate, flags, read) {
|
|
26024
|
+
ngDevMode && assertNumber(flags, 'Expecting flags');
|
|
26025
|
+
const tView = getTView();
|
|
26026
|
+
if (tView.firstCreatePass) {
|
|
26027
|
+
const tNode = getCurrentTNode();
|
|
26028
|
+
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
|
|
26029
|
+
saveContentQueryAndDirectiveIndex(tView, directiveIndex);
|
|
26030
|
+
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
26031
|
+
tView.staticContentQueries = true;
|
|
26032
|
+
}
|
|
26033
|
+
}
|
|
26034
|
+
return createLQuery(tView, getLView(), flags);
|
|
26035
|
+
}
|
|
26036
|
+
/** Splits multiple selectors in the locator. */
|
|
26037
|
+
function splitQueryMultiSelectors(locator) {
|
|
26038
|
+
return locator.split(',').map(s => s.trim());
|
|
25920
26039
|
}
|
|
25921
26040
|
function createTQuery(tView, metadata, nodeIndex) {
|
|
25922
26041
|
if (tView.queries === null)
|
|
@@ -25948,24 +26067,10 @@ function getTQuery(tView, index) {
|
|
|
25948
26067
|
* @codeGenApi
|
|
25949
26068
|
*/
|
|
25950
26069
|
function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
|
|
25951
|
-
|
|
25952
|
-
const tView = getTView();
|
|
25953
|
-
if (tView.firstCreatePass) {
|
|
25954
|
-
// Compiler might not be able to pre-optimize and split multiple selectors.
|
|
25955
|
-
if (typeof predicate === 'string') {
|
|
25956
|
-
predicate = splitQueryMultiSelectors(predicate);
|
|
25957
|
-
}
|
|
25958
|
-
const tNode = getCurrentTNode();
|
|
25959
|
-
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
|
|
25960
|
-
saveContentQueryAndDirectiveIndex(tView, directiveIndex);
|
|
25961
|
-
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
25962
|
-
tView.staticContentQueries = true;
|
|
25963
|
-
}
|
|
25964
|
-
}
|
|
25965
|
-
createLQuery(tView, getLView(), flags);
|
|
26070
|
+
createContentQuery(directiveIndex, predicate, flags, read);
|
|
25966
26071
|
}
|
|
25967
26072
|
/**
|
|
25968
|
-
* Creates new
|
|
26073
|
+
* Creates a new view query by initializing internal data structures.
|
|
25969
26074
|
*
|
|
25970
26075
|
* @param predicate The type for which the query will search
|
|
25971
26076
|
* @param flags Flags associated with the query
|
|
@@ -25974,19 +26079,7 @@ function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
|
|
|
25974
26079
|
* @codeGenApi
|
|
25975
26080
|
*/
|
|
25976
26081
|
function ɵɵviewQuery(predicate, flags, read) {
|
|
25977
|
-
|
|
25978
|
-
const tView = getTView();
|
|
25979
|
-
if (tView.firstCreatePass) {
|
|
25980
|
-
// Compiler might not be able to pre-optimize and split multiple selectors.
|
|
25981
|
-
if (typeof predicate === 'string') {
|
|
25982
|
-
predicate = splitQueryMultiSelectors(predicate);
|
|
25983
|
-
}
|
|
25984
|
-
createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
|
|
25985
|
-
if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
|
|
25986
|
-
tView.staticViewQueries = true;
|
|
25987
|
-
}
|
|
25988
|
-
}
|
|
25989
|
-
createLQuery(tView, getLView(), flags);
|
|
26082
|
+
createViewQuery(predicate, flags, read);
|
|
25990
26083
|
}
|
|
25991
26084
|
/**
|
|
25992
26085
|
* Refreshes a query by combining matches from all active views and removing matches from deleted
|
|
@@ -26020,10 +26113,6 @@ function ɵɵqueryRefresh(queryList) {
|
|
|
26020
26113
|
}
|
|
26021
26114
|
return false;
|
|
26022
26115
|
}
|
|
26023
|
-
/** Splits multiple selectors in the locator. */
|
|
26024
|
-
function splitQueryMultiSelectors(locator) {
|
|
26025
|
-
return locator.split(',').map(s => s.trim());
|
|
26026
|
-
}
|
|
26027
26116
|
/**
|
|
26028
26117
|
* Loads a QueryList corresponding to the current view or content query.
|
|
26029
26118
|
*
|
|
@@ -26032,9 +26121,147 @@ function splitQueryMultiSelectors(locator) {
|
|
|
26032
26121
|
function ɵɵloadQuery() {
|
|
26033
26122
|
return loadQueryInternal(getLView(), getCurrentQueryIndex());
|
|
26034
26123
|
}
|
|
26035
|
-
|
|
26036
|
-
function
|
|
26037
|
-
|
|
26124
|
+
|
|
26125
|
+
function createQuerySignalFn(firstOnly, required) {
|
|
26126
|
+
const node = Object.create(QUERY_SIGNAL_NODE);
|
|
26127
|
+
function signalFn() {
|
|
26128
|
+
// Check if the value needs updating before returning it.
|
|
26129
|
+
producerUpdateValueVersion$1(node);
|
|
26130
|
+
// Mark this producer as accessed.
|
|
26131
|
+
producerAccessed$1(node);
|
|
26132
|
+
if (firstOnly) {
|
|
26133
|
+
const firstValue = node._queryList?.first;
|
|
26134
|
+
if (firstValue === undefined && required) {
|
|
26135
|
+
// TODO: add error code
|
|
26136
|
+
// TODO: add proper message
|
|
26137
|
+
throw new RuntimeError(0, 'no query results yet!');
|
|
26138
|
+
}
|
|
26139
|
+
return firstValue;
|
|
26140
|
+
}
|
|
26141
|
+
else {
|
|
26142
|
+
// TODO(perf): make sure that I'm not creating new arrays when returning results. The other
|
|
26143
|
+
// consideration here is the referential stability of results.
|
|
26144
|
+
return node._queryList?.toArray() ?? EMPTY_ARRAY;
|
|
26145
|
+
}
|
|
26146
|
+
}
|
|
26147
|
+
signalFn[SIGNAL$1] = node;
|
|
26148
|
+
if (ngDevMode) {
|
|
26149
|
+
signalFn.toString = () => `[Query Signal]`;
|
|
26150
|
+
}
|
|
26151
|
+
return signalFn;
|
|
26152
|
+
}
|
|
26153
|
+
function createSingleResultOptionalQuerySignalFn() {
|
|
26154
|
+
return createQuerySignalFn(/* firstOnly */ true, /* required */ false);
|
|
26155
|
+
}
|
|
26156
|
+
function createSingleResultRequiredQuerySignalFn() {
|
|
26157
|
+
return createQuerySignalFn(/* firstOnly */ true, /* required */ true);
|
|
26158
|
+
}
|
|
26159
|
+
function createMultiResultQuerySignalFn() {
|
|
26160
|
+
return createQuerySignalFn(/* firstOnly */ false, /* required */ false);
|
|
26161
|
+
}
|
|
26162
|
+
// Note: Using an IIFE here to ensure that the spread assignment is not considered
|
|
26163
|
+
// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.
|
|
26164
|
+
// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
|
|
26165
|
+
const QUERY_SIGNAL_NODE = /* @__PURE__ */ (() => {
|
|
26166
|
+
return {
|
|
26167
|
+
...REACTIVE_NODE$1,
|
|
26168
|
+
// Base reactive node.overrides
|
|
26169
|
+
producerMustRecompute: (node) => {
|
|
26170
|
+
return !!node._queryList?.dirty;
|
|
26171
|
+
},
|
|
26172
|
+
producerRecomputeValue: (node) => {
|
|
26173
|
+
// The current value is stale. Check whether we need to produce a new one.
|
|
26174
|
+
// TODO: assert: I've got both the lView and queryIndex stored
|
|
26175
|
+
// TODO(perf): I'm assuming that the signal value changes when the list of matches changes.
|
|
26176
|
+
// But this is not correct for the single-element queries since we should also compare (===)
|
|
26177
|
+
// the value of the first element.
|
|
26178
|
+
// TODO: error handling - should we guard against exceptions thrown from refreshSignalQuery -
|
|
26179
|
+
// normally it should never
|
|
26180
|
+
if (refreshSignalQuery(node._lView, node._queryIndex)) {
|
|
26181
|
+
node.version++;
|
|
26182
|
+
}
|
|
26183
|
+
}
|
|
26184
|
+
};
|
|
26185
|
+
})();
|
|
26186
|
+
function bindQueryToSignal(target, queryIndex) {
|
|
26187
|
+
const node = target[SIGNAL$1];
|
|
26188
|
+
node._lView = getLView();
|
|
26189
|
+
node._queryIndex = queryIndex;
|
|
26190
|
+
node._queryList = loadQueryInternal(node._lView, queryIndex);
|
|
26191
|
+
node._queryList.onDirty(() => {
|
|
26192
|
+
// Mark this producer as dirty and notify live consumer about the potential change. Note
|
|
26193
|
+
// that the onDirty callback will fire only on the initial dirty marking (that is,
|
|
26194
|
+
// subsequent dirty notifications are not fired- until the QueryList becomes clean again).
|
|
26195
|
+
consumerMarkDirty$1(node);
|
|
26196
|
+
});
|
|
26197
|
+
}
|
|
26198
|
+
// TODO(refactor): some code duplication with queryRefresh
|
|
26199
|
+
function refreshSignalQuery(lView, queryIndex) {
|
|
26200
|
+
const queryList = loadQueryInternal(lView, queryIndex);
|
|
26201
|
+
const tView = lView[TVIEW];
|
|
26202
|
+
const tQuery = getTQuery(tView, queryIndex);
|
|
26203
|
+
// TODO(test): operation of refreshing a signal query could be invoked during the first
|
|
26204
|
+
// creation pass, while results are still being collected; we should NOT mark such query as
|
|
26205
|
+
// "clean" as we might not have any view add / remove operations that would make it dirty again.
|
|
26206
|
+
// Leaning towards exiting early for calls to refreshSignalQuery before the first creation pass
|
|
26207
|
+
// finished
|
|
26208
|
+
if (queryList.dirty && tQuery.matches !== null) {
|
|
26209
|
+
const result = tQuery.crossesNgTemplate ?
|
|
26210
|
+
collectQueryResults(tView, lView, queryIndex, []) :
|
|
26211
|
+
materializeViewResults(tView, lView, tQuery, queryIndex);
|
|
26212
|
+
queryList.reset(result, unwrapElementRef);
|
|
26213
|
+
// TODO(test): don't mark signal as dirty when a query was marked as dirty but there
|
|
26214
|
+
// was no actual change
|
|
26215
|
+
// TODO: change the reset logic so it returns the value
|
|
26216
|
+
return true;
|
|
26217
|
+
}
|
|
26218
|
+
return false;
|
|
26219
|
+
}
|
|
26220
|
+
|
|
26221
|
+
/**
|
|
26222
|
+
* Registers a QueryList, associated with a content query, for later refresh (part of a view
|
|
26223
|
+
* refresh).
|
|
26224
|
+
*
|
|
26225
|
+
* @param directiveIndex Current directive index
|
|
26226
|
+
* @param predicate The type for which the query will search
|
|
26227
|
+
* @param flags Flags associated with the query
|
|
26228
|
+
* @param read What to save in the query
|
|
26229
|
+
* @returns QueryList<T>
|
|
26230
|
+
*
|
|
26231
|
+
* @codeGenApi
|
|
26232
|
+
*/
|
|
26233
|
+
function ɵɵcontentQuerySignal(target, directiveIndex, predicate, flags, read) {
|
|
26234
|
+
bindQueryToSignal(target, createContentQuery(directiveIndex, predicate, flags, read));
|
|
26235
|
+
}
|
|
26236
|
+
/**
|
|
26237
|
+
* Creates a new view query by initializing internal data structures and binding a new query to the
|
|
26238
|
+
* target signal.
|
|
26239
|
+
*
|
|
26240
|
+
* @param target The target signal to assign the query results to.
|
|
26241
|
+
* @param predicate The type or label that should match a given query
|
|
26242
|
+
* @param flags Flags associated with the query
|
|
26243
|
+
* @param read What to save in the query
|
|
26244
|
+
*
|
|
26245
|
+
* @codeGenApi
|
|
26246
|
+
*/
|
|
26247
|
+
function ɵɵviewQuerySignal(target, predicate, flags, read) {
|
|
26248
|
+
bindQueryToSignal(target, createViewQuery(predicate, flags, read));
|
|
26249
|
+
}
|
|
26250
|
+
/**
|
|
26251
|
+
* Advances the current query index by a specified offset.
|
|
26252
|
+
*
|
|
26253
|
+
* Adjusting the current query index is necessary in cases where a given directive has a mix of
|
|
26254
|
+
* zone-based and signal-based queries. The signal-based queries don't require tracking of the
|
|
26255
|
+
* current index (those are refreshed on demand and not during change detection) so this instruction
|
|
26256
|
+
* is only necessary for backward-compatibility.
|
|
26257
|
+
*
|
|
26258
|
+
* @param index offset to apply to the current query index (defaults to 1)
|
|
26259
|
+
*
|
|
26260
|
+
* @codeGenApi
|
|
26261
|
+
*/
|
|
26262
|
+
function ɵɵqueryAdvance(indexOffset = 1) {
|
|
26263
|
+
setCurrentQueryIndex(getCurrentQueryIndex() + indexOffset);
|
|
26264
|
+
}
|
|
26038
26265
|
|
|
26039
26266
|
/** Store a value in the `data` at a given `index`. */
|
|
26040
26267
|
function store(tView, lView, index, value) {
|
|
@@ -30062,7 +30289,7 @@ class Version {
|
|
|
30062
30289
|
/**
|
|
30063
30290
|
* @publicApi
|
|
30064
30291
|
*/
|
|
30065
|
-
const VERSION = new Version('17.2.0-next.
|
|
30292
|
+
const VERSION = new Version('17.2.0-next.1');
|
|
30066
30293
|
|
|
30067
30294
|
/*
|
|
30068
30295
|
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
@@ -30194,7 +30421,7 @@ class Compiler {
|
|
|
30194
30421
|
*
|
|
30195
30422
|
* @publicApi
|
|
30196
30423
|
*/
|
|
30197
|
-
const COMPILER_OPTIONS = new InjectionToken('compilerOptions');
|
|
30424
|
+
const COMPILER_OPTIONS = new InjectionToken(ngDevMode ? 'compilerOptions' : '');
|
|
30198
30425
|
/**
|
|
30199
30426
|
* A factory for creating a Compiler
|
|
30200
30427
|
*
|
|
@@ -31519,7 +31746,7 @@ let _testabilityGetter;
|
|
|
31519
31746
|
*
|
|
31520
31747
|
* @publicApi
|
|
31521
31748
|
*/
|
|
31522
|
-
const APP_INITIALIZER = new InjectionToken('Application Initializer');
|
|
31749
|
+
const APP_INITIALIZER = new InjectionToken(ngDevMode ? 'Application Initializer' : '');
|
|
31523
31750
|
/**
|
|
31524
31751
|
* A class that reflects the state of running {@link APP_INITIALIZER} functions.
|
|
31525
31752
|
*
|
|
@@ -31594,7 +31821,7 @@ class ApplicationInitStatus {
|
|
|
31594
31821
|
*
|
|
31595
31822
|
* @publicApi
|
|
31596
31823
|
*/
|
|
31597
|
-
const APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');
|
|
31824
|
+
const APP_BOOTSTRAP_LISTENER = new InjectionToken(ngDevMode ? 'appBootstrapListener' : '');
|
|
31598
31825
|
function compileNgModuleFactory(injector, options, moduleType) {
|
|
31599
31826
|
ngDevMode && assertNgModuleType(moduleType);
|
|
31600
31827
|
const moduleFactory = new NgModuleFactory(moduleType);
|
|
@@ -32268,7 +32495,7 @@ function getGlobalLocale() {
|
|
|
32268
32495
|
*
|
|
32269
32496
|
* @publicApi
|
|
32270
32497
|
*/
|
|
32271
|
-
const LOCALE_ID = new InjectionToken('LocaleId', {
|
|
32498
|
+
const LOCALE_ID = new InjectionToken(ngDevMode ? 'LocaleId' : '', {
|
|
32272
32499
|
providedIn: 'root',
|
|
32273
32500
|
factory: () => inject(LOCALE_ID, InjectFlags.Optional | InjectFlags.SkipSelf) || getGlobalLocale(),
|
|
32274
32501
|
});
|
|
@@ -32310,7 +32537,7 @@ const LOCALE_ID = new InjectionToken('LocaleId', {
|
|
|
32310
32537
|
*
|
|
32311
32538
|
* @publicApi
|
|
32312
32539
|
*/
|
|
32313
|
-
const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
|
|
32540
|
+
const DEFAULT_CURRENCY_CODE = new InjectionToken(ngDevMode ? 'DefaultCurrencyCode' : '', {
|
|
32314
32541
|
providedIn: 'root',
|
|
32315
32542
|
factory: () => USD_CURRENCY_CODE,
|
|
32316
32543
|
});
|
|
@@ -32338,7 +32565,7 @@ const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
|
|
|
32338
32565
|
*
|
|
32339
32566
|
* @publicApi
|
|
32340
32567
|
*/
|
|
32341
|
-
const TRANSLATIONS = new InjectionToken('Translations');
|
|
32568
|
+
const TRANSLATIONS = new InjectionToken(ngDevMode ? 'Translations' : '');
|
|
32342
32569
|
/**
|
|
32343
32570
|
* Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
|
|
32344
32571
|
* `xlf` or `xlf2`.
|
|
@@ -32360,7 +32587,7 @@ const TRANSLATIONS = new InjectionToken('Translations');
|
|
|
32360
32587
|
*
|
|
32361
32588
|
* @publicApi
|
|
32362
32589
|
*/
|
|
32363
|
-
const TRANSLATIONS_FORMAT = new InjectionToken('TranslationsFormat');
|
|
32590
|
+
const TRANSLATIONS_FORMAT = new InjectionToken(ngDevMode ? 'TranslationsFormat' : '');
|
|
32364
32591
|
/**
|
|
32365
32592
|
* Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
|
|
32366
32593
|
* that the compiler should use in case of missing translations:
|
|
@@ -32397,7 +32624,7 @@ var MissingTranslationStrategy;
|
|
|
32397
32624
|
* `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
|
|
32398
32625
|
* entire class tree-shakeable.
|
|
32399
32626
|
*/
|
|
32400
|
-
const PLATFORM_DESTROY_LISTENERS = new InjectionToken('PlatformDestroyListeners');
|
|
32627
|
+
const PLATFORM_DESTROY_LISTENERS = new InjectionToken(ngDevMode ? 'PlatformDestroyListeners' : '');
|
|
32401
32628
|
/**
|
|
32402
32629
|
* The Angular platform is the entry point for Angular on a web page.
|
|
32403
32630
|
* Each page has exactly one platform. Services (such as reflection) which are common
|
|
@@ -32554,7 +32781,7 @@ let _platformInjector = null;
|
|
|
32554
32781
|
* Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
|
|
32555
32782
|
* one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
|
|
32556
32783
|
*/
|
|
32557
|
-
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
32784
|
+
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken(ngDevMode ? 'AllowMultipleToken' : '');
|
|
32558
32785
|
/**
|
|
32559
32786
|
* Creates a platform.
|
|
32560
32787
|
* Platforms must be created on launch using this function.
|
|
@@ -34182,24 +34409,56 @@ class ChangeDetectionSchedulerImpl {
|
|
|
34182
34409
|
if (this.pendingRenderTaskId !== null)
|
|
34183
34410
|
return;
|
|
34184
34411
|
this.pendingRenderTaskId = this.taskService.add();
|
|
34185
|
-
|
|
34186
|
-
|
|
34187
|
-
|
|
34188
|
-
|
|
34189
|
-
|
|
34190
|
-
|
|
34191
|
-
|
|
34192
|
-
|
|
34193
|
-
|
|
34194
|
-
|
|
34195
|
-
|
|
34196
|
-
|
|
34197
|
-
|
|
34198
|
-
|
|
34199
|
-
|
|
34200
|
-
|
|
34412
|
+
this.raceTimeoutAndRequestAnimationFrame();
|
|
34413
|
+
}
|
|
34414
|
+
/**
|
|
34415
|
+
* Run change detection after the first of setTimeout and requestAnimationFrame resolves.
|
|
34416
|
+
*
|
|
34417
|
+
* - `requestAnimationFrame` ensures that change detection runs ahead of a browser repaint.
|
|
34418
|
+
* This ensures that the create and update passes of a change detection always happen
|
|
34419
|
+
* in the same frame.
|
|
34420
|
+
* - When the browser is resource-starved, `rAF` can execute _before_ a `setTimeout` because
|
|
34421
|
+
* rendering is a very high priority process. This means that `setTimeout` cannot guarantee
|
|
34422
|
+
* same-frame create and update pass, when `setTimeout` is used to schedule the update phase.
|
|
34423
|
+
* - While `rAF` gives us the desirable same-frame updates, it has two limitations that
|
|
34424
|
+
* prevent it from being used alone. First, it does not run in background tabs, which would
|
|
34425
|
+
* prevent Angular from initializing an application when opened in a new tab (for example).
|
|
34426
|
+
* Second, repeated calls to requestAnimationFrame will execute at the refresh rate of the
|
|
34427
|
+
* hardware (~16ms for a 60Hz display). This would cause significant slowdown of tests that
|
|
34428
|
+
* are written with several updates and asserts in the form of "update; await stable; assert;".
|
|
34429
|
+
* - Both `setTimeout` and `rAF` are able to "coalesce" several events from a single user
|
|
34430
|
+
* interaction into a single change detection. Importantly, this reduces view tree traversals when
|
|
34431
|
+
* compared to an alternative timing mechanism like `queueMicrotask`, where change detection would
|
|
34432
|
+
* then be interleaves between each event.
|
|
34433
|
+
*
|
|
34434
|
+
* By running change detection after the first of `setTimeout` and `rAF` to execute, we get the
|
|
34435
|
+
* best of both worlds.
|
|
34436
|
+
*/
|
|
34437
|
+
async raceTimeoutAndRequestAnimationFrame() {
|
|
34438
|
+
const timeout = new Promise(resolve => setTimeout(resolve));
|
|
34439
|
+
const rAF = typeof _global['requestAnimationFrame'] === 'function' ?
|
|
34440
|
+
new Promise(resolve => requestAnimationFrame(() => resolve())) :
|
|
34441
|
+
null;
|
|
34442
|
+
await Promise.race([timeout, rAF]);
|
|
34443
|
+
this.tick();
|
|
34444
|
+
}
|
|
34445
|
+
tick() {
|
|
34446
|
+
try {
|
|
34447
|
+
if (!this.appRef.destroyed) {
|
|
34448
|
+
this.appRef.tick();
|
|
34201
34449
|
}
|
|
34202
|
-
}
|
|
34450
|
+
}
|
|
34451
|
+
finally {
|
|
34452
|
+
// If this is the last task, the service will synchronously emit a stable notification. If
|
|
34453
|
+
// there is a subscriber that then acts in a way that tries to notify the scheduler again,
|
|
34454
|
+
// we need to be able to respond to schedule a new change detection. Therefore, we should
|
|
34455
|
+
// clear the task ID before removing it from the pending tasks (or the tasks service should
|
|
34456
|
+
// not synchronously emit stable, similar to how Zone stableness only happens if it's still
|
|
34457
|
+
// stable after a microtask).
|
|
34458
|
+
const taskId = this.pendingRenderTaskId;
|
|
34459
|
+
this.pendingRenderTaskId = null;
|
|
34460
|
+
this.taskService.remove(taskId);
|
|
34461
|
+
}
|
|
34203
34462
|
}
|
|
34204
34463
|
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(t) { return new (t || ChangeDetectionSchedulerImpl)(); }; }
|
|
34205
34464
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ChangeDetectionSchedulerImpl, factory: ChangeDetectionSchedulerImpl.ɵfac, providedIn: 'root' }); }
|
|
@@ -35267,5 +35526,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
35267
35526
|
* Generated bundle index. Do not edit.
|
|
35268
35527
|
*/
|
|
35269
35528
|
|
|
35270
|
-
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, ɵɵcontentQuerySignal, ɵɵ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, ɵɵqueryAdvance, ɵɵ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, ɵɵviewQuerySignal };
|
|
35529
|
+
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, ɵɵcontentQuerySignal, ɵɵ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, ɵɵqueryAdvance, ɵɵ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, ɵɵviewQuerySignal };
|
|
35271
35530
|
//# sourceMappingURL=core.mjs.map
|