@angular/core 19.1.0-next.3 → 19.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/fesm2022/core.mjs +516 -266
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -24
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +5 -5
- package/index.d.ts +169 -17
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/apply_import_manager-6508401d.js +732 -0
- package/schematics/bundles/{checker-228cb8a8.js → checker-24b68d23.js} +75 -27
- package/schematics/bundles/cleanup-unused-imports.js +295 -0
- package/schematics/bundles/{compiler_host-fc806dbe.js → compiler_host-5f693799.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +3 -3
- package/schematics/bundles/imports-abe29092.js +1 -1
- package/schematics/bundles/{combine_units-5d6a7099.js → index-767e341d.js} +10 -723
- package/schematics/bundles/index-b1033cf0.js +30 -0
- package/schematics/bundles/inject-migration.js +3 -3
- package/schematics/bundles/leading_space-d190b83b.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-d02c6750.js → migrate_ts_type_references-bc7d8784.js} +29 -28
- package/schematics/bundles/nodes-a9f0b985.js +1 -1
- package/schematics/bundles/output-migration.js +26 -25
- package/schematics/bundles/pending-tasks.js +3 -3
- package/schematics/bundles/{program-1591ec8f.js → program-c810a4c2.js} +81 -40
- package/schematics/bundles/project_tsconfig_paths-e9ccccbf.js +1 -1
- package/schematics/bundles/provide-initializer.js +3 -3
- package/schematics/bundles/route-lazy-loading.js +3 -3
- package/schematics/bundles/signal-input-migration.js +31 -30
- package/schematics/bundles/signal-queries-migration.js +48 -47
- package/schematics/bundles/signals.js +6 -5
- package/schematics/bundles/standalone-migration.js +9 -25
- package/schematics/collection.json +5 -0
- package/schematics/ng-generate/cleanup-unused-imports/schema.json +7 -0
- package/testing/index.d.ts +1 -1
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.1.0-
|
|
2
|
+
* @license Angular v19.1.0-rc.0
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -273,6 +273,7 @@ function ngDevModeResetPerfCounters() {
|
|
|
273
273
|
dehydratedViewsRemoved: 0,
|
|
274
274
|
dehydratedViewsCleanupRuns: 0,
|
|
275
275
|
componentsSkippedHydration: 0,
|
|
276
|
+
deferBlocksWithIncrementalHydration: 0,
|
|
276
277
|
};
|
|
277
278
|
// Make sure to refer to ngDevMode as ['ngDevMode'] for closure.
|
|
278
279
|
const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;
|
|
@@ -1714,8 +1715,7 @@ function getPipeDef$1(type) {
|
|
|
1714
1715
|
*/
|
|
1715
1716
|
function isStandalone(type) {
|
|
1716
1717
|
const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
|
|
1717
|
-
|
|
1718
|
-
return def !== null ? def.standalone : false;
|
|
1718
|
+
return def !== null && def.standalone;
|
|
1719
1719
|
}
|
|
1720
1720
|
|
|
1721
1721
|
/**
|
|
@@ -2902,6 +2902,7 @@ const ON_DESTROY_HOOKS = 21;
|
|
|
2902
2902
|
const EFFECTS_TO_SCHEDULE = 22;
|
|
2903
2903
|
const EFFECTS = 23;
|
|
2904
2904
|
const REACTIVE_TEMPLATE_CONSUMER = 24;
|
|
2905
|
+
const AFTER_RENDER_SEQUENCES_TO_ADD = 25;
|
|
2905
2906
|
/**
|
|
2906
2907
|
* Size of LView's header. Necessary to adjust for it when setting slots.
|
|
2907
2908
|
*
|
|
@@ -2909,7 +2910,7 @@ const REACTIVE_TEMPLATE_CONSUMER = 24;
|
|
|
2909
2910
|
* instruction index into `LView` index. All other indexes should be in the `LView` index space and
|
|
2910
2911
|
* there should be no need to refer to `HEADER_OFFSET` anywhere else.
|
|
2911
2912
|
*/
|
|
2912
|
-
const HEADER_OFFSET =
|
|
2913
|
+
const HEADER_OFFSET = 26;
|
|
2913
2914
|
|
|
2914
2915
|
/**
|
|
2915
2916
|
* Special location which allows easy identification of type. If we have an array which was
|
|
@@ -2984,6 +2985,7 @@ function hasI18n(lView) {
|
|
|
2984
2985
|
return (lView[FLAGS] & 32 /* LViewFlags.HasI18n */) === 32 /* LViewFlags.HasI18n */;
|
|
2985
2986
|
}
|
|
2986
2987
|
function isDestroyed(lView) {
|
|
2988
|
+
// Determines whether a given LView is marked as destroyed.
|
|
2987
2989
|
return (lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;
|
|
2988
2990
|
}
|
|
2989
2991
|
|
|
@@ -3429,7 +3431,7 @@ function requiresRefreshOrTraversal(lView) {
|
|
|
3429
3431
|
* parents above.
|
|
3430
3432
|
*/
|
|
3431
3433
|
function updateAncestorTraversalFlagsOnAttach(lView) {
|
|
3432
|
-
lView[ENVIRONMENT].changeDetectionScheduler?.notify(
|
|
3434
|
+
lView[ENVIRONMENT].changeDetectionScheduler?.notify(8 /* NotificationSource.ViewAttached */);
|
|
3433
3435
|
if (lView[FLAGS] & 64 /* LViewFlags.Dirty */) {
|
|
3434
3436
|
lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;
|
|
3435
3437
|
}
|
|
@@ -3464,7 +3466,7 @@ function markAncestorsForTraversal(lView) {
|
|
|
3464
3466
|
* Stores a LView-specific destroy callback.
|
|
3465
3467
|
*/
|
|
3466
3468
|
function storeLViewOnDestroy(lView, onDestroyCallback) {
|
|
3467
|
-
if ((lView
|
|
3469
|
+
if (isDestroyed(lView)) {
|
|
3468
3470
|
throw new RuntimeError(911 /* RuntimeErrorCode.VIEW_ALREADY_DESTROYED */, ngDevMode && 'View has already been destroyed.');
|
|
3469
3471
|
}
|
|
3470
3472
|
if (lView[ON_DESTROY_HOOKS] === null) {
|
|
@@ -6138,7 +6140,7 @@ class PendingTasks {
|
|
|
6138
6140
|
return;
|
|
6139
6141
|
}
|
|
6140
6142
|
// Notifying the scheduler will hold application stability open until the next tick.
|
|
6141
|
-
this.scheduler.notify(
|
|
6143
|
+
this.scheduler.notify(11 /* NotificationSource.PendingTaskRemoved */);
|
|
6142
6144
|
this.internalPendingTasks.remove(taskId);
|
|
6143
6145
|
};
|
|
6144
6146
|
}
|
|
@@ -6180,7 +6182,8 @@ class PendingTasks {
|
|
|
6180
6182
|
}
|
|
6181
6183
|
|
|
6182
6184
|
class EventEmitter_ extends Subject {
|
|
6183
|
-
|
|
6185
|
+
// tslint:disable-next-line:require-internal-with-underscore
|
|
6186
|
+
__isAsync;
|
|
6184
6187
|
destroyRef = undefined;
|
|
6185
6188
|
pendingTasks = undefined;
|
|
6186
6189
|
constructor(isAsync = false) {
|
|
@@ -6516,7 +6519,7 @@ class NgZone {
|
|
|
6516
6519
|
* Executes the `fn` function synchronously within the Angular zone as a task and returns value
|
|
6517
6520
|
* returned by the function.
|
|
6518
6521
|
*
|
|
6519
|
-
* Running functions via `
|
|
6522
|
+
* Running functions via `runTask` allows you to reenter Angular zone from a task that was executed
|
|
6520
6523
|
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
|
|
6521
6524
|
*
|
|
6522
6525
|
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
@@ -8586,6 +8589,23 @@ function assertNotInReactiveContext(debugFn, extraContext) {
|
|
|
8586
8589
|
}
|
|
8587
8590
|
}
|
|
8588
8591
|
|
|
8592
|
+
class ViewContext {
|
|
8593
|
+
view;
|
|
8594
|
+
node;
|
|
8595
|
+
constructor(view, node) {
|
|
8596
|
+
this.view = view;
|
|
8597
|
+
this.node = node;
|
|
8598
|
+
}
|
|
8599
|
+
/**
|
|
8600
|
+
* @internal
|
|
8601
|
+
* @nocollapse
|
|
8602
|
+
*/
|
|
8603
|
+
static __NG_ELEMENT_ID__ = injectViewContext;
|
|
8604
|
+
}
|
|
8605
|
+
function injectViewContext() {
|
|
8606
|
+
return new ViewContext(getLView(), getCurrentTNode());
|
|
8607
|
+
}
|
|
8608
|
+
|
|
8589
8609
|
/**
|
|
8590
8610
|
* The phase to run an `afterRender` or `afterNextRender` callback in.
|
|
8591
8611
|
*
|
|
@@ -8716,21 +8736,32 @@ class AfterRenderImpl {
|
|
|
8716
8736
|
this.sequences.add(sequence);
|
|
8717
8737
|
}
|
|
8718
8738
|
if (this.deferredRegistrations.size > 0) {
|
|
8719
|
-
this.scheduler.notify(
|
|
8739
|
+
this.scheduler.notify(7 /* NotificationSource.RenderHook */);
|
|
8720
8740
|
}
|
|
8721
8741
|
this.deferredRegistrations.clear();
|
|
8722
8742
|
}
|
|
8723
8743
|
register(sequence) {
|
|
8724
|
-
|
|
8725
|
-
|
|
8726
|
-
//
|
|
8727
|
-
|
|
8728
|
-
|
|
8744
|
+
const { view } = sequence;
|
|
8745
|
+
if (view !== undefined) {
|
|
8746
|
+
// Delay adding it to the manager, add it to the view instead.
|
|
8747
|
+
(view[AFTER_RENDER_SEQUENCES_TO_ADD] ??= []).push(sequence);
|
|
8748
|
+
// Mark the view for traversal to ensure we eventually schedule the afterNextRender.
|
|
8749
|
+
markAncestorsForTraversal(view);
|
|
8750
|
+
view[FLAGS] |= 8192 /* LViewFlags.HasChildViewsToRefresh */;
|
|
8751
|
+
}
|
|
8752
|
+
else if (!this.executing) {
|
|
8753
|
+
this.addSequence(sequence);
|
|
8729
8754
|
}
|
|
8730
8755
|
else {
|
|
8731
8756
|
this.deferredRegistrations.add(sequence);
|
|
8732
8757
|
}
|
|
8733
8758
|
}
|
|
8759
|
+
addSequence(sequence) {
|
|
8760
|
+
this.sequences.add(sequence);
|
|
8761
|
+
// Trigger an `ApplicationRef.tick()` if one is not already pending/running, because we have a
|
|
8762
|
+
// new render hook that needs to run.
|
|
8763
|
+
this.scheduler.notify(7 /* NotificationSource.RenderHook */);
|
|
8764
|
+
}
|
|
8734
8765
|
unregister(sequence) {
|
|
8735
8766
|
if (this.executing && this.sequences.has(sequence)) {
|
|
8736
8767
|
// We can't remove an `AfterRenderSequence` in the middle of iteration.
|
|
@@ -8760,6 +8791,7 @@ class AfterRenderImpl {
|
|
|
8760
8791
|
class AfterRenderSequence {
|
|
8761
8792
|
impl;
|
|
8762
8793
|
hooks;
|
|
8794
|
+
view;
|
|
8763
8795
|
once;
|
|
8764
8796
|
snapshot;
|
|
8765
8797
|
/**
|
|
@@ -8773,9 +8805,10 @@ class AfterRenderSequence {
|
|
|
8773
8805
|
*/
|
|
8774
8806
|
pipelinedValue = undefined;
|
|
8775
8807
|
unregisterOnDestroy;
|
|
8776
|
-
constructor(impl, hooks, once, destroyRef, snapshot = null) {
|
|
8808
|
+
constructor(impl, hooks, view, once, destroyRef, snapshot = null) {
|
|
8777
8809
|
this.impl = impl;
|
|
8778
8810
|
this.hooks = hooks;
|
|
8811
|
+
this.view = view;
|
|
8779
8812
|
this.once = once;
|
|
8780
8813
|
this.snapshot = snapshot;
|
|
8781
8814
|
this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
|
|
@@ -8793,6 +8826,10 @@ class AfterRenderSequence {
|
|
|
8793
8826
|
destroy() {
|
|
8794
8827
|
this.impl.unregister(this);
|
|
8795
8828
|
this.unregisterOnDestroy?.();
|
|
8829
|
+
const scheduled = this.view?.[AFTER_RENDER_SEQUENCES_TO_ADD];
|
|
8830
|
+
if (scheduled) {
|
|
8831
|
+
this.view[AFTER_RENDER_SEQUENCES_TO_ADD] = scheduled.filter((s) => s !== this);
|
|
8832
|
+
}
|
|
8796
8833
|
}
|
|
8797
8834
|
}
|
|
8798
8835
|
|
|
@@ -8843,7 +8880,8 @@ function afterRenderImpl(callbackOrSpec, injector, options, once) {
|
|
|
8843
8880
|
const tracing = injector.get(TracingService, null, { optional: true });
|
|
8844
8881
|
const hooks = options?.phase ?? AfterRenderPhase.MixedReadWrite;
|
|
8845
8882
|
const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
|
|
8846
|
-
const
|
|
8883
|
+
const viewContext = injector.get(ViewContext, null, { optional: true });
|
|
8884
|
+
const sequence = new AfterRenderSequence(manager.impl, getHooks(callbackOrSpec, hooks), viewContext?.view, once, destroyRef, tracing?.snapshot(null));
|
|
8847
8885
|
manager.impl.register(sequence);
|
|
8848
8886
|
return sequence;
|
|
8849
8887
|
}
|
|
@@ -9103,6 +9141,18 @@ function isDeferBlock(tView, tNode) {
|
|
|
9103
9141
|
}
|
|
9104
9142
|
return !!tDetails && isTDeferBlockDetails(tDetails);
|
|
9105
9143
|
}
|
|
9144
|
+
/**
|
|
9145
|
+
* Tracks debugging information about a trigger.
|
|
9146
|
+
* @param tView TView in which the trigger is declared.
|
|
9147
|
+
* @param tNode TNode on which the trigger is declared.
|
|
9148
|
+
* @param textRepresentation Text representation of the trigger to be used for debugging purposes.
|
|
9149
|
+
*/
|
|
9150
|
+
function trackTriggerForDebugging(tView, tNode, textRepresentation) {
|
|
9151
|
+
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
9152
|
+
tDetails.debug ??= {};
|
|
9153
|
+
tDetails.debug.triggers ??= new Set();
|
|
9154
|
+
tDetails.debug.triggers.add(textRepresentation);
|
|
9155
|
+
}
|
|
9106
9156
|
|
|
9107
9157
|
/*!
|
|
9108
9158
|
* @license
|
|
@@ -9303,9 +9353,11 @@ function getTriggerElement(triggerLView, triggerIndex) {
|
|
|
9303
9353
|
function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, registerFn, callback, type) {
|
|
9304
9354
|
const injector = initialLView[INJECTOR];
|
|
9305
9355
|
const zone = injector.get(NgZone);
|
|
9356
|
+
let poll;
|
|
9306
9357
|
function pollDomTrigger() {
|
|
9307
9358
|
// If the initial view was destroyed, we don't need to do anything.
|
|
9308
9359
|
if (isDestroyed(initialLView)) {
|
|
9360
|
+
poll.destroy();
|
|
9309
9361
|
return;
|
|
9310
9362
|
}
|
|
9311
9363
|
const lDetails = getLDeferBlockDetails(initialLView, tNode);
|
|
@@ -9313,14 +9365,16 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
|
|
|
9313
9365
|
// If the block was loaded before the trigger was resolved, we don't need to do anything.
|
|
9314
9366
|
if (renderedState !== DeferBlockInternalState.Initial &&
|
|
9315
9367
|
renderedState !== DeferBlockState.Placeholder) {
|
|
9368
|
+
poll.destroy();
|
|
9316
9369
|
return;
|
|
9317
9370
|
}
|
|
9318
9371
|
const triggerLView = getTriggerLView(initialLView, tNode, walkUpTimes);
|
|
9319
9372
|
// Keep polling until we resolve the trigger's LView.
|
|
9320
9373
|
if (!triggerLView) {
|
|
9321
|
-
|
|
9374
|
+
// Keep polling.
|
|
9322
9375
|
return;
|
|
9323
9376
|
}
|
|
9377
|
+
poll.destroy();
|
|
9324
9378
|
// It's possible that the trigger's view was destroyed before we resolved the trigger element.
|
|
9325
9379
|
if (isDestroyed(triggerLView)) {
|
|
9326
9380
|
return;
|
|
@@ -9347,7 +9401,7 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
|
|
|
9347
9401
|
storeTriggerCleanupFn(type, lDetails, cleanup);
|
|
9348
9402
|
}
|
|
9349
9403
|
// Begin polling for the trigger.
|
|
9350
|
-
|
|
9404
|
+
poll = afterRender({ read: pollDomTrigger }, { injector });
|
|
9351
9405
|
}
|
|
9352
9406
|
|
|
9353
9407
|
const DEFER_BLOCK_SSR_ID_ATTRIBUTE = 'ngb';
|
|
@@ -9557,7 +9611,6 @@ function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
|
|
|
9557
9611
|
const rootNgh = rootViewNgh ? `|${rootViewNgh}` : '';
|
|
9558
9612
|
const remainingNgh = isRootView ? componentViewNgh : rootNgh;
|
|
9559
9613
|
let data = {};
|
|
9560
|
-
let nghDeferData;
|
|
9561
9614
|
// An element might have an empty `ngh` attribute value (e.g. `<comp ngh="" />`),
|
|
9562
9615
|
// which means that no special annotations are required. Do not attempt to read
|
|
9563
9616
|
// from the TransferState in this case.
|
|
@@ -9565,7 +9618,6 @@ function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
|
|
|
9565
9618
|
const transferState = injector.get(TransferState, null, { optional: true });
|
|
9566
9619
|
if (transferState !== null) {
|
|
9567
9620
|
const nghData = transferState.get(NGH_DATA_KEY, []);
|
|
9568
|
-
nghDeferData = transferState.get(NGH_DEFER_BLOCKS_KEY, {});
|
|
9569
9621
|
// The nghAttrValue is always a number referencing an index
|
|
9570
9622
|
// in the hydration TransferState data.
|
|
9571
9623
|
data = nghData[Number(nghAttrValue)];
|
|
@@ -9725,6 +9777,13 @@ function markRNodeAsSkippedByHydration(node) {
|
|
|
9725
9777
|
patchHydrationInfo(node, { status: HydrationStatus.Skipped });
|
|
9726
9778
|
ngDevMode.componentsSkippedHydration++;
|
|
9727
9779
|
}
|
|
9780
|
+
function countBlocksSkippedByHydration(injector) {
|
|
9781
|
+
const transferState = injector.get(TransferState);
|
|
9782
|
+
const nghDeferData = transferState.get(NGH_DEFER_BLOCKS_KEY, {});
|
|
9783
|
+
if (ngDevMode) {
|
|
9784
|
+
ngDevMode.deferBlocksWithIncrementalHydration = Object.keys(nghDeferData).length;
|
|
9785
|
+
}
|
|
9786
|
+
}
|
|
9728
9787
|
function markRNodeAsHavingHydrationMismatch(node, expectedNodeDetails = null, actualNodeDetails = null) {
|
|
9729
9788
|
if (!ngDevMode) {
|
|
9730
9789
|
throw new Error('Calling `markRNodeAsMismatchedByHydration` in prod mode ' +
|
|
@@ -11656,7 +11715,7 @@ function detachViewFromDOM(tView, lView) {
|
|
|
11656
11715
|
// When we remove a view from the DOM, we need to rerun afterRender hooks
|
|
11657
11716
|
// We don't necessarily needs to run change detection. DOM removal only requires
|
|
11658
11717
|
// change detection if animations are enabled (this notification is handled by animations).
|
|
11659
|
-
lView[ENVIRONMENT].changeDetectionScheduler?.notify(
|
|
11718
|
+
lView[ENVIRONMENT].changeDetectionScheduler?.notify(9 /* NotificationSource.ViewDetachedFromDOM */);
|
|
11660
11719
|
applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);
|
|
11661
11720
|
}
|
|
11662
11721
|
/**
|
|
@@ -11840,13 +11899,14 @@ function detachView(lContainer, removeIndex) {
|
|
|
11840
11899
|
* @param lView The view to be destroyed.
|
|
11841
11900
|
*/
|
|
11842
11901
|
function destroyLView(tView, lView) {
|
|
11843
|
-
if (
|
|
11844
|
-
|
|
11845
|
-
|
|
11846
|
-
|
|
11847
|
-
|
|
11848
|
-
|
|
11902
|
+
if (isDestroyed(lView)) {
|
|
11903
|
+
return;
|
|
11904
|
+
}
|
|
11905
|
+
const renderer = lView[RENDERER];
|
|
11906
|
+
if (renderer.destroyNode) {
|
|
11907
|
+
applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
|
|
11849
11908
|
}
|
|
11909
|
+
destroyViewTree(lView);
|
|
11850
11910
|
}
|
|
11851
11911
|
/**
|
|
11852
11912
|
* Calls onDestroys hooks for all directives and pipes in a given view and then removes all
|
|
@@ -11857,7 +11917,7 @@ function destroyLView(tView, lView) {
|
|
|
11857
11917
|
* @param lView The LView to clean up
|
|
11858
11918
|
*/
|
|
11859
11919
|
function cleanUpView(tView, lView) {
|
|
11860
|
-
if (lView
|
|
11920
|
+
if (isDestroyed(lView)) {
|
|
11861
11921
|
return;
|
|
11862
11922
|
}
|
|
11863
11923
|
const prevConsumer = setActiveConsumer$1(null);
|
|
@@ -14642,6 +14702,15 @@ function collectNativeNodesInLContainer(lContainer, result) {
|
|
|
14642
14702
|
}
|
|
14643
14703
|
}
|
|
14644
14704
|
|
|
14705
|
+
function addAfterRenderSequencesForView(lView) {
|
|
14706
|
+
if (lView[AFTER_RENDER_SEQUENCES_TO_ADD] !== null) {
|
|
14707
|
+
for (const sequence of lView[AFTER_RENDER_SEQUENCES_TO_ADD]) {
|
|
14708
|
+
sequence.impl.addSequence(sequence);
|
|
14709
|
+
}
|
|
14710
|
+
lView[AFTER_RENDER_SEQUENCES_TO_ADD].length = 0;
|
|
14711
|
+
}
|
|
14712
|
+
}
|
|
14713
|
+
|
|
14645
14714
|
let freeConsumers = [];
|
|
14646
14715
|
/**
|
|
14647
14716
|
* Create a new template consumer pointing at the specified LView.
|
|
@@ -14843,9 +14912,9 @@ function checkNoChangesInternal(lView, mode, notifyErrorHandler = true) {
|
|
|
14843
14912
|
*/
|
|
14844
14913
|
function refreshView(tView, lView, templateFn, context) {
|
|
14845
14914
|
ngDevMode && assertEqual(isCreationMode(lView), false, 'Should be run in update mode');
|
|
14846
|
-
|
|
14847
|
-
if ((flags & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */)
|
|
14915
|
+
if (isDestroyed(lView))
|
|
14848
14916
|
return;
|
|
14917
|
+
const flags = lView[FLAGS];
|
|
14849
14918
|
// Check no changes mode is a dev only mode used to verify that bindings have not changed
|
|
14850
14919
|
// since they were assigned. We do not want to execute lifecycle hooks in that mode.
|
|
14851
14920
|
const isInCheckNoChangesPass = ngDevMode && isInCheckNoChangesMode();
|
|
@@ -14987,6 +15056,7 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
14987
15056
|
// no changes cycle, the component would be not be dirty for the next update pass. This would
|
|
14988
15057
|
// be different in production mode where the component dirty state is not reset.
|
|
14989
15058
|
if (!isInCheckNoChangesPass) {
|
|
15059
|
+
addAfterRenderSequencesForView(lView);
|
|
14990
15060
|
lView[FLAGS] &= ~(64 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);
|
|
14991
15061
|
}
|
|
14992
15062
|
}
|
|
@@ -15102,12 +15172,17 @@ function detectChangesInView(lView, mode) {
|
|
|
15102
15172
|
refreshView(tView, lView, tView.template, lView[CONTEXT]);
|
|
15103
15173
|
}
|
|
15104
15174
|
else if (flags & 8192 /* LViewFlags.HasChildViewsToRefresh */) {
|
|
15105
|
-
|
|
15175
|
+
if (!isInCheckNoChangesPass) {
|
|
15176
|
+
runEffectsInView(lView);
|
|
15177
|
+
}
|
|
15106
15178
|
detectChangesInEmbeddedViews(lView, 1 /* ChangeDetectionMode.Targeted */);
|
|
15107
15179
|
const components = tView.components;
|
|
15108
15180
|
if (components !== null) {
|
|
15109
15181
|
detectChangesInChildComponents(lView, components, 1 /* ChangeDetectionMode.Targeted */);
|
|
15110
15182
|
}
|
|
15183
|
+
if (!isInCheckNoChangesPass) {
|
|
15184
|
+
addAfterRenderSequencesForView(lView);
|
|
15185
|
+
}
|
|
15111
15186
|
}
|
|
15112
15187
|
}
|
|
15113
15188
|
/** Refreshes child components in the current view (update mode). */
|
|
@@ -15211,7 +15286,7 @@ class ViewRef$1 {
|
|
|
15211
15286
|
this._lView[CONTEXT] = value;
|
|
15212
15287
|
}
|
|
15213
15288
|
get destroyed() {
|
|
15214
|
-
return (this._lView
|
|
15289
|
+
return isDestroyed(this._lView);
|
|
15215
15290
|
}
|
|
15216
15291
|
destroy() {
|
|
15217
15292
|
if (this._appRef) {
|
|
@@ -16633,11 +16708,15 @@ function gatherDeferBlocksCommentNodes(doc, node) {
|
|
|
16633
16708
|
let currentNode;
|
|
16634
16709
|
const nodesByBlockId = new Map();
|
|
16635
16710
|
while ((currentNode = commentNodesIterator.nextNode())) {
|
|
16636
|
-
|
|
16637
|
-
const
|
|
16638
|
-
const
|
|
16639
|
-
if (
|
|
16640
|
-
|
|
16711
|
+
const nghPattern = 'ngh=';
|
|
16712
|
+
const content = currentNode?.textContent;
|
|
16713
|
+
const nghIdx = content?.indexOf(nghPattern) ?? -1;
|
|
16714
|
+
if (nghIdx > -1) {
|
|
16715
|
+
const nghValue = content.substring(nghIdx + nghPattern.length).trim();
|
|
16716
|
+
// Make sure the value has an expected format.
|
|
16717
|
+
ngDevMode &&
|
|
16718
|
+
assertEqual(nghValue.startsWith('d'), true, 'Invalid defer block id found in a comment node.');
|
|
16719
|
+
nodesByBlockId.set(nghValue, currentNode);
|
|
16641
16720
|
}
|
|
16642
16721
|
}
|
|
16643
16722
|
return nodesByBlockId;
|
|
@@ -18088,7 +18167,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
18088
18167
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
18089
18168
|
if (rootSelectorOrNode) {
|
|
18090
18169
|
// The placeholder will be replaced with the actual version at build time.
|
|
18091
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.1.0-
|
|
18170
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.1.0-rc.0']);
|
|
18092
18171
|
}
|
|
18093
18172
|
else {
|
|
18094
18173
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -19687,7 +19766,6 @@ class NgModuleRef extends NgModuleRef$1 {
|
|
|
19687
19766
|
_parent;
|
|
19688
19767
|
// tslint:disable-next-line:require-internal-with-underscore
|
|
19689
19768
|
_bootstrapComponents = [];
|
|
19690
|
-
// tslint:disable-next-line:require-internal-with-underscore
|
|
19691
19769
|
_r3Injector;
|
|
19692
19770
|
instance;
|
|
19693
19771
|
destroyCbs = [];
|
|
@@ -21175,7 +21253,8 @@ class CachedInjectorService {
|
|
|
21175
21253
|
*
|
|
21176
21254
|
* This token is only injected in devMode
|
|
21177
21255
|
*/
|
|
21178
|
-
const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR =
|
|
21256
|
+
const DEFER_BLOCK_DEPENDENCY_INTERCEPTOR =
|
|
21257
|
+
/* @__PURE__ */ new InjectionToken('DEFER_BLOCK_DEPENDENCY_INTERCEPTOR');
|
|
21179
21258
|
/**
|
|
21180
21259
|
* **INTERNAL**, token used for configuring defer block behavior.
|
|
21181
21260
|
*/
|
|
@@ -21285,15 +21364,8 @@ function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling
|
|
|
21285
21364
|
}
|
|
21286
21365
|
}
|
|
21287
21366
|
function findMatchingDehydratedViewForDeferBlock(lContainer, lDetails) {
|
|
21288
|
-
// TODO(incremental-hydration): extract into a separate util function and use in relevant places.
|
|
21289
|
-
const views = lContainer[DEHYDRATED_VIEWS];
|
|
21290
|
-
if (views === null || views.length === 0) {
|
|
21291
|
-
return null;
|
|
21292
|
-
}
|
|
21293
21367
|
// Find matching view based on serialized defer block state.
|
|
21294
|
-
|
|
21295
|
-
// dehydrated views to see if there is anything missing in this function.
|
|
21296
|
-
return (views.find((view) => view.data[DEFER_BLOCK_STATE$1] === lDetails[DEFER_BLOCK_STATE]) ?? null);
|
|
21368
|
+
return (lContainer[DEHYDRATED_VIEWS]?.find((view) => view.data[DEFER_BLOCK_STATE$1] === lDetails[DEFER_BLOCK_STATE]) ?? null);
|
|
21297
21369
|
}
|
|
21298
21370
|
/**
|
|
21299
21371
|
* Applies changes to the DOM to reflect a given state.
|
|
@@ -21325,30 +21397,22 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
|
|
|
21325
21397
|
}
|
|
21326
21398
|
}
|
|
21327
21399
|
const dehydratedView = findMatchingDehydratedViewForDeferBlock(lContainer, lDetails);
|
|
21328
|
-
//
|
|
21329
|
-
//
|
|
21330
|
-
|
|
21331
|
-
|
|
21332
|
-
|
|
21333
|
-
|
|
21334
|
-
|
|
21335
|
-
|
|
21336
|
-
|
|
21337
|
-
lContainer[DEHYDRATED_VIEWS] = null;
|
|
21338
|
-
const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, {
|
|
21339
|
-
injector,
|
|
21340
|
-
dehydratedView,
|
|
21341
|
-
});
|
|
21342
|
-
addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
|
|
21343
|
-
markViewDirty(embeddedLView, 2 /* NotificationSource.DeferBlockStateUpdate */);
|
|
21344
|
-
}
|
|
21400
|
+
// Erase dehydrated view info, so that it's not removed later
|
|
21401
|
+
// by post-hydration cleanup process.
|
|
21402
|
+
lContainer[DEHYDRATED_VIEWS] = null;
|
|
21403
|
+
const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, {
|
|
21404
|
+
injector,
|
|
21405
|
+
dehydratedView,
|
|
21406
|
+
});
|
|
21407
|
+
addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
|
|
21408
|
+
markViewDirty(embeddedLView, 2 /* NotificationSource.DeferBlockStateUpdate */);
|
|
21345
21409
|
// TODO(incremental-hydration):
|
|
21346
21410
|
// - what if we had some views in `lContainer[DEHYDRATED_VIEWS]`, but
|
|
21347
21411
|
// we didn't find a view that matches the expected state?
|
|
21348
21412
|
// - for example, handle a situation when a block was in the "completed" state
|
|
21349
21413
|
// on the server, but the loading failing on the client. How do we reconcile and cleanup?
|
|
21350
|
-
|
|
21351
|
-
|
|
21414
|
+
if ((newState === DeferBlockState.Complete || newState === DeferBlockState.Error) &&
|
|
21415
|
+
Array.isArray(lDetails[ON_COMPLETE_FNS])) {
|
|
21352
21416
|
for (const callback of lDetails[ON_COMPLETE_FNS]) {
|
|
21353
21417
|
callback();
|
|
21354
21418
|
}
|
|
@@ -21582,7 +21646,6 @@ class Console {
|
|
|
21582
21646
|
}
|
|
21583
21647
|
// Note: for reporting errors use `DOM.logError()` as it is platform specific
|
|
21584
21648
|
warn(message) {
|
|
21585
|
-
// tslint:disable-next-line:no-console
|
|
21586
21649
|
console.warn(message);
|
|
21587
21650
|
}
|
|
21588
21651
|
static ɵfac = function Console_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Console)(); };
|
|
@@ -21869,6 +21932,162 @@ function detectChanges(component) {
|
|
|
21869
21932
|
detectChangesInternal(view);
|
|
21870
21933
|
}
|
|
21871
21934
|
|
|
21935
|
+
/**
|
|
21936
|
+
* Retrieves all defer blocks in a given LView.
|
|
21937
|
+
*
|
|
21938
|
+
* @param lView lView with defer blocks
|
|
21939
|
+
* @param deferBlocks defer block aggregator array
|
|
21940
|
+
*/
|
|
21941
|
+
function getDeferBlocks$1(lView, deferBlocks) {
|
|
21942
|
+
const tView = lView[TVIEW];
|
|
21943
|
+
for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {
|
|
21944
|
+
if (isLContainer(lView[i])) {
|
|
21945
|
+
const lContainer = lView[i];
|
|
21946
|
+
// An LContainer may represent an instance of a defer block, in which case
|
|
21947
|
+
// we store it as a result. Otherwise, keep iterating over LContainer views and
|
|
21948
|
+
// look for defer blocks.
|
|
21949
|
+
const isLast = i === tView.bindingStartIndex - 1;
|
|
21950
|
+
if (!isLast) {
|
|
21951
|
+
const tNode = tView.data[i];
|
|
21952
|
+
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
21953
|
+
if (isTDeferBlockDetails(tDetails)) {
|
|
21954
|
+
deferBlocks.push({ lContainer, lView, tNode, tDetails });
|
|
21955
|
+
// This LContainer represents a defer block, so we exit
|
|
21956
|
+
// this iteration and don't inspect views in this LContainer.
|
|
21957
|
+
continue;
|
|
21958
|
+
}
|
|
21959
|
+
}
|
|
21960
|
+
for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
|
|
21961
|
+
getDeferBlocks$1(lContainer[i], deferBlocks);
|
|
21962
|
+
}
|
|
21963
|
+
}
|
|
21964
|
+
else if (isLView(lView[i])) {
|
|
21965
|
+
// This is a component, enter the `getDeferBlocks` recursively.
|
|
21966
|
+
getDeferBlocks$1(lView[i], deferBlocks);
|
|
21967
|
+
}
|
|
21968
|
+
}
|
|
21969
|
+
}
|
|
21970
|
+
|
|
21971
|
+
/*!
|
|
21972
|
+
* @license
|
|
21973
|
+
* Copyright Google LLC All Rights Reserved.
|
|
21974
|
+
*
|
|
21975
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
21976
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
21977
|
+
*/
|
|
21978
|
+
/**
|
|
21979
|
+
* Gets all of the `@defer` blocks that are present inside the specified DOM node.
|
|
21980
|
+
* @param node Node in which to look for `@defer` blocks.
|
|
21981
|
+
*
|
|
21982
|
+
* @publicApi
|
|
21983
|
+
*/
|
|
21984
|
+
function getDeferBlocks(node) {
|
|
21985
|
+
const results = [];
|
|
21986
|
+
const lView = getLContext(node)?.lView;
|
|
21987
|
+
if (lView) {
|
|
21988
|
+
findDeferBlocks(node, lView, results);
|
|
21989
|
+
}
|
|
21990
|
+
return results;
|
|
21991
|
+
}
|
|
21992
|
+
/**
|
|
21993
|
+
* Finds all the `@defer` blocks inside a specific node and view.
|
|
21994
|
+
* @param node Node in which to search for blocks.
|
|
21995
|
+
* @param lView View within the node in which to search for blocks.
|
|
21996
|
+
* @param results Array to which to add blocks once they're found.
|
|
21997
|
+
*/
|
|
21998
|
+
function findDeferBlocks(node, lView, results) {
|
|
21999
|
+
const registry = lView[INJECTOR].get(DEHYDRATED_BLOCK_REGISTRY, null, { optional: true });
|
|
22000
|
+
const blocks = [];
|
|
22001
|
+
getDeferBlocks$1(lView, blocks);
|
|
22002
|
+
for (const details of blocks) {
|
|
22003
|
+
const native = getNativeByTNode(details.tNode, details.lView);
|
|
22004
|
+
const lDetails = getLDeferBlockDetails(details.lView, details.tNode);
|
|
22005
|
+
// The LView from `getLContext` might be the view the element is placed in.
|
|
22006
|
+
// Filter out defer blocks that aren't inside the specified root node.
|
|
22007
|
+
if (!node.contains(native)) {
|
|
22008
|
+
continue;
|
|
22009
|
+
}
|
|
22010
|
+
const tDetails = details.tDetails;
|
|
22011
|
+
const renderedLView = getRendererLView(details);
|
|
22012
|
+
const rootNodes = [];
|
|
22013
|
+
if (renderedLView !== null) {
|
|
22014
|
+
collectNativeNodes(renderedLView[TVIEW], renderedLView, renderedLView[TVIEW].firstChild, rootNodes);
|
|
22015
|
+
}
|
|
22016
|
+
const data = {
|
|
22017
|
+
state: stringifyState(lDetails[DEFER_BLOCK_STATE]),
|
|
22018
|
+
incrementalHydrationState: inferHydrationState(tDetails, lDetails, registry),
|
|
22019
|
+
hasErrorBlock: tDetails.errorTmplIndex !== null,
|
|
22020
|
+
loadingBlock: {
|
|
22021
|
+
exists: tDetails.loadingTmplIndex !== null,
|
|
22022
|
+
minimumTime: tDetails.loadingBlockConfig?.[MINIMUM_SLOT] ?? null,
|
|
22023
|
+
afterTime: tDetails.loadingBlockConfig?.[LOADING_AFTER_SLOT] ?? null,
|
|
22024
|
+
},
|
|
22025
|
+
placeholderBlock: {
|
|
22026
|
+
exists: tDetails.placeholderTmplIndex !== null,
|
|
22027
|
+
minimumTime: tDetails.placeholderBlockConfig?.[MINIMUM_SLOT] ?? null,
|
|
22028
|
+
},
|
|
22029
|
+
triggers: tDetails.debug?.triggers ? Array.from(tDetails.debug.triggers).sort() : [],
|
|
22030
|
+
rootNodes,
|
|
22031
|
+
};
|
|
22032
|
+
results.push(data);
|
|
22033
|
+
// `getDeferBlocks` does not resolve nested defer blocks so we have to recurse manually.
|
|
22034
|
+
if (renderedLView !== null) {
|
|
22035
|
+
findDeferBlocks(node, renderedLView, results);
|
|
22036
|
+
}
|
|
22037
|
+
}
|
|
22038
|
+
}
|
|
22039
|
+
/**
|
|
22040
|
+
* Turns the `DeferBlockState` into a string which is more readable than the enum form.
|
|
22041
|
+
*
|
|
22042
|
+
* @param lDetails Information about the
|
|
22043
|
+
* @returns
|
|
22044
|
+
*/
|
|
22045
|
+
function stringifyState(state) {
|
|
22046
|
+
switch (state) {
|
|
22047
|
+
case DeferBlockState.Complete:
|
|
22048
|
+
return 'complete';
|
|
22049
|
+
case DeferBlockState.Loading:
|
|
22050
|
+
return 'loading';
|
|
22051
|
+
case DeferBlockState.Placeholder:
|
|
22052
|
+
return 'placeholder';
|
|
22053
|
+
case DeferBlockState.Error:
|
|
22054
|
+
return 'error';
|
|
22055
|
+
case DeferBlockInternalState.Initial:
|
|
22056
|
+
return 'initial';
|
|
22057
|
+
default:
|
|
22058
|
+
throw new Error(`Unrecognized state ${state}`);
|
|
22059
|
+
}
|
|
22060
|
+
}
|
|
22061
|
+
/**
|
|
22062
|
+
* Infers the hydration state of a specific defer block.
|
|
22063
|
+
* @param tDetails Static defer block information.
|
|
22064
|
+
* @param lDetails Instance defer block information.
|
|
22065
|
+
* @param registry Registry coordinating the hydration of defer blocks.
|
|
22066
|
+
*/
|
|
22067
|
+
function inferHydrationState(tDetails, lDetails, registry) {
|
|
22068
|
+
if (registry === null ||
|
|
22069
|
+
lDetails[SSR_UNIQUE_ID] === null ||
|
|
22070
|
+
tDetails.hydrateTriggers === null ||
|
|
22071
|
+
tDetails.hydrateTriggers.has(7 /* DeferBlockTrigger.Never */)) {
|
|
22072
|
+
return 'not-configured';
|
|
22073
|
+
}
|
|
22074
|
+
return registry.has(lDetails[SSR_UNIQUE_ID]) ? 'dehydrated' : 'hydrated';
|
|
22075
|
+
}
|
|
22076
|
+
/**
|
|
22077
|
+
* Gets the current LView that is rendered out in a defer block.
|
|
22078
|
+
* @param details Instance information about the block.
|
|
22079
|
+
*/
|
|
22080
|
+
function getRendererLView(details) {
|
|
22081
|
+
// Defer block containers can only ever contain one view.
|
|
22082
|
+
// If they're empty, it means that nothing is rendered.
|
|
22083
|
+
if (details.lContainer.length <= CONTAINER_HEADER_OFFSET) {
|
|
22084
|
+
return null;
|
|
22085
|
+
}
|
|
22086
|
+
const lView = details.lContainer[CONTAINER_HEADER_OFFSET];
|
|
22087
|
+
ngDevMode && assertLView(lView);
|
|
22088
|
+
return lView;
|
|
22089
|
+
}
|
|
22090
|
+
|
|
21872
22091
|
/**
|
|
21873
22092
|
* Discovers the dependencies of an injectable instance. Provides DI information about each
|
|
21874
22093
|
* dependency that the injectable was instantiated with, including where they were provided from.
|
|
@@ -22553,6 +22772,7 @@ const globalUtilsFunctions = {
|
|
|
22553
22772
|
'ɵgetInjectorMetadata': getInjectorMetadata,
|
|
22554
22773
|
'ɵsetProfiler': setProfiler,
|
|
22555
22774
|
'ɵgetSignalGraph': getSignalGraph,
|
|
22775
|
+
'ɵgetDeferBlocks': getDeferBlocks,
|
|
22556
22776
|
'getDirectiveMetadata': getDirectiveMetadata$1,
|
|
22557
22777
|
'getComponent': getComponent,
|
|
22558
22778
|
'getContext': getContext,
|
|
@@ -22882,6 +23102,77 @@ function isSubscribable(obj) {
|
|
|
22882
23102
|
return !!obj && typeof obj.subscribe === 'function';
|
|
22883
23103
|
}
|
|
22884
23104
|
|
|
23105
|
+
/**
|
|
23106
|
+
* A scheduler which manages the execution of effects.
|
|
23107
|
+
*/
|
|
23108
|
+
class EffectScheduler {
|
|
23109
|
+
/** @nocollapse */
|
|
23110
|
+
static ɵprov = /** @pureOrBreakMyCode */ /* @__PURE__ */ ɵɵdefineInjectable({
|
|
23111
|
+
token: EffectScheduler,
|
|
23112
|
+
providedIn: 'root',
|
|
23113
|
+
factory: () => new ZoneAwareEffectScheduler(),
|
|
23114
|
+
});
|
|
23115
|
+
}
|
|
23116
|
+
/**
|
|
23117
|
+
* A wrapper around `ZoneAwareQueueingScheduler` that schedules flushing via the microtask queue
|
|
23118
|
+
* when.
|
|
23119
|
+
*/
|
|
23120
|
+
class ZoneAwareEffectScheduler {
|
|
23121
|
+
queuedEffectCount = 0;
|
|
23122
|
+
queues = new Map();
|
|
23123
|
+
schedule(handle) {
|
|
23124
|
+
this.enqueue(handle);
|
|
23125
|
+
}
|
|
23126
|
+
remove(handle) {
|
|
23127
|
+
const zone = handle.zone;
|
|
23128
|
+
const queue = this.queues.get(zone);
|
|
23129
|
+
if (!queue.has(handle)) {
|
|
23130
|
+
return;
|
|
23131
|
+
}
|
|
23132
|
+
queue.delete(handle);
|
|
23133
|
+
this.queuedEffectCount--;
|
|
23134
|
+
}
|
|
23135
|
+
enqueue(handle) {
|
|
23136
|
+
const zone = handle.zone;
|
|
23137
|
+
if (!this.queues.has(zone)) {
|
|
23138
|
+
this.queues.set(zone, new Set());
|
|
23139
|
+
}
|
|
23140
|
+
const queue = this.queues.get(zone);
|
|
23141
|
+
if (queue.has(handle)) {
|
|
23142
|
+
return;
|
|
23143
|
+
}
|
|
23144
|
+
this.queuedEffectCount++;
|
|
23145
|
+
queue.add(handle);
|
|
23146
|
+
}
|
|
23147
|
+
/**
|
|
23148
|
+
* Run all scheduled effects.
|
|
23149
|
+
*
|
|
23150
|
+
* Execution order of effects within the same zone is guaranteed to be FIFO, but there is no
|
|
23151
|
+
* ordering guarantee between effects scheduled in different zones.
|
|
23152
|
+
*/
|
|
23153
|
+
flush() {
|
|
23154
|
+
while (this.queuedEffectCount > 0) {
|
|
23155
|
+
for (const [zone, queue] of this.queues) {
|
|
23156
|
+
// `zone` here must be defined.
|
|
23157
|
+
if (zone === null) {
|
|
23158
|
+
this.flushQueue(queue);
|
|
23159
|
+
}
|
|
23160
|
+
else {
|
|
23161
|
+
zone.run(() => this.flushQueue(queue));
|
|
23162
|
+
}
|
|
23163
|
+
}
|
|
23164
|
+
}
|
|
23165
|
+
}
|
|
23166
|
+
flushQueue(queue) {
|
|
23167
|
+
for (const handle of queue) {
|
|
23168
|
+
queue.delete(handle);
|
|
23169
|
+
this.queuedEffectCount--;
|
|
23170
|
+
// TODO: what happens if this throws an error?
|
|
23171
|
+
handle.run();
|
|
23172
|
+
}
|
|
23173
|
+
}
|
|
23174
|
+
}
|
|
23175
|
+
|
|
22885
23176
|
/**
|
|
22886
23177
|
* A DI token that you can use to provide
|
|
22887
23178
|
* one or more initialization functions.
|
|
@@ -23126,68 +23417,6 @@ class ApplicationInitStatus {
|
|
|
23126
23417
|
args: [{ providedIn: 'root' }]
|
|
23127
23418
|
}], () => [], null); })();
|
|
23128
23419
|
|
|
23129
|
-
/**
|
|
23130
|
-
* A scheduler which manages the execution of effects.
|
|
23131
|
-
*/
|
|
23132
|
-
class EffectScheduler {
|
|
23133
|
-
/** @nocollapse */
|
|
23134
|
-
static ɵprov = /** @pureOrBreakMyCode */ /* @__PURE__ */ ɵɵdefineInjectable({
|
|
23135
|
-
token: EffectScheduler,
|
|
23136
|
-
providedIn: 'root',
|
|
23137
|
-
factory: () => new ZoneAwareEffectScheduler(),
|
|
23138
|
-
});
|
|
23139
|
-
}
|
|
23140
|
-
/**
|
|
23141
|
-
* A wrapper around `ZoneAwareQueueingScheduler` that schedules flushing via the microtask queue
|
|
23142
|
-
* when.
|
|
23143
|
-
*/
|
|
23144
|
-
class ZoneAwareEffectScheduler {
|
|
23145
|
-
queuedEffectCount = 0;
|
|
23146
|
-
queues = new Map();
|
|
23147
|
-
schedule(handle) {
|
|
23148
|
-
this.enqueue(handle);
|
|
23149
|
-
}
|
|
23150
|
-
enqueue(handle) {
|
|
23151
|
-
const zone = handle.zone;
|
|
23152
|
-
if (!this.queues.has(zone)) {
|
|
23153
|
-
this.queues.set(zone, new Set());
|
|
23154
|
-
}
|
|
23155
|
-
const queue = this.queues.get(zone);
|
|
23156
|
-
if (queue.has(handle)) {
|
|
23157
|
-
return;
|
|
23158
|
-
}
|
|
23159
|
-
this.queuedEffectCount++;
|
|
23160
|
-
queue.add(handle);
|
|
23161
|
-
}
|
|
23162
|
-
/**
|
|
23163
|
-
* Run all scheduled effects.
|
|
23164
|
-
*
|
|
23165
|
-
* Execution order of effects within the same zone is guaranteed to be FIFO, but there is no
|
|
23166
|
-
* ordering guarantee between effects scheduled in different zones.
|
|
23167
|
-
*/
|
|
23168
|
-
flush() {
|
|
23169
|
-
while (this.queuedEffectCount > 0) {
|
|
23170
|
-
for (const [zone, queue] of this.queues) {
|
|
23171
|
-
// `zone` here must be defined.
|
|
23172
|
-
if (zone === null) {
|
|
23173
|
-
this.flushQueue(queue);
|
|
23174
|
-
}
|
|
23175
|
-
else {
|
|
23176
|
-
zone.run(() => this.flushQueue(queue));
|
|
23177
|
-
}
|
|
23178
|
-
}
|
|
23179
|
-
}
|
|
23180
|
-
}
|
|
23181
|
-
flushQueue(queue) {
|
|
23182
|
-
for (const handle of queue) {
|
|
23183
|
-
queue.delete(handle);
|
|
23184
|
-
this.queuedEffectCount--;
|
|
23185
|
-
// TODO: what happens if this throws an error?
|
|
23186
|
-
handle.run();
|
|
23187
|
-
}
|
|
23188
|
-
}
|
|
23189
|
-
}
|
|
23190
|
-
|
|
23191
23420
|
/**
|
|
23192
23421
|
* A DI token that provides a set of callbacks to
|
|
23193
23422
|
* be called for every component that is bootstrapped.
|
|
@@ -23365,12 +23594,6 @@ class ApplicationRef {
|
|
|
23365
23594
|
* @internal
|
|
23366
23595
|
*/
|
|
23367
23596
|
dirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
23368
|
-
/**
|
|
23369
|
-
* Like `dirtyFlags` but don't cause `tick()` to loop.
|
|
23370
|
-
*
|
|
23371
|
-
* @internal
|
|
23372
|
-
*/
|
|
23373
|
-
deferredDirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
23374
23597
|
/**
|
|
23375
23598
|
* Most recent snapshot from the `TracingService`, if any.
|
|
23376
23599
|
*
|
|
@@ -23475,7 +23698,7 @@ class ApplicationRef {
|
|
|
23475
23698
|
* {@example core/ts/platform/platform.ts region='domNode'}
|
|
23476
23699
|
*/
|
|
23477
23700
|
bootstrap(componentOrFactory, rootSelectorOrNode) {
|
|
23478
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) && this.
|
|
23701
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
23479
23702
|
const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
|
|
23480
23703
|
const initStatus = this._injector.get(ApplicationInitStatus);
|
|
23481
23704
|
if (!initStatus.done) {
|
|
@@ -23545,7 +23768,7 @@ class ApplicationRef {
|
|
|
23545
23768
|
snapshot.dispose();
|
|
23546
23769
|
return;
|
|
23547
23770
|
}
|
|
23548
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) && this.
|
|
23771
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
23549
23772
|
if (this._runningTick) {
|
|
23550
23773
|
throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, ngDevMode && 'ApplicationRef.tick is called recursively');
|
|
23551
23774
|
}
|
|
@@ -23577,9 +23800,6 @@ class ApplicationRef {
|
|
|
23577
23800
|
if (this._rendererFactory === null && !this._injector.destroyed) {
|
|
23578
23801
|
this._rendererFactory = this._injector.get(RendererFactory2, null, { optional: true });
|
|
23579
23802
|
}
|
|
23580
|
-
// When beginning synchronization, all deferred dirtiness becomes active dirtiness.
|
|
23581
|
-
this.dirtyFlags |= this.deferredDirtyFlags;
|
|
23582
|
-
this.deferredDirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
23583
23803
|
let runs = 0;
|
|
23584
23804
|
while (this.dirtyFlags !== 0 /* ApplicationRefDirtyFlags.None */ && runs++ < MAXIMUM_REFRESH_RERUNS) {
|
|
23585
23805
|
this.synchronizeOnce();
|
|
@@ -23595,9 +23815,6 @@ class ApplicationRef {
|
|
|
23595
23815
|
* Perform a single synchronization pass.
|
|
23596
23816
|
*/
|
|
23597
23817
|
synchronizeOnce() {
|
|
23598
|
-
// If we happened to loop, deferred dirtiness can be processed as active dirtiness again.
|
|
23599
|
-
this.dirtyFlags |= this.deferredDirtyFlags;
|
|
23600
|
-
this.deferredDirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
23601
23818
|
// First, process any dirty root effects.
|
|
23602
23819
|
if (this.dirtyFlags & 16 /* ApplicationRefDirtyFlags.RootEffects */) {
|
|
23603
23820
|
this.dirtyFlags &= ~16 /* ApplicationRefDirtyFlags.RootEffects */;
|
|
@@ -23676,7 +23893,7 @@ class ApplicationRef {
|
|
|
23676
23893
|
* This will throw if the view is already attached to a ViewContainer.
|
|
23677
23894
|
*/
|
|
23678
23895
|
attachView(viewRef) {
|
|
23679
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) && this.
|
|
23896
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
23680
23897
|
const view = viewRef;
|
|
23681
23898
|
this._views.push(view);
|
|
23682
23899
|
view.attachToAppRef(this);
|
|
@@ -23685,7 +23902,7 @@ class ApplicationRef {
|
|
|
23685
23902
|
* Detaches a view from dirty checking again.
|
|
23686
23903
|
*/
|
|
23687
23904
|
detachView(viewRef) {
|
|
23688
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) && this.
|
|
23905
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
23689
23906
|
const view = viewRef;
|
|
23690
23907
|
remove(this._views, view);
|
|
23691
23908
|
view.detachFromAppRef();
|
|
@@ -23729,7 +23946,7 @@ class ApplicationRef {
|
|
|
23729
23946
|
* @returns A function which unregisters a listener.
|
|
23730
23947
|
*/
|
|
23731
23948
|
onDestroy(callback) {
|
|
23732
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) && this.
|
|
23949
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) && warnIfDestroyed(this._destroyed);
|
|
23733
23950
|
this._destroyListeners.push(callback);
|
|
23734
23951
|
return () => remove(this._destroyListeners, callback);
|
|
23735
23952
|
}
|
|
@@ -23756,11 +23973,6 @@ class ApplicationRef {
|
|
|
23756
23973
|
get viewCount() {
|
|
23757
23974
|
return this._views.length;
|
|
23758
23975
|
}
|
|
23759
|
-
warnIfDestroyed() {
|
|
23760
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._destroyed) {
|
|
23761
|
-
console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
23762
|
-
}
|
|
23763
|
-
}
|
|
23764
23976
|
static ɵfac = function ApplicationRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationRef)(); };
|
|
23765
23977
|
static ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
|
|
23766
23978
|
}
|
|
@@ -23768,6 +23980,11 @@ class ApplicationRef {
|
|
|
23768
23980
|
type: Injectable,
|
|
23769
23981
|
args: [{ providedIn: 'root' }]
|
|
23770
23982
|
}], () => [], null); })();
|
|
23983
|
+
function warnIfDestroyed(destroyed) {
|
|
23984
|
+
if (destroyed) {
|
|
23985
|
+
console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
23986
|
+
}
|
|
23987
|
+
}
|
|
23771
23988
|
function remove(list, el) {
|
|
23772
23989
|
const index = list.indexOf(el);
|
|
23773
23990
|
if (index > -1) {
|
|
@@ -23793,9 +24010,14 @@ function detectChangesInViewIfRequired(lView, notifyErrorHandler, isFirstPass, z
|
|
|
23793
24010
|
function scheduleDelayedTrigger(scheduleFn) {
|
|
23794
24011
|
const lView = getLView();
|
|
23795
24012
|
const tNode = getCurrentTNode();
|
|
24013
|
+
renderPlaceholder(lView, tNode);
|
|
24014
|
+
// Exit early to avoid invoking `scheduleFn`, which would
|
|
24015
|
+
// add `setTimeout` call and potentially delay serialization
|
|
24016
|
+
// on the server unnecessarily.
|
|
24017
|
+
if (!shouldTriggerDeferBlock(0 /* TriggerType.Regular */, lView))
|
|
24018
|
+
return;
|
|
23796
24019
|
const injector = lView[INJECTOR];
|
|
23797
24020
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
23798
|
-
renderPlaceholder(lView, tNode);
|
|
23799
24021
|
const cleanupFn = scheduleFn(() => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), injector);
|
|
23800
24022
|
storeTriggerCleanupFn(0 /* TriggerType.Regular */, lDetails, cleanupFn);
|
|
23801
24023
|
}
|
|
@@ -23923,7 +24145,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
23923
24145
|
tDetails.loadingState = DeferDependenciesLoadingState.FAILED;
|
|
23924
24146
|
if (tDetails.errorTmplIndex === null) {
|
|
23925
24147
|
const templateLocation = ngDevMode ? getTemplateLocationDetails(lView) : '';
|
|
23926
|
-
const error = new RuntimeError(750 /* RuntimeErrorCode.DEFER_LOADING_FAILED */, ngDevMode &&
|
|
24148
|
+
const error = new RuntimeError(-750 /* RuntimeErrorCode.DEFER_LOADING_FAILED */, ngDevMode &&
|
|
23927
24149
|
'Loading dependencies for `@defer` block failed, ' +
|
|
23928
24150
|
`but no \`@error\` block was configured${templateLocation}. ` +
|
|
23929
24151
|
'Consider using the `@error` block to render an error state.');
|
|
@@ -24077,30 +24299,25 @@ function populateHydratingStateForQueue(registry, queue) {
|
|
|
24077
24299
|
}
|
|
24078
24300
|
// Waits for the next render cycle to complete
|
|
24079
24301
|
function nextRender(injector) {
|
|
24080
|
-
|
|
24081
|
-
const promise = new Promise((resolveFn) => {
|
|
24082
|
-
resolve = resolveFn;
|
|
24083
|
-
});
|
|
24084
|
-
afterNextRender(() => resolve(), { injector });
|
|
24085
|
-
return promise;
|
|
24302
|
+
return new Promise((resolveFn) => afterNextRender(resolveFn, { injector }));
|
|
24086
24303
|
}
|
|
24087
|
-
function triggerResourceLoadingForHydration(dehydratedBlockId, dehydratedBlockRegistry) {
|
|
24088
|
-
let resolve;
|
|
24089
|
-
const promise = new Promise((resolveFn) => (resolve = resolveFn));
|
|
24304
|
+
async function triggerResourceLoadingForHydration(dehydratedBlockId, dehydratedBlockRegistry) {
|
|
24090
24305
|
const deferBlock = dehydratedBlockRegistry.get(dehydratedBlockId);
|
|
24091
24306
|
// Since we trigger hydration for nested defer blocks in a sequence (parent -> child),
|
|
24092
24307
|
// there is a chance that a defer block may not be present at hydration time. For example,
|
|
24093
24308
|
// when a nested block was in an `@if` condition, which has changed.
|
|
24094
|
-
if (deferBlock
|
|
24095
|
-
const { tNode, lView } = deferBlock;
|
|
24096
|
-
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24097
|
-
onDeferBlockCompletion(lDetails, () => resolve());
|
|
24098
|
-
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24309
|
+
if (deferBlock === null) {
|
|
24099
24310
|
// TODO(incremental-hydration): handle the cleanup for cases when
|
|
24100
24311
|
// defer block is no longer present during hydration (e.g. `@if` condition
|
|
24101
24312
|
// has changed during hydration/rendering).
|
|
24313
|
+
return;
|
|
24102
24314
|
}
|
|
24103
|
-
|
|
24315
|
+
const { tNode, lView } = deferBlock;
|
|
24316
|
+
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24317
|
+
return new Promise((resolve) => {
|
|
24318
|
+
onDeferBlockCompletion(lDetails, resolve);
|
|
24319
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24320
|
+
});
|
|
24104
24321
|
}
|
|
24105
24322
|
/**
|
|
24106
24323
|
* Registers cleanup functions for a defer block when the block has finished
|
|
@@ -24278,7 +24495,7 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
24278
24495
|
loadingPromise: null,
|
|
24279
24496
|
providers: null,
|
|
24280
24497
|
hydrateTriggers: null,
|
|
24281
|
-
|
|
24498
|
+
debug: null,
|
|
24282
24499
|
flags: flags ?? 0 /* TDeferDetailsFlags.Default */,
|
|
24283
24500
|
};
|
|
24284
24501
|
enableTimerScheduling?.(tView, tDetails, placeholderConfigIndex, loadingConfigIndex);
|
|
@@ -24335,6 +24552,9 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
24335
24552
|
function ɵɵdeferWhen(rawValue) {
|
|
24336
24553
|
const lView = getLView();
|
|
24337
24554
|
const tNode = getSelectedTNode();
|
|
24555
|
+
if (ngDevMode) {
|
|
24556
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'when <expression>');
|
|
24557
|
+
}
|
|
24338
24558
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24339
24559
|
return;
|
|
24340
24560
|
const bindingIndex = nextBindingIndex();
|
|
@@ -24366,6 +24586,9 @@ function ɵɵdeferWhen(rawValue) {
|
|
|
24366
24586
|
function ɵɵdeferPrefetchWhen(rawValue) {
|
|
24367
24587
|
const lView = getLView();
|
|
24368
24588
|
const tNode = getSelectedTNode();
|
|
24589
|
+
if (ngDevMode) {
|
|
24590
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'prefetch when <expression>');
|
|
24591
|
+
}
|
|
24369
24592
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24370
24593
|
return;
|
|
24371
24594
|
const bindingIndex = nextBindingIndex();
|
|
@@ -24393,6 +24616,9 @@ function ɵɵdeferPrefetchWhen(rawValue) {
|
|
|
24393
24616
|
function ɵɵdeferHydrateWhen(rawValue) {
|
|
24394
24617
|
const lView = getLView();
|
|
24395
24618
|
const tNode = getSelectedTNode();
|
|
24619
|
+
if (ngDevMode) {
|
|
24620
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate when <expression>');
|
|
24621
|
+
}
|
|
24396
24622
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24397
24623
|
return;
|
|
24398
24624
|
// TODO(incremental-hydration): audit all defer instructions to reduce unnecessary work by
|
|
@@ -24434,6 +24660,9 @@ function ɵɵdeferHydrateWhen(rawValue) {
|
|
|
24434
24660
|
function ɵɵdeferHydrateNever() {
|
|
24435
24661
|
const lView = getLView();
|
|
24436
24662
|
const tNode = getCurrentTNode();
|
|
24663
|
+
if (ngDevMode) {
|
|
24664
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate never');
|
|
24665
|
+
}
|
|
24437
24666
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24438
24667
|
return;
|
|
24439
24668
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -24450,6 +24679,9 @@ function ɵɵdeferHydrateNever() {
|
|
|
24450
24679
|
function ɵɵdeferOnIdle() {
|
|
24451
24680
|
const lView = getLView();
|
|
24452
24681
|
const tNode = getCurrentTNode();
|
|
24682
|
+
if (ngDevMode) {
|
|
24683
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'on idle');
|
|
24684
|
+
}
|
|
24453
24685
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24454
24686
|
return;
|
|
24455
24687
|
scheduleDelayedTrigger(onIdle);
|
|
@@ -24461,6 +24693,9 @@ function ɵɵdeferOnIdle() {
|
|
|
24461
24693
|
function ɵɵdeferPrefetchOnIdle() {
|
|
24462
24694
|
const lView = getLView();
|
|
24463
24695
|
const tNode = getCurrentTNode();
|
|
24696
|
+
if (ngDevMode) {
|
|
24697
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'prefetch on idle');
|
|
24698
|
+
}
|
|
24464
24699
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24465
24700
|
return;
|
|
24466
24701
|
scheduleDelayedPrefetching(onIdle, 0 /* DeferBlockTrigger.Idle */);
|
|
@@ -24472,6 +24707,9 @@ function ɵɵdeferPrefetchOnIdle() {
|
|
|
24472
24707
|
function ɵɵdeferHydrateOnIdle() {
|
|
24473
24708
|
const lView = getLView();
|
|
24474
24709
|
const tNode = getCurrentTNode();
|
|
24710
|
+
if (ngDevMode) {
|
|
24711
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on idle');
|
|
24712
|
+
}
|
|
24475
24713
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24476
24714
|
return;
|
|
24477
24715
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -24491,6 +24729,9 @@ function ɵɵdeferHydrateOnIdle() {
|
|
|
24491
24729
|
function ɵɵdeferOnImmediate() {
|
|
24492
24730
|
const lView = getLView();
|
|
24493
24731
|
const tNode = getCurrentTNode();
|
|
24732
|
+
if (ngDevMode) {
|
|
24733
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'on immediate');
|
|
24734
|
+
}
|
|
24494
24735
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24495
24736
|
return;
|
|
24496
24737
|
// Render placeholder block only if loading template is not present and we're on
|
|
@@ -24509,6 +24750,9 @@ function ɵɵdeferOnImmediate() {
|
|
|
24509
24750
|
function ɵɵdeferPrefetchOnImmediate() {
|
|
24510
24751
|
const lView = getLView();
|
|
24511
24752
|
const tNode = getCurrentTNode();
|
|
24753
|
+
if (ngDevMode) {
|
|
24754
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'prefetch on immediate');
|
|
24755
|
+
}
|
|
24512
24756
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24513
24757
|
return;
|
|
24514
24758
|
const tView = lView[TVIEW];
|
|
@@ -24524,6 +24768,9 @@ function ɵɵdeferPrefetchOnImmediate() {
|
|
|
24524
24768
|
function ɵɵdeferHydrateOnImmediate() {
|
|
24525
24769
|
const lView = getLView();
|
|
24526
24770
|
const tNode = getCurrentTNode();
|
|
24771
|
+
if (ngDevMode) {
|
|
24772
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on immediate');
|
|
24773
|
+
}
|
|
24527
24774
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24528
24775
|
return;
|
|
24529
24776
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -24547,6 +24794,9 @@ function ɵɵdeferHydrateOnImmediate() {
|
|
|
24547
24794
|
function ɵɵdeferOnTimer(delay) {
|
|
24548
24795
|
const lView = getLView();
|
|
24549
24796
|
const tNode = getCurrentTNode();
|
|
24797
|
+
if (ngDevMode) {
|
|
24798
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `on timer(${delay}ms)`);
|
|
24799
|
+
}
|
|
24550
24800
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24551
24801
|
return;
|
|
24552
24802
|
scheduleDelayedTrigger(onTimer(delay));
|
|
@@ -24559,6 +24809,9 @@ function ɵɵdeferOnTimer(delay) {
|
|
|
24559
24809
|
function ɵɵdeferPrefetchOnTimer(delay) {
|
|
24560
24810
|
const lView = getLView();
|
|
24561
24811
|
const tNode = getCurrentTNode();
|
|
24812
|
+
if (ngDevMode) {
|
|
24813
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `prefetch on timer(${delay}ms)`);
|
|
24814
|
+
}
|
|
24562
24815
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24563
24816
|
return;
|
|
24564
24817
|
scheduleDelayedPrefetching(onTimer(delay), 5 /* DeferBlockTrigger.Timer */);
|
|
@@ -24571,10 +24824,13 @@ function ɵɵdeferPrefetchOnTimer(delay) {
|
|
|
24571
24824
|
function ɵɵdeferHydrateOnTimer(delay) {
|
|
24572
24825
|
const lView = getLView();
|
|
24573
24826
|
const tNode = getCurrentTNode();
|
|
24827
|
+
if (ngDevMode) {
|
|
24828
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `hydrate on timer(${delay}ms)`);
|
|
24829
|
+
}
|
|
24574
24830
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24575
24831
|
return;
|
|
24576
24832
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24577
|
-
hydrateTriggers.set(5 /* DeferBlockTrigger.Timer */, delay);
|
|
24833
|
+
hydrateTriggers.set(5 /* DeferBlockTrigger.Timer */, { delay });
|
|
24578
24834
|
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24579
24835
|
// We are on the server and SSR for defer blocks is enabled.
|
|
24580
24836
|
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
@@ -24592,6 +24848,9 @@ function ɵɵdeferHydrateOnTimer(delay) {
|
|
|
24592
24848
|
function ɵɵdeferOnHover(triggerIndex, walkUpTimes) {
|
|
24593
24849
|
const lView = getLView();
|
|
24594
24850
|
const tNode = getCurrentTNode();
|
|
24851
|
+
if (ngDevMode) {
|
|
24852
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `on hover${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24853
|
+
}
|
|
24595
24854
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24596
24855
|
return;
|
|
24597
24856
|
renderPlaceholder(lView, tNode);
|
|
@@ -24609,6 +24868,9 @@ function ɵɵdeferOnHover(triggerIndex, walkUpTimes) {
|
|
|
24609
24868
|
function ɵɵdeferPrefetchOnHover(triggerIndex, walkUpTimes) {
|
|
24610
24869
|
const lView = getLView();
|
|
24611
24870
|
const tNode = getCurrentTNode();
|
|
24871
|
+
if (ngDevMode) {
|
|
24872
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `prefetch on hover${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24873
|
+
}
|
|
24612
24874
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24613
24875
|
return;
|
|
24614
24876
|
const tView = lView[TVIEW];
|
|
@@ -24624,6 +24886,9 @@ function ɵɵdeferPrefetchOnHover(triggerIndex, walkUpTimes) {
|
|
|
24624
24886
|
function ɵɵdeferHydrateOnHover() {
|
|
24625
24887
|
const lView = getLView();
|
|
24626
24888
|
const tNode = getCurrentTNode();
|
|
24889
|
+
if (ngDevMode) {
|
|
24890
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on hover');
|
|
24891
|
+
}
|
|
24627
24892
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24628
24893
|
return;
|
|
24629
24894
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -24644,6 +24909,9 @@ function ɵɵdeferHydrateOnHover() {
|
|
|
24644
24909
|
function ɵɵdeferOnInteraction(triggerIndex, walkUpTimes) {
|
|
24645
24910
|
const lView = getLView();
|
|
24646
24911
|
const tNode = getCurrentTNode();
|
|
24912
|
+
if (ngDevMode) {
|
|
24913
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `on interaction${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24914
|
+
}
|
|
24647
24915
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24648
24916
|
return;
|
|
24649
24917
|
renderPlaceholder(lView, tNode);
|
|
@@ -24661,6 +24929,9 @@ function ɵɵdeferOnInteraction(triggerIndex, walkUpTimes) {
|
|
|
24661
24929
|
function ɵɵdeferPrefetchOnInteraction(triggerIndex, walkUpTimes) {
|
|
24662
24930
|
const lView = getLView();
|
|
24663
24931
|
const tNode = getCurrentTNode();
|
|
24932
|
+
if (ngDevMode) {
|
|
24933
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `prefetch on interaction${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24934
|
+
}
|
|
24664
24935
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24665
24936
|
return;
|
|
24666
24937
|
const tView = lView[TVIEW];
|
|
@@ -24676,6 +24947,9 @@ function ɵɵdeferPrefetchOnInteraction(triggerIndex, walkUpTimes) {
|
|
|
24676
24947
|
function ɵɵdeferHydrateOnInteraction() {
|
|
24677
24948
|
const lView = getLView();
|
|
24678
24949
|
const tNode = getCurrentTNode();
|
|
24950
|
+
if (ngDevMode) {
|
|
24951
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on interaction');
|
|
24952
|
+
}
|
|
24679
24953
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24680
24954
|
return;
|
|
24681
24955
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -24696,6 +24970,9 @@ function ɵɵdeferHydrateOnInteraction() {
|
|
|
24696
24970
|
function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
24697
24971
|
const lView = getLView();
|
|
24698
24972
|
const tNode = getCurrentTNode();
|
|
24973
|
+
if (ngDevMode) {
|
|
24974
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `on viewport${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24975
|
+
}
|
|
24699
24976
|
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24700
24977
|
return;
|
|
24701
24978
|
renderPlaceholder(lView, tNode);
|
|
@@ -24713,6 +24990,9 @@ function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
|
24713
24990
|
function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes) {
|
|
24714
24991
|
const lView = getLView();
|
|
24715
24992
|
const tNode = getCurrentTNode();
|
|
24993
|
+
if (ngDevMode) {
|
|
24994
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, `prefetch on viewport${walkUpTimes === -1 ? '' : '(<target>)'}`);
|
|
24995
|
+
}
|
|
24716
24996
|
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24717
24997
|
return;
|
|
24718
24998
|
const tView = lView[TVIEW];
|
|
@@ -24728,6 +25008,9 @@ function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes) {
|
|
|
24728
25008
|
function ɵɵdeferHydrateOnViewport() {
|
|
24729
25009
|
const lView = getLView();
|
|
24730
25010
|
const tNode = getCurrentTNode();
|
|
25011
|
+
if (ngDevMode) {
|
|
25012
|
+
trackTriggerForDebugging(lView[TVIEW], tNode, 'hydrate on viewport');
|
|
25013
|
+
}
|
|
24731
25014
|
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24732
25015
|
return;
|
|
24733
25016
|
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
@@ -27447,7 +27730,6 @@ function reconcile(liveCollection, newCollection, trackByFn) {
|
|
|
27447
27730
|
'Duplicated keys were: \n' +
|
|
27448
27731
|
duplicatedKeysMsg.join(', \n') +
|
|
27449
27732
|
'.');
|
|
27450
|
-
// tslint:disable-next-line:no-console
|
|
27451
27733
|
console.warn(message);
|
|
27452
27734
|
}
|
|
27453
27735
|
}
|
|
@@ -28275,10 +28557,8 @@ if (typeof ngI18nClosureMode === 'undefined') {
|
|
|
28275
28557
|
// Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.
|
|
28276
28558
|
// NOTE: we need to have it in IIFE so that the tree-shaker is happy.
|
|
28277
28559
|
(function () {
|
|
28278
|
-
// tslint:disable-next-line:no-toplevel-property-access
|
|
28279
28560
|
_global['ngI18nClosureMode'] =
|
|
28280
28561
|
// TODO(FW-1250): validate that this actually, you know, works.
|
|
28281
|
-
// tslint:disable-next-line:no-toplevel-property-access
|
|
28282
28562
|
typeof goog !== 'undefined' && typeof goog.getMsg === 'function';
|
|
28283
28563
|
})();
|
|
28284
28564
|
}
|
|
@@ -33279,8 +33559,9 @@ function recreateMatchingLViews(def, rootLView) {
|
|
|
33279
33559
|
*/
|
|
33280
33560
|
function clearRendererCache(factory, def) {
|
|
33281
33561
|
// Cast to read a private field.
|
|
33282
|
-
// NOTE: This must be kept synchronized with the renderer factory implementation in
|
|
33283
|
-
|
|
33562
|
+
// NOTE: This must be kept synchronized with the renderer factory implementation in
|
|
33563
|
+
// platform-browser and platform-browser/animations.
|
|
33564
|
+
factory.componentReplaced?.(def.id);
|
|
33284
33565
|
}
|
|
33285
33566
|
/**
|
|
33286
33567
|
* Recreates an LView in-place from a new component definition.
|
|
@@ -34746,7 +35027,7 @@ class Version {
|
|
|
34746
35027
|
/**
|
|
34747
35028
|
* @publicApi
|
|
34748
35029
|
*/
|
|
34749
|
-
const VERSION = new Version('19.1.0-
|
|
35030
|
+
const VERSION = new Version('19.1.0-rc.0');
|
|
34750
35031
|
|
|
34751
35032
|
/**
|
|
34752
35033
|
* Combination of NgModuleFactory and ComponentFactories.
|
|
@@ -35156,13 +35437,6 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35156
35437
|
this.appRef.dirtyFlags |= 4 /* ApplicationRefDirtyFlags.ViewTreeCheck */;
|
|
35157
35438
|
break;
|
|
35158
35439
|
}
|
|
35159
|
-
case 8 /* NotificationSource.DeferredRenderHook */: {
|
|
35160
|
-
// Render hooks are "deferred" when they're triggered from other render hooks. Using the
|
|
35161
|
-
// deferred dirty flags ensures that adding new hooks doesn't automatically trigger a loop
|
|
35162
|
-
// inside tick().
|
|
35163
|
-
this.appRef.deferredDirtyFlags |= 8 /* ApplicationRefDirtyFlags.AfterRender */;
|
|
35164
|
-
break;
|
|
35165
|
-
}
|
|
35166
35440
|
case 6 /* NotificationSource.CustomElement */: {
|
|
35167
35441
|
// We use `ViewTreeTraversal` to ensure we refresh the element even if this is triggered
|
|
35168
35442
|
// during CD. In practice this is a no-op since the elements code also calls via a
|
|
@@ -35171,7 +35445,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35171
35445
|
force = true;
|
|
35172
35446
|
break;
|
|
35173
35447
|
}
|
|
35174
|
-
case
|
|
35448
|
+
case 12 /* NotificationSource.RootEffect */: {
|
|
35175
35449
|
this.appRef.dirtyFlags |= 16 /* ApplicationRefDirtyFlags.RootEffects */;
|
|
35176
35450
|
// Root effects still force a CD, even if the scheduler is disabled. This ensures that
|
|
35177
35451
|
// effects always run, even when triggered from outside the zone when the scheduler is
|
|
@@ -35179,7 +35453,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35179
35453
|
force = true;
|
|
35180
35454
|
break;
|
|
35181
35455
|
}
|
|
35182
|
-
case
|
|
35456
|
+
case 13 /* NotificationSource.ViewEffect */: {
|
|
35183
35457
|
// This is technically a no-op, since view effects will also send a
|
|
35184
35458
|
// `MarkAncestorsForTraversal` notification. Still, we set this for logical consistency.
|
|
35185
35459
|
this.appRef.dirtyFlags |= 2 /* ApplicationRefDirtyFlags.ViewTreeTraversal */;
|
|
@@ -35189,7 +35463,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35189
35463
|
force = true;
|
|
35190
35464
|
break;
|
|
35191
35465
|
}
|
|
35192
|
-
case
|
|
35466
|
+
case 11 /* NotificationSource.PendingTaskRemoved */: {
|
|
35193
35467
|
// Removing a pending task via the public API forces a scheduled tick, ensuring that
|
|
35194
35468
|
// stability is async and delayed until there was at least an opportunity to run
|
|
35195
35469
|
// application synchronization. This prevents some footguns when working with the
|
|
@@ -35198,10 +35472,10 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35198
35472
|
force = true;
|
|
35199
35473
|
break;
|
|
35200
35474
|
}
|
|
35201
|
-
case
|
|
35202
|
-
case
|
|
35475
|
+
case 9 /* NotificationSource.ViewDetachedFromDOM */:
|
|
35476
|
+
case 8 /* NotificationSource.ViewAttached */:
|
|
35203
35477
|
case 7 /* NotificationSource.RenderHook */:
|
|
35204
|
-
case
|
|
35478
|
+
case 10 /* NotificationSource.AsyncAnimationsLoaded */:
|
|
35205
35479
|
default: {
|
|
35206
35480
|
// These notifications only schedule a tick but do not change whether we should refresh
|
|
35207
35481
|
// views. Instead, we only need to run render hooks unless another notification from the
|
|
@@ -35767,6 +36041,27 @@ function logOversizedImageWarning(src) {
|
|
|
35767
36041
|
*/
|
|
35768
36042
|
const PLATFORM_DESTROY_LISTENERS = new InjectionToken(ngDevMode ? 'PlatformDestroyListeners' : '');
|
|
35769
36043
|
|
|
36044
|
+
/**
|
|
36045
|
+
* InjectionToken to control root component bootstrap behavior.
|
|
36046
|
+
*
|
|
36047
|
+
* This token is primarily used in Angular's server-side rendering (SSR) scenarios,
|
|
36048
|
+
* particularly by the `@angular/ssr` package, to manage whether the root component
|
|
36049
|
+
* should be bootstrapped during the application initialization process.
|
|
36050
|
+
*
|
|
36051
|
+
* ## Purpose:
|
|
36052
|
+
* During SSR route extraction, setting this token to `false` prevents Angular from
|
|
36053
|
+
* bootstrapping the root component. This avoids unnecessary component rendering,
|
|
36054
|
+
* enabling route extraction without requiring additional APIs or triggering
|
|
36055
|
+
* component logic.
|
|
36056
|
+
*
|
|
36057
|
+
* ## Behavior:
|
|
36058
|
+
* - **`false`**: Prevents the root component from being bootstrapped.
|
|
36059
|
+
* - **`true`** (default): Proceeds with the normal root component bootstrap process.
|
|
36060
|
+
*
|
|
36061
|
+
* This mechanism ensures SSR can efficiently separate route extraction logic
|
|
36062
|
+
* from component rendering.
|
|
36063
|
+
*/
|
|
36064
|
+
const ENABLE_ROOT_COMPONENT_BOOTSTRAP = new InjectionToken(ngDevMode ? 'ENABLE_ROOT_COMPONENT_BOOTSTRAP' : '');
|
|
35770
36065
|
function isApplicationBootstrapConfig(config) {
|
|
35771
36066
|
return !config.moduleRef;
|
|
35772
36067
|
}
|
|
@@ -35831,6 +36126,14 @@ function bootstrap(config) {
|
|
|
35831
36126
|
// If the `LOCALE_ID` provider is defined at bootstrap then we set the value for ivy
|
|
35832
36127
|
const localeId = envInjector.get(LOCALE_ID, DEFAULT_LOCALE_ID);
|
|
35833
36128
|
setLocaleId(localeId || DEFAULT_LOCALE_ID);
|
|
36129
|
+
const enableRootComponentBoostrap = envInjector.get(ENABLE_ROOT_COMPONENT_BOOTSTRAP, true);
|
|
36130
|
+
if (!enableRootComponentBoostrap) {
|
|
36131
|
+
if (isApplicationBootstrapConfig(config)) {
|
|
36132
|
+
return envInjector.get(ApplicationRef);
|
|
36133
|
+
}
|
|
36134
|
+
config.allPlatformModules.push(config.moduleRef);
|
|
36135
|
+
return config.moduleRef;
|
|
36136
|
+
}
|
|
35834
36137
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
35835
36138
|
const imagePerformanceService = envInjector.get(ImagePerformanceWarning);
|
|
35836
36139
|
imagePerformanceService.start();
|
|
@@ -38741,42 +39044,6 @@ function internalCreateApplication(config) {
|
|
|
38741
39044
|
}
|
|
38742
39045
|
}
|
|
38743
39046
|
|
|
38744
|
-
/**
|
|
38745
|
-
* Retrieves all defer blocks in a given LView.
|
|
38746
|
-
*
|
|
38747
|
-
* @param lView lView with defer blocks
|
|
38748
|
-
* @param deferBlocks defer block aggregator array
|
|
38749
|
-
*/
|
|
38750
|
-
function getDeferBlocks(lView, deferBlocks) {
|
|
38751
|
-
const tView = lView[TVIEW];
|
|
38752
|
-
for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {
|
|
38753
|
-
if (isLContainer(lView[i])) {
|
|
38754
|
-
const lContainer = lView[i];
|
|
38755
|
-
// An LContainer may represent an instance of a defer block, in which case
|
|
38756
|
-
// we store it as a result. Otherwise, keep iterating over LContainer views and
|
|
38757
|
-
// look for defer blocks.
|
|
38758
|
-
const isLast = i === tView.bindingStartIndex - 1;
|
|
38759
|
-
if (!isLast) {
|
|
38760
|
-
const tNode = tView.data[i];
|
|
38761
|
-
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
38762
|
-
if (isTDeferBlockDetails(tDetails)) {
|
|
38763
|
-
deferBlocks.push({ lContainer, lView, tNode, tDetails });
|
|
38764
|
-
// This LContainer represents a defer block, so we exit
|
|
38765
|
-
// this iteration and don't inspect views in this LContainer.
|
|
38766
|
-
continue;
|
|
38767
|
-
}
|
|
38768
|
-
}
|
|
38769
|
-
for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
|
|
38770
|
-
getDeferBlocks(lContainer[i], deferBlocks);
|
|
38771
|
-
}
|
|
38772
|
-
}
|
|
38773
|
-
else if (isLView(lView[i])) {
|
|
38774
|
-
// This is a component, enter the `getDeferBlocks` recursively.
|
|
38775
|
-
getDeferBlocks(lView[i], deferBlocks);
|
|
38776
|
-
}
|
|
38777
|
-
}
|
|
38778
|
-
}
|
|
38779
|
-
|
|
38780
39047
|
/** Apps in which we've enabled event replay.
|
|
38781
39048
|
* This is to prevent initializing event replay more than once per app.
|
|
38782
39049
|
*/
|
|
@@ -39144,7 +39411,6 @@ function annotateForHydration(appRef, doc) {
|
|
|
39144
39411
|
transferState.set(NGH_DATA_KEY, serializedViews);
|
|
39145
39412
|
if (deferBlocks.size > 0) {
|
|
39146
39413
|
const blocks = {};
|
|
39147
|
-
// TODO(incremental-hydration): we should probably have an object here instead of a Map?
|
|
39148
39414
|
for (const [id, info] of deferBlocks.entries()) {
|
|
39149
39415
|
blocks[id] = info;
|
|
39150
39416
|
}
|
|
@@ -39213,10 +39479,10 @@ function serializeLContainer(lContainer, tNode, lView, parentDeferBlockId, conte
|
|
|
39213
39479
|
// If this is a defer block, serialize extra info.
|
|
39214
39480
|
if (isDeferBlock(lView[TVIEW], tNode)) {
|
|
39215
39481
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
39216
|
-
|
|
39482
|
+
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);
|
|
39483
|
+
if (context.isIncrementalHydrationEnabled && tDetails.hydrateTriggers !== null) {
|
|
39217
39484
|
const deferBlockId = `d${context.deferBlocks.size}`;
|
|
39218
|
-
|
|
39219
|
-
if (tDetails.hydrateTriggers?.has(7 /* DeferBlockTrigger.Never */)) {
|
|
39485
|
+
if (tDetails.hydrateTriggers.has(7 /* DeferBlockTrigger.Never */)) {
|
|
39220
39486
|
isHydrateNeverBlock = true;
|
|
39221
39487
|
}
|
|
39222
39488
|
let rootNodes = [];
|
|
@@ -39226,8 +39492,11 @@ function serializeLContainer(lContainer, tNode, lView, parentDeferBlockId, conte
|
|
|
39226
39492
|
[DEFER_PARENT_BLOCK_ID]: parentDeferBlockId,
|
|
39227
39493
|
[NUM_ROOT_NODES]: rootNodes.length,
|
|
39228
39494
|
[DEFER_BLOCK_STATE$1]: lDetails[DEFER_BLOCK_STATE],
|
|
39229
|
-
[DEFER_HYDRATE_TRIGGERS]: serializeHydrateTriggers(tDetails.hydrateTriggers),
|
|
39230
39495
|
};
|
|
39496
|
+
const serializedTriggers = serializeHydrateTriggers(tDetails.hydrateTriggers);
|
|
39497
|
+
if (serializedTriggers.length > 0) {
|
|
39498
|
+
deferBlockInfo[DEFER_HYDRATE_TRIGGERS] = serializedTriggers;
|
|
39499
|
+
}
|
|
39231
39500
|
context.deferBlocks.set(deferBlockId, deferBlockInfo);
|
|
39232
39501
|
const node = unwrapRNode(lContainer);
|
|
39233
39502
|
if (node !== undefined) {
|
|
@@ -39258,11 +39527,7 @@ function serializeLContainer(lContainer, tNode, lView, parentDeferBlockId, conte
|
|
|
39258
39527
|
serializedView[DEFER_BLOCK_STATE$1] = lDetails[DEFER_BLOCK_STATE];
|
|
39259
39528
|
}
|
|
39260
39529
|
if (!isHydrateNeverBlock) {
|
|
39261
|
-
|
|
39262
|
-
serializedView = {
|
|
39263
|
-
...serializedView,
|
|
39264
|
-
...serializeLView(lContainer[i], parentDeferBlockId, context),
|
|
39265
|
-
};
|
|
39530
|
+
Object.assign(serializedView, serializeLView(lContainer[i], parentDeferBlockId, context));
|
|
39266
39531
|
}
|
|
39267
39532
|
}
|
|
39268
39533
|
// Check if the previous view has the same shape (for example, it was
|
|
@@ -39283,9 +39548,6 @@ function serializeLContainer(lContainer, tNode, lView, parentDeferBlockId, conte
|
|
|
39283
39548
|
return views;
|
|
39284
39549
|
}
|
|
39285
39550
|
function serializeHydrateTriggers(triggerMap) {
|
|
39286
|
-
if (triggerMap === null) {
|
|
39287
|
-
return null;
|
|
39288
|
-
}
|
|
39289
39551
|
const serializableDeferBlockTrigger = new Set([
|
|
39290
39552
|
0 /* DeferBlockTrigger.Idle */,
|
|
39291
39553
|
1 /* DeferBlockTrigger.Immediate */,
|
|
@@ -39299,7 +39561,7 @@ function serializeHydrateTriggers(triggerMap) {
|
|
|
39299
39561
|
triggers.push(trigger);
|
|
39300
39562
|
}
|
|
39301
39563
|
else {
|
|
39302
|
-
triggers.push({ trigger, details });
|
|
39564
|
+
triggers.push({ trigger, delay: details.delay });
|
|
39303
39565
|
}
|
|
39304
39566
|
}
|
|
39305
39567
|
}
|
|
@@ -39717,6 +39979,9 @@ function printHydrationStats(injector) {
|
|
|
39717
39979
|
const message = `Angular hydrated ${ngDevMode.hydratedComponents} component(s) ` +
|
|
39718
39980
|
`and ${ngDevMode.hydratedNodes} node(s), ` +
|
|
39719
39981
|
`${ngDevMode.componentsSkippedHydration} component(s) were skipped. ` +
|
|
39982
|
+
(isIncrementalHydrationEnabled(injector)
|
|
39983
|
+
? `${ngDevMode.deferBlocksWithIncrementalHydration} defer block(s) were configured to use incremental hydration. `
|
|
39984
|
+
: '') +
|
|
39720
39985
|
`Learn more at https://angular.dev/guide/hydration.`;
|
|
39721
39986
|
// tslint:disable-next-line:no-console
|
|
39722
39987
|
console.log(message);
|
|
@@ -39806,7 +40071,6 @@ function withDomHydration() {
|
|
|
39806
40071
|
'thus hydration was not enabled. ' +
|
|
39807
40072
|
'Make sure the `provideClientHydration()` is included into the list ' +
|
|
39808
40073
|
'of providers in the server part of the application configuration.');
|
|
39809
|
-
// tslint:disable-next-line:no-console
|
|
39810
40074
|
console.warn(message);
|
|
39811
40075
|
}
|
|
39812
40076
|
},
|
|
@@ -39840,6 +40104,7 @@ function withDomHydration() {
|
|
|
39840
40104
|
whenStableWithTimeout(appRef, injector).then(() => {
|
|
39841
40105
|
cleanupDehydratedViews(appRef);
|
|
39842
40106
|
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
40107
|
+
countBlocksSkippedByHydration(injector);
|
|
39843
40108
|
printHydrationStats(injector);
|
|
39844
40109
|
}
|
|
39845
40110
|
});
|
|
@@ -40376,23 +40641,6 @@ function untracked(nonReactiveReadsFn) {
|
|
|
40376
40641
|
}
|
|
40377
40642
|
}
|
|
40378
40643
|
|
|
40379
|
-
class ViewContext {
|
|
40380
|
-
view;
|
|
40381
|
-
node;
|
|
40382
|
-
constructor(view, node) {
|
|
40383
|
-
this.view = view;
|
|
40384
|
-
this.node = node;
|
|
40385
|
-
}
|
|
40386
|
-
/**
|
|
40387
|
-
* @internal
|
|
40388
|
-
* @nocollapse
|
|
40389
|
-
*/
|
|
40390
|
-
static __NG_ELEMENT_ID__ = injectViewContext;
|
|
40391
|
-
}
|
|
40392
|
-
function injectViewContext() {
|
|
40393
|
-
return new ViewContext(getLView(), getCurrentTNode());
|
|
40394
|
-
}
|
|
40395
|
-
|
|
40396
40644
|
/**
|
|
40397
40645
|
* Controls whether effects use the legacy `microtaskEffect` by default.
|
|
40398
40646
|
*/
|
|
@@ -40660,12 +40908,13 @@ const ROOT_EFFECT_NODE =
|
|
|
40660
40908
|
...BASE_EFFECT_NODE,
|
|
40661
40909
|
consumerMarkedDirty() {
|
|
40662
40910
|
this.scheduler.schedule(this);
|
|
40663
|
-
this.notifier.notify(
|
|
40911
|
+
this.notifier.notify(12 /* NotificationSource.RootEffect */);
|
|
40664
40912
|
},
|
|
40665
40913
|
destroy() {
|
|
40666
40914
|
consumerDestroy$1(this);
|
|
40667
40915
|
this.onDestroyFn();
|
|
40668
40916
|
this.maybeCleanup();
|
|
40917
|
+
this.scheduler.remove(this);
|
|
40669
40918
|
},
|
|
40670
40919
|
}))();
|
|
40671
40920
|
const VIEW_EFFECT_NODE =
|
|
@@ -40674,7 +40923,7 @@ const VIEW_EFFECT_NODE =
|
|
|
40674
40923
|
consumerMarkedDirty() {
|
|
40675
40924
|
this.view[FLAGS] |= 8192 /* LViewFlags.HasChildViewsToRefresh */;
|
|
40676
40925
|
markAncestorsForTraversal(this.view);
|
|
40677
|
-
this.notifier.notify(
|
|
40926
|
+
this.notifier.notify(13 /* NotificationSource.ViewEffect */);
|
|
40678
40927
|
},
|
|
40679
40928
|
destroy() {
|
|
40680
40929
|
consumerDestroy$1(this);
|
|
@@ -40701,7 +40950,7 @@ function createRootEffect(fn, scheduler, notifier) {
|
|
|
40701
40950
|
node.notifier = notifier;
|
|
40702
40951
|
node.zone = typeof Zone !== 'undefined' ? Zone.current : null;
|
|
40703
40952
|
node.scheduler.schedule(node);
|
|
40704
|
-
node.notifier.notify(
|
|
40953
|
+
node.notifier.notify(12 /* NotificationSource.RootEffect */);
|
|
40705
40954
|
return node;
|
|
40706
40955
|
}
|
|
40707
40956
|
|
|
@@ -40792,10 +41041,10 @@ class AfterRenderEffectSequence extends AfterRenderSequence {
|
|
|
40792
41041
|
* These are initialized to `undefined` but set in the constructor.
|
|
40793
41042
|
*/
|
|
40794
41043
|
nodes = [undefined, undefined, undefined, undefined];
|
|
40795
|
-
constructor(impl, effectHooks, scheduler, destroyRef, snapshot = null) {
|
|
41044
|
+
constructor(impl, effectHooks, view, scheduler, destroyRef, snapshot = null) {
|
|
40796
41045
|
// Note that we also initialize the underlying `AfterRenderSequence` hooks to `undefined` and
|
|
40797
41046
|
// populate them as we create reactive nodes below.
|
|
40798
|
-
super(impl, [undefined, undefined, undefined, undefined], false, destroyRef, snapshot);
|
|
41047
|
+
super(impl, [undefined, undefined, undefined, undefined], view, false, destroyRef, snapshot);
|
|
40799
41048
|
this.scheduler = scheduler;
|
|
40800
41049
|
// Setup a reactive node for each phase.
|
|
40801
41050
|
for (const phase of AFTER_RENDER_PHASES) {
|
|
@@ -40854,7 +41103,8 @@ function afterRenderEffect(callbackOrSpec, options) {
|
|
|
40854
41103
|
if (typeof spec === 'function') {
|
|
40855
41104
|
spec = { mixedReadWrite: callbackOrSpec };
|
|
40856
41105
|
}
|
|
40857
|
-
const
|
|
41106
|
+
const viewContext = injector.get(ViewContext, null, { optional: true });
|
|
41107
|
+
const sequence = new AfterRenderEffectSequence(manager.impl, [spec.earlyRead, spec.write, spec.mixedReadWrite, spec.read], viewContext?.view, scheduler, injector.get(DestroyRef), tracing?.snapshot(null));
|
|
40858
41108
|
manager.impl.register(sequence);
|
|
40859
41109
|
return sequence;
|
|
40860
41110
|
}
|
|
@@ -41346,5 +41596,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
41346
41596
|
* Generated bundle index. Do not edit.
|
|
41347
41597
|
*/
|
|
41348
41598
|
|
|
41349
|
-
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_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as 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, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, 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, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, 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, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _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, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, 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, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵ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, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵ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, ɵɵngDeclareClassMetadataAsync, ɵɵ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, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41599
|
+
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_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as 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, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, 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, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, 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, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, 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, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _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, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, 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, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵ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, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵ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, ɵɵngDeclareClassMetadataAsync, ɵɵ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, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41350
41600
|
//# sourceMappingURL=core.mjs.map
|