@angular/core 18.1.2 → 18.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +6 -3
- package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +4 -3
- package/esm2022/src/application/application_init.mjs +2 -2
- package/esm2022/src/application/application_module.mjs +2 -2
- package/esm2022/src/application/application_ref.mjs +2 -2
- package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +3 -10
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
- package/esm2022/src/console.mjs +2 -2
- package/esm2022/src/core_private_export.mjs +2 -1
- package/esm2022/src/error_handler.mjs +4 -2
- package/esm2022/src/event_delegation_utils.mjs +3 -3
- package/esm2022/src/image_performance_warning.mjs +2 -2
- package/esm2022/src/linker/compiler.mjs +2 -2
- package/esm2022/src/platform/platform_ref.mjs +2 -2
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/interfaces/renderer.mjs +1 -1
- package/esm2022/src/render3/interfaces/renderer_dom.mjs +1 -1
- package/esm2022/src/render3/node_manipulation.mjs +10 -14
- package/esm2022/src/sanitization/html_sanitizer.mjs +2 -2
- package/esm2022/src/sanitization/inert_body.mjs +2 -2
- package/esm2022/src/testability/testability.mjs +3 -3
- package/esm2022/src/util/callback_scheduler.mjs +26 -23
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/application_error_handler.mjs +43 -0
- package/esm2022/testing/src/component_fixture.mjs +13 -2
- package/esm2022/testing/src/logger.mjs +3 -3
- package/esm2022/testing/src/test_bed_common.mjs +1 -1
- package/esm2022/testing/src/test_bed_compiler.mjs +24 -2
- package/fesm2022/core.mjs +727 -733
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +9 -5
- 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 +69 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +11 -7
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +3 -2
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/after-render-phase/bundle.js +12 -12
- package/schematics/migrations/http-providers/bundle.js +15 -15
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +166 -165
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +2 -2
- package/schematics/ng-generate/control-flow-migration/bundle.js +174 -173
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +2 -2
- package/schematics/ng-generate/standalone-migration/bundle.js +547 -514
- package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
- package/testing/index.d.ts +2 -1
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.1.
|
|
2
|
+
* @license Angular v18.1.4
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -6639,6 +6639,702 @@ function getOriginalError(error) {
|
|
|
6639
6639
|
return error[ERROR_ORIGINAL_ERROR];
|
|
6640
6640
|
}
|
|
6641
6641
|
|
|
6642
|
+
/**
|
|
6643
|
+
* `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
|
|
6644
|
+
* The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
|
|
6645
|
+
* is injected in a component or directive, the callbacks run when that component or
|
|
6646
|
+
* directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.
|
|
6647
|
+
*
|
|
6648
|
+
* @publicApi
|
|
6649
|
+
*/
|
|
6650
|
+
class DestroyRef {
|
|
6651
|
+
/**
|
|
6652
|
+
* @internal
|
|
6653
|
+
* @nocollapse
|
|
6654
|
+
*/
|
|
6655
|
+
static { this.__NG_ELEMENT_ID__ = injectDestroyRef; }
|
|
6656
|
+
/**
|
|
6657
|
+
* @internal
|
|
6658
|
+
* @nocollapse
|
|
6659
|
+
*/
|
|
6660
|
+
static { this.__NG_ENV_ID__ = (injector) => injector; }
|
|
6661
|
+
}
|
|
6662
|
+
class NodeInjectorDestroyRef extends DestroyRef {
|
|
6663
|
+
constructor(_lView) {
|
|
6664
|
+
super();
|
|
6665
|
+
this._lView = _lView;
|
|
6666
|
+
}
|
|
6667
|
+
onDestroy(callback) {
|
|
6668
|
+
storeLViewOnDestroy(this._lView, callback);
|
|
6669
|
+
return () => removeLViewOnDestroy(this._lView, callback);
|
|
6670
|
+
}
|
|
6671
|
+
}
|
|
6672
|
+
function injectDestroyRef() {
|
|
6673
|
+
return new NodeInjectorDestroyRef(getLView());
|
|
6674
|
+
}
|
|
6675
|
+
|
|
6676
|
+
/**
|
|
6677
|
+
* Internal implementation of the pending tasks service.
|
|
6678
|
+
*/
|
|
6679
|
+
class PendingTasks {
|
|
6680
|
+
constructor() {
|
|
6681
|
+
this.taskId = 0;
|
|
6682
|
+
this.pendingTasks = new Set();
|
|
6683
|
+
this.hasPendingTasks = new BehaviorSubject(false);
|
|
6684
|
+
}
|
|
6685
|
+
get _hasPendingTasks() {
|
|
6686
|
+
return this.hasPendingTasks.value;
|
|
6687
|
+
}
|
|
6688
|
+
add() {
|
|
6689
|
+
if (!this._hasPendingTasks) {
|
|
6690
|
+
this.hasPendingTasks.next(true);
|
|
6691
|
+
}
|
|
6692
|
+
const taskId = this.taskId++;
|
|
6693
|
+
this.pendingTasks.add(taskId);
|
|
6694
|
+
return taskId;
|
|
6695
|
+
}
|
|
6696
|
+
remove(taskId) {
|
|
6697
|
+
this.pendingTasks.delete(taskId);
|
|
6698
|
+
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
6699
|
+
this.hasPendingTasks.next(false);
|
|
6700
|
+
}
|
|
6701
|
+
}
|
|
6702
|
+
ngOnDestroy() {
|
|
6703
|
+
this.pendingTasks.clear();
|
|
6704
|
+
if (this._hasPendingTasks) {
|
|
6705
|
+
this.hasPendingTasks.next(false);
|
|
6706
|
+
}
|
|
6707
|
+
}
|
|
6708
|
+
/** @nocollapse */
|
|
6709
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
6710
|
+
token: PendingTasks,
|
|
6711
|
+
providedIn: 'root',
|
|
6712
|
+
factory: () => new PendingTasks(),
|
|
6713
|
+
}); }
|
|
6714
|
+
}
|
|
6715
|
+
/**
|
|
6716
|
+
* Experimental service that keeps track of pending tasks contributing to the stableness of Angular
|
|
6717
|
+
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
|
|
6718
|
+
* tasks influencing stability, this API gives control over stability to library and application
|
|
6719
|
+
* developers for specific cases not covered by Angular internals.
|
|
6720
|
+
*
|
|
6721
|
+
* The concept of stability comes into play in several important scenarios:
|
|
6722
|
+
* - SSR process needs to wait for the application stability before serializing and sending rendered
|
|
6723
|
+
* HTML;
|
|
6724
|
+
* - tests might want to delay assertions until the application becomes stable;
|
|
6725
|
+
*
|
|
6726
|
+
* @usageNotes
|
|
6727
|
+
* ```typescript
|
|
6728
|
+
* const pendingTasks = inject(ExperimentalPendingTasks);
|
|
6729
|
+
* const taskCleanup = pendingTasks.add();
|
|
6730
|
+
* // do work that should block application's stability and then:
|
|
6731
|
+
* taskCleanup();
|
|
6732
|
+
* ```
|
|
6733
|
+
*
|
|
6734
|
+
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
6735
|
+
* in patch versions. We will iterate on the exact API based on the feedback and our understanding
|
|
6736
|
+
* of the problem and solution space.
|
|
6737
|
+
*
|
|
6738
|
+
* @publicApi
|
|
6739
|
+
* @experimental
|
|
6740
|
+
*/
|
|
6741
|
+
class ExperimentalPendingTasks {
|
|
6742
|
+
constructor() {
|
|
6743
|
+
this.internalPendingTasks = inject(PendingTasks);
|
|
6744
|
+
}
|
|
6745
|
+
/**
|
|
6746
|
+
* Adds a new task that should block application's stability.
|
|
6747
|
+
* @returns A cleanup function that removes a task when called.
|
|
6748
|
+
*/
|
|
6749
|
+
add() {
|
|
6750
|
+
const taskId = this.internalPendingTasks.add();
|
|
6751
|
+
return () => this.internalPendingTasks.remove(taskId);
|
|
6752
|
+
}
|
|
6753
|
+
/** @nocollapse */
|
|
6754
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
6755
|
+
token: ExperimentalPendingTasks,
|
|
6756
|
+
providedIn: 'root',
|
|
6757
|
+
factory: () => new ExperimentalPendingTasks(),
|
|
6758
|
+
}); }
|
|
6759
|
+
}
|
|
6760
|
+
|
|
6761
|
+
class EventEmitter_ extends Subject {
|
|
6762
|
+
constructor(isAsync = false) {
|
|
6763
|
+
super();
|
|
6764
|
+
this.destroyRef = undefined;
|
|
6765
|
+
this.pendingTasks = undefined;
|
|
6766
|
+
this.__isAsync = isAsync;
|
|
6767
|
+
// Attempt to retrieve a `DestroyRef` and `PendingTasks` optionally.
|
|
6768
|
+
// For backwards compatibility reasons, this cannot be required.
|
|
6769
|
+
if (isInInjectionContext()) {
|
|
6770
|
+
this.destroyRef = inject(DestroyRef, { optional: true }) ?? undefined;
|
|
6771
|
+
this.pendingTasks = inject(PendingTasks, { optional: true }) ?? undefined;
|
|
6772
|
+
}
|
|
6773
|
+
}
|
|
6774
|
+
emit(value) {
|
|
6775
|
+
const prevConsumer = setActiveConsumer$1(null);
|
|
6776
|
+
try {
|
|
6777
|
+
super.next(value);
|
|
6778
|
+
}
|
|
6779
|
+
finally {
|
|
6780
|
+
setActiveConsumer$1(prevConsumer);
|
|
6781
|
+
}
|
|
6782
|
+
}
|
|
6783
|
+
subscribe(observerOrNext, error, complete) {
|
|
6784
|
+
let nextFn = observerOrNext;
|
|
6785
|
+
let errorFn = error || (() => null);
|
|
6786
|
+
let completeFn = complete;
|
|
6787
|
+
if (observerOrNext && typeof observerOrNext === 'object') {
|
|
6788
|
+
const observer = observerOrNext;
|
|
6789
|
+
nextFn = observer.next?.bind(observer);
|
|
6790
|
+
errorFn = observer.error?.bind(observer);
|
|
6791
|
+
completeFn = observer.complete?.bind(observer);
|
|
6792
|
+
}
|
|
6793
|
+
if (this.__isAsync) {
|
|
6794
|
+
errorFn = this.wrapInTimeout(errorFn);
|
|
6795
|
+
if (nextFn) {
|
|
6796
|
+
nextFn = this.wrapInTimeout(nextFn);
|
|
6797
|
+
}
|
|
6798
|
+
if (completeFn) {
|
|
6799
|
+
completeFn = this.wrapInTimeout(completeFn);
|
|
6800
|
+
}
|
|
6801
|
+
}
|
|
6802
|
+
const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });
|
|
6803
|
+
if (observerOrNext instanceof Subscription) {
|
|
6804
|
+
observerOrNext.add(sink);
|
|
6805
|
+
}
|
|
6806
|
+
return sink;
|
|
6807
|
+
}
|
|
6808
|
+
wrapInTimeout(fn) {
|
|
6809
|
+
return (value) => {
|
|
6810
|
+
const taskId = this.pendingTasks?.add();
|
|
6811
|
+
setTimeout(() => {
|
|
6812
|
+
fn(value);
|
|
6813
|
+
if (taskId !== undefined) {
|
|
6814
|
+
this.pendingTasks?.remove(taskId);
|
|
6815
|
+
}
|
|
6816
|
+
});
|
|
6817
|
+
};
|
|
6818
|
+
}
|
|
6819
|
+
}
|
|
6820
|
+
/**
|
|
6821
|
+
* @publicApi
|
|
6822
|
+
*/
|
|
6823
|
+
const EventEmitter = EventEmitter_;
|
|
6824
|
+
|
|
6825
|
+
function noop(...args) {
|
|
6826
|
+
// Do nothing.
|
|
6827
|
+
}
|
|
6828
|
+
|
|
6829
|
+
/**
|
|
6830
|
+
* Gets a scheduling function that runs the callback after the first of setTimeout and
|
|
6831
|
+
* requestAnimationFrame resolves.
|
|
6832
|
+
*
|
|
6833
|
+
* - `requestAnimationFrame` ensures that change detection runs ahead of a browser repaint.
|
|
6834
|
+
* This ensures that the create and update passes of a change detection always happen
|
|
6835
|
+
* in the same frame.
|
|
6836
|
+
* - When the browser is resource-starved, `rAF` can execute _before_ a `setTimeout` because
|
|
6837
|
+
* rendering is a very high priority process. This means that `setTimeout` cannot guarantee
|
|
6838
|
+
* same-frame create and update pass, when `setTimeout` is used to schedule the update phase.
|
|
6839
|
+
* - While `rAF` gives us the desirable same-frame updates, it has two limitations that
|
|
6840
|
+
* prevent it from being used alone. First, it does not run in background tabs, which would
|
|
6841
|
+
* prevent Angular from initializing an application when opened in a new tab (for example).
|
|
6842
|
+
* Second, repeated calls to requestAnimationFrame will execute at the refresh rate of the
|
|
6843
|
+
* hardware (~16ms for a 60Hz display). This would cause significant slowdown of tests that
|
|
6844
|
+
* are written with several updates and asserts in the form of "update; await stable; assert;".
|
|
6845
|
+
* - Both `setTimeout` and `rAF` are able to "coalesce" several events from a single user
|
|
6846
|
+
* interaction into a single change detection. Importantly, this reduces view tree traversals when
|
|
6847
|
+
* compared to an alternative timing mechanism like `queueMicrotask`, where change detection would
|
|
6848
|
+
* then be interleaves between each event.
|
|
6849
|
+
*
|
|
6850
|
+
* By running change detection after the first of `setTimeout` and `rAF` to execute, we get the
|
|
6851
|
+
* best of both worlds.
|
|
6852
|
+
*
|
|
6853
|
+
* @returns a function to cancel the scheduled callback
|
|
6854
|
+
*/
|
|
6855
|
+
function scheduleCallbackWithRafRace(callback) {
|
|
6856
|
+
let timeoutId;
|
|
6857
|
+
let animationFrameId;
|
|
6858
|
+
function cleanup() {
|
|
6859
|
+
callback = noop;
|
|
6860
|
+
try {
|
|
6861
|
+
if (animationFrameId !== undefined && typeof cancelAnimationFrame === 'function') {
|
|
6862
|
+
cancelAnimationFrame(animationFrameId);
|
|
6863
|
+
}
|
|
6864
|
+
if (timeoutId !== undefined) {
|
|
6865
|
+
clearTimeout(timeoutId);
|
|
6866
|
+
}
|
|
6867
|
+
}
|
|
6868
|
+
catch {
|
|
6869
|
+
// Clearing/canceling can fail in tests due to the timing of functions being patched and unpatched
|
|
6870
|
+
// Just ignore the errors - we protect ourselves from this issue by also making the callback a no-op.
|
|
6871
|
+
}
|
|
6872
|
+
}
|
|
6873
|
+
timeoutId = setTimeout(() => {
|
|
6874
|
+
callback();
|
|
6875
|
+
cleanup();
|
|
6876
|
+
});
|
|
6877
|
+
if (typeof requestAnimationFrame === 'function') {
|
|
6878
|
+
animationFrameId = requestAnimationFrame(() => {
|
|
6879
|
+
callback();
|
|
6880
|
+
cleanup();
|
|
6881
|
+
});
|
|
6882
|
+
}
|
|
6883
|
+
return () => cleanup();
|
|
6884
|
+
}
|
|
6885
|
+
function scheduleCallbackWithMicrotask(callback) {
|
|
6886
|
+
queueMicrotask(() => callback());
|
|
6887
|
+
return () => {
|
|
6888
|
+
callback = noop;
|
|
6889
|
+
};
|
|
6890
|
+
}
|
|
6891
|
+
|
|
6892
|
+
class AsyncStackTaggingZoneSpec {
|
|
6893
|
+
constructor(namePrefix, consoleAsyncStackTaggingImpl = console) {
|
|
6894
|
+
this.name = 'asyncStackTagging for ' + namePrefix;
|
|
6895
|
+
this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null);
|
|
6896
|
+
}
|
|
6897
|
+
onScheduleTask(delegate, _current, target, task) {
|
|
6898
|
+
task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`);
|
|
6899
|
+
return delegate.scheduleTask(target, task);
|
|
6900
|
+
}
|
|
6901
|
+
onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) {
|
|
6902
|
+
let ret;
|
|
6903
|
+
if (task.consoleTask) {
|
|
6904
|
+
ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs));
|
|
6905
|
+
}
|
|
6906
|
+
else {
|
|
6907
|
+
ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs);
|
|
6908
|
+
}
|
|
6909
|
+
return ret;
|
|
6910
|
+
}
|
|
6911
|
+
}
|
|
6912
|
+
|
|
6913
|
+
/**
|
|
6914
|
+
* An injectable service for executing work inside or outside of the Angular zone.
|
|
6915
|
+
*
|
|
6916
|
+
* The most common use of this service is to optimize performance when starting a work consisting of
|
|
6917
|
+
* one or more asynchronous tasks that don't require UI updates or error handling to be handled by
|
|
6918
|
+
* Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
|
|
6919
|
+
* can reenter the Angular zone via {@link #run}.
|
|
6920
|
+
*
|
|
6921
|
+
* <!-- TODO: add/fix links to:
|
|
6922
|
+
* - docs explaining zones and the use of zones in Angular and change-detection
|
|
6923
|
+
* - link to runOutsideAngular/run (throughout this file!)
|
|
6924
|
+
* -->
|
|
6925
|
+
*
|
|
6926
|
+
* @usageNotes
|
|
6927
|
+
* ### Example
|
|
6928
|
+
*
|
|
6929
|
+
* ```
|
|
6930
|
+
* import {Component, NgZone} from '@angular/core';
|
|
6931
|
+
* import {NgIf} from '@angular/common';
|
|
6932
|
+
*
|
|
6933
|
+
* @Component({
|
|
6934
|
+
* selector: 'ng-zone-demo',
|
|
6935
|
+
* template: `
|
|
6936
|
+
* <h2>Demo: NgZone</h2>
|
|
6937
|
+
*
|
|
6938
|
+
* <p>Progress: {{progress}}%</p>
|
|
6939
|
+
* <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
|
|
6940
|
+
*
|
|
6941
|
+
* <button (click)="processWithinAngularZone()">Process within Angular zone</button>
|
|
6942
|
+
* <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
|
|
6943
|
+
* `,
|
|
6944
|
+
* })
|
|
6945
|
+
* export class NgZoneDemo {
|
|
6946
|
+
* progress: number = 0;
|
|
6947
|
+
* label: string;
|
|
6948
|
+
*
|
|
6949
|
+
* constructor(private _ngZone: NgZone) {}
|
|
6950
|
+
*
|
|
6951
|
+
* // Loop inside the Angular zone
|
|
6952
|
+
* // so the UI DOES refresh after each setTimeout cycle
|
|
6953
|
+
* processWithinAngularZone() {
|
|
6954
|
+
* this.label = 'inside';
|
|
6955
|
+
* this.progress = 0;
|
|
6956
|
+
* this._increaseProgress(() => console.log('Inside Done!'));
|
|
6957
|
+
* }
|
|
6958
|
+
*
|
|
6959
|
+
* // Loop outside of the Angular zone
|
|
6960
|
+
* // so the UI DOES NOT refresh after each setTimeout cycle
|
|
6961
|
+
* processOutsideOfAngularZone() {
|
|
6962
|
+
* this.label = 'outside';
|
|
6963
|
+
* this.progress = 0;
|
|
6964
|
+
* this._ngZone.runOutsideAngular(() => {
|
|
6965
|
+
* this._increaseProgress(() => {
|
|
6966
|
+
* // reenter the Angular zone and display done
|
|
6967
|
+
* this._ngZone.run(() => { console.log('Outside Done!'); });
|
|
6968
|
+
* });
|
|
6969
|
+
* });
|
|
6970
|
+
* }
|
|
6971
|
+
*
|
|
6972
|
+
* _increaseProgress(doneCallback: () => void) {
|
|
6973
|
+
* this.progress += 1;
|
|
6974
|
+
* console.log(`Current progress: ${this.progress}%`);
|
|
6975
|
+
*
|
|
6976
|
+
* if (this.progress < 100) {
|
|
6977
|
+
* window.setTimeout(() => this._increaseProgress(doneCallback), 10);
|
|
6978
|
+
* } else {
|
|
6979
|
+
* doneCallback();
|
|
6980
|
+
* }
|
|
6981
|
+
* }
|
|
6982
|
+
* }
|
|
6983
|
+
* ```
|
|
6984
|
+
*
|
|
6985
|
+
* @publicApi
|
|
6986
|
+
*/
|
|
6987
|
+
class NgZone {
|
|
6988
|
+
constructor({ enableLongStackTrace = false, shouldCoalesceEventChangeDetection = false, shouldCoalesceRunChangeDetection = false, }) {
|
|
6989
|
+
this.hasPendingMacrotasks = false;
|
|
6990
|
+
this.hasPendingMicrotasks = false;
|
|
6991
|
+
/**
|
|
6992
|
+
* Whether there are no outstanding microtasks or macrotasks.
|
|
6993
|
+
*/
|
|
6994
|
+
this.isStable = true;
|
|
6995
|
+
/**
|
|
6996
|
+
* Notifies when code enters Angular Zone. This gets fired first on VM Turn.
|
|
6997
|
+
*/
|
|
6998
|
+
this.onUnstable = new EventEmitter(false);
|
|
6999
|
+
/**
|
|
7000
|
+
* Notifies when there is no more microtasks enqueued in the current VM Turn.
|
|
7001
|
+
* This is a hint for Angular to do change detection, which may enqueue more microtasks.
|
|
7002
|
+
* For this reason this event can fire multiple times per VM Turn.
|
|
7003
|
+
*/
|
|
7004
|
+
this.onMicrotaskEmpty = new EventEmitter(false);
|
|
7005
|
+
/**
|
|
7006
|
+
* Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
|
|
7007
|
+
* implies we are about to relinquish VM turn.
|
|
7008
|
+
* This event gets called just once.
|
|
7009
|
+
*/
|
|
7010
|
+
this.onStable = new EventEmitter(false);
|
|
7011
|
+
/**
|
|
7012
|
+
* Notifies that an error has been delivered.
|
|
7013
|
+
*/
|
|
7014
|
+
this.onError = new EventEmitter(false);
|
|
7015
|
+
if (typeof Zone == 'undefined') {
|
|
7016
|
+
throw new RuntimeError(908 /* RuntimeErrorCode.MISSING_ZONEJS */, ngDevMode && `In this configuration Angular requires Zone.js`);
|
|
7017
|
+
}
|
|
7018
|
+
Zone.assertZonePatched();
|
|
7019
|
+
const self = this;
|
|
7020
|
+
self._nesting = 0;
|
|
7021
|
+
self._outer = self._inner = Zone.current;
|
|
7022
|
+
// AsyncStackTaggingZoneSpec provides `linked stack traces` to show
|
|
7023
|
+
// where the async operation is scheduled. For more details, refer
|
|
7024
|
+
// to this article, https://developer.chrome.com/blog/devtools-better-angular-debugging/
|
|
7025
|
+
// And we only import this AsyncStackTaggingZoneSpec in development mode,
|
|
7026
|
+
// in the production mode, the AsyncStackTaggingZoneSpec will be tree shaken away.
|
|
7027
|
+
if (ngDevMode) {
|
|
7028
|
+
self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec('Angular'));
|
|
7029
|
+
}
|
|
7030
|
+
if (Zone['TaskTrackingZoneSpec']) {
|
|
7031
|
+
self._inner = self._inner.fork(new Zone['TaskTrackingZoneSpec']());
|
|
7032
|
+
}
|
|
7033
|
+
if (enableLongStackTrace && Zone['longStackTraceZoneSpec']) {
|
|
7034
|
+
self._inner = self._inner.fork(Zone['longStackTraceZoneSpec']);
|
|
7035
|
+
}
|
|
7036
|
+
// if shouldCoalesceRunChangeDetection is true, all tasks including event tasks will be
|
|
7037
|
+
// coalesced, so shouldCoalesceEventChangeDetection option is not necessary and can be skipped.
|
|
7038
|
+
self.shouldCoalesceEventChangeDetection =
|
|
7039
|
+
!shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;
|
|
7040
|
+
self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;
|
|
7041
|
+
self.callbackScheduled = false;
|
|
7042
|
+
forkInnerZoneWithAngularBehavior(self);
|
|
7043
|
+
}
|
|
7044
|
+
/**
|
|
7045
|
+
This method checks whether the method call happens within an Angular Zone instance.
|
|
7046
|
+
*/
|
|
7047
|
+
static isInAngularZone() {
|
|
7048
|
+
// Zone needs to be checked, because this method might be called even when NoopNgZone is used.
|
|
7049
|
+
return typeof Zone !== 'undefined' && Zone.current.get('isAngularZone') === true;
|
|
7050
|
+
}
|
|
7051
|
+
/**
|
|
7052
|
+
Assures that the method is called within the Angular Zone, otherwise throws an error.
|
|
7053
|
+
*/
|
|
7054
|
+
static assertInAngularZone() {
|
|
7055
|
+
if (!NgZone.isInAngularZone()) {
|
|
7056
|
+
throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to be in Angular Zone, but it is not!');
|
|
7057
|
+
}
|
|
7058
|
+
}
|
|
7059
|
+
/**
|
|
7060
|
+
Assures that the method is called outside of the Angular Zone, otherwise throws an error.
|
|
7061
|
+
*/
|
|
7062
|
+
static assertNotInAngularZone() {
|
|
7063
|
+
if (NgZone.isInAngularZone()) {
|
|
7064
|
+
throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to not be in Angular Zone, but it is!');
|
|
7065
|
+
}
|
|
7066
|
+
}
|
|
7067
|
+
/**
|
|
7068
|
+
* Executes the `fn` function synchronously within the Angular zone and returns value returned by
|
|
7069
|
+
* the function.
|
|
7070
|
+
*
|
|
7071
|
+
* Running functions via `run` allows you to reenter Angular zone from a task that was executed
|
|
7072
|
+
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
|
|
7073
|
+
*
|
|
7074
|
+
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
7075
|
+
* within the Angular zone.
|
|
7076
|
+
*
|
|
7077
|
+
* If a synchronous error happens it will be rethrown and not reported via `onError`.
|
|
7078
|
+
*/
|
|
7079
|
+
run(fn, applyThis, applyArgs) {
|
|
7080
|
+
return this._inner.run(fn, applyThis, applyArgs);
|
|
7081
|
+
}
|
|
7082
|
+
/**
|
|
7083
|
+
* Executes the `fn` function synchronously within the Angular zone as a task and returns value
|
|
7084
|
+
* returned by the function.
|
|
7085
|
+
*
|
|
7086
|
+
* Running functions via `run` allows you to reenter Angular zone from a task that was executed
|
|
7087
|
+
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
|
|
7088
|
+
*
|
|
7089
|
+
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
7090
|
+
* within the Angular zone.
|
|
7091
|
+
*
|
|
7092
|
+
* If a synchronous error happens it will be rethrown and not reported via `onError`.
|
|
7093
|
+
*/
|
|
7094
|
+
runTask(fn, applyThis, applyArgs, name) {
|
|
7095
|
+
const zone = this._inner;
|
|
7096
|
+
const task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);
|
|
7097
|
+
try {
|
|
7098
|
+
return zone.runTask(task, applyThis, applyArgs);
|
|
7099
|
+
}
|
|
7100
|
+
finally {
|
|
7101
|
+
zone.cancelTask(task);
|
|
7102
|
+
}
|
|
7103
|
+
}
|
|
7104
|
+
/**
|
|
7105
|
+
* Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
|
|
7106
|
+
* rethrown.
|
|
7107
|
+
*/
|
|
7108
|
+
runGuarded(fn, applyThis, applyArgs) {
|
|
7109
|
+
return this._inner.runGuarded(fn, applyThis, applyArgs);
|
|
7110
|
+
}
|
|
7111
|
+
/**
|
|
7112
|
+
* Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
|
|
7113
|
+
* the function.
|
|
7114
|
+
*
|
|
7115
|
+
* Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
|
|
7116
|
+
* work that
|
|
7117
|
+
* doesn't trigger Angular change-detection or is subject to Angular's error handling.
|
|
7118
|
+
*
|
|
7119
|
+
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
7120
|
+
* outside of the Angular zone.
|
|
7121
|
+
*
|
|
7122
|
+
* Use {@link #run} to reenter the Angular zone and do work that updates the application model.
|
|
7123
|
+
*/
|
|
7124
|
+
runOutsideAngular(fn) {
|
|
7125
|
+
return this._outer.run(fn);
|
|
7126
|
+
}
|
|
7127
|
+
}
|
|
7128
|
+
const EMPTY_PAYLOAD = {};
|
|
7129
|
+
function checkStable(zone) {
|
|
7130
|
+
// TODO: @JiaLiPassion, should check zone.isCheckStableRunning to prevent
|
|
7131
|
+
// re-entry. The case is:
|
|
7132
|
+
//
|
|
7133
|
+
// @Component({...})
|
|
7134
|
+
// export class AppComponent {
|
|
7135
|
+
// constructor(private ngZone: NgZone) {
|
|
7136
|
+
// this.ngZone.onStable.subscribe(() => {
|
|
7137
|
+
// this.ngZone.run(() => console.log('stable'););
|
|
7138
|
+
// });
|
|
7139
|
+
// }
|
|
7140
|
+
//
|
|
7141
|
+
// The onStable subscriber run another function inside ngZone
|
|
7142
|
+
// which causes `checkStable()` re-entry.
|
|
7143
|
+
// But this fix causes some issues in g3, so this fix will be
|
|
7144
|
+
// launched in another PR.
|
|
7145
|
+
if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {
|
|
7146
|
+
try {
|
|
7147
|
+
zone._nesting++;
|
|
7148
|
+
zone.onMicrotaskEmpty.emit(null);
|
|
7149
|
+
}
|
|
7150
|
+
finally {
|
|
7151
|
+
zone._nesting--;
|
|
7152
|
+
if (!zone.hasPendingMicrotasks) {
|
|
7153
|
+
try {
|
|
7154
|
+
zone.runOutsideAngular(() => zone.onStable.emit(null));
|
|
7155
|
+
}
|
|
7156
|
+
finally {
|
|
7157
|
+
zone.isStable = true;
|
|
7158
|
+
}
|
|
7159
|
+
}
|
|
7160
|
+
}
|
|
7161
|
+
}
|
|
7162
|
+
}
|
|
7163
|
+
function delayChangeDetectionForEvents(zone) {
|
|
7164
|
+
/**
|
|
7165
|
+
* We also need to check _nesting here
|
|
7166
|
+
* Consider the following case with shouldCoalesceRunChangeDetection = true
|
|
7167
|
+
*
|
|
7168
|
+
* ngZone.run(() => {});
|
|
7169
|
+
* ngZone.run(() => {});
|
|
7170
|
+
*
|
|
7171
|
+
* We want the two `ngZone.run()` only trigger one change detection
|
|
7172
|
+
* when shouldCoalesceRunChangeDetection is true.
|
|
7173
|
+
* And because in this case, change detection run in async way(requestAnimationFrame),
|
|
7174
|
+
* so we also need to check the _nesting here to prevent multiple
|
|
7175
|
+
* change detections.
|
|
7176
|
+
*/
|
|
7177
|
+
if (zone.isCheckStableRunning || zone.callbackScheduled) {
|
|
7178
|
+
return;
|
|
7179
|
+
}
|
|
7180
|
+
zone.callbackScheduled = true;
|
|
7181
|
+
Zone.root.run(() => {
|
|
7182
|
+
scheduleCallbackWithRafRace(() => {
|
|
7183
|
+
zone.callbackScheduled = false;
|
|
7184
|
+
updateMicroTaskStatus(zone);
|
|
7185
|
+
zone.isCheckStableRunning = true;
|
|
7186
|
+
checkStable(zone);
|
|
7187
|
+
zone.isCheckStableRunning = false;
|
|
7188
|
+
});
|
|
7189
|
+
});
|
|
7190
|
+
updateMicroTaskStatus(zone);
|
|
7191
|
+
}
|
|
7192
|
+
function forkInnerZoneWithAngularBehavior(zone) {
|
|
7193
|
+
const delayChangeDetectionForEventsDelegate = () => {
|
|
7194
|
+
delayChangeDetectionForEvents(zone);
|
|
7195
|
+
};
|
|
7196
|
+
zone._inner = zone._inner.fork({
|
|
7197
|
+
name: 'angular',
|
|
7198
|
+
properties: { 'isAngularZone': true },
|
|
7199
|
+
onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => {
|
|
7200
|
+
// Prevent triggering change detection when the flag is detected.
|
|
7201
|
+
if (shouldBeIgnoredByZone(applyArgs)) {
|
|
7202
|
+
return delegate.invokeTask(target, task, applyThis, applyArgs);
|
|
7203
|
+
}
|
|
7204
|
+
try {
|
|
7205
|
+
onEnter(zone);
|
|
7206
|
+
return delegate.invokeTask(target, task, applyThis, applyArgs);
|
|
7207
|
+
}
|
|
7208
|
+
finally {
|
|
7209
|
+
if ((zone.shouldCoalesceEventChangeDetection && task.type === 'eventTask') ||
|
|
7210
|
+
zone.shouldCoalesceRunChangeDetection) {
|
|
7211
|
+
delayChangeDetectionForEventsDelegate();
|
|
7212
|
+
}
|
|
7213
|
+
onLeave(zone);
|
|
7214
|
+
}
|
|
7215
|
+
},
|
|
7216
|
+
onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => {
|
|
7217
|
+
try {
|
|
7218
|
+
onEnter(zone);
|
|
7219
|
+
return delegate.invoke(target, callback, applyThis, applyArgs, source);
|
|
7220
|
+
}
|
|
7221
|
+
finally {
|
|
7222
|
+
if (zone.shouldCoalesceRunChangeDetection &&
|
|
7223
|
+
// Do not delay change detection when the task is the scheduler's tick.
|
|
7224
|
+
// We need to synchronously trigger the stability logic so that the
|
|
7225
|
+
// zone-based scheduler can prevent a duplicate ApplicationRef.tick
|
|
7226
|
+
// by first checking if the scheduler tick is running. This does seem a bit roundabout,
|
|
7227
|
+
// but we _do_ still want to trigger all the correct events when we exit the zone.run
|
|
7228
|
+
// (`onMicrotaskEmpty` and `onStable` _should_ emit; developers can have code which
|
|
7229
|
+
// relies on these events happening after change detection runs).
|
|
7230
|
+
// Note: `zone.callbackScheduled` is already in delayChangeDetectionForEventsDelegate
|
|
7231
|
+
// but is added here as well to prevent reads of applyArgs when not necessary
|
|
7232
|
+
!zone.callbackScheduled &&
|
|
7233
|
+
!isSchedulerTick(applyArgs)) {
|
|
7234
|
+
delayChangeDetectionForEventsDelegate();
|
|
7235
|
+
}
|
|
7236
|
+
onLeave(zone);
|
|
7237
|
+
}
|
|
7238
|
+
},
|
|
7239
|
+
onHasTask: (delegate, current, target, hasTaskState) => {
|
|
7240
|
+
delegate.hasTask(target, hasTaskState);
|
|
7241
|
+
if (current === target) {
|
|
7242
|
+
// We are only interested in hasTask events which originate from our zone
|
|
7243
|
+
// (A child hasTask event is not interesting to us)
|
|
7244
|
+
if (hasTaskState.change == 'microTask') {
|
|
7245
|
+
zone._hasPendingMicrotasks = hasTaskState.microTask;
|
|
7246
|
+
updateMicroTaskStatus(zone);
|
|
7247
|
+
checkStable(zone);
|
|
7248
|
+
}
|
|
7249
|
+
else if (hasTaskState.change == 'macroTask') {
|
|
7250
|
+
zone.hasPendingMacrotasks = hasTaskState.macroTask;
|
|
7251
|
+
}
|
|
7252
|
+
}
|
|
7253
|
+
},
|
|
7254
|
+
onHandleError: (delegate, current, target, error) => {
|
|
7255
|
+
delegate.handleError(target, error);
|
|
7256
|
+
zone.runOutsideAngular(() => zone.onError.emit(error));
|
|
7257
|
+
return false;
|
|
7258
|
+
},
|
|
7259
|
+
});
|
|
7260
|
+
}
|
|
7261
|
+
function updateMicroTaskStatus(zone) {
|
|
7262
|
+
if (zone._hasPendingMicrotasks ||
|
|
7263
|
+
((zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) &&
|
|
7264
|
+
zone.callbackScheduled === true)) {
|
|
7265
|
+
zone.hasPendingMicrotasks = true;
|
|
7266
|
+
}
|
|
7267
|
+
else {
|
|
7268
|
+
zone.hasPendingMicrotasks = false;
|
|
7269
|
+
}
|
|
7270
|
+
}
|
|
7271
|
+
function onEnter(zone) {
|
|
7272
|
+
zone._nesting++;
|
|
7273
|
+
if (zone.isStable) {
|
|
7274
|
+
zone.isStable = false;
|
|
7275
|
+
zone.onUnstable.emit(null);
|
|
7276
|
+
}
|
|
7277
|
+
}
|
|
7278
|
+
function onLeave(zone) {
|
|
7279
|
+
zone._nesting--;
|
|
7280
|
+
checkStable(zone);
|
|
7281
|
+
}
|
|
7282
|
+
/**
|
|
7283
|
+
* Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
|
|
7284
|
+
* to framework to perform rendering.
|
|
7285
|
+
*/
|
|
7286
|
+
class NoopNgZone {
|
|
7287
|
+
constructor() {
|
|
7288
|
+
this.hasPendingMicrotasks = false;
|
|
7289
|
+
this.hasPendingMacrotasks = false;
|
|
7290
|
+
this.isStable = true;
|
|
7291
|
+
this.onUnstable = new EventEmitter();
|
|
7292
|
+
this.onMicrotaskEmpty = new EventEmitter();
|
|
7293
|
+
this.onStable = new EventEmitter();
|
|
7294
|
+
this.onError = new EventEmitter();
|
|
7295
|
+
}
|
|
7296
|
+
run(fn, applyThis, applyArgs) {
|
|
7297
|
+
return fn.apply(applyThis, applyArgs);
|
|
7298
|
+
}
|
|
7299
|
+
runGuarded(fn, applyThis, applyArgs) {
|
|
7300
|
+
return fn.apply(applyThis, applyArgs);
|
|
7301
|
+
}
|
|
7302
|
+
runOutsideAngular(fn) {
|
|
7303
|
+
return fn();
|
|
7304
|
+
}
|
|
7305
|
+
runTask(fn, applyThis, applyArgs, name) {
|
|
7306
|
+
return fn.apply(applyThis, applyArgs);
|
|
7307
|
+
}
|
|
7308
|
+
}
|
|
7309
|
+
function shouldBeIgnoredByZone(applyArgs) {
|
|
7310
|
+
return hasApplyArgsData(applyArgs, '__ignore_ng_zone__');
|
|
7311
|
+
}
|
|
7312
|
+
function isSchedulerTick(applyArgs) {
|
|
7313
|
+
return hasApplyArgsData(applyArgs, '__scheduler_tick__');
|
|
7314
|
+
}
|
|
7315
|
+
function hasApplyArgsData(applyArgs, key) {
|
|
7316
|
+
if (!Array.isArray(applyArgs)) {
|
|
7317
|
+
return false;
|
|
7318
|
+
}
|
|
7319
|
+
// We should only ever get 1 arg passed through to invokeTask.
|
|
7320
|
+
// Short circuit here incase that behavior changes.
|
|
7321
|
+
if (applyArgs.length !== 1) {
|
|
7322
|
+
return false;
|
|
7323
|
+
}
|
|
7324
|
+
return applyArgs[0]?.data?.[key] === true;
|
|
7325
|
+
}
|
|
7326
|
+
function getNgZone(ngZoneToUse = 'zone.js', options) {
|
|
7327
|
+
if (ngZoneToUse === 'noop') {
|
|
7328
|
+
return new NoopNgZone();
|
|
7329
|
+
}
|
|
7330
|
+
if (ngZoneToUse === 'zone.js') {
|
|
7331
|
+
return new NgZone(options);
|
|
7332
|
+
}
|
|
7333
|
+
return ngZoneToUse;
|
|
7334
|
+
}
|
|
7335
|
+
|
|
7336
|
+
// Public API for Zone
|
|
7337
|
+
|
|
6642
7338
|
/**
|
|
6643
7339
|
* Provides a hook for centralized exception handling.
|
|
6644
7340
|
*
|
|
@@ -6696,45 +7392,12 @@ class ErrorHandler {
|
|
|
6696
7392
|
const INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'internal error handler' : '', {
|
|
6697
7393
|
providedIn: 'root',
|
|
6698
7394
|
factory: () => {
|
|
7395
|
+
const zone = inject(NgZone);
|
|
6699
7396
|
const userErrorHandler = inject(ErrorHandler);
|
|
6700
|
-
return userErrorHandler.handleError
|
|
7397
|
+
return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));
|
|
6701
7398
|
},
|
|
6702
7399
|
});
|
|
6703
7400
|
|
|
6704
|
-
/**
|
|
6705
|
-
* `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
|
|
6706
|
-
* The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
|
|
6707
|
-
* is injected in a component or directive, the callbacks run when that component or
|
|
6708
|
-
* directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.
|
|
6709
|
-
*
|
|
6710
|
-
* @publicApi
|
|
6711
|
-
*/
|
|
6712
|
-
class DestroyRef {
|
|
6713
|
-
/**
|
|
6714
|
-
* @internal
|
|
6715
|
-
* @nocollapse
|
|
6716
|
-
*/
|
|
6717
|
-
static { this.__NG_ELEMENT_ID__ = injectDestroyRef; }
|
|
6718
|
-
/**
|
|
6719
|
-
* @internal
|
|
6720
|
-
* @nocollapse
|
|
6721
|
-
*/
|
|
6722
|
-
static { this.__NG_ENV_ID__ = (injector) => injector; }
|
|
6723
|
-
}
|
|
6724
|
-
class NodeInjectorDestroyRef extends DestroyRef {
|
|
6725
|
-
constructor(_lView) {
|
|
6726
|
-
super();
|
|
6727
|
-
this._lView = _lView;
|
|
6728
|
-
}
|
|
6729
|
-
onDestroy(callback) {
|
|
6730
|
-
storeLViewOnDestroy(this._lView, callback);
|
|
6731
|
-
return () => removeLViewOnDestroy(this._lView, callback);
|
|
6732
|
-
}
|
|
6733
|
-
}
|
|
6734
|
-
function injectDestroyRef() {
|
|
6735
|
-
return new NodeInjectorDestroyRef(getLView());
|
|
6736
|
-
}
|
|
6737
|
-
|
|
6738
7401
|
/**
|
|
6739
7402
|
* An `OutputEmitterRef` is created by the `output()` function and can be
|
|
6740
7403
|
* used to emit values to consumers of your directive or component.
|
|
@@ -6973,155 +7636,6 @@ function unwrapElementRef(value) {
|
|
|
6973
7636
|
return value instanceof ElementRef ? value.nativeElement : value;
|
|
6974
7637
|
}
|
|
6975
7638
|
|
|
6976
|
-
/**
|
|
6977
|
-
* Internal implementation of the pending tasks service.
|
|
6978
|
-
*/
|
|
6979
|
-
class PendingTasks {
|
|
6980
|
-
constructor() {
|
|
6981
|
-
this.taskId = 0;
|
|
6982
|
-
this.pendingTasks = new Set();
|
|
6983
|
-
this.hasPendingTasks = new BehaviorSubject(false);
|
|
6984
|
-
}
|
|
6985
|
-
get _hasPendingTasks() {
|
|
6986
|
-
return this.hasPendingTasks.value;
|
|
6987
|
-
}
|
|
6988
|
-
add() {
|
|
6989
|
-
if (!this._hasPendingTasks) {
|
|
6990
|
-
this.hasPendingTasks.next(true);
|
|
6991
|
-
}
|
|
6992
|
-
const taskId = this.taskId++;
|
|
6993
|
-
this.pendingTasks.add(taskId);
|
|
6994
|
-
return taskId;
|
|
6995
|
-
}
|
|
6996
|
-
remove(taskId) {
|
|
6997
|
-
this.pendingTasks.delete(taskId);
|
|
6998
|
-
if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
|
|
6999
|
-
this.hasPendingTasks.next(false);
|
|
7000
|
-
}
|
|
7001
|
-
}
|
|
7002
|
-
ngOnDestroy() {
|
|
7003
|
-
this.pendingTasks.clear();
|
|
7004
|
-
if (this._hasPendingTasks) {
|
|
7005
|
-
this.hasPendingTasks.next(false);
|
|
7006
|
-
}
|
|
7007
|
-
}
|
|
7008
|
-
/** @nocollapse */
|
|
7009
|
-
static { this.ɵprov = ɵɵdefineInjectable({
|
|
7010
|
-
token: PendingTasks,
|
|
7011
|
-
providedIn: 'root',
|
|
7012
|
-
factory: () => new PendingTasks(),
|
|
7013
|
-
}); }
|
|
7014
|
-
}
|
|
7015
|
-
/**
|
|
7016
|
-
* Experimental service that keeps track of pending tasks contributing to the stableness of Angular
|
|
7017
|
-
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
|
|
7018
|
-
* tasks influencing stability, this API gives control over stability to library and application
|
|
7019
|
-
* developers for specific cases not covered by Angular internals.
|
|
7020
|
-
*
|
|
7021
|
-
* The concept of stability comes into play in several important scenarios:
|
|
7022
|
-
* - SSR process needs to wait for the application stability before serializing and sending rendered
|
|
7023
|
-
* HTML;
|
|
7024
|
-
* - tests might want to delay assertions until the application becomes stable;
|
|
7025
|
-
*
|
|
7026
|
-
* @usageNotes
|
|
7027
|
-
* ```typescript
|
|
7028
|
-
* const pendingTasks = inject(ExperimentalPendingTasks);
|
|
7029
|
-
* const taskCleanup = pendingTasks.add();
|
|
7030
|
-
* // do work that should block application's stability and then:
|
|
7031
|
-
* taskCleanup();
|
|
7032
|
-
* ```
|
|
7033
|
-
*
|
|
7034
|
-
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
7035
|
-
* in patch versions. We will iterate on the exact API based on the feedback and our understanding
|
|
7036
|
-
* of the problem and solution space.
|
|
7037
|
-
*
|
|
7038
|
-
* @publicApi
|
|
7039
|
-
* @experimental
|
|
7040
|
-
*/
|
|
7041
|
-
class ExperimentalPendingTasks {
|
|
7042
|
-
constructor() {
|
|
7043
|
-
this.internalPendingTasks = inject(PendingTasks);
|
|
7044
|
-
}
|
|
7045
|
-
/**
|
|
7046
|
-
* Adds a new task that should block application's stability.
|
|
7047
|
-
* @returns A cleanup function that removes a task when called.
|
|
7048
|
-
*/
|
|
7049
|
-
add() {
|
|
7050
|
-
const taskId = this.internalPendingTasks.add();
|
|
7051
|
-
return () => this.internalPendingTasks.remove(taskId);
|
|
7052
|
-
}
|
|
7053
|
-
/** @nocollapse */
|
|
7054
|
-
static { this.ɵprov = ɵɵdefineInjectable({
|
|
7055
|
-
token: ExperimentalPendingTasks,
|
|
7056
|
-
providedIn: 'root',
|
|
7057
|
-
factory: () => new ExperimentalPendingTasks(),
|
|
7058
|
-
}); }
|
|
7059
|
-
}
|
|
7060
|
-
|
|
7061
|
-
class EventEmitter_ extends Subject {
|
|
7062
|
-
constructor(isAsync = false) {
|
|
7063
|
-
super();
|
|
7064
|
-
this.destroyRef = undefined;
|
|
7065
|
-
this.pendingTasks = undefined;
|
|
7066
|
-
this.__isAsync = isAsync;
|
|
7067
|
-
// Attempt to retrieve a `DestroyRef` and `PendingTasks` optionally.
|
|
7068
|
-
// For backwards compatibility reasons, this cannot be required.
|
|
7069
|
-
if (isInInjectionContext()) {
|
|
7070
|
-
this.destroyRef = inject(DestroyRef, { optional: true }) ?? undefined;
|
|
7071
|
-
this.pendingTasks = inject(PendingTasks, { optional: true }) ?? undefined;
|
|
7072
|
-
}
|
|
7073
|
-
}
|
|
7074
|
-
emit(value) {
|
|
7075
|
-
const prevConsumer = setActiveConsumer$1(null);
|
|
7076
|
-
try {
|
|
7077
|
-
super.next(value);
|
|
7078
|
-
}
|
|
7079
|
-
finally {
|
|
7080
|
-
setActiveConsumer$1(prevConsumer);
|
|
7081
|
-
}
|
|
7082
|
-
}
|
|
7083
|
-
subscribe(observerOrNext, error, complete) {
|
|
7084
|
-
let nextFn = observerOrNext;
|
|
7085
|
-
let errorFn = error || (() => null);
|
|
7086
|
-
let completeFn = complete;
|
|
7087
|
-
if (observerOrNext && typeof observerOrNext === 'object') {
|
|
7088
|
-
const observer = observerOrNext;
|
|
7089
|
-
nextFn = observer.next?.bind(observer);
|
|
7090
|
-
errorFn = observer.error?.bind(observer);
|
|
7091
|
-
completeFn = observer.complete?.bind(observer);
|
|
7092
|
-
}
|
|
7093
|
-
if (this.__isAsync) {
|
|
7094
|
-
errorFn = this.wrapInTimeout(errorFn);
|
|
7095
|
-
if (nextFn) {
|
|
7096
|
-
nextFn = this.wrapInTimeout(nextFn);
|
|
7097
|
-
}
|
|
7098
|
-
if (completeFn) {
|
|
7099
|
-
completeFn = this.wrapInTimeout(completeFn);
|
|
7100
|
-
}
|
|
7101
|
-
}
|
|
7102
|
-
const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });
|
|
7103
|
-
if (observerOrNext instanceof Subscription) {
|
|
7104
|
-
observerOrNext.add(sink);
|
|
7105
|
-
}
|
|
7106
|
-
return sink;
|
|
7107
|
-
}
|
|
7108
|
-
wrapInTimeout(fn) {
|
|
7109
|
-
return (value) => {
|
|
7110
|
-
const taskId = this.pendingTasks?.add();
|
|
7111
|
-
setTimeout(() => {
|
|
7112
|
-
fn(value);
|
|
7113
|
-
if (taskId !== undefined) {
|
|
7114
|
-
this.pendingTasks?.remove(taskId);
|
|
7115
|
-
}
|
|
7116
|
-
});
|
|
7117
|
-
};
|
|
7118
|
-
}
|
|
7119
|
-
}
|
|
7120
|
-
/**
|
|
7121
|
-
* @publicApi
|
|
7122
|
-
*/
|
|
7123
|
-
const EventEmitter = EventEmitter_;
|
|
7124
|
-
|
|
7125
7639
|
function symbolIterator() {
|
|
7126
7640
|
// @ts-expect-error accessing a private member
|
|
7127
7641
|
return this._results[Symbol.iterator]();
|
|
@@ -9219,7 +9733,7 @@ class DOMParserHelper {
|
|
|
9219
9733
|
// the `inertDocumentHelper` instead.
|
|
9220
9734
|
return this.inertDocumentHelper.getInertBodyElement(html);
|
|
9221
9735
|
}
|
|
9222
|
-
body.
|
|
9736
|
+
body.firstChild?.remove();
|
|
9223
9737
|
return body;
|
|
9224
9738
|
}
|
|
9225
9739
|
catch {
|
|
@@ -9562,7 +10076,7 @@ function _sanitizeHtml(defaultDoc, unsafeHtmlInput) {
|
|
|
9562
10076
|
if (inertBodyElement) {
|
|
9563
10077
|
const parent = getTemplateContent(inertBodyElement) || inertBodyElement;
|
|
9564
10078
|
while (parent.firstChild) {
|
|
9565
|
-
parent.
|
|
10079
|
+
parent.firstChild.remove();
|
|
9566
10080
|
}
|
|
9567
10081
|
}
|
|
9568
10082
|
}
|
|
@@ -10899,14 +11413,6 @@ function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove)
|
|
|
10899
11413
|
nativeAppendChild(renderer, parent, child);
|
|
10900
11414
|
}
|
|
10901
11415
|
}
|
|
10902
|
-
/** Removes a node from the DOM given its native parent. */
|
|
10903
|
-
function nativeRemoveChild(renderer, parent, child, isHostElement) {
|
|
10904
|
-
renderer.removeChild(parent, child, isHostElement);
|
|
10905
|
-
}
|
|
10906
|
-
/** Checks if an element is a `<template>` node. */
|
|
10907
|
-
function isTemplateNode(node) {
|
|
10908
|
-
return node.tagName === 'TEMPLATE' && node.content !== undefined;
|
|
10909
|
-
}
|
|
10910
11416
|
/**
|
|
10911
11417
|
* Returns a native parent of a given native node.
|
|
10912
11418
|
*/
|
|
@@ -10999,7 +11505,11 @@ function appendChild(tView, lView, childRNode, childTNode) {
|
|
|
10999
11505
|
function getFirstNativeNode(lView, tNode) {
|
|
11000
11506
|
if (tNode !== null) {
|
|
11001
11507
|
ngDevMode &&
|
|
11002
|
-
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ |
|
|
11508
|
+
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ |
|
|
11509
|
+
12 /* TNodeType.AnyContainer */ |
|
|
11510
|
+
32 /* TNodeType.Icu */ |
|
|
11511
|
+
16 /* TNodeType.Projection */ |
|
|
11512
|
+
128 /* TNodeType.LetDeclaration */);
|
|
11003
11513
|
const tNodeType = tNode.type;
|
|
11004
11514
|
if (tNodeType & 3 /* TNodeType.AnyRNode */) {
|
|
11005
11515
|
return getNativeByTNode(tNode, lView);
|
|
@@ -11022,6 +11532,9 @@ function getFirstNativeNode(lView, tNode) {
|
|
|
11022
11532
|
}
|
|
11023
11533
|
}
|
|
11024
11534
|
}
|
|
11535
|
+
else if (tNodeType & 128 /* TNodeType.LetDeclaration */) {
|
|
11536
|
+
return getFirstNativeNode(lView, tNode.next);
|
|
11537
|
+
}
|
|
11025
11538
|
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
11026
11539
|
let nextRNode = icuContainerIterate(tNode, lView);
|
|
11027
11540
|
let rNode = nextRNode();
|
|
@@ -11077,10 +11590,7 @@ function getBeforeNodeForView(viewIndexInContainer, lContainer) {
|
|
|
11077
11590
|
*/
|
|
11078
11591
|
function nativeRemoveNode(renderer, rNode, isHostElement) {
|
|
11079
11592
|
ngDevMode && ngDevMode.rendererRemoveNode++;
|
|
11080
|
-
|
|
11081
|
-
if (nativeParent) {
|
|
11082
|
-
nativeRemoveChild(renderer, nativeParent, rNode, isHostElement);
|
|
11083
|
-
}
|
|
11593
|
+
renderer.removeChild(null, rNode, isHostElement);
|
|
11084
11594
|
}
|
|
11085
11595
|
/**
|
|
11086
11596
|
* Clears the contents of a given RElement.
|
|
@@ -15726,514 +16236,6 @@ function performanceMarkFeature(feature) {
|
|
|
15726
16236
|
performance?.mark?.('mark_feature_usage', { detail: { feature } });
|
|
15727
16237
|
}
|
|
15728
16238
|
|
|
15729
|
-
/**
|
|
15730
|
-
* Gets a scheduling function that runs the callback after the first of setTimeout and
|
|
15731
|
-
* requestAnimationFrame resolves.
|
|
15732
|
-
*
|
|
15733
|
-
* - `requestAnimationFrame` ensures that change detection runs ahead of a browser repaint.
|
|
15734
|
-
* This ensures that the create and update passes of a change detection always happen
|
|
15735
|
-
* in the same frame.
|
|
15736
|
-
* - When the browser is resource-starved, `rAF` can execute _before_ a `setTimeout` because
|
|
15737
|
-
* rendering is a very high priority process. This means that `setTimeout` cannot guarantee
|
|
15738
|
-
* same-frame create and update pass, when `setTimeout` is used to schedule the update phase.
|
|
15739
|
-
* - While `rAF` gives us the desirable same-frame updates, it has two limitations that
|
|
15740
|
-
* prevent it from being used alone. First, it does not run in background tabs, which would
|
|
15741
|
-
* prevent Angular from initializing an application when opened in a new tab (for example).
|
|
15742
|
-
* Second, repeated calls to requestAnimationFrame will execute at the refresh rate of the
|
|
15743
|
-
* hardware (~16ms for a 60Hz display). This would cause significant slowdown of tests that
|
|
15744
|
-
* are written with several updates and asserts in the form of "update; await stable; assert;".
|
|
15745
|
-
* - Both `setTimeout` and `rAF` are able to "coalesce" several events from a single user
|
|
15746
|
-
* interaction into a single change detection. Importantly, this reduces view tree traversals when
|
|
15747
|
-
* compared to an alternative timing mechanism like `queueMicrotask`, where change detection would
|
|
15748
|
-
* then be interleaves between each event.
|
|
15749
|
-
*
|
|
15750
|
-
* By running change detection after the first of `setTimeout` and `rAF` to execute, we get the
|
|
15751
|
-
* best of both worlds.
|
|
15752
|
-
*
|
|
15753
|
-
* @returns a function to cancel the scheduled callback
|
|
15754
|
-
*/
|
|
15755
|
-
function scheduleCallbackWithRafRace(callback) {
|
|
15756
|
-
let executeCallback = true;
|
|
15757
|
-
setTimeout(() => {
|
|
15758
|
-
if (!executeCallback) {
|
|
15759
|
-
return;
|
|
15760
|
-
}
|
|
15761
|
-
executeCallback = false;
|
|
15762
|
-
callback();
|
|
15763
|
-
});
|
|
15764
|
-
if (typeof _global['requestAnimationFrame'] === 'function') {
|
|
15765
|
-
_global['requestAnimationFrame'](() => {
|
|
15766
|
-
if (!executeCallback) {
|
|
15767
|
-
return;
|
|
15768
|
-
}
|
|
15769
|
-
executeCallback = false;
|
|
15770
|
-
callback();
|
|
15771
|
-
});
|
|
15772
|
-
}
|
|
15773
|
-
return () => {
|
|
15774
|
-
executeCallback = false;
|
|
15775
|
-
};
|
|
15776
|
-
}
|
|
15777
|
-
function scheduleCallbackWithMicrotask(callback) {
|
|
15778
|
-
let executeCallback = true;
|
|
15779
|
-
queueMicrotask(() => {
|
|
15780
|
-
if (executeCallback) {
|
|
15781
|
-
callback();
|
|
15782
|
-
}
|
|
15783
|
-
});
|
|
15784
|
-
return () => {
|
|
15785
|
-
executeCallback = false;
|
|
15786
|
-
};
|
|
15787
|
-
}
|
|
15788
|
-
|
|
15789
|
-
function noop(...args) {
|
|
15790
|
-
// Do nothing.
|
|
15791
|
-
}
|
|
15792
|
-
|
|
15793
|
-
class AsyncStackTaggingZoneSpec {
|
|
15794
|
-
constructor(namePrefix, consoleAsyncStackTaggingImpl = console) {
|
|
15795
|
-
this.name = 'asyncStackTagging for ' + namePrefix;
|
|
15796
|
-
this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null);
|
|
15797
|
-
}
|
|
15798
|
-
onScheduleTask(delegate, _current, target, task) {
|
|
15799
|
-
task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`);
|
|
15800
|
-
return delegate.scheduleTask(target, task);
|
|
15801
|
-
}
|
|
15802
|
-
onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) {
|
|
15803
|
-
let ret;
|
|
15804
|
-
if (task.consoleTask) {
|
|
15805
|
-
ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs));
|
|
15806
|
-
}
|
|
15807
|
-
else {
|
|
15808
|
-
ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs);
|
|
15809
|
-
}
|
|
15810
|
-
return ret;
|
|
15811
|
-
}
|
|
15812
|
-
}
|
|
15813
|
-
|
|
15814
|
-
/**
|
|
15815
|
-
* An injectable service for executing work inside or outside of the Angular zone.
|
|
15816
|
-
*
|
|
15817
|
-
* The most common use of this service is to optimize performance when starting a work consisting of
|
|
15818
|
-
* one or more asynchronous tasks that don't require UI updates or error handling to be handled by
|
|
15819
|
-
* Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
|
|
15820
|
-
* can reenter the Angular zone via {@link #run}.
|
|
15821
|
-
*
|
|
15822
|
-
* <!-- TODO: add/fix links to:
|
|
15823
|
-
* - docs explaining zones and the use of zones in Angular and change-detection
|
|
15824
|
-
* - link to runOutsideAngular/run (throughout this file!)
|
|
15825
|
-
* -->
|
|
15826
|
-
*
|
|
15827
|
-
* @usageNotes
|
|
15828
|
-
* ### Example
|
|
15829
|
-
*
|
|
15830
|
-
* ```
|
|
15831
|
-
* import {Component, NgZone} from '@angular/core';
|
|
15832
|
-
* import {NgIf} from '@angular/common';
|
|
15833
|
-
*
|
|
15834
|
-
* @Component({
|
|
15835
|
-
* selector: 'ng-zone-demo',
|
|
15836
|
-
* template: `
|
|
15837
|
-
* <h2>Demo: NgZone</h2>
|
|
15838
|
-
*
|
|
15839
|
-
* <p>Progress: {{progress}}%</p>
|
|
15840
|
-
* <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
|
|
15841
|
-
*
|
|
15842
|
-
* <button (click)="processWithinAngularZone()">Process within Angular zone</button>
|
|
15843
|
-
* <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
|
|
15844
|
-
* `,
|
|
15845
|
-
* })
|
|
15846
|
-
* export class NgZoneDemo {
|
|
15847
|
-
* progress: number = 0;
|
|
15848
|
-
* label: string;
|
|
15849
|
-
*
|
|
15850
|
-
* constructor(private _ngZone: NgZone) {}
|
|
15851
|
-
*
|
|
15852
|
-
* // Loop inside the Angular zone
|
|
15853
|
-
* // so the UI DOES refresh after each setTimeout cycle
|
|
15854
|
-
* processWithinAngularZone() {
|
|
15855
|
-
* this.label = 'inside';
|
|
15856
|
-
* this.progress = 0;
|
|
15857
|
-
* this._increaseProgress(() => console.log('Inside Done!'));
|
|
15858
|
-
* }
|
|
15859
|
-
*
|
|
15860
|
-
* // Loop outside of the Angular zone
|
|
15861
|
-
* // so the UI DOES NOT refresh after each setTimeout cycle
|
|
15862
|
-
* processOutsideOfAngularZone() {
|
|
15863
|
-
* this.label = 'outside';
|
|
15864
|
-
* this.progress = 0;
|
|
15865
|
-
* this._ngZone.runOutsideAngular(() => {
|
|
15866
|
-
* this._increaseProgress(() => {
|
|
15867
|
-
* // reenter the Angular zone and display done
|
|
15868
|
-
* this._ngZone.run(() => { console.log('Outside Done!'); });
|
|
15869
|
-
* });
|
|
15870
|
-
* });
|
|
15871
|
-
* }
|
|
15872
|
-
*
|
|
15873
|
-
* _increaseProgress(doneCallback: () => void) {
|
|
15874
|
-
* this.progress += 1;
|
|
15875
|
-
* console.log(`Current progress: ${this.progress}%`);
|
|
15876
|
-
*
|
|
15877
|
-
* if (this.progress < 100) {
|
|
15878
|
-
* window.setTimeout(() => this._increaseProgress(doneCallback), 10);
|
|
15879
|
-
* } else {
|
|
15880
|
-
* doneCallback();
|
|
15881
|
-
* }
|
|
15882
|
-
* }
|
|
15883
|
-
* }
|
|
15884
|
-
* ```
|
|
15885
|
-
*
|
|
15886
|
-
* @publicApi
|
|
15887
|
-
*/
|
|
15888
|
-
class NgZone {
|
|
15889
|
-
constructor({ enableLongStackTrace = false, shouldCoalesceEventChangeDetection = false, shouldCoalesceRunChangeDetection = false, }) {
|
|
15890
|
-
this.hasPendingMacrotasks = false;
|
|
15891
|
-
this.hasPendingMicrotasks = false;
|
|
15892
|
-
/**
|
|
15893
|
-
* Whether there are no outstanding microtasks or macrotasks.
|
|
15894
|
-
*/
|
|
15895
|
-
this.isStable = true;
|
|
15896
|
-
/**
|
|
15897
|
-
* Notifies when code enters Angular Zone. This gets fired first on VM Turn.
|
|
15898
|
-
*/
|
|
15899
|
-
this.onUnstable = new EventEmitter(false);
|
|
15900
|
-
/**
|
|
15901
|
-
* Notifies when there is no more microtasks enqueued in the current VM Turn.
|
|
15902
|
-
* This is a hint for Angular to do change detection, which may enqueue more microtasks.
|
|
15903
|
-
* For this reason this event can fire multiple times per VM Turn.
|
|
15904
|
-
*/
|
|
15905
|
-
this.onMicrotaskEmpty = new EventEmitter(false);
|
|
15906
|
-
/**
|
|
15907
|
-
* Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
|
|
15908
|
-
* implies we are about to relinquish VM turn.
|
|
15909
|
-
* This event gets called just once.
|
|
15910
|
-
*/
|
|
15911
|
-
this.onStable = new EventEmitter(false);
|
|
15912
|
-
/**
|
|
15913
|
-
* Notifies that an error has been delivered.
|
|
15914
|
-
*/
|
|
15915
|
-
this.onError = new EventEmitter(false);
|
|
15916
|
-
if (typeof Zone == 'undefined') {
|
|
15917
|
-
throw new RuntimeError(908 /* RuntimeErrorCode.MISSING_ZONEJS */, ngDevMode && `In this configuration Angular requires Zone.js`);
|
|
15918
|
-
}
|
|
15919
|
-
Zone.assertZonePatched();
|
|
15920
|
-
const self = this;
|
|
15921
|
-
self._nesting = 0;
|
|
15922
|
-
self._outer = self._inner = Zone.current;
|
|
15923
|
-
// AsyncStackTaggingZoneSpec provides `linked stack traces` to show
|
|
15924
|
-
// where the async operation is scheduled. For more details, refer
|
|
15925
|
-
// to this article, https://developer.chrome.com/blog/devtools-better-angular-debugging/
|
|
15926
|
-
// And we only import this AsyncStackTaggingZoneSpec in development mode,
|
|
15927
|
-
// in the production mode, the AsyncStackTaggingZoneSpec will be tree shaken away.
|
|
15928
|
-
if (ngDevMode) {
|
|
15929
|
-
self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec('Angular'));
|
|
15930
|
-
}
|
|
15931
|
-
if (Zone['TaskTrackingZoneSpec']) {
|
|
15932
|
-
self._inner = self._inner.fork(new Zone['TaskTrackingZoneSpec']());
|
|
15933
|
-
}
|
|
15934
|
-
if (enableLongStackTrace && Zone['longStackTraceZoneSpec']) {
|
|
15935
|
-
self._inner = self._inner.fork(Zone['longStackTraceZoneSpec']);
|
|
15936
|
-
}
|
|
15937
|
-
// if shouldCoalesceRunChangeDetection is true, all tasks including event tasks will be
|
|
15938
|
-
// coalesced, so shouldCoalesceEventChangeDetection option is not necessary and can be skipped.
|
|
15939
|
-
self.shouldCoalesceEventChangeDetection =
|
|
15940
|
-
!shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;
|
|
15941
|
-
self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;
|
|
15942
|
-
self.callbackScheduled = false;
|
|
15943
|
-
forkInnerZoneWithAngularBehavior(self);
|
|
15944
|
-
}
|
|
15945
|
-
/**
|
|
15946
|
-
This method checks whether the method call happens within an Angular Zone instance.
|
|
15947
|
-
*/
|
|
15948
|
-
static isInAngularZone() {
|
|
15949
|
-
// Zone needs to be checked, because this method might be called even when NoopNgZone is used.
|
|
15950
|
-
return typeof Zone !== 'undefined' && Zone.current.get('isAngularZone') === true;
|
|
15951
|
-
}
|
|
15952
|
-
/**
|
|
15953
|
-
Assures that the method is called within the Angular Zone, otherwise throws an error.
|
|
15954
|
-
*/
|
|
15955
|
-
static assertInAngularZone() {
|
|
15956
|
-
if (!NgZone.isInAngularZone()) {
|
|
15957
|
-
throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to be in Angular Zone, but it is not!');
|
|
15958
|
-
}
|
|
15959
|
-
}
|
|
15960
|
-
/**
|
|
15961
|
-
Assures that the method is called outside of the Angular Zone, otherwise throws an error.
|
|
15962
|
-
*/
|
|
15963
|
-
static assertNotInAngularZone() {
|
|
15964
|
-
if (NgZone.isInAngularZone()) {
|
|
15965
|
-
throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to not be in Angular Zone, but it is!');
|
|
15966
|
-
}
|
|
15967
|
-
}
|
|
15968
|
-
/**
|
|
15969
|
-
* Executes the `fn` function synchronously within the Angular zone and returns value returned by
|
|
15970
|
-
* the function.
|
|
15971
|
-
*
|
|
15972
|
-
* Running functions via `run` allows you to reenter Angular zone from a task that was executed
|
|
15973
|
-
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
|
|
15974
|
-
*
|
|
15975
|
-
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
15976
|
-
* within the Angular zone.
|
|
15977
|
-
*
|
|
15978
|
-
* If a synchronous error happens it will be rethrown and not reported via `onError`.
|
|
15979
|
-
*/
|
|
15980
|
-
run(fn, applyThis, applyArgs) {
|
|
15981
|
-
return this._inner.run(fn, applyThis, applyArgs);
|
|
15982
|
-
}
|
|
15983
|
-
/**
|
|
15984
|
-
* Executes the `fn` function synchronously within the Angular zone as a task and returns value
|
|
15985
|
-
* returned by the function.
|
|
15986
|
-
*
|
|
15987
|
-
* Running functions via `run` allows you to reenter Angular zone from a task that was executed
|
|
15988
|
-
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
|
|
15989
|
-
*
|
|
15990
|
-
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
15991
|
-
* within the Angular zone.
|
|
15992
|
-
*
|
|
15993
|
-
* If a synchronous error happens it will be rethrown and not reported via `onError`.
|
|
15994
|
-
*/
|
|
15995
|
-
runTask(fn, applyThis, applyArgs, name) {
|
|
15996
|
-
const zone = this._inner;
|
|
15997
|
-
const task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);
|
|
15998
|
-
try {
|
|
15999
|
-
return zone.runTask(task, applyThis, applyArgs);
|
|
16000
|
-
}
|
|
16001
|
-
finally {
|
|
16002
|
-
zone.cancelTask(task);
|
|
16003
|
-
}
|
|
16004
|
-
}
|
|
16005
|
-
/**
|
|
16006
|
-
* Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
|
|
16007
|
-
* rethrown.
|
|
16008
|
-
*/
|
|
16009
|
-
runGuarded(fn, applyThis, applyArgs) {
|
|
16010
|
-
return this._inner.runGuarded(fn, applyThis, applyArgs);
|
|
16011
|
-
}
|
|
16012
|
-
/**
|
|
16013
|
-
* Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
|
|
16014
|
-
* the function.
|
|
16015
|
-
*
|
|
16016
|
-
* Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
|
|
16017
|
-
* work that
|
|
16018
|
-
* doesn't trigger Angular change-detection or is subject to Angular's error handling.
|
|
16019
|
-
*
|
|
16020
|
-
* Any future tasks or microtasks scheduled from within this function will continue executing from
|
|
16021
|
-
* outside of the Angular zone.
|
|
16022
|
-
*
|
|
16023
|
-
* Use {@link #run} to reenter the Angular zone and do work that updates the application model.
|
|
16024
|
-
*/
|
|
16025
|
-
runOutsideAngular(fn) {
|
|
16026
|
-
return this._outer.run(fn);
|
|
16027
|
-
}
|
|
16028
|
-
}
|
|
16029
|
-
const EMPTY_PAYLOAD = {};
|
|
16030
|
-
function checkStable(zone) {
|
|
16031
|
-
// TODO: @JiaLiPassion, should check zone.isCheckStableRunning to prevent
|
|
16032
|
-
// re-entry. The case is:
|
|
16033
|
-
//
|
|
16034
|
-
// @Component({...})
|
|
16035
|
-
// export class AppComponent {
|
|
16036
|
-
// constructor(private ngZone: NgZone) {
|
|
16037
|
-
// this.ngZone.onStable.subscribe(() => {
|
|
16038
|
-
// this.ngZone.run(() => console.log('stable'););
|
|
16039
|
-
// });
|
|
16040
|
-
// }
|
|
16041
|
-
//
|
|
16042
|
-
// The onStable subscriber run another function inside ngZone
|
|
16043
|
-
// which causes `checkStable()` re-entry.
|
|
16044
|
-
// But this fix causes some issues in g3, so this fix will be
|
|
16045
|
-
// launched in another PR.
|
|
16046
|
-
if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {
|
|
16047
|
-
try {
|
|
16048
|
-
zone._nesting++;
|
|
16049
|
-
zone.onMicrotaskEmpty.emit(null);
|
|
16050
|
-
}
|
|
16051
|
-
finally {
|
|
16052
|
-
zone._nesting--;
|
|
16053
|
-
if (!zone.hasPendingMicrotasks) {
|
|
16054
|
-
try {
|
|
16055
|
-
zone.runOutsideAngular(() => zone.onStable.emit(null));
|
|
16056
|
-
}
|
|
16057
|
-
finally {
|
|
16058
|
-
zone.isStable = true;
|
|
16059
|
-
}
|
|
16060
|
-
}
|
|
16061
|
-
}
|
|
16062
|
-
}
|
|
16063
|
-
}
|
|
16064
|
-
function delayChangeDetectionForEvents(zone) {
|
|
16065
|
-
/**
|
|
16066
|
-
* We also need to check _nesting here
|
|
16067
|
-
* Consider the following case with shouldCoalesceRunChangeDetection = true
|
|
16068
|
-
*
|
|
16069
|
-
* ngZone.run(() => {});
|
|
16070
|
-
* ngZone.run(() => {});
|
|
16071
|
-
*
|
|
16072
|
-
* We want the two `ngZone.run()` only trigger one change detection
|
|
16073
|
-
* when shouldCoalesceRunChangeDetection is true.
|
|
16074
|
-
* And because in this case, change detection run in async way(requestAnimationFrame),
|
|
16075
|
-
* so we also need to check the _nesting here to prevent multiple
|
|
16076
|
-
* change detections.
|
|
16077
|
-
*/
|
|
16078
|
-
if (zone.isCheckStableRunning || zone.callbackScheduled) {
|
|
16079
|
-
return;
|
|
16080
|
-
}
|
|
16081
|
-
zone.callbackScheduled = true;
|
|
16082
|
-
Zone.root.run(() => {
|
|
16083
|
-
scheduleCallbackWithRafRace(() => {
|
|
16084
|
-
zone.callbackScheduled = false;
|
|
16085
|
-
updateMicroTaskStatus(zone);
|
|
16086
|
-
zone.isCheckStableRunning = true;
|
|
16087
|
-
checkStable(zone);
|
|
16088
|
-
zone.isCheckStableRunning = false;
|
|
16089
|
-
});
|
|
16090
|
-
});
|
|
16091
|
-
updateMicroTaskStatus(zone);
|
|
16092
|
-
}
|
|
16093
|
-
function forkInnerZoneWithAngularBehavior(zone) {
|
|
16094
|
-
const delayChangeDetectionForEventsDelegate = () => {
|
|
16095
|
-
delayChangeDetectionForEvents(zone);
|
|
16096
|
-
};
|
|
16097
|
-
zone._inner = zone._inner.fork({
|
|
16098
|
-
name: 'angular',
|
|
16099
|
-
properties: { 'isAngularZone': true },
|
|
16100
|
-
onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => {
|
|
16101
|
-
// Prevent triggering change detection when the flag is detected.
|
|
16102
|
-
if (shouldBeIgnoredByZone(applyArgs)) {
|
|
16103
|
-
return delegate.invokeTask(target, task, applyThis, applyArgs);
|
|
16104
|
-
}
|
|
16105
|
-
try {
|
|
16106
|
-
onEnter(zone);
|
|
16107
|
-
return delegate.invokeTask(target, task, applyThis, applyArgs);
|
|
16108
|
-
}
|
|
16109
|
-
finally {
|
|
16110
|
-
if ((zone.shouldCoalesceEventChangeDetection && task.type === 'eventTask') ||
|
|
16111
|
-
zone.shouldCoalesceRunChangeDetection) {
|
|
16112
|
-
delayChangeDetectionForEventsDelegate();
|
|
16113
|
-
}
|
|
16114
|
-
onLeave(zone);
|
|
16115
|
-
}
|
|
16116
|
-
},
|
|
16117
|
-
onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => {
|
|
16118
|
-
try {
|
|
16119
|
-
onEnter(zone);
|
|
16120
|
-
return delegate.invoke(target, callback, applyThis, applyArgs, source);
|
|
16121
|
-
}
|
|
16122
|
-
finally {
|
|
16123
|
-
if (zone.shouldCoalesceRunChangeDetection &&
|
|
16124
|
-
// Do not delay change detection when the task is the scheduler's tick.
|
|
16125
|
-
// We need to synchronously trigger the stability logic so that the
|
|
16126
|
-
// zone-based scheduler can prevent a duplicate ApplicationRef.tick
|
|
16127
|
-
// by first checking if the scheduler tick is running. This does seem a bit roundabout,
|
|
16128
|
-
// but we _do_ still want to trigger all the correct events when we exit the zone.run
|
|
16129
|
-
// (`onMicrotaskEmpty` and `onStable` _should_ emit; developers can have code which
|
|
16130
|
-
// relies on these events happening after change detection runs).
|
|
16131
|
-
// Note: `zone.callbackScheduled` is already in delayChangeDetectionForEventsDelegate
|
|
16132
|
-
// but is added here as well to prevent reads of applyArgs when not necessary
|
|
16133
|
-
!zone.callbackScheduled &&
|
|
16134
|
-
!isSchedulerTick(applyArgs)) {
|
|
16135
|
-
delayChangeDetectionForEventsDelegate();
|
|
16136
|
-
}
|
|
16137
|
-
onLeave(zone);
|
|
16138
|
-
}
|
|
16139
|
-
},
|
|
16140
|
-
onHasTask: (delegate, current, target, hasTaskState) => {
|
|
16141
|
-
delegate.hasTask(target, hasTaskState);
|
|
16142
|
-
if (current === target) {
|
|
16143
|
-
// We are only interested in hasTask events which originate from our zone
|
|
16144
|
-
// (A child hasTask event is not interesting to us)
|
|
16145
|
-
if (hasTaskState.change == 'microTask') {
|
|
16146
|
-
zone._hasPendingMicrotasks = hasTaskState.microTask;
|
|
16147
|
-
updateMicroTaskStatus(zone);
|
|
16148
|
-
checkStable(zone);
|
|
16149
|
-
}
|
|
16150
|
-
else if (hasTaskState.change == 'macroTask') {
|
|
16151
|
-
zone.hasPendingMacrotasks = hasTaskState.macroTask;
|
|
16152
|
-
}
|
|
16153
|
-
}
|
|
16154
|
-
},
|
|
16155
|
-
onHandleError: (delegate, current, target, error) => {
|
|
16156
|
-
delegate.handleError(target, error);
|
|
16157
|
-
zone.runOutsideAngular(() => zone.onError.emit(error));
|
|
16158
|
-
return false;
|
|
16159
|
-
},
|
|
16160
|
-
});
|
|
16161
|
-
}
|
|
16162
|
-
function updateMicroTaskStatus(zone) {
|
|
16163
|
-
if (zone._hasPendingMicrotasks ||
|
|
16164
|
-
((zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) &&
|
|
16165
|
-
zone.callbackScheduled === true)) {
|
|
16166
|
-
zone.hasPendingMicrotasks = true;
|
|
16167
|
-
}
|
|
16168
|
-
else {
|
|
16169
|
-
zone.hasPendingMicrotasks = false;
|
|
16170
|
-
}
|
|
16171
|
-
}
|
|
16172
|
-
function onEnter(zone) {
|
|
16173
|
-
zone._nesting++;
|
|
16174
|
-
if (zone.isStable) {
|
|
16175
|
-
zone.isStable = false;
|
|
16176
|
-
zone.onUnstable.emit(null);
|
|
16177
|
-
}
|
|
16178
|
-
}
|
|
16179
|
-
function onLeave(zone) {
|
|
16180
|
-
zone._nesting--;
|
|
16181
|
-
checkStable(zone);
|
|
16182
|
-
}
|
|
16183
|
-
/**
|
|
16184
|
-
* Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
|
|
16185
|
-
* to framework to perform rendering.
|
|
16186
|
-
*/
|
|
16187
|
-
class NoopNgZone {
|
|
16188
|
-
constructor() {
|
|
16189
|
-
this.hasPendingMicrotasks = false;
|
|
16190
|
-
this.hasPendingMacrotasks = false;
|
|
16191
|
-
this.isStable = true;
|
|
16192
|
-
this.onUnstable = new EventEmitter();
|
|
16193
|
-
this.onMicrotaskEmpty = new EventEmitter();
|
|
16194
|
-
this.onStable = new EventEmitter();
|
|
16195
|
-
this.onError = new EventEmitter();
|
|
16196
|
-
}
|
|
16197
|
-
run(fn, applyThis, applyArgs) {
|
|
16198
|
-
return fn.apply(applyThis, applyArgs);
|
|
16199
|
-
}
|
|
16200
|
-
runGuarded(fn, applyThis, applyArgs) {
|
|
16201
|
-
return fn.apply(applyThis, applyArgs);
|
|
16202
|
-
}
|
|
16203
|
-
runOutsideAngular(fn) {
|
|
16204
|
-
return fn();
|
|
16205
|
-
}
|
|
16206
|
-
runTask(fn, applyThis, applyArgs, name) {
|
|
16207
|
-
return fn.apply(applyThis, applyArgs);
|
|
16208
|
-
}
|
|
16209
|
-
}
|
|
16210
|
-
function shouldBeIgnoredByZone(applyArgs) {
|
|
16211
|
-
return hasApplyArgsData(applyArgs, '__ignore_ng_zone__');
|
|
16212
|
-
}
|
|
16213
|
-
function isSchedulerTick(applyArgs) {
|
|
16214
|
-
return hasApplyArgsData(applyArgs, '__scheduler_tick__');
|
|
16215
|
-
}
|
|
16216
|
-
function hasApplyArgsData(applyArgs, key) {
|
|
16217
|
-
if (!Array.isArray(applyArgs)) {
|
|
16218
|
-
return false;
|
|
16219
|
-
}
|
|
16220
|
-
// We should only ever get 1 arg passed through to invokeTask.
|
|
16221
|
-
// Short circuit here incase that behavior changes.
|
|
16222
|
-
if (applyArgs.length !== 1) {
|
|
16223
|
-
return false;
|
|
16224
|
-
}
|
|
16225
|
-
return applyArgs[0]?.data?.[key] === true;
|
|
16226
|
-
}
|
|
16227
|
-
function getNgZone(ngZoneToUse = 'zone.js', options) {
|
|
16228
|
-
if (ngZoneToUse === 'noop') {
|
|
16229
|
-
return new NoopNgZone();
|
|
16230
|
-
}
|
|
16231
|
-
if (ngZoneToUse === 'zone.js') {
|
|
16232
|
-
return new NgZone(options);
|
|
16233
|
-
}
|
|
16234
|
-
return ngZoneToUse;
|
|
16235
|
-
}
|
|
16236
|
-
|
|
16237
16239
|
/**
|
|
16238
16240
|
* The phase to run an `afterRender` or `afterNextRender` callback in.
|
|
16239
16241
|
*
|
|
@@ -17205,7 +17207,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
17205
17207
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
17206
17208
|
if (rootSelectorOrNode) {
|
|
17207
17209
|
// The placeholder will be replaced with the actual version at build time.
|
|
17208
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.
|
|
17210
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.4']);
|
|
17209
17211
|
}
|
|
17210
17212
|
else {
|
|
17211
17213
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -19736,8 +19738,6 @@ function invokeAllTriggerCleanupFns(lDetails) {
|
|
|
19736
19738
|
invokeTriggerCleanupFns(0 /* TriggerType.Regular */, lDetails);
|
|
19737
19739
|
}
|
|
19738
19740
|
|
|
19739
|
-
// Public API for Zone
|
|
19740
|
-
|
|
19741
19741
|
/**
|
|
19742
19742
|
* Calculates a data slot index for defer block info (either static or
|
|
19743
19743
|
* instance-specific), given an index of a defer instruction.
|
|
@@ -31003,7 +31003,7 @@ class Version {
|
|
|
31003
31003
|
/**
|
|
31004
31004
|
* @publicApi
|
|
31005
31005
|
*/
|
|
31006
|
-
const VERSION = new Version('18.1.
|
|
31006
|
+
const VERSION = new Version('18.1.4');
|
|
31007
31007
|
|
|
31008
31008
|
/*
|
|
31009
31009
|
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
@@ -31035,7 +31035,7 @@ class Console {
|
|
|
31035
31035
|
// tslint:disable-next-line:no-console
|
|
31036
31036
|
console.warn(message);
|
|
31037
31037
|
}
|
|
31038
|
-
static { this.ɵfac = function Console_Factory(
|
|
31038
|
+
static { this.ɵfac = function Console_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Console)(); }; }
|
|
31039
31039
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' }); }
|
|
31040
31040
|
}
|
|
31041
31041
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
|
|
@@ -32099,7 +32099,7 @@ class Testability {
|
|
|
32099
32099
|
// TODO(juliemr): implement.
|
|
32100
32100
|
return [];
|
|
32101
32101
|
}
|
|
32102
|
-
static { this.ɵfac = function Testability_Factory(
|
|
32102
|
+
static { this.ɵfac = function Testability_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Testability)(ɵɵinject(NgZone), ɵɵinject(TestabilityRegistry), ɵɵinject(TESTABILITY_GETTER)); }; }
|
|
32103
32103
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Testability, factory: Testability.ɵfac }); }
|
|
32104
32104
|
}
|
|
32105
32105
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Testability, [{
|
|
@@ -32166,7 +32166,7 @@ class TestabilityRegistry {
|
|
|
32166
32166
|
findTestabilityInTree(elem, findInAncestors = true) {
|
|
32167
32167
|
return _testabilityGetter?.findTestabilityInTree(this, elem, findInAncestors) ?? null;
|
|
32168
32168
|
}
|
|
32169
|
-
static { this.ɵfac = function TestabilityRegistry_Factory(
|
|
32169
|
+
static { this.ɵfac = function TestabilityRegistry_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestabilityRegistry)(); }; }
|
|
32170
32170
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' }); }
|
|
32171
32171
|
}
|
|
32172
32172
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
|
|
@@ -32373,7 +32373,7 @@ class ApplicationInitStatus {
|
|
|
32373
32373
|
}
|
|
32374
32374
|
this.initialized = true;
|
|
32375
32375
|
}
|
|
32376
|
-
static { this.ɵfac = function ApplicationInitStatus_Factory(
|
|
32376
|
+
static { this.ɵfac = function ApplicationInitStatus_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationInitStatus)(); }; }
|
|
32377
32377
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' }); }
|
|
32378
32378
|
}
|
|
32379
32379
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
|
|
@@ -32843,7 +32843,7 @@ class ApplicationRef {
|
|
|
32843
32843
|
console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
32844
32844
|
}
|
|
32845
32845
|
}
|
|
32846
|
-
static { this.ɵfac = function ApplicationRef_Factory(
|
|
32846
|
+
static { this.ɵfac = function ApplicationRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationRef)(); }; }
|
|
32847
32847
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' }); }
|
|
32848
32848
|
}
|
|
32849
32849
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
@@ -32964,7 +32964,7 @@ class Compiler {
|
|
|
32964
32964
|
getModuleId(moduleType) {
|
|
32965
32965
|
return undefined;
|
|
32966
32966
|
}
|
|
32967
|
-
static { this.ɵfac = function Compiler_Factory(
|
|
32967
|
+
static { this.ɵfac = function Compiler_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Compiler)(); }; }
|
|
32968
32968
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' }); }
|
|
32969
32969
|
}
|
|
32970
32970
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
|
|
@@ -33061,7 +33061,7 @@ class NgZoneChangeDetectionScheduler {
|
|
|
33061
33061
|
ngOnDestroy() {
|
|
33062
33062
|
this._onMicrotaskEmptySubscription?.unsubscribe();
|
|
33063
33063
|
}
|
|
33064
|
-
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(
|
|
33064
|
+
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NgZoneChangeDetectionScheduler)(); }; }
|
|
33065
33065
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }
|
|
33066
33066
|
}
|
|
33067
33067
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{
|
|
@@ -33102,17 +33102,11 @@ function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsid
|
|
|
33102
33102
|
};
|
|
33103
33103
|
},
|
|
33104
33104
|
},
|
|
33105
|
-
{ provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },
|
|
33106
33105
|
// Always disable scheduler whenever explicitly disabled, even if another place called
|
|
33107
33106
|
// `provideZoneChangeDetection` without the 'ignore' option.
|
|
33108
33107
|
ignoreChangesOutsideZone === true ? { provide: ZONELESS_SCHEDULER_DISABLED, useValue: true } : [],
|
|
33109
33108
|
];
|
|
33110
33109
|
}
|
|
33111
|
-
function ngZoneApplicationErrorHandlerFactory() {
|
|
33112
|
-
const zone = inject(NgZone);
|
|
33113
|
-
const userErrorHandler = inject(ErrorHandler);
|
|
33114
|
-
return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));
|
|
33115
|
-
}
|
|
33116
33110
|
/**
|
|
33117
33111
|
* Provides `NgZone`-based change detection for the application bootstrapped using
|
|
33118
33112
|
* `bootstrapApplication`.
|
|
@@ -33200,7 +33194,7 @@ class ZoneStablePendingTask {
|
|
|
33200
33194
|
ngOnDestroy() {
|
|
33201
33195
|
this.subscription.unsubscribe();
|
|
33202
33196
|
}
|
|
33203
|
-
static { this.ɵfac = function ZoneStablePendingTask_Factory(
|
|
33197
|
+
static { this.ɵfac = function ZoneStablePendingTask_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ZoneStablePendingTask)(); }; }
|
|
33204
33198
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ZoneStablePendingTask, factory: ZoneStablePendingTask.ɵfac, providedIn: 'root' }); }
|
|
33205
33199
|
}
|
|
33206
33200
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ZoneStablePendingTask, [{
|
|
@@ -33404,7 +33398,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
33404
33398
|
this.taskService.remove(taskId);
|
|
33405
33399
|
}
|
|
33406
33400
|
}
|
|
33407
|
-
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(
|
|
33401
|
+
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ChangeDetectionSchedulerImpl)(); }; }
|
|
33408
33402
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ChangeDetectionSchedulerImpl, factory: ChangeDetectionSchedulerImpl.ɵfac, providedIn: 'root' }); }
|
|
33409
33403
|
}
|
|
33410
33404
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChangeDetectionSchedulerImpl, [{
|
|
@@ -33803,7 +33797,7 @@ class PlatformRef {
|
|
|
33803
33797
|
get destroyed() {
|
|
33804
33798
|
return this._destroyed;
|
|
33805
33799
|
}
|
|
33806
|
-
static { this.ɵfac = function PlatformRef_Factory(
|
|
33800
|
+
static { this.ɵfac = function PlatformRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PlatformRef)(ɵɵinject(Injector)); }; }
|
|
33807
33801
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' }); }
|
|
33808
33802
|
}
|
|
33809
33803
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
|
|
@@ -35925,7 +35919,7 @@ const platformCore = createPlatformFactory(null, 'core', []);
|
|
|
35925
35919
|
class ApplicationModule {
|
|
35926
35920
|
// Inject ApplicationRef to make it eager...
|
|
35927
35921
|
constructor(appRef) { }
|
|
35928
|
-
static { this.ɵfac = function ApplicationModule_Factory(
|
|
35922
|
+
static { this.ɵfac = function ApplicationModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationModule)(ɵɵinject(ApplicationRef)); }; }
|
|
35929
35923
|
static { this.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule }); }
|
|
35930
35924
|
static { this.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({}); }
|
|
35931
35925
|
}
|
|
@@ -36625,7 +36619,7 @@ class ImagePerformanceWarning {
|
|
|
36625
36619
|
const oversizedHeight = intrinsicHeight - recommendedHeight >= OVERSIZED_IMAGE_TOLERANCE;
|
|
36626
36620
|
return oversizedWidth || oversizedHeight;
|
|
36627
36621
|
}
|
|
36628
|
-
static { this.ɵfac = function ImagePerformanceWarning_Factory(
|
|
36622
|
+
static { this.ɵfac = function ImagePerformanceWarning_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ImagePerformanceWarning)(); }; }
|
|
36629
36623
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ImagePerformanceWarning, factory: ImagePerformanceWarning.ɵfac, providedIn: 'root' }); }
|
|
36630
36624
|
}
|
|
36631
36625
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ImagePerformanceWarning, [{
|
|
@@ -36831,7 +36825,7 @@ class GlobalEventDelegation {
|
|
|
36831
36825
|
removeEventListener(element, eventType, callback) {
|
|
36832
36826
|
getActionCache(element)[eventType] = undefined;
|
|
36833
36827
|
}
|
|
36834
|
-
static { this.ɵfac = function GlobalEventDelegation_Factory(
|
|
36828
|
+
static { this.ɵfac = function GlobalEventDelegation_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || GlobalEventDelegation)(); }; }
|
|
36835
36829
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac }); }
|
|
36836
36830
|
}
|
|
36837
36831
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(GlobalEventDelegation, [{
|
|
@@ -36842,7 +36836,7 @@ const initGlobalEventDelegation = (eventContractDetails, injector) => {
|
|
|
36842
36836
|
return;
|
|
36843
36837
|
}
|
|
36844
36838
|
const eventContract = (eventContractDetails.instance = new EventContract(new EventContractContainer(document.body)));
|
|
36845
|
-
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36839
|
+
const dispatcher = new EventDispatcher(invokeRegisteredListeners, /** clickModSupport */ false);
|
|
36846
36840
|
registerDispatcher(eventContract, dispatcher);
|
|
36847
36841
|
};
|
|
36848
36842
|
|
|
@@ -38351,5 +38345,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
38351
38345
|
* Generated bundle index. Do not edit.
|
|
38352
38346
|
*/
|
|
38353
38347
|
|
|
38354
|
-
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, ExperimentalPendingTasks, 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, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, 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, GLOBAL_EVENT_DELEGATION as ɵGLOBAL_EVENT_DELEGATION, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, 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, internalAfterNextRender as ɵinternalAfterNextRender, 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, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideGlobalEventDelegation as ɵprovideGlobalEventDelegation, queueStateUpdate as ɵqueueStateUpdate, 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, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵ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, ɵɵ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 };
|
|
38348
|
+
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, ExperimentalPendingTasks, 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, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, 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, GLOBAL_EVENT_DELEGATION as ɵGLOBAL_EVENT_DELEGATION, 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, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, 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, internalAfterNextRender as ɵinternalAfterNextRender, 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, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideGlobalEventDelegation as ɵprovideGlobalEventDelegation, queueStateUpdate as ɵqueueStateUpdate, 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, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵ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, ɵɵ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 };
|
|
38355
38349
|
//# sourceMappingURL=core.mjs.map
|