@angular/core 18.1.1 → 18.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/primitives/event-dispatch/index.mjs +2 -1
- package/esm2022/primitives/event-dispatch/src/bootstrap_app_scoped.mjs +18 -3
- package/esm2022/primitives/event-dispatch/src/bootstrap_global.mjs +18 -7
- package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +25 -1
- package/esm2022/primitives/event-dispatch/src/event_type.mjs +2 -2
- package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +40 -35
- package/esm2022/rxjs-interop/src/to_signal.mjs +6 -5
- 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 +8 -8
- package/esm2022/src/event_dispatch/event_delegation.mjs +2 -4
- package/esm2022/src/hydration/event_replay.mjs +6 -6
- 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/after_render_hooks.mjs +2 -2
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/node_manipulation.mjs +9 -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/event-dispatch-contract.min.js +1 -1
- package/fesm2022/core.mjs +735 -731
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +144 -35
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +6 -5
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +69 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +10 -2
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +28 -13
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +11 -7
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +2 -2
- package/schematics/ng-generate/control-flow-migration/bundle.js +11 -7
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +2 -2
- package/schematics/ng-generate/standalone-migration/bundle.js +114 -78
- 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.3
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, getActiveConsumer as getActiveConsumer$1, setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1 } from '@angular/core/primitives/signals';
|
|
8
8
|
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
|
|
9
9
|
import { map, first } from 'rxjs/operators';
|
|
10
|
-
import { Attribute as Attribute$1, isEarlyEventType, getActionCache, EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isCaptureEventType } from '@angular/core/primitives/event-dispatch';
|
|
10
|
+
import { Attribute as Attribute$1, isEarlyEventType, getActionCache, EventContract, EventContractContainer, EventDispatcher, registerDispatcher, getAppScopedQueuedEventInfos, clearAppScopedEarlyEventContract, isCaptureEventType } from '@angular/core/primitives/event-dispatch';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Base URL for the error details page.
|
|
@@ -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]();
|
|
@@ -10999,7 +11513,11 @@ function appendChild(tView, lView, childRNode, childTNode) {
|
|
|
10999
11513
|
function getFirstNativeNode(lView, tNode) {
|
|
11000
11514
|
if (tNode !== null) {
|
|
11001
11515
|
ngDevMode &&
|
|
11002
|
-
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ |
|
|
11516
|
+
assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ |
|
|
11517
|
+
12 /* TNodeType.AnyContainer */ |
|
|
11518
|
+
32 /* TNodeType.Icu */ |
|
|
11519
|
+
16 /* TNodeType.Projection */ |
|
|
11520
|
+
128 /* TNodeType.LetDeclaration */);
|
|
11003
11521
|
const tNodeType = tNode.type;
|
|
11004
11522
|
if (tNodeType & 3 /* TNodeType.AnyRNode */) {
|
|
11005
11523
|
return getNativeByTNode(tNode, lView);
|
|
@@ -11022,6 +11540,9 @@ function getFirstNativeNode(lView, tNode) {
|
|
|
11022
11540
|
}
|
|
11023
11541
|
}
|
|
11024
11542
|
}
|
|
11543
|
+
else if (tNodeType & 128 /* TNodeType.LetDeclaration */) {
|
|
11544
|
+
return getFirstNativeNode(lView, tNode.next);
|
|
11545
|
+
}
|
|
11025
11546
|
else if (tNodeType & 32 /* TNodeType.Icu */) {
|
|
11026
11547
|
let nextRNode = icuContainerIterate(tNode, lView);
|
|
11027
11548
|
let rNode = nextRNode();
|
|
@@ -15726,514 +16247,6 @@ function performanceMarkFeature(feature) {
|
|
|
15726
16247
|
performance?.mark?.('mark_feature_usage', { detail: { feature } });
|
|
15727
16248
|
}
|
|
15728
16249
|
|
|
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
16250
|
/**
|
|
16238
16251
|
* The phase to run an `afterRender` or `afterNextRender` callback in.
|
|
16239
16252
|
*
|
|
@@ -16392,7 +16405,7 @@ function afterRenderImpl(callbackOrSpec, injector, once, phase) {
|
|
|
16392
16405
|
if (callbacksLeftToRun < 1) {
|
|
16393
16406
|
destroy();
|
|
16394
16407
|
}
|
|
16395
|
-
phaseCallback(...args);
|
|
16408
|
+
return phaseCallback(...args);
|
|
16396
16409
|
}
|
|
16397
16410
|
: phaseCallback;
|
|
16398
16411
|
const instance = runInInjectionContext(injector, () => new AfterRenderCallback(phase, pipelinedArgs, callback));
|
|
@@ -17205,7 +17218,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
17205
17218
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
17206
17219
|
if (rootSelectorOrNode) {
|
|
17207
17220
|
// The placeholder will be replaced with the actual version at build time.
|
|
17208
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.
|
|
17221
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.3']);
|
|
17209
17222
|
}
|
|
17210
17223
|
else {
|
|
17211
17224
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -19736,8 +19749,6 @@ function invokeAllTriggerCleanupFns(lDetails) {
|
|
|
19736
19749
|
invokeTriggerCleanupFns(0 /* TriggerType.Regular */, lDetails);
|
|
19737
19750
|
}
|
|
19738
19751
|
|
|
19739
|
-
// Public API for Zone
|
|
19740
|
-
|
|
19741
19752
|
/**
|
|
19742
19753
|
* Calculates a data slot index for defer block info (either static or
|
|
19743
19754
|
* instance-specific), given an index of a defer instruction.
|
|
@@ -31003,7 +31014,7 @@ class Version {
|
|
|
31003
31014
|
/**
|
|
31004
31015
|
* @publicApi
|
|
31005
31016
|
*/
|
|
31006
|
-
const VERSION = new Version('18.1.
|
|
31017
|
+
const VERSION = new Version('18.1.3');
|
|
31007
31018
|
|
|
31008
31019
|
/*
|
|
31009
31020
|
* This file exists to support compilation of @angular/core in Ivy mode.
|
|
@@ -31035,7 +31046,7 @@ class Console {
|
|
|
31035
31046
|
// tslint:disable-next-line:no-console
|
|
31036
31047
|
console.warn(message);
|
|
31037
31048
|
}
|
|
31038
|
-
static { this.ɵfac = function Console_Factory(
|
|
31049
|
+
static { this.ɵfac = function Console_Factory(ɵt) { return new (ɵt || Console)(); }; }
|
|
31039
31050
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' }); }
|
|
31040
31051
|
}
|
|
31041
31052
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
|
|
@@ -32099,7 +32110,7 @@ class Testability {
|
|
|
32099
32110
|
// TODO(juliemr): implement.
|
|
32100
32111
|
return [];
|
|
32101
32112
|
}
|
|
32102
|
-
static { this.ɵfac = function Testability_Factory(
|
|
32113
|
+
static { this.ɵfac = function Testability_Factory(ɵt) { return new (ɵt || Testability)(ɵɵinject(NgZone), ɵɵinject(TestabilityRegistry), ɵɵinject(TESTABILITY_GETTER)); }; }
|
|
32103
32114
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Testability, factory: Testability.ɵfac }); }
|
|
32104
32115
|
}
|
|
32105
32116
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Testability, [{
|
|
@@ -32166,7 +32177,7 @@ class TestabilityRegistry {
|
|
|
32166
32177
|
findTestabilityInTree(elem, findInAncestors = true) {
|
|
32167
32178
|
return _testabilityGetter?.findTestabilityInTree(this, elem, findInAncestors) ?? null;
|
|
32168
32179
|
}
|
|
32169
|
-
static { this.ɵfac = function TestabilityRegistry_Factory(
|
|
32180
|
+
static { this.ɵfac = function TestabilityRegistry_Factory(ɵt) { return new (ɵt || TestabilityRegistry)(); }; }
|
|
32170
32181
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' }); }
|
|
32171
32182
|
}
|
|
32172
32183
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
|
|
@@ -32373,7 +32384,7 @@ class ApplicationInitStatus {
|
|
|
32373
32384
|
}
|
|
32374
32385
|
this.initialized = true;
|
|
32375
32386
|
}
|
|
32376
|
-
static { this.ɵfac = function ApplicationInitStatus_Factory(
|
|
32387
|
+
static { this.ɵfac = function ApplicationInitStatus_Factory(ɵt) { return new (ɵt || ApplicationInitStatus)(); }; }
|
|
32377
32388
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' }); }
|
|
32378
32389
|
}
|
|
32379
32390
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
|
|
@@ -32843,7 +32854,7 @@ class ApplicationRef {
|
|
|
32843
32854
|
console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
32844
32855
|
}
|
|
32845
32856
|
}
|
|
32846
|
-
static { this.ɵfac = function ApplicationRef_Factory(
|
|
32857
|
+
static { this.ɵfac = function ApplicationRef_Factory(ɵt) { return new (ɵt || ApplicationRef)(); }; }
|
|
32847
32858
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' }); }
|
|
32848
32859
|
}
|
|
32849
32860
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
@@ -32964,7 +32975,7 @@ class Compiler {
|
|
|
32964
32975
|
getModuleId(moduleType) {
|
|
32965
32976
|
return undefined;
|
|
32966
32977
|
}
|
|
32967
|
-
static { this.ɵfac = function Compiler_Factory(
|
|
32978
|
+
static { this.ɵfac = function Compiler_Factory(ɵt) { return new (ɵt || Compiler)(); }; }
|
|
32968
32979
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' }); }
|
|
32969
32980
|
}
|
|
32970
32981
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
|
|
@@ -33061,7 +33072,7 @@ class NgZoneChangeDetectionScheduler {
|
|
|
33061
33072
|
ngOnDestroy() {
|
|
33062
33073
|
this._onMicrotaskEmptySubscription?.unsubscribe();
|
|
33063
33074
|
}
|
|
33064
|
-
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(
|
|
33075
|
+
static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(ɵt) { return new (ɵt || NgZoneChangeDetectionScheduler)(); }; }
|
|
33065
33076
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }
|
|
33066
33077
|
}
|
|
33067
33078
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{
|
|
@@ -33102,17 +33113,11 @@ function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsid
|
|
|
33102
33113
|
};
|
|
33103
33114
|
},
|
|
33104
33115
|
},
|
|
33105
|
-
{ provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },
|
|
33106
33116
|
// Always disable scheduler whenever explicitly disabled, even if another place called
|
|
33107
33117
|
// `provideZoneChangeDetection` without the 'ignore' option.
|
|
33108
33118
|
ignoreChangesOutsideZone === true ? { provide: ZONELESS_SCHEDULER_DISABLED, useValue: true } : [],
|
|
33109
33119
|
];
|
|
33110
33120
|
}
|
|
33111
|
-
function ngZoneApplicationErrorHandlerFactory() {
|
|
33112
|
-
const zone = inject(NgZone);
|
|
33113
|
-
const userErrorHandler = inject(ErrorHandler);
|
|
33114
|
-
return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));
|
|
33115
|
-
}
|
|
33116
33121
|
/**
|
|
33117
33122
|
* Provides `NgZone`-based change detection for the application bootstrapped using
|
|
33118
33123
|
* `bootstrapApplication`.
|
|
@@ -33200,7 +33205,7 @@ class ZoneStablePendingTask {
|
|
|
33200
33205
|
ngOnDestroy() {
|
|
33201
33206
|
this.subscription.unsubscribe();
|
|
33202
33207
|
}
|
|
33203
|
-
static { this.ɵfac = function ZoneStablePendingTask_Factory(
|
|
33208
|
+
static { this.ɵfac = function ZoneStablePendingTask_Factory(ɵt) { return new (ɵt || ZoneStablePendingTask)(); }; }
|
|
33204
33209
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ZoneStablePendingTask, factory: ZoneStablePendingTask.ɵfac, providedIn: 'root' }); }
|
|
33205
33210
|
}
|
|
33206
33211
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ZoneStablePendingTask, [{
|
|
@@ -33404,7 +33409,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
33404
33409
|
this.taskService.remove(taskId);
|
|
33405
33410
|
}
|
|
33406
33411
|
}
|
|
33407
|
-
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(
|
|
33412
|
+
static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(ɵt) { return new (ɵt || ChangeDetectionSchedulerImpl)(); }; }
|
|
33408
33413
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ChangeDetectionSchedulerImpl, factory: ChangeDetectionSchedulerImpl.ɵfac, providedIn: 'root' }); }
|
|
33409
33414
|
}
|
|
33410
33415
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChangeDetectionSchedulerImpl, [{
|
|
@@ -33803,7 +33808,7 @@ class PlatformRef {
|
|
|
33803
33808
|
get destroyed() {
|
|
33804
33809
|
return this._destroyed;
|
|
33805
33810
|
}
|
|
33806
|
-
static { this.ɵfac = function PlatformRef_Factory(
|
|
33811
|
+
static { this.ɵfac = function PlatformRef_Factory(ɵt) { return new (ɵt || PlatformRef)(ɵɵinject(Injector)); }; }
|
|
33807
33812
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' }); }
|
|
33808
33813
|
}
|
|
33809
33814
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
|
|
@@ -35925,7 +35930,7 @@ const platformCore = createPlatformFactory(null, 'core', []);
|
|
|
35925
35930
|
class ApplicationModule {
|
|
35926
35931
|
// Inject ApplicationRef to make it eager...
|
|
35927
35932
|
constructor(appRef) { }
|
|
35928
|
-
static { this.ɵfac = function ApplicationModule_Factory(
|
|
35933
|
+
static { this.ɵfac = function ApplicationModule_Factory(ɵt) { return new (ɵt || ApplicationModule)(ɵɵinject(ApplicationRef)); }; }
|
|
35929
35934
|
static { this.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule }); }
|
|
35930
35935
|
static { this.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({}); }
|
|
35931
35936
|
}
|
|
@@ -36625,7 +36630,7 @@ class ImagePerformanceWarning {
|
|
|
36625
36630
|
const oversizedHeight = intrinsicHeight - recommendedHeight >= OVERSIZED_IMAGE_TOLERANCE;
|
|
36626
36631
|
return oversizedWidth || oversizedHeight;
|
|
36627
36632
|
}
|
|
36628
|
-
static { this.ɵfac = function ImagePerformanceWarning_Factory(
|
|
36633
|
+
static { this.ɵfac = function ImagePerformanceWarning_Factory(ɵt) { return new (ɵt || ImagePerformanceWarning)(); }; }
|
|
36629
36634
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ImagePerformanceWarning, factory: ImagePerformanceWarning.ɵfac, providedIn: 'root' }); }
|
|
36630
36635
|
}
|
|
36631
36636
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ImagePerformanceWarning, [{
|
|
@@ -36822,15 +36827,16 @@ class GlobalEventDelegation {
|
|
|
36822
36827
|
supports(eventType) {
|
|
36823
36828
|
return isEarlyEventType(eventType);
|
|
36824
36829
|
}
|
|
36825
|
-
addEventListener(element,
|
|
36826
|
-
this.eventContractDetails.instance.addEvent(
|
|
36827
|
-
|
|
36828
|
-
|
|
36830
|
+
addEventListener(element, eventName, handler) {
|
|
36831
|
+
this.eventContractDetails.instance.addEvent(eventName);
|
|
36832
|
+
sharedStashFunction(element, eventName, handler);
|
|
36833
|
+
getActionCache(element)[eventName] = '';
|
|
36834
|
+
return () => this.removeEventListener(element, eventName, handler);
|
|
36829
36835
|
}
|
|
36830
36836
|
removeEventListener(element, eventType, callback) {
|
|
36831
36837
|
getActionCache(element)[eventType] = undefined;
|
|
36832
36838
|
}
|
|
36833
|
-
static { this.ɵfac = function GlobalEventDelegation_Factory(
|
|
36839
|
+
static { this.ɵfac = function GlobalEventDelegation_Factory(ɵt) { return new (ɵt || GlobalEventDelegation)(); }; }
|
|
36834
36840
|
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac }); }
|
|
36835
36841
|
}
|
|
36836
36842
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(GlobalEventDelegation, [{
|
|
@@ -36840,8 +36846,7 @@ const initGlobalEventDelegation = (eventContractDetails, injector) => {
|
|
|
36840
36846
|
if (injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT)) {
|
|
36841
36847
|
return;
|
|
36842
36848
|
}
|
|
36843
|
-
const eventContract = (eventContractDetails.instance = new EventContract(new EventContractContainer(document.body)
|
|
36844
|
-
/* useActionResolver= */ false));
|
|
36849
|
+
const eventContract = (eventContractDetails.instance = new EventContract(new EventContractContainer(document.body)));
|
|
36845
36850
|
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36846
36851
|
registerDispatcher(eventContract, dispatcher);
|
|
36847
36852
|
};
|
|
@@ -36929,16 +36934,16 @@ const initEventReplay = (eventDelegation, injector) => {
|
|
|
36929
36934
|
const appId = injector.get(APP_ID);
|
|
36930
36935
|
// This is set in packages/platform-server/src/utils.ts
|
|
36931
36936
|
const earlyJsactionData = window._ejsas[appId];
|
|
36932
|
-
const eventContract = (eventDelegation.instance = new EventContract(new EventContractContainer(earlyJsactionData.c)
|
|
36933
|
-
/* useActionResolver= */ false));
|
|
36937
|
+
const eventContract = (eventDelegation.instance = new EventContract(new EventContractContainer(earlyJsactionData.c)));
|
|
36934
36938
|
for (const et of earlyJsactionData.et) {
|
|
36935
36939
|
eventContract.addEvent(et);
|
|
36936
36940
|
}
|
|
36937
36941
|
for (const et of earlyJsactionData.etc) {
|
|
36938
36942
|
eventContract.addEvent(et);
|
|
36939
36943
|
}
|
|
36940
|
-
|
|
36941
|
-
|
|
36944
|
+
const eventInfos = getAppScopedQueuedEventInfos(appId);
|
|
36945
|
+
eventContract.replayEarlyEventInfos(eventInfos);
|
|
36946
|
+
clearAppScopedEarlyEventContract(appId);
|
|
36942
36947
|
const dispatcher = new EventDispatcher(invokeRegisteredListeners);
|
|
36943
36948
|
registerDispatcher(eventContract, dispatcher);
|
|
36944
36949
|
};
|
|
@@ -37776,7 +37781,6 @@ function provideGlobalEventDelegation() {
|
|
|
37776
37781
|
const injector = inject(Injector);
|
|
37777
37782
|
const eventContractDetails = injector.get(JSACTION_EVENT_CONTRACT);
|
|
37778
37783
|
initGlobalEventDelegation(eventContractDetails, injector);
|
|
37779
|
-
setStashFn(sharedStashFunction);
|
|
37780
37784
|
},
|
|
37781
37785
|
multi: true,
|
|
37782
37786
|
},
|
|
@@ -38352,5 +38356,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
38352
38356
|
* Generated bundle index. Do not edit.
|
|
38353
38357
|
*/
|
|
38354
38358
|
|
|
38355
|
-
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 };
|
|
38359
|
+
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 };
|
|
38356
38360
|
//# sourceMappingURL=core.mjs.map
|