@angular/core 18.0.0-next.5 → 18.0.0-next.6
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/contract_binary.mjs +10 -0
- package/esm2022/primitives/event-dispatch/index.mjs +13 -0
- package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +54 -0
- package/esm2022/primitives/event-dispatch/src/accessibility.mjs +35 -0
- package/esm2022/primitives/event-dispatch/src/attribute.mjs +72 -0
- package/esm2022/primitives/event-dispatch/src/base_dispatcher.mjs +196 -0
- package/esm2022/primitives/event-dispatch/src/cache.mjs +95 -0
- package/esm2022/primitives/event-dispatch/src/char.mjs +35 -0
- package/esm2022/primitives/event-dispatch/src/custom_events.mjs +63 -0
- package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +254 -0
- package/esm2022/primitives/event-dispatch/src/dom.mjs +48 -0
- package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +36 -0
- package/esm2022/primitives/event-dispatch/src/event.mjs +638 -0
- package/esm2022/primitives/event-dispatch/src/event_contract_container.mjs +63 -0
- package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +48 -0
- package/esm2022/primitives/event-dispatch/src/event_contract_multi_container.mjs +192 -0
- package/esm2022/primitives/event-dispatch/src/event_handler.mjs +9 -0
- package/esm2022/primitives/event-dispatch/src/event_info.mjs +199 -0
- package/esm2022/primitives/event-dispatch/src/event_type.mjs +244 -0
- package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +675 -0
- package/esm2022/primitives/event-dispatch/src/key_code.mjs +21 -0
- package/esm2022/primitives/event-dispatch/src/legacy_dispatcher.mjs +9 -0
- package/esm2022/primitives/event-dispatch/src/property.mjs +35 -0
- package/esm2022/primitives/event-dispatch/src/register_events.mjs +32 -0
- package/esm2022/primitives/event-dispatch/src/replay.mjs +389 -0
- package/esm2022/primitives/event-dispatch/src/restriction.mjs +15 -0
- package/esm2022/primitives/signals/index.mjs +3 -3
- package/esm2022/primitives/signals/src/computed.mjs +5 -3
- package/esm2022/primitives/signals/src/graph.mjs +14 -9
- package/esm2022/primitives/signals/src/signal.mjs +2 -2
- package/esm2022/primitives/signals/src/watch.mjs +2 -2
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +50 -5
- package/esm2022/src/core.mjs +2 -1
- package/esm2022/src/core_private_export.mjs +2 -1
- package/esm2022/src/defer/instructions.mjs +31 -8
- package/esm2022/src/di/host_tag_name_token.mjs +65 -0
- package/esm2022/src/di/index.mjs +2 -1
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/hydration/annotate.mjs +15 -1
- package/esm2022/src/hydration/event_replay.mjs +181 -0
- package/esm2022/src/hydration/tokens.mjs +6 -1
- package/esm2022/src/pending_tasks.mjs +54 -11
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/context_discovery.mjs +15 -1
- package/esm2022/src/render3/instructions/control_flow.mjs +50 -3
- package/esm2022/src/render3/list_reconciliation.mjs +41 -1
- package/esm2022/src/util/callback_scheduler.mjs +13 -2
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/src/zone/ng_zone.mjs +22 -6
- package/esm2022/testing/src/async.mjs +2 -10
- package/esm2022/testing/src/defer.mjs +1 -2
- package/esm2022/testing/src/logger.mjs +3 -3
- package/event-dispatch-contract.min.js +1 -1
- package/fesm2022/core.mjs +516 -39
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +3044 -0
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -0
- package/fesm2022/primitives/signals.mjs +17 -10
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +3 -12
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +75 -13
- package/package.json +7 -1
- package/primitives/event-dispatch/index.d.ts +627 -0
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/{transfer-state → http-providers}/bundle.js +254 -68
- package/schematics/migrations/http-providers/bundle.js.map +7 -0
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +659 -337
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +2 -2
- package/schematics/migrations.json +6 -16
- package/schematics/ng-generate/control-flow-migration/bundle.js +667 -345
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +2 -2
- package/schematics/ng-generate/standalone-migration/bundle.js +1030 -660
- package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
- package/testing/index.d.ts +2 -9
- package/schematics/migrations/block-template-entities/bundle.js +0 -22808
- package/schematics/migrations/block-template-entities/bundle.js.map +0 -7
- package/schematics/migrations/compiler-options/bundle.js +0 -582
- package/schematics/migrations/compiler-options/bundle.js.map +0 -7
- package/schematics/migrations/transfer-state/bundle.js.map +0 -7
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.0.0-next.
|
|
2
|
+
* @license Angular v18.0.0-next.6
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,6 +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 { Subject, Subscription, BehaviorSubject } from 'rxjs';
|
|
9
9
|
import { map, first } from 'rxjs/operators';
|
|
10
|
+
import { Dispatcher, registerDispatcher } from '@angular/core/primitives/event-dispatch';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Base URL for the error details page.
|
|
@@ -6454,6 +6455,60 @@ class HostAttributeToken {
|
|
|
6454
6455
|
}
|
|
6455
6456
|
}
|
|
6456
6457
|
|
|
6458
|
+
/**
|
|
6459
|
+
* A token that can be used to inject the tag name of the host node.
|
|
6460
|
+
*
|
|
6461
|
+
* @usageNotes
|
|
6462
|
+
* ### Injecting a tag name that is known to exist
|
|
6463
|
+
* ```typescript
|
|
6464
|
+
* @Directive()
|
|
6465
|
+
* class MyDir {
|
|
6466
|
+
* tagName: string = inject(HOST_TAG_NAME);
|
|
6467
|
+
* }
|
|
6468
|
+
* ```
|
|
6469
|
+
*
|
|
6470
|
+
* ### Optionally injecting a tag name
|
|
6471
|
+
* ```typescript
|
|
6472
|
+
* @Directive()
|
|
6473
|
+
* class MyDir {
|
|
6474
|
+
* tagName: string | null = inject(HOST_TAG_NAME, {optional: true});
|
|
6475
|
+
* }
|
|
6476
|
+
* ```
|
|
6477
|
+
* @publicApi
|
|
6478
|
+
*/
|
|
6479
|
+
const HOST_TAG_NAME = new InjectionToken(ngDevMode ? 'HOST_TAG_NAME' : '');
|
|
6480
|
+
// HOST_TAG_NAME should be resolved at the current node, similar to e.g. ElementRef,
|
|
6481
|
+
// so we manually specify __NG_ELEMENT_ID__ here, instead of using a factory.
|
|
6482
|
+
// tslint:disable-next-line:no-toplevel-property-access
|
|
6483
|
+
HOST_TAG_NAME.__NG_ELEMENT_ID__ = (flags) => {
|
|
6484
|
+
const tNode = getCurrentTNode();
|
|
6485
|
+
if (tNode === null) {
|
|
6486
|
+
throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&
|
|
6487
|
+
'HOST_TAG_NAME can only be injected in directives and components ' +
|
|
6488
|
+
'during construction time (in a class constructor or as a class field initializer)');
|
|
6489
|
+
}
|
|
6490
|
+
if (tNode.type & 2 /* TNodeType.Element */) {
|
|
6491
|
+
return tNode.value;
|
|
6492
|
+
}
|
|
6493
|
+
if (flags & InjectFlags.Optional) {
|
|
6494
|
+
return null;
|
|
6495
|
+
}
|
|
6496
|
+
throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&
|
|
6497
|
+
`HOST_TAG_NAME was used on ${getDevModeNodeName(tNode)} which doesn't have an underlying element in the DOM. ` +
|
|
6498
|
+
`This is invalid, and so the dependency should be marked as optional.`);
|
|
6499
|
+
};
|
|
6500
|
+
function getDevModeNodeName(tNode) {
|
|
6501
|
+
if (tNode.type & 8 /* TNodeType.ElementContainer */) {
|
|
6502
|
+
return 'an <ng-container>';
|
|
6503
|
+
}
|
|
6504
|
+
else if (tNode.type & 4 /* TNodeType.Container */) {
|
|
6505
|
+
return 'an <ng-template>';
|
|
6506
|
+
}
|
|
6507
|
+
else {
|
|
6508
|
+
return 'a node';
|
|
6509
|
+
}
|
|
6510
|
+
}
|
|
6511
|
+
|
|
6457
6512
|
/**
|
|
6458
6513
|
* @module
|
|
6459
6514
|
* @description
|
|
@@ -7295,6 +7350,20 @@ function getComponentViewByInstance(componentInstance) {
|
|
|
7295
7350
|
* This property will be monkey-patched on elements, components and directives.
|
|
7296
7351
|
*/
|
|
7297
7352
|
const MONKEY_PATCH_KEY_NAME = '__ngContext__';
|
|
7353
|
+
function attachLViewId(target, data) {
|
|
7354
|
+
target[MONKEY_PATCH_KEY_NAME] = data[ID];
|
|
7355
|
+
}
|
|
7356
|
+
/**
|
|
7357
|
+
* Returns the monkey-patch value data present on the target (which could be
|
|
7358
|
+
* a component, directive or a DOM node).
|
|
7359
|
+
*/
|
|
7360
|
+
function readLView(target) {
|
|
7361
|
+
const data = readPatchedData(target);
|
|
7362
|
+
if (isLView(data)) {
|
|
7363
|
+
return data;
|
|
7364
|
+
}
|
|
7365
|
+
return data ? data.lView : null;
|
|
7366
|
+
}
|
|
7298
7367
|
/**
|
|
7299
7368
|
* Assigns the given data to the given target (which could be a component,
|
|
7300
7369
|
* directive or DOM node instance) using monkey-patching.
|
|
@@ -8605,6 +8674,11 @@ const PRESERVE_HOST_CONTENT = new InjectionToken((typeof ngDevMode === 'undefine
|
|
|
8605
8674
|
* is enabled.
|
|
8606
8675
|
*/
|
|
8607
8676
|
const IS_I18N_HYDRATION_ENABLED = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_I18N_HYDRATION_ENABLED' : ''));
|
|
8677
|
+
/**
|
|
8678
|
+
* Internal token that indicates whether event replay support for SSR
|
|
8679
|
+
* is enabled.
|
|
8680
|
+
*/
|
|
8681
|
+
const IS_EVENT_REPLAY_ENABLED = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_EVENT_REPLAY_ENABLED' : ''));
|
|
8608
8682
|
|
|
8609
8683
|
/**
|
|
8610
8684
|
* @fileoverview
|
|
@@ -15215,7 +15289,7 @@ function performanceMarkFeature(feature) {
|
|
|
15215
15289
|
*
|
|
15216
15290
|
* @returns a function to cancel the scheduled callback
|
|
15217
15291
|
*/
|
|
15218
|
-
function
|
|
15292
|
+
function scheduleCallbackWithRafRace(callback, useNativeTimers = true) {
|
|
15219
15293
|
// Note: the `scheduleCallback` is used in the `NgZone` class, but we cannot use the
|
|
15220
15294
|
// `inject` function. The `NgZone` instance may be created manually, and thus the injection
|
|
15221
15295
|
// context will be unavailable. This might be enough to check whether `requestAnimationFrame` is
|
|
@@ -15249,6 +15323,17 @@ function scheduleCallback(callback, useNativeTimers = true) {
|
|
|
15249
15323
|
executeCallback = false;
|
|
15250
15324
|
};
|
|
15251
15325
|
}
|
|
15326
|
+
function scheduleCallbackWithMicrotask(callback) {
|
|
15327
|
+
let executeCallback = true;
|
|
15328
|
+
queueMicrotask(() => {
|
|
15329
|
+
if (executeCallback) {
|
|
15330
|
+
callback();
|
|
15331
|
+
}
|
|
15332
|
+
});
|
|
15333
|
+
return () => {
|
|
15334
|
+
executeCallback = false;
|
|
15335
|
+
};
|
|
15336
|
+
}
|
|
15252
15337
|
|
|
15253
15338
|
function noop(...args) {
|
|
15254
15339
|
// Do nothing.
|
|
@@ -15404,7 +15489,7 @@ class NgZone {
|
|
|
15404
15489
|
!shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;
|
|
15405
15490
|
self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;
|
|
15406
15491
|
self.callbackScheduled = false;
|
|
15407
|
-
self.scheduleCallback =
|
|
15492
|
+
self.scheduleCallback = scheduleCallbackWithRafRace;
|
|
15408
15493
|
forkInnerZoneWithAngularBehavior(self);
|
|
15409
15494
|
}
|
|
15410
15495
|
/**
|
|
@@ -15575,6 +15660,7 @@ function forkInnerZoneWithAngularBehavior(zone) {
|
|
|
15575
15660
|
name: 'angular',
|
|
15576
15661
|
properties: { 'isAngularZone': true },
|
|
15577
15662
|
onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => {
|
|
15663
|
+
// Prevent triggering change detection when the flag is detected.
|
|
15578
15664
|
if (shouldBeIgnoredByZone(applyArgs)) {
|
|
15579
15665
|
return delegate.invokeTask(target, task, applyThis, applyArgs);
|
|
15580
15666
|
}
|
|
@@ -15596,7 +15682,17 @@ function forkInnerZoneWithAngularBehavior(zone) {
|
|
|
15596
15682
|
return delegate.invoke(target, callback, applyThis, applyArgs, source);
|
|
15597
15683
|
}
|
|
15598
15684
|
finally {
|
|
15599
|
-
if (zone.shouldCoalesceRunChangeDetection
|
|
15685
|
+
if (zone.shouldCoalesceRunChangeDetection &&
|
|
15686
|
+
// Do not delay change detection when the task is the scheduler's tick.
|
|
15687
|
+
// We need to synchronously trigger the stability logic so that the
|
|
15688
|
+
// zone-based scheduler can prevent a duplicate ApplicationRef.tick
|
|
15689
|
+
// by first checking if the scheduler tick is running. This does seem a bit roundabout,
|
|
15690
|
+
// but we _do_ still want to trigger all the correct events when we exit the zone.run
|
|
15691
|
+
// (`onMicrotaskEmpty` and `onStable` _should_ emit; developers can have code which
|
|
15692
|
+
// relies on these events happening after change detection runs).
|
|
15693
|
+
// Note: `zone.callbackScheduled` is already in delayChangeDetectionForEventsDelegate
|
|
15694
|
+
// but is added here as well to prevent reads of applyArgs when not necessary
|
|
15695
|
+
!zone.callbackScheduled && !isSchedulerTick(applyArgs)) {
|
|
15600
15696
|
delayChangeDetectionForEventsDelegate();
|
|
15601
15697
|
}
|
|
15602
15698
|
onLeave(zone);
|
|
@@ -15673,6 +15769,12 @@ class NoopNgZone {
|
|
|
15673
15769
|
}
|
|
15674
15770
|
}
|
|
15675
15771
|
function shouldBeIgnoredByZone(applyArgs) {
|
|
15772
|
+
return hasApplyArgsData(applyArgs, '__ignore_ng_zone__');
|
|
15773
|
+
}
|
|
15774
|
+
function isSchedulerTick(applyArgs) {
|
|
15775
|
+
return hasApplyArgsData(applyArgs, '__scheduler_tick__');
|
|
15776
|
+
}
|
|
15777
|
+
function hasApplyArgsData(applyArgs, key) {
|
|
15676
15778
|
if (!Array.isArray(applyArgs)) {
|
|
15677
15779
|
return false;
|
|
15678
15780
|
}
|
|
@@ -15681,8 +15783,7 @@ function shouldBeIgnoredByZone(applyArgs) {
|
|
|
15681
15783
|
if (applyArgs.length !== 1) {
|
|
15682
15784
|
return false;
|
|
15683
15785
|
}
|
|
15684
|
-
|
|
15685
|
-
return applyArgs[0].data?.['__ignore_ng_zone__'] === true;
|
|
15786
|
+
return applyArgs[0]?.data?.[key] === true;
|
|
15686
15787
|
}
|
|
15687
15788
|
function getNgZone(ngZoneToUse = 'zone.js', options) {
|
|
15688
15789
|
if (ngZoneToUse === 'noop') {
|
|
@@ -16736,7 +16837,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
16736
16837
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
16737
16838
|
if (rootSelectorOrNode) {
|
|
16738
16839
|
// The placeholder will be replaced with the actual version at build time.
|
|
16739
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.0.0-next.
|
|
16840
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.0.0-next.6']);
|
|
16740
16841
|
}
|
|
16741
16842
|
else {
|
|
16742
16843
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -18950,14 +19051,7 @@ function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
|
|
|
18950
19051
|
const ITS_JUST_ANGULAR = true;
|
|
18951
19052
|
|
|
18952
19053
|
/**
|
|
18953
|
-
*
|
|
18954
|
-
*
|
|
18955
|
-
* This information is needed to make sure that the serialization on the server
|
|
18956
|
-
* is delayed until all tasks in the queue (such as an initial navigation or a
|
|
18957
|
-
* pending HTTP request) are completed.
|
|
18958
|
-
*
|
|
18959
|
-
* Pending tasks continue to contribute to the stableness of `ApplicationRef`
|
|
18960
|
-
* throughout the lifetime of the application.
|
|
19054
|
+
* Internal implementation of the pending tasks service.
|
|
18961
19055
|
*/
|
|
18962
19056
|
class PendingTasks {
|
|
18963
19057
|
constructor() {
|
|
@@ -18993,7 +19087,56 @@ class PendingTasks {
|
|
|
18993
19087
|
}
|
|
18994
19088
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PendingTasks, [{
|
|
18995
19089
|
type: Injectable,
|
|
18996
|
-
args: [{
|
|
19090
|
+
args: [{
|
|
19091
|
+
providedIn: 'root',
|
|
19092
|
+
}]
|
|
19093
|
+
}], null, null); })();
|
|
19094
|
+
/**
|
|
19095
|
+
* Experimental service that keeps track of pending tasks contributing to the stableness of Angular
|
|
19096
|
+
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
|
|
19097
|
+
* tasks influencing stability, this API gives control over stability to library and application
|
|
19098
|
+
* developers for specific cases not covered by Angular internals.
|
|
19099
|
+
*
|
|
19100
|
+
* The concept of stability comes into play in several important scenarios:
|
|
19101
|
+
* - SSR process needs to wait for the application stability before serializing and sending rendered
|
|
19102
|
+
* HTML;
|
|
19103
|
+
* - tests might want to delay assertions until the application becomes stable;
|
|
19104
|
+
*
|
|
19105
|
+
* @usageNotes
|
|
19106
|
+
* ```typescript
|
|
19107
|
+
* const pendingTasks = inject(ExperimentalPendingTasks);
|
|
19108
|
+
* const taskCleanup = pendingTasks.add();
|
|
19109
|
+
* // do work that should block application's stability and then:
|
|
19110
|
+
* taskCleanup();
|
|
19111
|
+
* ```
|
|
19112
|
+
*
|
|
19113
|
+
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
19114
|
+
* in patch versions. We will iterate on the exact API based on the feedback and our understanding
|
|
19115
|
+
* of the problem and solution space.
|
|
19116
|
+
*
|
|
19117
|
+
* @publicApi
|
|
19118
|
+
* @experimental
|
|
19119
|
+
*/
|
|
19120
|
+
class ExperimentalPendingTasks {
|
|
19121
|
+
constructor() {
|
|
19122
|
+
this.internalPendingTasks = inject(PendingTasks);
|
|
19123
|
+
}
|
|
19124
|
+
/**
|
|
19125
|
+
* Adds a new task that should block application's stability.
|
|
19126
|
+
* @returns A cleanup function that removes a task when called.
|
|
19127
|
+
*/
|
|
19128
|
+
add() {
|
|
19129
|
+
const taskId = this.internalPendingTasks.add();
|
|
19130
|
+
return () => this.internalPendingTasks.remove(taskId);
|
|
19131
|
+
}
|
|
19132
|
+
static { this.ɵfac = function ExperimentalPendingTasks_Factory(t) { return new (t || ExperimentalPendingTasks)(); }; }
|
|
19133
|
+
static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ExperimentalPendingTasks, factory: ExperimentalPendingTasks.ɵfac, providedIn: 'root' }); }
|
|
19134
|
+
}
|
|
19135
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ExperimentalPendingTasks, [{
|
|
19136
|
+
type: Injectable,
|
|
19137
|
+
args: [{
|
|
19138
|
+
providedIn: 'root',
|
|
19139
|
+
}]
|
|
18997
19140
|
}], null, null); })();
|
|
18998
19141
|
|
|
18999
19142
|
function isIterable(obj) {
|
|
@@ -20397,8 +20540,10 @@ function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling
|
|
|
20397
20540
|
const currentState = lDetails[DEFER_BLOCK_STATE];
|
|
20398
20541
|
if (isValidStateChange(currentState, newState) &&
|
|
20399
20542
|
isValidStateChange(lDetails[NEXT_DEFER_BLOCK_STATE] ?? -1, newState)) {
|
|
20543
|
+
const injector = hostLView[INJECTOR];
|
|
20400
20544
|
const tDetails = getTDeferBlockDetails(hostTView, tNode);
|
|
20401
|
-
|
|
20545
|
+
// Skips scheduling on the server since it can delay the server response.
|
|
20546
|
+
const needsScheduling = !skipTimerScheduling && isPlatformBrowser(injector) &&
|
|
20402
20547
|
(getLoadingBlockAfter(tDetails) !== null ||
|
|
20403
20548
|
getMinimumDurationForState(tDetails, DeferBlockState.Loading) !== null ||
|
|
20404
20549
|
getMinimumDurationForState(tDetails, DeferBlockState.Placeholder));
|
|
@@ -20420,7 +20565,20 @@ function renderDeferBlockState(newState, tNode, lContainer, skipTimerScheduling
|
|
|
20420
20565
|
*/
|
|
20421
20566
|
function isRouterOutletInjector(currentInjector) {
|
|
20422
20567
|
return (currentInjector instanceof ChainedInjector) &&
|
|
20423
|
-
(currentInjector.injector.__ngOutletInjector);
|
|
20568
|
+
(typeof currentInjector.injector.__ngOutletInjector === 'function');
|
|
20569
|
+
}
|
|
20570
|
+
/**
|
|
20571
|
+
* Creates an instance of the `OutletInjector` using a private factory
|
|
20572
|
+
* function available on the `OutletInjector` class.
|
|
20573
|
+
*
|
|
20574
|
+
* @param parentOutletInjector Parent OutletInjector, which should be used
|
|
20575
|
+
* to produce a new instance.
|
|
20576
|
+
* @param parentInjector An Injector, which should be used as a parent one
|
|
20577
|
+
* for a newly created `OutletInjector` instance.
|
|
20578
|
+
*/
|
|
20579
|
+
function createRouterOutletInjector(parentOutletInjector, parentInjector) {
|
|
20580
|
+
const outletInjector = parentOutletInjector.injector;
|
|
20581
|
+
return outletInjector.__ngOutletInjector(parentInjector);
|
|
20424
20582
|
}
|
|
20425
20583
|
/**
|
|
20426
20584
|
* Applies changes to the DOM to reflect a given state.
|
|
@@ -20453,11 +20611,18 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
|
|
|
20453
20611
|
// we can't inject it. Once the `OutletInjector` is replaced
|
|
20454
20612
|
// with the `EnvironmentInjector` in Router's code, this special
|
|
20455
20613
|
// handling can be removed.
|
|
20456
|
-
const
|
|
20457
|
-
|
|
20458
|
-
parentInjector.get(EnvironmentInjector);
|
|
20614
|
+
const isParentOutletInjector = isRouterOutletInjector(parentInjector);
|
|
20615
|
+
const parentEnvInjector = isParentOutletInjector ? parentInjector : parentInjector.get(EnvironmentInjector);
|
|
20459
20616
|
injector = parentEnvInjector.get(CachedInjectorService)
|
|
20460
20617
|
.getOrCreateInjector(tDetails, parentEnvInjector, providers, ngDevMode ? 'DeferBlock Injector' : '');
|
|
20618
|
+
// Note: this is a continuation of the special case for Router's `OutletInjector`.
|
|
20619
|
+
// Since the `OutletInjector` handles `ActivatedRoute` and `ChildrenOutletContexts`
|
|
20620
|
+
// dynamically (i.e. their values are not really stored statically in an injector),
|
|
20621
|
+
// we need to "wrap" a defer injector into another `OutletInjector`, so we retain
|
|
20622
|
+
// the dynamic resolution of the mentioned tokens.
|
|
20623
|
+
if (isParentOutletInjector) {
|
|
20624
|
+
injector = createRouterOutletInjector(parentInjector, injector);
|
|
20625
|
+
}
|
|
20461
20626
|
}
|
|
20462
20627
|
}
|
|
20463
20628
|
const dehydratedView = findMatchingDehydratedView(lContainer, activeBlockTNode.tView.ssrId);
|
|
@@ -20561,7 +20726,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
20561
20726
|
// If the loading status is different from initial one, it means that
|
|
20562
20727
|
// the loading of dependencies is in progress and there is nothing to do
|
|
20563
20728
|
// in this function. All details can be obtained from the `tDetails` object.
|
|
20564
|
-
return;
|
|
20729
|
+
return tDetails.loadingPromise ?? Promise.resolve();
|
|
20565
20730
|
}
|
|
20566
20731
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
20567
20732
|
const primaryBlockTNode = getPrimaryBlockTNode(tView, tDetails);
|
|
@@ -20589,7 +20754,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
20589
20754
|
tDetails.loadingState = DeferDependenciesLoadingState.COMPLETE;
|
|
20590
20755
|
pendingTasks.remove(taskId);
|
|
20591
20756
|
});
|
|
20592
|
-
return;
|
|
20757
|
+
return tDetails.loadingPromise;
|
|
20593
20758
|
}
|
|
20594
20759
|
// Start downloading of defer block dependencies.
|
|
20595
20760
|
tDetails.loadingPromise = Promise.allSettled(dependenciesFn()).then(results => {
|
|
@@ -20649,6 +20814,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
20649
20814
|
}
|
|
20650
20815
|
}
|
|
20651
20816
|
});
|
|
20817
|
+
return tDetails.loadingPromise;
|
|
20652
20818
|
}
|
|
20653
20819
|
/** Utility function to render placeholder content (if present) */
|
|
20654
20820
|
function renderPlaceholder(lView, tNode) {
|
|
@@ -23155,6 +23321,15 @@ function valuesMatching(liveIdx, liveValue, newIdx, newValue, trackBy) {
|
|
|
23155
23321
|
}
|
|
23156
23322
|
return 0;
|
|
23157
23323
|
}
|
|
23324
|
+
function recordDuplicateKeys(keyToIdx, key, idx) {
|
|
23325
|
+
const idxSoFar = keyToIdx.get(key);
|
|
23326
|
+
if (idxSoFar !== undefined) {
|
|
23327
|
+
idxSoFar.add(idx);
|
|
23328
|
+
}
|
|
23329
|
+
else {
|
|
23330
|
+
keyToIdx.set(key, new Set([idx]));
|
|
23331
|
+
}
|
|
23332
|
+
}
|
|
23158
23333
|
/**
|
|
23159
23334
|
* The live collection reconciliation algorithm that perform various in-place operations, so it
|
|
23160
23335
|
* reflects the content of the new (incoming) collection.
|
|
@@ -23183,12 +23358,16 @@ function reconcile(liveCollection, newCollection, trackByFn) {
|
|
|
23183
23358
|
let liveKeysInTheFuture = undefined;
|
|
23184
23359
|
let liveStartIdx = 0;
|
|
23185
23360
|
let liveEndIdx = liveCollection.length - 1;
|
|
23361
|
+
const duplicateKeys = ngDevMode ? new Map() : undefined;
|
|
23186
23362
|
if (Array.isArray(newCollection)) {
|
|
23187
23363
|
let newEndIdx = newCollection.length - 1;
|
|
23188
23364
|
while (liveStartIdx <= liveEndIdx && liveStartIdx <= newEndIdx) {
|
|
23189
23365
|
// compare from the beginning
|
|
23190
23366
|
const liveStartValue = liveCollection.at(liveStartIdx);
|
|
23191
23367
|
const newStartValue = newCollection[liveStartIdx];
|
|
23368
|
+
if (ngDevMode) {
|
|
23369
|
+
recordDuplicateKeys(duplicateKeys, trackByFn(liveStartIdx, newStartValue), liveStartIdx);
|
|
23370
|
+
}
|
|
23192
23371
|
const isStartMatching = valuesMatching(liveStartIdx, liveStartValue, liveStartIdx, newStartValue, trackByFn);
|
|
23193
23372
|
if (isStartMatching !== 0) {
|
|
23194
23373
|
if (isStartMatching < 0) {
|
|
@@ -23201,6 +23380,9 @@ function reconcile(liveCollection, newCollection, trackByFn) {
|
|
|
23201
23380
|
// TODO(perf): do _all_ the matching from the end
|
|
23202
23381
|
const liveEndValue = liveCollection.at(liveEndIdx);
|
|
23203
23382
|
const newEndValue = newCollection[newEndIdx];
|
|
23383
|
+
if (ngDevMode) {
|
|
23384
|
+
recordDuplicateKeys(duplicateKeys, trackByFn(newEndIdx, newEndValue), newEndIdx);
|
|
23385
|
+
}
|
|
23204
23386
|
const isEndMatching = valuesMatching(liveEndIdx, liveEndValue, newEndIdx, newEndValue, trackByFn);
|
|
23205
23387
|
if (isEndMatching !== 0) {
|
|
23206
23388
|
if (isEndMatching < 0) {
|
|
@@ -23272,6 +23454,9 @@ function reconcile(liveCollection, newCollection, trackByFn) {
|
|
|
23272
23454
|
while (!newIterationResult.done && liveStartIdx <= liveEndIdx) {
|
|
23273
23455
|
const liveValue = liveCollection.at(liveStartIdx);
|
|
23274
23456
|
const newValue = newIterationResult.value;
|
|
23457
|
+
if (ngDevMode) {
|
|
23458
|
+
recordDuplicateKeys(duplicateKeys, trackByFn(liveStartIdx, newValue), liveStartIdx);
|
|
23459
|
+
}
|
|
23275
23460
|
const isStartMatching = valuesMatching(liveStartIdx, liveValue, liveStartIdx, newValue, trackByFn);
|
|
23276
23461
|
if (isStartMatching !== 0) {
|
|
23277
23462
|
// found a match - move on, but update value
|
|
@@ -23323,6 +23508,25 @@ function reconcile(liveCollection, newCollection, trackByFn) {
|
|
|
23323
23508
|
detachedItems?.forEach(item => {
|
|
23324
23509
|
liveCollection.destroy(item);
|
|
23325
23510
|
});
|
|
23511
|
+
// report duplicate keys (dev mode only)
|
|
23512
|
+
if (ngDevMode) {
|
|
23513
|
+
let duplicatedKeysMsg = [];
|
|
23514
|
+
for (const [key, idxSet] of duplicateKeys) {
|
|
23515
|
+
if (idxSet.size > 1) {
|
|
23516
|
+
const idx = [...idxSet].sort((a, b) => a - b);
|
|
23517
|
+
for (let i = 1; i < idx.length; i++) {
|
|
23518
|
+
duplicatedKeysMsg.push(`key "${stringifyForError(key)}" at index "${idx[i - 1]}" and "${idx[i]}"`);
|
|
23519
|
+
}
|
|
23520
|
+
}
|
|
23521
|
+
}
|
|
23522
|
+
if (duplicatedKeysMsg.length > 0) {
|
|
23523
|
+
const message = formatRuntimeError(955 /* RuntimeErrorCode.LOOP_TRACK_DUPLICATE_KEYS */, 'The provided track expression resulted in duplicated keys for a given collection. ' +
|
|
23524
|
+
'Adjust the tracking expression such that it uniquely identifies all the items in the collection. ' +
|
|
23525
|
+
'Duplicated keys were: \n' + duplicatedKeysMsg.join(', \n') + '.');
|
|
23526
|
+
// tslint:disable-next-line:no-console
|
|
23527
|
+
console.warn(message);
|
|
23528
|
+
}
|
|
23529
|
+
}
|
|
23326
23530
|
}
|
|
23327
23531
|
function attachPreviouslyDetached(prevCollection, detachedItems, index, key) {
|
|
23328
23532
|
if (detachedItems !== undefined && detachedItems.has(key)) {
|
|
@@ -23559,12 +23763,43 @@ function ɵɵrepeaterCreate(index, templateFn, decls, vars, tagName, attrsIndex,
|
|
|
23559
23763
|
declareTemplate(lView, tView, index + 2, emptyTemplateFn, emptyDecls, emptyVars, emptyTagName, getConstant(tView.consts, emptyAttrsIndex));
|
|
23560
23764
|
}
|
|
23561
23765
|
}
|
|
23766
|
+
function isViewExpensiveToRecreate(lView) {
|
|
23767
|
+
// assumption: anything more than a text node with a binding is considered "expensive"
|
|
23768
|
+
return lView.length - HEADER_OFFSET > 2;
|
|
23769
|
+
}
|
|
23770
|
+
class OperationsCounter {
|
|
23771
|
+
constructor() {
|
|
23772
|
+
this.created = 0;
|
|
23773
|
+
this.destroyed = 0;
|
|
23774
|
+
}
|
|
23775
|
+
reset() {
|
|
23776
|
+
this.created = 0;
|
|
23777
|
+
this.destroyed = 0;
|
|
23778
|
+
}
|
|
23779
|
+
recordCreate() {
|
|
23780
|
+
this.created++;
|
|
23781
|
+
}
|
|
23782
|
+
recordDestroy() {
|
|
23783
|
+
this.destroyed++;
|
|
23784
|
+
}
|
|
23785
|
+
/**
|
|
23786
|
+
* A method indicating if the entire collection was re-created as part of the reconciliation pass.
|
|
23787
|
+
* Used to warn developers about the usage of a tracking function that might result in excessive
|
|
23788
|
+
* amount of view creation / destroy operations.
|
|
23789
|
+
*
|
|
23790
|
+
* @returns boolean value indicating if a live collection was re-created
|
|
23791
|
+
*/
|
|
23792
|
+
wasReCreated(collectionLen) {
|
|
23793
|
+
return collectionLen > 0 && this.created === this.destroyed && this.created === collectionLen;
|
|
23794
|
+
}
|
|
23795
|
+
}
|
|
23562
23796
|
class LiveCollectionLContainerImpl extends LiveCollection {
|
|
23563
23797
|
constructor(lContainer, hostLView, templateTNode) {
|
|
23564
23798
|
super();
|
|
23565
23799
|
this.lContainer = lContainer;
|
|
23566
23800
|
this.hostLView = hostLView;
|
|
23567
23801
|
this.templateTNode = templateTNode;
|
|
23802
|
+
this.operationsCounter = ngDevMode ? new OperationsCounter() : undefined;
|
|
23568
23803
|
/**
|
|
23569
23804
|
Property indicating if indexes in the repeater context need to be updated following the live
|
|
23570
23805
|
collection changes. Index updates are necessary if and only if views are inserted / removed in
|
|
@@ -23590,16 +23825,19 @@ class LiveCollectionLContainerImpl extends LiveCollection {
|
|
|
23590
23825
|
create(index, value) {
|
|
23591
23826
|
const dehydratedView = findMatchingDehydratedView(this.lContainer, this.templateTNode.tView.ssrId);
|
|
23592
23827
|
const embeddedLView = createAndRenderEmbeddedLView(this.hostLView, this.templateTNode, new RepeaterContext(this.lContainer, value, index), { dehydratedView });
|
|
23828
|
+
this.operationsCounter?.recordCreate();
|
|
23593
23829
|
return embeddedLView;
|
|
23594
23830
|
}
|
|
23595
23831
|
destroy(lView) {
|
|
23596
23832
|
destroyLView(lView[TVIEW], lView);
|
|
23833
|
+
this.operationsCounter?.recordDestroy();
|
|
23597
23834
|
}
|
|
23598
23835
|
updateValue(index, value) {
|
|
23599
23836
|
this.getLView(index)[CONTEXT].$implicit = value;
|
|
23600
23837
|
}
|
|
23601
23838
|
reset() {
|
|
23602
23839
|
this.needsIndexUpdate = false;
|
|
23840
|
+
this.operationsCounter?.reset();
|
|
23603
23841
|
}
|
|
23604
23842
|
updateIndexes() {
|
|
23605
23843
|
if (this.needsIndexUpdate) {
|
|
@@ -23626,9 +23864,9 @@ function ɵɵrepeater(collection) {
|
|
|
23626
23864
|
const hostLView = getLView();
|
|
23627
23865
|
const hostTView = hostLView[TVIEW];
|
|
23628
23866
|
const metadata = hostLView[metadataSlotIdx];
|
|
23867
|
+
const containerIndex = metadataSlotIdx + 1;
|
|
23868
|
+
const lContainer = getLContainer(hostLView, containerIndex);
|
|
23629
23869
|
if (metadata.liveCollection === undefined) {
|
|
23630
|
-
const containerIndex = metadataSlotIdx + 1;
|
|
23631
|
-
const lContainer = getLContainer(hostLView, containerIndex);
|
|
23632
23870
|
const itemTemplateTNode = getExistingTNode(hostTView, containerIndex);
|
|
23633
23871
|
metadata.liveCollection =
|
|
23634
23872
|
new LiveCollectionLContainerImpl(lContainer, hostLView, itemTemplateTNode);
|
|
@@ -23638,6 +23876,18 @@ function ɵɵrepeater(collection) {
|
|
|
23638
23876
|
}
|
|
23639
23877
|
const liveCollection = metadata.liveCollection;
|
|
23640
23878
|
reconcile(liveCollection, collection, metadata.trackByFn);
|
|
23879
|
+
// Warn developers about situations where the entire collection was re-created as part of the
|
|
23880
|
+
// reconciliation pass. Note that this warning might be "overreacting" and report cases where
|
|
23881
|
+
// the collection re-creation is the intended behavior. Still, the assumption is that most of
|
|
23882
|
+
// the time it is undesired.
|
|
23883
|
+
if (ngDevMode && metadata.trackByFn === ɵɵrepeaterTrackByIdentity &&
|
|
23884
|
+
liveCollection.operationsCounter?.wasReCreated(liveCollection.length) &&
|
|
23885
|
+
isViewExpensiveToRecreate(getExistingLViewFromLContainer(lContainer, 0))) {
|
|
23886
|
+
const message = formatRuntimeError(956 /* RuntimeErrorCode.LOOP_TRACK_RECREATE */, `The configured tracking expression (track by identity) caused re-creation of the entire collection of size ${liveCollection.length}. ` +
|
|
23887
|
+
'This is an expensive operation requiring destruction and subsequent creation of DOM nodes, directives, components etc. ' +
|
|
23888
|
+
'Please review the "track expression" and make sure that it uniquely identifies items in a collection.');
|
|
23889
|
+
console.warn(message);
|
|
23890
|
+
}
|
|
23641
23891
|
// moves in the container might caused context's index to get out of order, re-adjust if needed
|
|
23642
23892
|
liveCollection.updateIndexes();
|
|
23643
23893
|
// handle empty blocks
|
|
@@ -30309,7 +30559,7 @@ class Version {
|
|
|
30309
30559
|
/**
|
|
30310
30560
|
* @publicApi
|
|
30311
30561
|
*/
|
|
30312
|
-
const VERSION = new Version('18.0.0-next.
|
|
30562
|
+
const VERSION = new Version('18.0.0-next.6');
|
|
30313
30563
|
|
|
30314
30564
|
class Console {
|
|
30315
30565
|
log(message) {
|
|
@@ -32283,6 +32533,23 @@ function _lastDefined(args) {
|
|
|
32283
32533
|
/** Flag to enable/disable the zoneless scheduler as default provider with zone scheduling. */
|
|
32284
32534
|
const alwaysProvideZonelessScheduler = true;
|
|
32285
32535
|
|
|
32536
|
+
const CONSECUTIVE_MICROTASK_NOTIFICATION_LIMIT = 100;
|
|
32537
|
+
let consecutiveMicrotaskNotifications = 0;
|
|
32538
|
+
let stackFromLastFewNotifications = [];
|
|
32539
|
+
function trackMicrotaskNotificationForDebugging() {
|
|
32540
|
+
consecutiveMicrotaskNotifications++;
|
|
32541
|
+
if (CONSECUTIVE_MICROTASK_NOTIFICATION_LIMIT - consecutiveMicrotaskNotifications < 5) {
|
|
32542
|
+
const stack = new Error().stack;
|
|
32543
|
+
if (stack) {
|
|
32544
|
+
stackFromLastFewNotifications.push(stack);
|
|
32545
|
+
}
|
|
32546
|
+
}
|
|
32547
|
+
if (consecutiveMicrotaskNotifications === CONSECUTIVE_MICROTASK_NOTIFICATION_LIMIT) {
|
|
32548
|
+
throw new RuntimeError(103 /* RuntimeErrorCode.INFINITE_CHANGE_DETECTION */, 'Angular could not stabilize because there were endless change notifications within the browser event loop. ' +
|
|
32549
|
+
'The stack from the last several notifications: \n' +
|
|
32550
|
+
stackFromLastFewNotifications.join('\n'));
|
|
32551
|
+
}
|
|
32552
|
+
}
|
|
32286
32553
|
class ChangeDetectionSchedulerImpl {
|
|
32287
32554
|
constructor() {
|
|
32288
32555
|
this.appRef = inject(ApplicationRef);
|
|
@@ -32295,6 +32562,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
32295
32562
|
this.zonelessEnabled = inject(ZONELESS_ENABLED);
|
|
32296
32563
|
this.disableScheduling = inject(ZONELESS_SCHEDULER_DISABLED, { optional: true }) ?? false;
|
|
32297
32564
|
this.zoneIsDefined = typeof Zone !== 'undefined' && !!Zone.root.run;
|
|
32565
|
+
this.schedulerTickApplyArgs = [{ data: { '__scheduler_tick__': true } }];
|
|
32298
32566
|
this.afterTickSubscription = this.appRef.afterTick.subscribe(() => {
|
|
32299
32567
|
// If the scheduler isn't running a tick but the application ticked, that means
|
|
32300
32568
|
// someone called ApplicationRef.tick manually. In this case, we should cancel
|
|
@@ -32303,6 +32571,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
32303
32571
|
this.cleanup();
|
|
32304
32572
|
}
|
|
32305
32573
|
});
|
|
32574
|
+
this.useMicrotaskScheduler = false;
|
|
32306
32575
|
// TODO(atscott): These conditions will need to change when zoneless is the default
|
|
32307
32576
|
// Instead, they should flip to checking if ZoneJS scheduling is provided
|
|
32308
32577
|
this.disableScheduling ||= !this.zonelessEnabled &&
|
|
@@ -32318,6 +32587,16 @@ class ChangeDetectionSchedulerImpl {
|
|
|
32318
32587
|
if (!this.shouldScheduleTick()) {
|
|
32319
32588
|
return;
|
|
32320
32589
|
}
|
|
32590
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
32591
|
+
if (this.useMicrotaskScheduler) {
|
|
32592
|
+
trackMicrotaskNotificationForDebugging();
|
|
32593
|
+
}
|
|
32594
|
+
else {
|
|
32595
|
+
consecutiveMicrotaskNotifications = 0;
|
|
32596
|
+
stackFromLastFewNotifications.length = 0;
|
|
32597
|
+
}
|
|
32598
|
+
}
|
|
32599
|
+
const scheduleCallback = this.useMicrotaskScheduler ? scheduleCallbackWithMicrotask : scheduleCallbackWithRafRace;
|
|
32321
32600
|
this.pendingRenderTaskId = this.taskService.add();
|
|
32322
32601
|
if (this.zoneIsDefined) {
|
|
32323
32602
|
Zone.root.run(() => {
|
|
@@ -32363,15 +32642,30 @@ class ChangeDetectionSchedulerImpl {
|
|
|
32363
32642
|
if (this.runningTick || this.appRef.destroyed) {
|
|
32364
32643
|
return;
|
|
32365
32644
|
}
|
|
32645
|
+
const task = this.taskService.add();
|
|
32366
32646
|
try {
|
|
32367
32647
|
this.ngZone.run(() => {
|
|
32368
32648
|
this.runningTick = true;
|
|
32369
32649
|
this.appRef._tick(shouldRefreshViews);
|
|
32370
|
-
});
|
|
32650
|
+
}, undefined, this.schedulerTickApplyArgs);
|
|
32651
|
+
}
|
|
32652
|
+
catch (e) {
|
|
32653
|
+
this.taskService.remove(task);
|
|
32654
|
+
throw e;
|
|
32371
32655
|
}
|
|
32372
32656
|
finally {
|
|
32373
32657
|
this.cleanup();
|
|
32374
32658
|
}
|
|
32659
|
+
// If we're notified of a change within 1 microtask of running change
|
|
32660
|
+
// detection, run another round in the same event loop. This allows code
|
|
32661
|
+
// which uses Promise.resolve (see NgModel) to avoid
|
|
32662
|
+
// ExpressionChanged...Error to still be reflected in a single browser
|
|
32663
|
+
// paint, even if that spans multiple rounds of change detection.
|
|
32664
|
+
this.useMicrotaskScheduler = true;
|
|
32665
|
+
scheduleCallbackWithMicrotask(() => {
|
|
32666
|
+
this.useMicrotaskScheduler = false;
|
|
32667
|
+
this.taskService.remove(task);
|
|
32668
|
+
});
|
|
32375
32669
|
}
|
|
32376
32670
|
ngOnDestroy() {
|
|
32377
32671
|
this.afterTickSubscription.unsubscribe();
|
|
@@ -32434,8 +32728,8 @@ class ChangeDetectionSchedulerImpl {
|
|
|
32434
32728
|
* ```
|
|
32435
32729
|
*
|
|
32436
32730
|
* This API is experimental. Neither the shape, nor the underlying behavior is stable and can change
|
|
32437
|
-
* in patch versions. There are known feature gaps
|
|
32438
|
-
*
|
|
32731
|
+
* in patch versions. There are known feature gaps and API ergonomic considerations. We will iterate
|
|
32732
|
+
* on the exact API based on the feedback and our understanding of the problem and solution space.
|
|
32439
32733
|
*
|
|
32440
32734
|
* @publicApi
|
|
32441
32735
|
* @experimental
|
|
@@ -34987,9 +35281,9 @@ const REACTIVE_NODE = {
|
|
|
34987
35281
|
*/
|
|
34988
35282
|
function producerAccessed(node) {
|
|
34989
35283
|
if (inNotificationPhase) {
|
|
34990
|
-
throw new Error(typeof ngDevMode !== 'undefined' && ngDevMode
|
|
34991
|
-
`Assertion error: signal read during notification phase`
|
|
34992
|
-
'');
|
|
35284
|
+
throw new Error(typeof ngDevMode !== 'undefined' && ngDevMode
|
|
35285
|
+
? `Assertion error: signal read during notification phase`
|
|
35286
|
+
: '');
|
|
34993
35287
|
}
|
|
34994
35288
|
if (activeConsumer === null) {
|
|
34995
35289
|
// Accessed outside of a reactive context, so nothing to record.
|
|
@@ -35019,8 +35313,9 @@ function producerAccessed(node) {
|
|
|
35019
35313
|
activeConsumer.producerNode[idx] = node;
|
|
35020
35314
|
// If the active consumer is live, then add it as a live consumer. If not, then use 0 as a
|
|
35021
35315
|
// placeholder value.
|
|
35022
|
-
activeConsumer.producerIndexOfThis[idx] =
|
|
35023
|
-
|
|
35316
|
+
activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer)
|
|
35317
|
+
? producerAddLiveConsumer(node, activeConsumer, idx)
|
|
35318
|
+
: 0;
|
|
35024
35319
|
}
|
|
35025
35320
|
activeConsumer.producerLastReadVersion[idx] = node.version;
|
|
35026
35321
|
}
|
|
@@ -35110,7 +35405,9 @@ function consumerBeforeComputation(node) {
|
|
|
35110
35405
|
*/
|
|
35111
35406
|
function consumerAfterComputation(node, prevConsumer) {
|
|
35112
35407
|
setActiveConsumer(prevConsumer);
|
|
35113
|
-
if (!node ||
|
|
35408
|
+
if (!node ||
|
|
35409
|
+
node.producerNode === undefined ||
|
|
35410
|
+
node.producerIndexOfThis === undefined ||
|
|
35114
35411
|
node.producerLastReadVersion === undefined) {
|
|
35115
35412
|
return;
|
|
35116
35413
|
}
|
|
@@ -35168,8 +35465,10 @@ function consumerDestroy(node) {
|
|
|
35168
35465
|
}
|
|
35169
35466
|
}
|
|
35170
35467
|
// Truncate all the arrays to drop all connection from this node to the graph.
|
|
35171
|
-
node.producerNode.length =
|
|
35172
|
-
|
|
35468
|
+
node.producerNode.length =
|
|
35469
|
+
node.producerLastReadVersion.length =
|
|
35470
|
+
node.producerIndexOfThis.length =
|
|
35471
|
+
0;
|
|
35173
35472
|
if (node.liveConsumerNode) {
|
|
35174
35473
|
node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0;
|
|
35175
35474
|
}
|
|
@@ -35309,7 +35608,9 @@ const COMPUTED_NODE = /* @__PURE__ */ (() => {
|
|
|
35309
35608
|
finally {
|
|
35310
35609
|
consumerAfterComputation(node, prevConsumer);
|
|
35311
35610
|
}
|
|
35312
|
-
if (oldValue !== UNSET &&
|
|
35611
|
+
if (oldValue !== UNSET &&
|
|
35612
|
+
oldValue !== ERRORED &&
|
|
35613
|
+
newValue !== ERRORED &&
|
|
35313
35614
|
node.equal(oldValue, newValue)) {
|
|
35314
35615
|
// No change to `valueVersion` - old and new values are
|
|
35315
35616
|
// semantically equivalent.
|
|
@@ -35746,6 +36047,170 @@ function getDeferBlocks(lView, deferBlocks) {
|
|
|
35746
36047
|
}
|
|
35747
36048
|
}
|
|
35748
36049
|
|
|
36050
|
+
const EVENT_REPLAY_ENABLED_DEFAULT = false;
|
|
36051
|
+
const CONTRACT_PROPERTY = 'ngContracts';
|
|
36052
|
+
/**
|
|
36053
|
+
* Returns a set of providers required to setup support for event replay.
|
|
36054
|
+
* Requires hydration to be enabled separately.
|
|
36055
|
+
*/
|
|
36056
|
+
function withEventReplay() {
|
|
36057
|
+
return [
|
|
36058
|
+
{
|
|
36059
|
+
provide: IS_EVENT_REPLAY_ENABLED,
|
|
36060
|
+
useValue: true,
|
|
36061
|
+
},
|
|
36062
|
+
{
|
|
36063
|
+
provide: APP_BOOTSTRAP_LISTENER,
|
|
36064
|
+
useFactory: () => {
|
|
36065
|
+
if (isPlatformBrowser()) {
|
|
36066
|
+
const injector = inject(Injector);
|
|
36067
|
+
const appRef = inject(ApplicationRef);
|
|
36068
|
+
return () => {
|
|
36069
|
+
// Kick off event replay logic once hydration for the initial part
|
|
36070
|
+
// of the application is completed. This timing is similar to the unclaimed
|
|
36071
|
+
// dehydrated views cleanup timing.
|
|
36072
|
+
whenStable(appRef).then(() => {
|
|
36073
|
+
const appId = injector.get(APP_ID);
|
|
36074
|
+
// This is set in packages/platform-server/src/utils.ts
|
|
36075
|
+
// Note: globalThis[CONTRACT_PROPERTY] may be undefined in case Event Replay feature
|
|
36076
|
+
// is enabled, but there are no events configured in an application.
|
|
36077
|
+
const eventContract = globalThis[CONTRACT_PROPERTY]?.[appId];
|
|
36078
|
+
if (eventContract) {
|
|
36079
|
+
const dispatcher = new Dispatcher();
|
|
36080
|
+
setEventReplayer(dispatcher);
|
|
36081
|
+
// Event replay is kicked off as a side-effect of executing this function.
|
|
36082
|
+
registerDispatcher(eventContract, dispatcher);
|
|
36083
|
+
}
|
|
36084
|
+
});
|
|
36085
|
+
};
|
|
36086
|
+
}
|
|
36087
|
+
return () => { }; // noop for the server code
|
|
36088
|
+
},
|
|
36089
|
+
multi: true,
|
|
36090
|
+
}
|
|
36091
|
+
];
|
|
36092
|
+
}
|
|
36093
|
+
/**
|
|
36094
|
+
* Extracts information about all DOM events (added in a template) registered on elements in a give
|
|
36095
|
+
* LView. Maps collected events to a corresponding DOM element (an element is used as a key).
|
|
36096
|
+
*/
|
|
36097
|
+
function collectDomEventsInfo(tView, lView, eventTypesToReplay) {
|
|
36098
|
+
const events = new Map();
|
|
36099
|
+
const lCleanup = lView[CLEANUP];
|
|
36100
|
+
const tCleanup = tView.cleanup;
|
|
36101
|
+
if (!tCleanup || !lCleanup) {
|
|
36102
|
+
return events;
|
|
36103
|
+
}
|
|
36104
|
+
for (let i = 0; i < tCleanup.length;) {
|
|
36105
|
+
const firstParam = tCleanup[i++];
|
|
36106
|
+
const secondParam = tCleanup[i++];
|
|
36107
|
+
if (typeof firstParam !== 'string') {
|
|
36108
|
+
continue;
|
|
36109
|
+
}
|
|
36110
|
+
const name = firstParam;
|
|
36111
|
+
eventTypesToReplay.add(name);
|
|
36112
|
+
const listenerElement = unwrapRNode(lView[secondParam]);
|
|
36113
|
+
i++; // move the cursor to the next position (location of the listener idx)
|
|
36114
|
+
const useCaptureOrIndx = tCleanup[i++];
|
|
36115
|
+
// if useCaptureOrIndx is boolean then report it as is.
|
|
36116
|
+
// if useCaptureOrIndx is positive number then it in unsubscribe method
|
|
36117
|
+
// if useCaptureOrIndx is negative number then it is a Subscription
|
|
36118
|
+
const isDomEvent = typeof useCaptureOrIndx === 'boolean' || useCaptureOrIndx >= 0;
|
|
36119
|
+
if (!isDomEvent) {
|
|
36120
|
+
continue;
|
|
36121
|
+
}
|
|
36122
|
+
if (!events.has(listenerElement)) {
|
|
36123
|
+
events.set(listenerElement, [name]);
|
|
36124
|
+
}
|
|
36125
|
+
else {
|
|
36126
|
+
events.get(listenerElement).push(name);
|
|
36127
|
+
}
|
|
36128
|
+
}
|
|
36129
|
+
return events;
|
|
36130
|
+
}
|
|
36131
|
+
function setJSActionAttribute(tNode, rNode, nativeElementToEvents) {
|
|
36132
|
+
if (tNode.type & 2 /* TNodeType.Element */) {
|
|
36133
|
+
const nativeElement = unwrapRNode(rNode);
|
|
36134
|
+
const events = nativeElementToEvents.get(nativeElement) ?? [];
|
|
36135
|
+
const parts = events.map(event => `${event}:`);
|
|
36136
|
+
if (parts.length > 0) {
|
|
36137
|
+
nativeElement.setAttribute('jsaction', parts.join(';'));
|
|
36138
|
+
}
|
|
36139
|
+
}
|
|
36140
|
+
}
|
|
36141
|
+
/**
|
|
36142
|
+
* Registers a function that should be invoked to replay events.
|
|
36143
|
+
*/
|
|
36144
|
+
function setEventReplayer(dispatcher) {
|
|
36145
|
+
dispatcher.setEventReplayer(queue => {
|
|
36146
|
+
for (const event of queue) {
|
|
36147
|
+
handleEvent(event);
|
|
36148
|
+
}
|
|
36149
|
+
});
|
|
36150
|
+
}
|
|
36151
|
+
/**
|
|
36152
|
+
* Finds an LView that a given DOM element belongs to.
|
|
36153
|
+
*/
|
|
36154
|
+
function getLViewByElement(target) {
|
|
36155
|
+
let lView = readLView(target);
|
|
36156
|
+
if (lView) {
|
|
36157
|
+
return lView;
|
|
36158
|
+
}
|
|
36159
|
+
else {
|
|
36160
|
+
// If this node doesn't have LView info attached, then we need to
|
|
36161
|
+
// traverse upwards up the DOM to find the nearest element that
|
|
36162
|
+
// has already been monkey patched with data.
|
|
36163
|
+
let parent = target;
|
|
36164
|
+
while (parent = parent.parentNode) {
|
|
36165
|
+
lView = readLView(parent);
|
|
36166
|
+
if (lView) {
|
|
36167
|
+
// To prevent additional lookups, monkey-patch LView id onto this DOM node.
|
|
36168
|
+
// TODO: consider patching all parent nodes that didn't have LView id, so that
|
|
36169
|
+
// we can avoid lookups for more nodes.
|
|
36170
|
+
attachLViewId(target, lView);
|
|
36171
|
+
return lView;
|
|
36172
|
+
}
|
|
36173
|
+
}
|
|
36174
|
+
}
|
|
36175
|
+
return null;
|
|
36176
|
+
}
|
|
36177
|
+
function handleEvent(event) {
|
|
36178
|
+
const nativeElement = event.getAction().element;
|
|
36179
|
+
// Dispatch event via Angular's logic
|
|
36180
|
+
if (nativeElement) {
|
|
36181
|
+
const lView = getLViewByElement(nativeElement);
|
|
36182
|
+
if (lView !== null) {
|
|
36183
|
+
const tView = lView[TVIEW];
|
|
36184
|
+
const eventName = event.getEventType();
|
|
36185
|
+
const origEvent = event.getEvent();
|
|
36186
|
+
const listeners = getEventListeners(tView, lView, nativeElement, eventName);
|
|
36187
|
+
for (const listener of listeners) {
|
|
36188
|
+
listener(origEvent);
|
|
36189
|
+
}
|
|
36190
|
+
}
|
|
36191
|
+
}
|
|
36192
|
+
}
|
|
36193
|
+
function getEventListeners(tView, lView, nativeElement, eventName) {
|
|
36194
|
+
const listeners = [];
|
|
36195
|
+
const lCleanup = lView[CLEANUP];
|
|
36196
|
+
const tCleanup = tView.cleanup;
|
|
36197
|
+
if (tCleanup && lCleanup) {
|
|
36198
|
+
for (let i = 0; i < tCleanup.length;) {
|
|
36199
|
+
const storedEventName = tCleanup[i++];
|
|
36200
|
+
const nativeElementIndex = tCleanup[i++];
|
|
36201
|
+
if (typeof storedEventName === 'string') {
|
|
36202
|
+
const listenerElement = unwrapRNode(lView[nativeElementIndex]);
|
|
36203
|
+
const listener = lCleanup[tCleanup[i++]];
|
|
36204
|
+
i++; // increment to the next position;
|
|
36205
|
+
if (listenerElement === nativeElement && eventName === storedEventName) {
|
|
36206
|
+
listeners.push(listener);
|
|
36207
|
+
}
|
|
36208
|
+
}
|
|
36209
|
+
}
|
|
36210
|
+
}
|
|
36211
|
+
return listeners;
|
|
36212
|
+
}
|
|
36213
|
+
|
|
35749
36214
|
/**
|
|
35750
36215
|
* A collection that tracks all serialized views (`ngh` DOM annotations)
|
|
35751
36216
|
* to avoid duplication. An attempt to add a duplicate view results in the
|
|
@@ -35854,6 +36319,7 @@ function annotateLContainerForHydration(lContainer, context) {
|
|
|
35854
36319
|
*
|
|
35855
36320
|
* @param appRef An instance of an ApplicationRef.
|
|
35856
36321
|
* @param doc A reference to the current Document instance.
|
|
36322
|
+
* @return event types that need to be replayed
|
|
35857
36323
|
*/
|
|
35858
36324
|
function annotateForHydration(appRef, doc) {
|
|
35859
36325
|
const injector = appRef.injector;
|
|
@@ -35861,6 +36327,8 @@ function annotateForHydration(appRef, doc) {
|
|
|
35861
36327
|
const serializedViewCollection = new SerializedViewCollection();
|
|
35862
36328
|
const corruptedTextNodes = new Map();
|
|
35863
36329
|
const viewRefs = appRef._views;
|
|
36330
|
+
const shouldReplayEvents = injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT);
|
|
36331
|
+
const eventTypesToReplay = new Set();
|
|
35864
36332
|
for (const viewRef of viewRefs) {
|
|
35865
36333
|
const lNode = getLNodeForHydration(viewRef);
|
|
35866
36334
|
// An `lView` might be `null` if a `ViewRef` represents
|
|
@@ -35871,6 +36339,8 @@ function annotateForHydration(appRef, doc) {
|
|
|
35871
36339
|
corruptedTextNodes,
|
|
35872
36340
|
isI18nHydrationEnabled: isI18nHydrationEnabledVal,
|
|
35873
36341
|
i18nChildren: new Map(),
|
|
36342
|
+
eventTypesToReplay,
|
|
36343
|
+
shouldReplayEvents,
|
|
35874
36344
|
};
|
|
35875
36345
|
if (isLContainer(lNode)) {
|
|
35876
36346
|
annotateLContainerForHydration(lNode, context);
|
|
@@ -35889,6 +36359,7 @@ function annotateForHydration(appRef, doc) {
|
|
|
35889
36359
|
const serializedViews = serializedViewCollection.getAll();
|
|
35890
36360
|
const transferState = injector.get(TransferState);
|
|
35891
36361
|
transferState.set(NGH_DATA_KEY, serializedViews);
|
|
36362
|
+
return eventTypesToReplay.size > 0 ? eventTypesToReplay : undefined;
|
|
35892
36363
|
}
|
|
35893
36364
|
/**
|
|
35894
36365
|
* Serializes the lContainer data into a list of SerializedView objects,
|
|
@@ -35998,10 +36469,16 @@ function serializeLView(lView, context) {
|
|
|
35998
36469
|
const ngh = {};
|
|
35999
36470
|
const tView = lView[TVIEW];
|
|
36000
36471
|
const i18nChildren = getOrComputeI18nChildren(tView, context);
|
|
36472
|
+
const nativeElementsToEventTypes = context.shouldReplayEvents ?
|
|
36473
|
+
collectDomEventsInfo(tView, lView, context.eventTypesToReplay) :
|
|
36474
|
+
null;
|
|
36001
36475
|
// Iterate over DOM element references in an LView.
|
|
36002
36476
|
for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {
|
|
36003
36477
|
const tNode = tView.data[i];
|
|
36004
36478
|
const noOffsetIndex = i - HEADER_OFFSET;
|
|
36479
|
+
if (nativeElementsToEventTypes) {
|
|
36480
|
+
setJSActionAttribute(tNode, lView[i], nativeElementsToEventTypes);
|
|
36481
|
+
}
|
|
36005
36482
|
// Attempt to serialize any i18n data for the given slot. We do this first, as i18n
|
|
36006
36483
|
// has its own process for serialization.
|
|
36007
36484
|
const i18nData = trySerializeI18nBlock(lView, i, context);
|
|
@@ -37022,5 +37499,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
37022
37499
|
* Generated bundle index. Do not edit.
|
|
37023
37500
|
*/
|
|
37024
37501
|
|
|
37025
|
-
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, 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, 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, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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, 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, 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, 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, ɵɵ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, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
37502
|
+
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, 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, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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, 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, 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, ɵɵ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, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
37026
37503
|
//# sourceMappingURL=core.mjs.map
|