@angular/core 19.0.1 → 19.0.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/fesm2022/core.mjs +289 -300
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +8 -8
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +150 -139
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/{checker-3cbc9cc1.js → checker-c58f97d2.js} +49 -50
- package/schematics/bundles/{combine_units-c36a3065.js → combine_units-605024c1.js} +3 -3
- package/schematics/bundles/{compiler_host-087c5caa.js → compiler_host-f5d588fe.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +5 -5
- package/schematics/bundles/{imports-4ac08251.js → imports-31a38653.js} +2 -2
- package/schematics/bundles/inject-migration.js +64 -43
- package/schematics/bundles/{leading_space-d190b83b.js → leading_space-6e7a8ec6.js} +1 -1
- package/schematics/bundles/{migrate_ts_type_references-bb0c286a.js → migrate_ts_type_references-596627c6.js} +9 -9
- package/schematics/bundles/{nodes-0e7d45ca.js → nodes-88c2157f.js} +2 -2
- package/schematics/bundles/output-migration.js +5 -5
- package/schematics/bundles/pending-tasks.js +5 -5
- package/schematics/bundles/{program-561595c4.js → program-fe7d9b66.js} +54 -30
- package/schematics/bundles/{project_tsconfig_paths-e9ccccbf.js → project_tsconfig_paths-6c9cde78.js} +1 -1
- package/schematics/bundles/provide-initializer.js +5 -5
- package/schematics/bundles/route-lazy-loading.js +4 -4
- package/schematics/bundles/signal-input-migration.js +8 -8
- package/schematics/bundles/signal-queries-migration.js +7 -7
- package/schematics/bundles/signals.js +7 -7
- package/schematics/bundles/standalone-migration.js +8 -8
- package/testing/index.d.ts +5 -5
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.0.
|
|
2
|
+
* @license Angular v19.0.3
|
|
3
3
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -8,7 +8,7 @@ import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAcc
|
|
|
8
8
|
export { SIGNAL as ɵSIGNAL } from '@angular/core/primitives/signals';
|
|
9
9
|
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { Attribute as Attribute$1, EventContract, EventContractContainer, getAppScopedQueuedEventInfos, clearAppScopedEarlyEventContract, EventDispatcher, registerDispatcher, isEarlyEventType, isCaptureEventType, EventPhase } from '@angular/core/primitives/event-dispatch';
|
|
11
|
-
import { map
|
|
11
|
+
import { map } from 'rxjs/operators';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Base URL for the error details page.
|
|
@@ -28,7 +28,7 @@ const XSS_SECURITY_URL = 'https://g.co/ng/security#xss';
|
|
|
28
28
|
* Formats and outputs the error message in a consistent way.
|
|
29
29
|
*
|
|
30
30
|
* Example:
|
|
31
|
-
* ```
|
|
31
|
+
* ```ts
|
|
32
32
|
* throw new RuntimeError(
|
|
33
33
|
* RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED,
|
|
34
34
|
* ngDevMode && 'Injector has already been destroyed.');
|
|
@@ -415,7 +415,7 @@ const __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafe
|
|
|
415
415
|
* {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}
|
|
416
416
|
*
|
|
417
417
|
* ### Circular standalone reference import example
|
|
418
|
-
* ```ts
|
|
418
|
+
* ```angular-ts
|
|
419
419
|
* @Component({
|
|
420
420
|
* standalone: true,
|
|
421
421
|
* imports: [ChildComponent],
|
|
@@ -690,7 +690,7 @@ const NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafePr
|
|
|
690
690
|
* `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
|
|
691
691
|
* the `Injector`. This provides an additional level of type safety.
|
|
692
692
|
*
|
|
693
|
-
* <div class="alert
|
|
693
|
+
* <div class="docs-alert docs-alert-helpful">
|
|
694
694
|
*
|
|
695
695
|
* **Important Note**: Ensure that you use the same instance of the `InjectionToken` in both the
|
|
696
696
|
* provider and the injection call. Creating a new instance of `InjectionToken` in different places,
|
|
@@ -699,8 +699,7 @@ const NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafePr
|
|
|
699
699
|
*
|
|
700
700
|
* </div>
|
|
701
701
|
*
|
|
702
|
-
*
|
|
703
|
-
* region="InjectionToken"></code-example>
|
|
702
|
+
* {@example injection-token/src/main.ts region='InjectionToken'}
|
|
704
703
|
*
|
|
705
704
|
* When creating an `InjectionToken`, you can optionally specify a factory function which returns
|
|
706
705
|
* (possibly by creating) a default value of the parameterized type `T`. This sets up the
|
|
@@ -1154,7 +1153,7 @@ Please check that 1) the type for the parameter at index ${index} is correct and
|
|
|
1154
1153
|
* In practice the `inject()` calls are allowed in a constructor, a constructor parameter and a
|
|
1155
1154
|
* field initializer:
|
|
1156
1155
|
*
|
|
1157
|
-
* ```
|
|
1156
|
+
* ```ts
|
|
1158
1157
|
* @Injectable({providedIn: 'root'})
|
|
1159
1158
|
* export class Car {
|
|
1160
1159
|
* radio: Radio|undefined;
|
|
@@ -1170,7 +1169,7 @@ Please check that 1) the type for the parameter at index ${index} is correct and
|
|
|
1170
1169
|
*
|
|
1171
1170
|
* It is also legal to call `inject` from a provider's factory:
|
|
1172
1171
|
*
|
|
1173
|
-
* ```
|
|
1172
|
+
* ```ts
|
|
1174
1173
|
* providers: [
|
|
1175
1174
|
* {provide: Car, useFactory: () => {
|
|
1176
1175
|
* // OK: a class factory
|
|
@@ -1184,7 +1183,7 @@ Please check that 1) the type for the parameter at index ${index} is correct and
|
|
|
1184
1183
|
* notably, calls to `inject()` are disallowed after a class instance was created, in methods
|
|
1185
1184
|
* (including lifecycle hooks):
|
|
1186
1185
|
*
|
|
1187
|
-
* ```
|
|
1186
|
+
* ```ts
|
|
1188
1187
|
* @Component({ ... })
|
|
1189
1188
|
* export class CarComponent {
|
|
1190
1189
|
* ngOnInit() {
|
|
@@ -1734,7 +1733,7 @@ function makeEnvironmentProviders(providers) {
|
|
|
1734
1733
|
* @usageNotes
|
|
1735
1734
|
* The following example illustrates how to configure an initialization function using
|
|
1736
1735
|
* `provideEnvironmentInitializer()`
|
|
1737
|
-
* ```
|
|
1736
|
+
* ```ts
|
|
1738
1737
|
* createEnvironmentInjector(
|
|
1739
1738
|
* [
|
|
1740
1739
|
* provideEnvironmentInitializer(() => {
|
|
@@ -1770,7 +1769,7 @@ function provideEnvironmentInitializer(initializerFn) {
|
|
|
1770
1769
|
* @usageNotes
|
|
1771
1770
|
* The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:
|
|
1772
1771
|
*
|
|
1773
|
-
* ```
|
|
1772
|
+
* ```ts
|
|
1774
1773
|
* await bootstrapApplication(RootComponent, {
|
|
1775
1774
|
* providers: [
|
|
1776
1775
|
* importProvidersFrom(NgModuleOne, NgModuleTwo)
|
|
@@ -1781,7 +1780,7 @@ function provideEnvironmentInitializer(initializerFn) {
|
|
|
1781
1780
|
* You can also use the `importProvidersFrom` results in the `providers` field of a route, when a
|
|
1782
1781
|
* standalone component is used:
|
|
1783
1782
|
*
|
|
1784
|
-
* ```
|
|
1783
|
+
* ```ts
|
|
1785
1784
|
* export const ROUTES: Route[] = [
|
|
1786
1785
|
* {
|
|
1787
1786
|
* path: 'foo',
|
|
@@ -2622,19 +2621,19 @@ function isType(v) {
|
|
|
2622
2621
|
* it intends to capture the pattern where existing constructors have been downleveled from
|
|
2623
2622
|
* ES2015 to ES5 using TypeScript w/ downlevel iteration. e.g.
|
|
2624
2623
|
*
|
|
2625
|
-
* ```
|
|
2624
|
+
* ```ts
|
|
2626
2625
|
* function MyClass() {
|
|
2627
2626
|
* var _this = _super.apply(this, arguments) || this;
|
|
2628
2627
|
* ```
|
|
2629
2628
|
*
|
|
2630
2629
|
* downleveled to ES5 with `downlevelIteration` for TypeScript < 4.2:
|
|
2631
|
-
* ```
|
|
2630
|
+
* ```ts
|
|
2632
2631
|
* function MyClass() {
|
|
2633
2632
|
* var _this = _super.apply(this, __spread(arguments)) || this;
|
|
2634
2633
|
* ```
|
|
2635
2634
|
*
|
|
2636
2635
|
* or downleveled to ES5 with `downlevelIteration` for TypeScript >= 4.2:
|
|
2637
|
-
* ```
|
|
2636
|
+
* ```ts
|
|
2638
2637
|
* function MyClass() {
|
|
2639
2638
|
* var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;
|
|
2640
2639
|
* ```
|
|
@@ -3152,7 +3151,7 @@ function applyValueToInputField(instance, inputSignalNode, privateName, value) {
|
|
|
3152
3151
|
*
|
|
3153
3152
|
* Example usage:
|
|
3154
3153
|
*
|
|
3155
|
-
* ```
|
|
3154
|
+
* ```ts
|
|
3156
3155
|
* static ɵcmp = defineComponent({
|
|
3157
3156
|
* ...
|
|
3158
3157
|
* inputs: {name: 'publicName'},
|
|
@@ -3552,7 +3551,7 @@ function isSkipHydrationRootTNode(tNode) {
|
|
|
3552
3551
|
* Enables directive matching on elements.
|
|
3553
3552
|
*
|
|
3554
3553
|
* * Example:
|
|
3555
|
-
* ```
|
|
3554
|
+
* ```html
|
|
3556
3555
|
* <my-comp my-directive>
|
|
3557
3556
|
* Should match component / directive.
|
|
3558
3557
|
* </my-comp>
|
|
@@ -3581,7 +3580,7 @@ function enterSkipHydrationBlock(tNode) {
|
|
|
3581
3580
|
* Disables directive matching on element.
|
|
3582
3581
|
*
|
|
3583
3582
|
* * Example:
|
|
3584
|
-
* ```
|
|
3583
|
+
* ```html
|
|
3585
3584
|
* <my-comp my-directive>
|
|
3586
3585
|
* Should match component / directive.
|
|
3587
3586
|
* </my-comp>
|
|
@@ -4508,11 +4507,11 @@ function isLetDeclaration(tNode) {
|
|
|
4508
4507
|
/**
|
|
4509
4508
|
* Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.
|
|
4510
4509
|
*
|
|
4511
|
-
* ```
|
|
4510
|
+
* ```html
|
|
4512
4511
|
* <div my-dir [class]="exp"></div>
|
|
4513
4512
|
* ```
|
|
4514
4513
|
* and
|
|
4515
|
-
* ```
|
|
4514
|
+
* ```ts
|
|
4516
4515
|
* @Directive({
|
|
4517
4516
|
* })
|
|
4518
4517
|
* class MyDirective {
|
|
@@ -4532,11 +4531,11 @@ function hasClassInput(tNode) {
|
|
|
4532
4531
|
/**
|
|
4533
4532
|
* Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.
|
|
4534
4533
|
*
|
|
4535
|
-
* ```
|
|
4534
|
+
* ```html
|
|
4536
4535
|
* <div my-dir [style]="exp"></div>
|
|
4537
4536
|
* ```
|
|
4538
4537
|
* and
|
|
4539
|
-
* ```
|
|
4538
|
+
* ```ts
|
|
4540
4539
|
* @Directive({
|
|
4541
4540
|
* })
|
|
4542
4541
|
* class MyDirective {
|
|
@@ -4878,7 +4877,7 @@ function isRouterOutletInjector(currentInjector) {
|
|
|
4878
4877
|
*
|
|
4879
4878
|
* Example:
|
|
4880
4879
|
*
|
|
4881
|
-
* ```
|
|
4880
|
+
* ```ts
|
|
4882
4881
|
* @Injectable()
|
|
4883
4882
|
* class MyService {
|
|
4884
4883
|
* constructor(public value: String) {}
|
|
@@ -5076,19 +5075,19 @@ function diPublicInInjector(injectorIndex, tView, token) {
|
|
|
5076
5075
|
*
|
|
5077
5076
|
* # Example
|
|
5078
5077
|
* Given:
|
|
5079
|
-
* ```
|
|
5078
|
+
* ```ts
|
|
5080
5079
|
* @Component(...)
|
|
5081
5080
|
* class MyComponent {
|
|
5082
5081
|
* constructor(@Attribute('title') title: string) { ... }
|
|
5083
5082
|
* }
|
|
5084
5083
|
* ```
|
|
5085
5084
|
* When instantiated with
|
|
5086
|
-
* ```
|
|
5085
|
+
* ```html
|
|
5087
5086
|
* <my-component title="Hello"></my-component>
|
|
5088
5087
|
* ```
|
|
5089
5088
|
*
|
|
5090
5089
|
* Then factory method generated is:
|
|
5091
|
-
* ```
|
|
5090
|
+
* ```ts
|
|
5092
5091
|
* MyComponent.ɵcmp = defineComponent({
|
|
5093
5092
|
* factory: () => new MyComponent(injectAttribute('title'))
|
|
5094
5093
|
* ...
|
|
@@ -5896,7 +5895,7 @@ class Injector {
|
|
|
5896
5895
|
*
|
|
5897
5896
|
* @usageNotes
|
|
5898
5897
|
* ### Injecting an attribute that is known to exist
|
|
5899
|
-
* ```
|
|
5898
|
+
* ```ts
|
|
5900
5899
|
* @Directive()
|
|
5901
5900
|
* class MyDir {
|
|
5902
5901
|
* attr: string = inject(new HostAttributeToken('some-attr'));
|
|
@@ -5904,7 +5903,7 @@ class Injector {
|
|
|
5904
5903
|
* ```
|
|
5905
5904
|
*
|
|
5906
5905
|
* ### Optionally injecting an attribute
|
|
5907
|
-
* ```
|
|
5906
|
+
* ```ts
|
|
5908
5907
|
* @Directive()
|
|
5909
5908
|
* class MyDir {
|
|
5910
5909
|
* attr: string | null = inject(new HostAttributeToken('some-attr'), {optional: true});
|
|
@@ -5929,7 +5928,7 @@ class HostAttributeToken {
|
|
|
5929
5928
|
*
|
|
5930
5929
|
* @usageNotes
|
|
5931
5930
|
* ### Injecting a tag name that is known to exist
|
|
5932
|
-
* ```
|
|
5931
|
+
* ```ts
|
|
5933
5932
|
* @Directive()
|
|
5934
5933
|
* class MyDir {
|
|
5935
5934
|
* tagName: string = inject(HOST_TAG_NAME);
|
|
@@ -5937,7 +5936,7 @@ class HostAttributeToken {
|
|
|
5937
5936
|
* ```
|
|
5938
5937
|
*
|
|
5939
5938
|
* ### Optionally injecting a tag name
|
|
5940
|
-
* ```
|
|
5939
|
+
* ```ts
|
|
5941
5940
|
* @Directive()
|
|
5942
5941
|
* class MyDir {
|
|
5943
5942
|
* tagName: string | null = inject(HOST_TAG_NAME, {optional: true});
|
|
@@ -6106,7 +6105,7 @@ class PendingTasksInternal {
|
|
|
6106
6105
|
* - tests might want to delay assertions until the application becomes stable;
|
|
6107
6106
|
*
|
|
6108
6107
|
* @usageNotes
|
|
6109
|
-
* ```
|
|
6108
|
+
* ```ts
|
|
6110
6109
|
* const pendingTasks = inject(PendingTasks);
|
|
6111
6110
|
* const taskCleanup = pendingTasks.add();
|
|
6112
6111
|
* // do work that should block application's stability and then:
|
|
@@ -6350,7 +6349,7 @@ let ngZoneInstanceId = 0;
|
|
|
6350
6349
|
* @usageNotes
|
|
6351
6350
|
* ### Example
|
|
6352
6351
|
*
|
|
6353
|
-
* ```
|
|
6352
|
+
* ```ts
|
|
6354
6353
|
* import {Component, NgZone} from '@angular/core';
|
|
6355
6354
|
* import {NgIf} from '@angular/common';
|
|
6356
6355
|
*
|
|
@@ -6784,7 +6783,7 @@ function getNgZone(ngZoneToUse = 'zone.js', options) {
|
|
|
6784
6783
|
* @usageNotes
|
|
6785
6784
|
* ### Example
|
|
6786
6785
|
*
|
|
6787
|
-
* ```
|
|
6786
|
+
* ```ts
|
|
6788
6787
|
* class MyErrorHandler implements ErrorHandler {
|
|
6789
6788
|
* handleError(error) {
|
|
6790
6789
|
* // do something with the exception
|
|
@@ -6977,7 +6976,7 @@ function inputRequiredFunction(opts) {
|
|
|
6977
6976
|
* @usageNotes
|
|
6978
6977
|
* To use signal-based inputs, import `input` from `@angular/core`.
|
|
6979
6978
|
*
|
|
6980
|
-
* ```
|
|
6979
|
+
* ```ts
|
|
6981
6980
|
* import {input} from '@angular/core`;
|
|
6982
6981
|
* ```
|
|
6983
6982
|
*
|
|
@@ -7098,7 +7097,7 @@ function symbolIterator() {
|
|
|
7098
7097
|
*
|
|
7099
7098
|
* @usageNotes
|
|
7100
7099
|
* ### Example
|
|
7101
|
-
* ```
|
|
7100
|
+
* ```ts
|
|
7102
7101
|
* @Component({...})
|
|
7103
7102
|
* class Container {
|
|
7104
7103
|
* @ViewChildren(Item) items:QueryList<Item>;
|
|
@@ -8227,7 +8226,7 @@ function getDocument() {
|
|
|
8227
8226
|
* (for example, using `bootstrapApplication` calls). In this case, ensure that those applications
|
|
8228
8227
|
* have different `APP_ID` value setup. For example:
|
|
8229
8228
|
*
|
|
8230
|
-
* ```
|
|
8229
|
+
* ```ts
|
|
8231
8230
|
* bootstrapApplication(ComponentA, {
|
|
8232
8231
|
* providers: [
|
|
8233
8232
|
* { provide: APP_ID, useValue: 'app-a' },
|
|
@@ -8344,7 +8343,7 @@ const IMAGE_CONFIG = new InjectionToken(ngDevMode ? 'ImageConfig' : '', {
|
|
|
8344
8343
|
*
|
|
8345
8344
|
* Example:
|
|
8346
8345
|
*
|
|
8347
|
-
* ```
|
|
8346
|
+
* ```ts
|
|
8348
8347
|
* const COUNTER_KEY = makeStateKey<number>('counter');
|
|
8349
8348
|
* let value = 10;
|
|
8350
8349
|
*
|
|
@@ -8609,7 +8608,7 @@ var AfterRenderPhase;
|
|
|
8609
8608
|
* `AfterRenderPhase.EarlyRead` phase if reading can wait until after the write phase.
|
|
8610
8609
|
* **Never** write to the DOM in this phase.
|
|
8611
8610
|
*
|
|
8612
|
-
* <div class="alert
|
|
8611
|
+
* <div class="docs-alert docs-alert-important">
|
|
8613
8612
|
*
|
|
8614
8613
|
* Using this value can degrade performance.
|
|
8615
8614
|
* Instead, prefer using built-in browser functionality when possible.
|
|
@@ -8627,7 +8626,7 @@ var AfterRenderPhase;
|
|
|
8627
8626
|
* DOM, that haven't been refactored to use a different phase. **Never** use this phase if
|
|
8628
8627
|
* it is possible to divide the work among the other phases instead.
|
|
8629
8628
|
*
|
|
8630
|
-
* <div class="alert
|
|
8629
|
+
* <div class="docs-alert docs-alert-critical">
|
|
8631
8630
|
*
|
|
8632
8631
|
* Using this value can **significantly** degrade performance.
|
|
8633
8632
|
* Instead, prefer dividing work into the appropriate phase callbacks.
|
|
@@ -8780,6 +8779,7 @@ class AfterRenderSequence {
|
|
|
8780
8779
|
// associates the initial run of the hook with the context that created it.
|
|
8781
8780
|
// Follow-up runs are independent of that initial context and have different
|
|
8782
8781
|
// triggers.
|
|
8782
|
+
this.snapshot?.dispose();
|
|
8783
8783
|
this.snapshot = null;
|
|
8784
8784
|
}
|
|
8785
8785
|
destroy() {
|
|
@@ -11003,7 +11003,7 @@ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
|
|
|
11003
11003
|
*
|
|
11004
11004
|
* see: https://html.spec.whatwg.org/multipage/syntax.html#comments
|
|
11005
11005
|
*
|
|
11006
|
-
* ```
|
|
11006
|
+
* ```ts
|
|
11007
11007
|
* div.innerHTML = div.innerHTML
|
|
11008
11008
|
* ```
|
|
11009
11009
|
*
|
|
@@ -14389,7 +14389,7 @@ function renderComponent(hostLView, componentHostIdx) {
|
|
|
14389
14389
|
* will be skipped. However, consider this case of two components side-by-side:
|
|
14390
14390
|
*
|
|
14391
14391
|
* App template:
|
|
14392
|
-
* ```
|
|
14392
|
+
* ```html
|
|
14393
14393
|
* <comp></comp>
|
|
14394
14394
|
* <comp></comp>
|
|
14395
14395
|
* ```
|
|
@@ -15238,7 +15238,7 @@ class ViewRef$1 {
|
|
|
15238
15238
|
* @usageNotes
|
|
15239
15239
|
* ### Example
|
|
15240
15240
|
*
|
|
15241
|
-
* ```
|
|
15241
|
+
* ```ts
|
|
15242
15242
|
* @Component({
|
|
15243
15243
|
* selector: 'app-root',
|
|
15244
15244
|
* template: `Number of ticks: {{numberOfTicks}}`
|
|
@@ -15282,7 +15282,7 @@ class ViewRef$1 {
|
|
|
15282
15282
|
* we want to check and update the list every five seconds. We can do that by detaching
|
|
15283
15283
|
* the component's change detector and doing a local check every five seconds.
|
|
15284
15284
|
*
|
|
15285
|
-
* ```
|
|
15285
|
+
* ```ts
|
|
15286
15286
|
* class DataProvider {
|
|
15287
15287
|
* // in a real application the returned data will be different every time
|
|
15288
15288
|
* get data() {
|
|
@@ -15334,7 +15334,7 @@ class ViewRef$1 {
|
|
|
15334
15334
|
* its change detector from the main change detector tree when the component's live property
|
|
15335
15335
|
* is set to false.
|
|
15336
15336
|
*
|
|
15337
|
-
* ```
|
|
15337
|
+
* ```ts
|
|
15338
15338
|
* class DataProvider {
|
|
15339
15339
|
* data = 1;
|
|
15340
15340
|
*
|
|
@@ -18078,7 +18078,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
|
|
|
18078
18078
|
function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
|
|
18079
18079
|
if (rootSelectorOrNode) {
|
|
18080
18080
|
// The placeholder will be replaced with the actual version at build time.
|
|
18081
|
-
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.0.
|
|
18081
|
+
setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.0.3']);
|
|
18082
18082
|
}
|
|
18083
18083
|
else {
|
|
18084
18084
|
// If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
|
|
@@ -18115,7 +18115,7 @@ function projectNodes(tNode, ngContentSelectors, projectableNodes) {
|
|
|
18115
18115
|
*
|
|
18116
18116
|
* Example:
|
|
18117
18117
|
*
|
|
18118
|
-
* ```
|
|
18118
|
+
* ```ts
|
|
18119
18119
|
* renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
|
|
18120
18120
|
* ```
|
|
18121
18121
|
*/
|
|
@@ -18144,7 +18144,7 @@ function LifecycleHooksFeature() {
|
|
|
18144
18144
|
* Note: the example uses standalone components, but the function can also be used for
|
|
18145
18145
|
* non-standalone components (declared in an NgModule) as well.
|
|
18146
18146
|
*
|
|
18147
|
-
* ```
|
|
18147
|
+
* ```angular-ts
|
|
18148
18148
|
* @Component({
|
|
18149
18149
|
* standalone: true,
|
|
18150
18150
|
* selector: 'dynamic',
|
|
@@ -19144,7 +19144,7 @@ function viewChildRequiredFn(locator, opts) {
|
|
|
19144
19144
|
* Create a child query in your component by declaring a
|
|
19145
19145
|
* class field and initializing it with the `viewChild()` function.
|
|
19146
19146
|
*
|
|
19147
|
-
* ```ts
|
|
19147
|
+
* ```angular-ts
|
|
19148
19148
|
* @Component({template: '<div #el></div><my-component #cmp />'})
|
|
19149
19149
|
* export class TestComponent {
|
|
19150
19150
|
* divEl = viewChild<ElementRef>('el'); // Signal<ElementRef|undefined>
|
|
@@ -19311,7 +19311,7 @@ function modelRequiredFunction(opts) {
|
|
|
19311
19311
|
*
|
|
19312
19312
|
* To use `model()`, import the function from `@angular/core`.
|
|
19313
19313
|
*
|
|
19314
|
-
* ```
|
|
19314
|
+
* ```ts
|
|
19315
19315
|
* import {model} from '@angular/core`;
|
|
19316
19316
|
* ```
|
|
19317
19317
|
*
|
|
@@ -19432,7 +19432,7 @@ const ViewChild = makePropDecorator('ViewChild', (selector, opts) => ({
|
|
|
19432
19432
|
* Used to resolve resource URLs on `@Component` when used with JIT compilation.
|
|
19433
19433
|
*
|
|
19434
19434
|
* Example:
|
|
19435
|
-
* ```
|
|
19435
|
+
* ```ts
|
|
19436
19436
|
* @Component({
|
|
19437
19437
|
* selector: 'my-comp',
|
|
19438
19438
|
* templateUrl: 'my-comp.html', // This requires asynchronous resolution
|
|
@@ -19835,7 +19835,7 @@ class StandaloneService {
|
|
|
19835
19835
|
*
|
|
19836
19836
|
*
|
|
19837
19837
|
* # Example
|
|
19838
|
-
* ```
|
|
19838
|
+
* ```ts
|
|
19839
19839
|
* class MyComponent {
|
|
19840
19840
|
* // Generated by Angular Template Compiler
|
|
19841
19841
|
* // [Symbol] syntax will not be supported by TypeScript until v2.7
|
|
@@ -19974,7 +19974,7 @@ function ɵɵdefineDirective(directiveDefinition) {
|
|
|
19974
19974
|
* Create a pipe definition object.
|
|
19975
19975
|
*
|
|
19976
19976
|
* # Example
|
|
19977
|
-
* ```
|
|
19977
|
+
* ```ts
|
|
19978
19978
|
* class MyPipe implements PipeTransform {
|
|
19979
19979
|
* // Generated by Angular Template Compiler
|
|
19980
19980
|
* static ɵpipe = definePipe({
|
|
@@ -22499,7 +22499,7 @@ const TESTABILITY_GETTER = new InjectionToken('');
|
|
|
22499
22499
|
* providers using the `provideProtractorTestingSupport()` function and adding them into the
|
|
22500
22500
|
* `options.providers` array. Example:
|
|
22501
22501
|
*
|
|
22502
|
-
* ```
|
|
22502
|
+
* ```ts
|
|
22503
22503
|
* import {provideProtractorTestingSupport} from '@angular/platform-browser';
|
|
22504
22504
|
*
|
|
22505
22505
|
* await bootstrapApplication(RootComponent, providers: [provideProtractorTestingSupport()]);
|
|
@@ -22769,7 +22769,7 @@ function isSubscribable(obj) {
|
|
|
22769
22769
|
* The following example illustrates how to configure a multi-provider using `APP_INITIALIZER` token
|
|
22770
22770
|
* and a function returning a promise.
|
|
22771
22771
|
* ### Example with NgModule-based application
|
|
22772
|
-
* ```
|
|
22772
|
+
* ```ts
|
|
22773
22773
|
* function initializeApp(): Promise<any> {
|
|
22774
22774
|
* const http = inject(HttpClient);
|
|
22775
22775
|
* return firstValueFrom(
|
|
@@ -22793,7 +22793,7 @@ function isSubscribable(obj) {
|
|
|
22793
22793
|
* ```
|
|
22794
22794
|
*
|
|
22795
22795
|
* ### Example with standalone application
|
|
22796
|
-
* ```
|
|
22796
|
+
* ```ts
|
|
22797
22797
|
* function initializeApp() {
|
|
22798
22798
|
* const http = inject(HttpClient);
|
|
22799
22799
|
* return firstValueFrom(
|
|
@@ -22823,7 +22823,7 @@ function isSubscribable(obj) {
|
|
|
22823
22823
|
* through DI.
|
|
22824
22824
|
*
|
|
22825
22825
|
* ### Example with NgModule-based application
|
|
22826
|
-
* ```
|
|
22826
|
+
* ```ts
|
|
22827
22827
|
* function initializeApp() {
|
|
22828
22828
|
* const http = inject(HttpClient);
|
|
22829
22829
|
* return firstValueFrom(
|
|
@@ -22847,7 +22847,7 @@ function isSubscribable(obj) {
|
|
|
22847
22847
|
* ```
|
|
22848
22848
|
*
|
|
22849
22849
|
* ### Example with standalone application
|
|
22850
|
-
* ```
|
|
22850
|
+
* ```ts
|
|
22851
22851
|
* function initializeApp() {
|
|
22852
22852
|
* const http = inject(HttpClient);
|
|
22853
22853
|
* return firstValueFrom(
|
|
@@ -22892,7 +22892,7 @@ const APP_INITIALIZER = new InjectionToken(ngDevMode ? 'Application Initializer'
|
|
|
22892
22892
|
* @usageNotes
|
|
22893
22893
|
* The following example illustrates how to configure an initialization function using
|
|
22894
22894
|
* `provideAppInitializer()`
|
|
22895
|
-
* ```
|
|
22895
|
+
* ```ts
|
|
22896
22896
|
* bootstrapApplication(App, {
|
|
22897
22897
|
* providers: [
|
|
22898
22898
|
* provideAppInitializer(() => {
|
|
@@ -23133,7 +23133,7 @@ function optionsReducer(dst, objs) {
|
|
|
23133
23133
|
* (here incrementing a counter, using RxJS `interval`),
|
|
23134
23134
|
* and at the same time subscribe to `isStable`.
|
|
23135
23135
|
*
|
|
23136
|
-
* ```
|
|
23136
|
+
* ```ts
|
|
23137
23137
|
* constructor(appRef: ApplicationRef) {
|
|
23138
23138
|
* appRef.isStable.pipe(
|
|
23139
23139
|
* filter(stable => stable)
|
|
@@ -23148,7 +23148,7 @@ function optionsReducer(dst, objs) {
|
|
|
23148
23148
|
* you have to wait for the application to be stable
|
|
23149
23149
|
* before starting your polling process.
|
|
23150
23150
|
*
|
|
23151
|
-
* ```
|
|
23151
|
+
* ```ts
|
|
23152
23152
|
* constructor(appRef: ApplicationRef) {
|
|
23153
23153
|
* appRef.isStable.pipe(
|
|
23154
23154
|
* first(stable => stable),
|
|
@@ -23168,7 +23168,7 @@ function optionsReducer(dst, objs) {
|
|
|
23168
23168
|
* you update a field of your component
|
|
23169
23169
|
* and display it in its template.
|
|
23170
23170
|
*
|
|
23171
|
-
* ```
|
|
23171
|
+
* ```ts
|
|
23172
23172
|
* constructor(appRef: ApplicationRef) {
|
|
23173
23173
|
* appRef.isStable.pipe(
|
|
23174
23174
|
* first(stable => stable),
|
|
@@ -23182,7 +23182,7 @@ function optionsReducer(dst, objs) {
|
|
|
23182
23182
|
*
|
|
23183
23183
|
* You'll have to manually trigger the change detection to update the template.
|
|
23184
23184
|
*
|
|
23185
|
-
* ```
|
|
23185
|
+
* ```ts
|
|
23186
23186
|
* constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {
|
|
23187
23187
|
* appRef.isStable.pipe(
|
|
23188
23188
|
* first(stable => stable),
|
|
@@ -23196,7 +23196,7 @@ function optionsReducer(dst, objs) {
|
|
|
23196
23196
|
*
|
|
23197
23197
|
* Or make the subscription callback run inside the zone.
|
|
23198
23198
|
*
|
|
23199
|
-
* ```
|
|
23199
|
+
* ```ts
|
|
23200
23200
|
* constructor(appRef: ApplicationRef, zone: NgZone) {
|
|
23201
23201
|
* appRef.isStable.pipe(
|
|
23202
23202
|
* first(stable => stable),
|
|
@@ -23292,6 +23292,7 @@ class ApplicationRef {
|
|
|
23292
23292
|
});
|
|
23293
23293
|
}
|
|
23294
23294
|
_injector = inject(EnvironmentInjector);
|
|
23295
|
+
_rendererFactory = null;
|
|
23295
23296
|
/**
|
|
23296
23297
|
* The `EnvironmentInjector` used to create this application.
|
|
23297
23298
|
*/
|
|
@@ -23403,6 +23404,7 @@ class ApplicationRef {
|
|
|
23403
23404
|
// if one exists. Snapshots may be reference counted by the implementation so
|
|
23404
23405
|
// we want to ensure that if we request a snapshot that we use it.
|
|
23405
23406
|
snapshot.run(TracingAction.CHANGE_DETECTION, this._tick);
|
|
23407
|
+
snapshot.dispose();
|
|
23406
23408
|
return;
|
|
23407
23409
|
}
|
|
23408
23410
|
(typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
|
|
@@ -23434,16 +23436,15 @@ class ApplicationRef {
|
|
|
23434
23436
|
* pending dirtiness (potentially in a loop).
|
|
23435
23437
|
*/
|
|
23436
23438
|
synchronize() {
|
|
23437
|
-
|
|
23438
|
-
|
|
23439
|
-
rendererFactory = this._injector.get(RendererFactory2, null, { optional: true });
|
|
23439
|
+
if (this._rendererFactory === null && !this._injector.destroyed) {
|
|
23440
|
+
this._rendererFactory = this._injector.get(RendererFactory2, null, { optional: true });
|
|
23440
23441
|
}
|
|
23441
23442
|
// When beginning synchronization, all deferred dirtiness becomes active dirtiness.
|
|
23442
23443
|
this.dirtyFlags |= this.deferredDirtyFlags;
|
|
23443
23444
|
this.deferredDirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
23444
23445
|
let runs = 0;
|
|
23445
23446
|
while (this.dirtyFlags !== 0 /* ApplicationRefDirtyFlags.None */ && runs++ < MAXIMUM_REFRESH_RERUNS) {
|
|
23446
|
-
this.synchronizeOnce(
|
|
23447
|
+
this.synchronizeOnce();
|
|
23447
23448
|
}
|
|
23448
23449
|
if ((typeof ngDevMode === 'undefined' || ngDevMode) && runs >= MAXIMUM_REFRESH_RERUNS) {
|
|
23449
23450
|
throw new RuntimeError(103 /* RuntimeErrorCode.INFINITE_CHANGE_DETECTION */, ngDevMode &&
|
|
@@ -23455,7 +23456,7 @@ class ApplicationRef {
|
|
|
23455
23456
|
/**
|
|
23456
23457
|
* Perform a single synchronization pass.
|
|
23457
23458
|
*/
|
|
23458
|
-
synchronizeOnce(
|
|
23459
|
+
synchronizeOnce() {
|
|
23459
23460
|
// If we happened to loop, deferred dirtiness can be processed as active dirtiness again.
|
|
23460
23461
|
this.dirtyFlags |= this.deferredDirtyFlags;
|
|
23461
23462
|
this.deferredDirtyFlags = 0 /* ApplicationRefDirtyFlags.None */;
|
|
@@ -23494,8 +23495,8 @@ class ApplicationRef {
|
|
|
23494
23495
|
else {
|
|
23495
23496
|
// If we skipped refreshing views above, there might still be unflushed animations
|
|
23496
23497
|
// because we never called `detectChangesInternal` on the views.
|
|
23497
|
-
|
|
23498
|
-
|
|
23498
|
+
this._rendererFactory?.begin?.();
|
|
23499
|
+
this._rendererFactory?.end?.();
|
|
23499
23500
|
}
|
|
23500
23501
|
// Even if there were no dirty views, afterRender hooks might still be dirty.
|
|
23501
23502
|
if (this.dirtyFlags & 8 /* ApplicationRefDirtyFlags.AfterRender */) {
|
|
@@ -23635,30 +23636,6 @@ function remove(list, el) {
|
|
|
23635
23636
|
list.splice(index, 1);
|
|
23636
23637
|
}
|
|
23637
23638
|
}
|
|
23638
|
-
let whenStableStore;
|
|
23639
|
-
/**
|
|
23640
|
-
* Returns a Promise that resolves when the application becomes stable after this method is called
|
|
23641
|
-
* the first time.
|
|
23642
|
-
*
|
|
23643
|
-
* Note: this function is unused in the FW code, but it's still present since the CLI code relies
|
|
23644
|
-
* on it currently (see https://github.com/angular/angular-cli/blob/20411f696eb52c500e096e3dfc5e195185794edc/packages/angular/ssr/src/routes/ng-routes.ts#L435).
|
|
23645
|
-
* Remove this function once CLI code is updated to use `ApplicationRef.whenStable` instead.
|
|
23646
|
-
*/
|
|
23647
|
-
function whenStable(applicationRef) {
|
|
23648
|
-
whenStableStore ??= new WeakMap();
|
|
23649
|
-
const cachedWhenStable = whenStableStore.get(applicationRef);
|
|
23650
|
-
if (cachedWhenStable) {
|
|
23651
|
-
return cachedWhenStable;
|
|
23652
|
-
}
|
|
23653
|
-
const whenStablePromise = applicationRef.isStable
|
|
23654
|
-
.pipe(first((isStable) => isStable))
|
|
23655
|
-
.toPromise()
|
|
23656
|
-
.then(() => void 0);
|
|
23657
|
-
whenStableStore.set(applicationRef, whenStablePromise);
|
|
23658
|
-
// Be a good citizen and clean the store `onDestroy` even though we are using `WeakMap`.
|
|
23659
|
-
applicationRef.onDestroy(() => whenStableStore?.delete(applicationRef));
|
|
23660
|
-
return whenStablePromise;
|
|
23661
|
-
}
|
|
23662
23639
|
function detectChangesInViewIfRequired(lView, notifyErrorHandler, isFirstPass, zonelessEnabled) {
|
|
23663
23640
|
// When re-checking, only check views which actually need it.
|
|
23664
23641
|
if (!isFirstPass && !requiresRefreshOrTraversal(lView)) {
|
|
@@ -23680,14 +23657,9 @@ function scheduleDelayedTrigger(scheduleFn) {
|
|
|
23680
23657
|
const tNode = getCurrentTNode();
|
|
23681
23658
|
const injector = lView[INJECTOR];
|
|
23682
23659
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
23683
|
-
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);
|
|
23684
23660
|
renderPlaceholder(lView, tNode);
|
|
23685
|
-
|
|
23686
|
-
|
|
23687
|
-
// since we don't want to delay the server response.
|
|
23688
|
-
const cleanupFn = scheduleFn(() => triggerDeferBlock(lView, tNode), injector);
|
|
23689
|
-
storeTriggerCleanupFn(0 /* TriggerType.Regular */, lDetails, cleanupFn);
|
|
23690
|
-
}
|
|
23661
|
+
const cleanupFn = scheduleFn(() => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), injector);
|
|
23662
|
+
storeTriggerCleanupFn(0 /* TriggerType.Regular */, lDetails, cleanupFn);
|
|
23691
23663
|
}
|
|
23692
23664
|
/**
|
|
23693
23665
|
* Schedules prefetching for `on idle` and `on timer` triggers.
|
|
@@ -23695,9 +23667,8 @@ function scheduleDelayedTrigger(scheduleFn) {
|
|
|
23695
23667
|
* @param scheduleFn A function that does the scheduling.
|
|
23696
23668
|
*/
|
|
23697
23669
|
function scheduleDelayedPrefetching(scheduleFn, trigger) {
|
|
23698
|
-
if (typeof ngServerMode !== 'undefined' && ngServerMode)
|
|
23670
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode)
|
|
23699
23671
|
return;
|
|
23700
|
-
}
|
|
23701
23672
|
const lView = getLView();
|
|
23702
23673
|
const injector = lView[INJECTOR];
|
|
23703
23674
|
// Only trigger the scheduled trigger on the browser
|
|
@@ -23705,8 +23676,6 @@ function scheduleDelayedPrefetching(scheduleFn, trigger) {
|
|
|
23705
23676
|
const tNode = getCurrentTNode();
|
|
23706
23677
|
const tView = lView[TVIEW];
|
|
23707
23678
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
23708
|
-
const prefetchTriggers = getPrefetchTriggers(tDetails);
|
|
23709
|
-
prefetchTriggers.add(trigger);
|
|
23710
23679
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
23711
23680
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
23712
23681
|
const prefetch = () => triggerPrefetching(tDetails, lView, tNode);
|
|
@@ -23718,9 +23687,8 @@ function scheduleDelayedPrefetching(scheduleFn, trigger) {
|
|
|
23718
23687
|
* Schedules hydration triggering of a defer block for `on idle` and `on timer` conditions.
|
|
23719
23688
|
*/
|
|
23720
23689
|
function scheduleDelayedHydrating(scheduleFn, lView, tNode) {
|
|
23721
|
-
if (typeof ngServerMode !== 'undefined' && ngServerMode)
|
|
23690
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode)
|
|
23722
23691
|
return;
|
|
23723
|
-
}
|
|
23724
23692
|
// Only trigger the scheduled trigger on the browser
|
|
23725
23693
|
// since we don't want to delay the server response.
|
|
23726
23694
|
const injector = lView[INJECTOR];
|
|
@@ -23735,12 +23703,10 @@ function scheduleDelayedHydrating(scheduleFn, lView, tNode) {
|
|
|
23735
23703
|
*
|
|
23736
23704
|
* @param tDetails Static information about this defer block.
|
|
23737
23705
|
* @param lView LView of a host view.
|
|
23706
|
+
* @param tNode TNode that represents a defer block.
|
|
23738
23707
|
*/
|
|
23739
23708
|
function triggerPrefetching(tDetails, lView, tNode) {
|
|
23740
|
-
|
|
23741
|
-
if (lView[INJECTOR] && shouldTriggerDeferBlock(lView[INJECTOR], tDeferBlockDetails)) {
|
|
23742
|
-
triggerResourceLoading(tDetails, lView, tNode);
|
|
23743
|
-
}
|
|
23709
|
+
triggerResourceLoading(tDetails, lView, tNode);
|
|
23744
23710
|
}
|
|
23745
23711
|
/**
|
|
23746
23712
|
* Trigger loading of defer block dependencies if the process hasn't started yet.
|
|
@@ -23845,20 +23811,35 @@ function triggerResourceLoading(tDetails, lView, tNode) {
|
|
|
23845
23811
|
});
|
|
23846
23812
|
return tDetails.loadingPromise;
|
|
23847
23813
|
}
|
|
23814
|
+
/**
|
|
23815
|
+
* Defines whether we should proceed with triggering a given defer block.
|
|
23816
|
+
*/
|
|
23817
|
+
function shouldTriggerDeferBlock(triggerType, lView) {
|
|
23818
|
+
// prevents triggering regular triggers when on the server.
|
|
23819
|
+
if (triggerType === 0 /* TriggerType.Regular */ && typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
23820
|
+
return false;
|
|
23821
|
+
}
|
|
23822
|
+
// prevents triggering in the case of a test run with manual defer block configuration.
|
|
23823
|
+
const injector = lView[INJECTOR];
|
|
23824
|
+
const config = injector.get(DEFER_BLOCK_CONFIG, null, { optional: true });
|
|
23825
|
+
if (config?.behavior === DeferBlockBehavior.Manual) {
|
|
23826
|
+
return false;
|
|
23827
|
+
}
|
|
23828
|
+
return true;
|
|
23829
|
+
}
|
|
23848
23830
|
/**
|
|
23849
23831
|
* Attempts to trigger loading of defer block dependencies.
|
|
23850
23832
|
* If the block is already in a loading, completed or an error state -
|
|
23851
23833
|
* no additional actions are taken.
|
|
23852
23834
|
*/
|
|
23853
|
-
function triggerDeferBlock(lView, tNode) {
|
|
23835
|
+
function triggerDeferBlock(triggerType, lView, tNode) {
|
|
23854
23836
|
const tView = lView[TVIEW];
|
|
23855
23837
|
const lContainer = lView[tNode.index];
|
|
23856
|
-
const injector = lView[INJECTOR];
|
|
23857
23838
|
ngDevMode && assertLContainer(lContainer);
|
|
23839
|
+
if (!shouldTriggerDeferBlock(triggerType, lView))
|
|
23840
|
+
return;
|
|
23858
23841
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
23859
23842
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
23860
|
-
if (!shouldTriggerDeferBlock(injector, tDetails))
|
|
23861
|
-
return;
|
|
23862
23843
|
// Defer block is triggered, cleanup all registered trigger functions.
|
|
23863
23844
|
invokeAllTriggerCleanupFns(lDetails);
|
|
23864
23845
|
switch (tDetails.loadingState) {
|
|
@@ -23927,7 +23908,7 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
|
|
|
23927
23908
|
}
|
|
23928
23909
|
// Actually do the triggering and hydration of the queue of blocks
|
|
23929
23910
|
for (const dehydratedBlockId of hydrationQueue) {
|
|
23930
|
-
await
|
|
23911
|
+
await triggerResourceLoadingForHydration(dehydratedBlockId, dehydratedBlockRegistry);
|
|
23931
23912
|
await nextRender(injector);
|
|
23932
23913
|
// TODO(incremental-hydration): assert (in dev mode) that a defer block is present in the dehydrated registry
|
|
23933
23914
|
// at this point. If not - it means that the block has not been hydrated, for example due to different
|
|
@@ -23965,7 +23946,7 @@ function nextRender(injector) {
|
|
|
23965
23946
|
afterNextRender(() => resolve(), { injector });
|
|
23966
23947
|
return promise;
|
|
23967
23948
|
}
|
|
23968
|
-
function
|
|
23949
|
+
function triggerResourceLoadingForHydration(dehydratedBlockId, dehydratedBlockRegistry) {
|
|
23969
23950
|
let resolve;
|
|
23970
23951
|
const promise = new Promise((resolveFn) => (resolve = resolveFn));
|
|
23971
23952
|
const deferBlock = dehydratedBlockRegistry.get(dehydratedBlockId);
|
|
@@ -23976,7 +23957,7 @@ function triggerDeferBlockResourceLoading(dehydratedBlockId, dehydratedBlockRegi
|
|
|
23976
23957
|
const { tNode, lView } = deferBlock;
|
|
23977
23958
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
23978
23959
|
onDeferBlockCompletion(lDetails, () => resolve());
|
|
23979
|
-
triggerDeferBlock(lView, tNode);
|
|
23960
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
23980
23961
|
// TODO(incremental-hydration): handle the cleanup for cases when
|
|
23981
23962
|
// defer block is no longer present during hydration (e.g. `@if` condition
|
|
23982
23963
|
// has changed during hydration/rendering).
|
|
@@ -23994,50 +23975,47 @@ function onDeferBlockCompletion(lDetails, callback) {
|
|
|
23994
23975
|
lDetails[ON_COMPLETE_FNS].push(callback);
|
|
23995
23976
|
}
|
|
23996
23977
|
/**
|
|
23997
|
-
* Determines whether
|
|
23998
|
-
*
|
|
23999
|
-
* - on the client for blocks that were server-side rendered, to start hydration process
|
|
23978
|
+
* Determines whether specific trigger types should be attached during an instruction firing
|
|
23979
|
+
* to ensure the proper triggers for a given type are used.
|
|
24000
23980
|
*/
|
|
24001
|
-
function
|
|
24002
|
-
|
|
24003
|
-
|
|
24004
|
-
|
|
24005
|
-
|
|
24006
|
-
|
|
24007
|
-
|
|
23981
|
+
function shouldAttachTrigger(triggerType, lView, tNode) {
|
|
23982
|
+
if (triggerType === 0 /* TriggerType.Regular */) {
|
|
23983
|
+
return shouldAttachRegularTrigger(lView, tNode);
|
|
23984
|
+
}
|
|
23985
|
+
else if (triggerType === 2 /* TriggerType.Hydrate */) {
|
|
23986
|
+
return !shouldAttachRegularTrigger(lView, tNode);
|
|
23987
|
+
}
|
|
23988
|
+
// TriggerType.Prefetch is active only on the client
|
|
23989
|
+
return !(typeof ngServerMode !== 'undefined' && ngServerMode);
|
|
24008
23990
|
}
|
|
24009
|
-
// TODO(incremental-hydration): Optimize this further by moving the calculation to earlier
|
|
24010
|
-
// in the process. Consider a flag we can check similar to LView[FLAGS].
|
|
24011
23991
|
/**
|
|
24012
|
-
*
|
|
24013
|
-
*
|
|
23992
|
+
* Defines whether a regular trigger logic (e.g. "on viewport") should be attached
|
|
23993
|
+
* to a defer block. This function defines a condition, which mutually excludes
|
|
23994
|
+
* `deferOn*` and `deferHydrateOn*` triggers, to make sure only one of the trigger
|
|
23995
|
+
* types is active for a block with the current state.
|
|
24014
23996
|
*/
|
|
24015
|
-
function
|
|
23997
|
+
function shouldAttachRegularTrigger(lView, tNode) {
|
|
23998
|
+
const injector = lView[INJECTOR];
|
|
23999
|
+
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);
|
|
24000
|
+
const incrementalHydrationEnabled = isIncrementalHydrationEnabled(injector);
|
|
24001
|
+
const hasHydrateTriggers = tDetails.flags !== null &&
|
|
24002
|
+
(tDetails.flags & 1 /* TDeferDetailsFlags.HasHydrateTriggers */) ===
|
|
24003
|
+
1 /* TDeferDetailsFlags.HasHydrateTriggers */;
|
|
24004
|
+
// On the server:
|
|
24016
24005
|
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24017
|
-
|
|
24006
|
+
// Regular triggers are activated on the server when:
|
|
24007
|
+
// - Either Incremental Hydration is *not* enabled
|
|
24008
|
+
// - Or Incremental Hydration is enabled, but a given block doesn't have "hydrate" triggers
|
|
24009
|
+
return !incrementalHydrationEnabled || !hasHydrateTriggers;
|
|
24018
24010
|
}
|
|
24019
|
-
|
|
24020
|
-
const
|
|
24021
|
-
|
|
24011
|
+
// On the client:
|
|
24012
|
+
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24013
|
+
const wasServerSideRendered = lDetails[SSR_UNIQUE_ID] !== null;
|
|
24014
|
+
if (hasHydrateTriggers && wasServerSideRendered && incrementalHydrationEnabled) {
|
|
24022
24015
|
return false;
|
|
24023
24016
|
}
|
|
24024
24017
|
return true;
|
|
24025
24018
|
}
|
|
24026
|
-
/**
|
|
24027
|
-
* Returns whether defer blocks should be triggered.
|
|
24028
|
-
*
|
|
24029
|
-
* Currently, defer blocks are not triggered on the server,
|
|
24030
|
-
* only placeholder content is rendered (if provided).
|
|
24031
|
-
*/
|
|
24032
|
-
function shouldTriggerDeferBlock(injector, tDeferBlockDetails) {
|
|
24033
|
-
const config = injector.get(DEFER_BLOCK_CONFIG, null, { optional: true });
|
|
24034
|
-
if (config?.behavior === DeferBlockBehavior.Manual) {
|
|
24035
|
-
return false;
|
|
24036
|
-
}
|
|
24037
|
-
return (typeof ngServerMode === 'undefined' ||
|
|
24038
|
-
!ngServerMode ||
|
|
24039
|
-
tDeferBlockDetails.hydrateTriggers !== null);
|
|
24040
|
-
}
|
|
24041
24019
|
/**
|
|
24042
24020
|
* Retrives a Defer Block's list of hydration triggers
|
|
24043
24021
|
*/
|
|
@@ -24045,12 +24023,6 @@ function getHydrateTriggers(tView, tNode) {
|
|
|
24045
24023
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24046
24024
|
return (tDetails.hydrateTriggers ??= new Map());
|
|
24047
24025
|
}
|
|
24048
|
-
/**
|
|
24049
|
-
* Retrives a Defer Block's list of prefetch triggers
|
|
24050
|
-
*/
|
|
24051
|
-
function getPrefetchTriggers(tDetails) {
|
|
24052
|
-
return (tDetails.prefetchTriggers ??= new Set());
|
|
24053
|
-
}
|
|
24054
24026
|
/**
|
|
24055
24027
|
* Loops through all defer block summaries and ensures all the blocks triggers are
|
|
24056
24028
|
* properly initialized
|
|
@@ -24142,10 +24114,13 @@ function setImmediateTriggers(injector, elementTriggers) {
|
|
|
24142
24114
|
* placeholder block.
|
|
24143
24115
|
* @param enableTimerScheduling Function that enables timer-related scheduling if `after`
|
|
24144
24116
|
* or `minimum` parameters are setup on the `@loading` or `@placeholder` blocks.
|
|
24117
|
+
* @param flags A set of flags to define a particular behavior (e.g. to indicate that
|
|
24118
|
+
* hydrate triggers are present and regular triggers should be deactivated
|
|
24119
|
+
* in certain scenarios).
|
|
24145
24120
|
*
|
|
24146
24121
|
* @codeGenApi
|
|
24147
24122
|
*/
|
|
24148
|
-
function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplIndex, placeholderTmplIndex, errorTmplIndex, loadingConfigIndex, placeholderConfigIndex, enableTimerScheduling) {
|
|
24123
|
+
function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplIndex, placeholderTmplIndex, errorTmplIndex, loadingConfigIndex, placeholderConfigIndex, enableTimerScheduling, flags) {
|
|
24149
24124
|
const lView = getLView();
|
|
24150
24125
|
const tView = getTView();
|
|
24151
24126
|
const adjustedIndex = index + HEADER_OFFSET;
|
|
@@ -24166,6 +24141,7 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
24166
24141
|
providers: null,
|
|
24167
24142
|
hydrateTriggers: null,
|
|
24168
24143
|
prefetchTriggers: null,
|
|
24144
|
+
flags: flags ?? 0 /* TDeferDetailsFlags.Default */,
|
|
24169
24145
|
};
|
|
24170
24146
|
enableTimerScheduling?.(tView, tDetails, placeholderConfigIndex, loadingConfigIndex);
|
|
24171
24147
|
setTDeferBlockDetails(tView, adjustedIndex, tDetails);
|
|
@@ -24220,14 +24196,15 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
|
|
|
24220
24196
|
*/
|
|
24221
24197
|
function ɵɵdeferWhen(rawValue) {
|
|
24222
24198
|
const lView = getLView();
|
|
24199
|
+
const tNode = getSelectedTNode();
|
|
24200
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24201
|
+
return;
|
|
24223
24202
|
const bindingIndex = nextBindingIndex();
|
|
24224
24203
|
if (bindingUpdated(lView, bindingIndex, rawValue)) {
|
|
24225
24204
|
const prevConsumer = setActiveConsumer$1(null);
|
|
24226
24205
|
try {
|
|
24227
24206
|
const value = Boolean(rawValue); // handle truthy or falsy values
|
|
24228
|
-
const tNode = getSelectedTNode();
|
|
24229
24207
|
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24230
|
-
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);
|
|
24231
24208
|
const renderedState = lDetails[DEFER_BLOCK_STATE];
|
|
24232
24209
|
if (value === false && renderedState === DeferBlockInternalState.Initial) {
|
|
24233
24210
|
// If nothing is rendered yet, render a placeholder (if defined).
|
|
@@ -24235,9 +24212,8 @@ function ɵɵdeferWhen(rawValue) {
|
|
|
24235
24212
|
}
|
|
24236
24213
|
else if (value === true &&
|
|
24237
24214
|
(renderedState === DeferBlockInternalState.Initial ||
|
|
24238
|
-
renderedState === DeferBlockState.Placeholder)
|
|
24239
|
-
|
|
24240
|
-
triggerDeferBlock(lView, tNode);
|
|
24215
|
+
renderedState === DeferBlockState.Placeholder)) {
|
|
24216
|
+
triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode);
|
|
24241
24217
|
}
|
|
24242
24218
|
}
|
|
24243
24219
|
finally {
|
|
@@ -24252,9 +24228,9 @@ function ɵɵdeferWhen(rawValue) {
|
|
|
24252
24228
|
function ɵɵdeferPrefetchWhen(rawValue) {
|
|
24253
24229
|
const lView = getLView();
|
|
24254
24230
|
const tNode = getSelectedTNode();
|
|
24231
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24232
|
+
return;
|
|
24255
24233
|
const bindingIndex = nextBindingIndex();
|
|
24256
|
-
const prefetchTriggers = getPrefetchTriggers(getTDeferBlockDetails(getTView(), tNode));
|
|
24257
|
-
prefetchTriggers.add(6 /* DeferBlockTrigger.When */);
|
|
24258
24234
|
if (bindingUpdated(lView, bindingIndex, rawValue)) {
|
|
24259
24235
|
const prevConsumer = setActiveConsumer$1(null);
|
|
24260
24236
|
try {
|
|
@@ -24279,9 +24255,8 @@ function ɵɵdeferPrefetchWhen(rawValue) {
|
|
|
24279
24255
|
function ɵɵdeferHydrateWhen(rawValue) {
|
|
24280
24256
|
const lView = getLView();
|
|
24281
24257
|
const tNode = getSelectedTNode();
|
|
24282
|
-
if (!
|
|
24258
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24283
24259
|
return;
|
|
24284
|
-
}
|
|
24285
24260
|
// TODO(incremental-hydration): audit all defer instructions to reduce unnecessary work by
|
|
24286
24261
|
// moving function calls inside their relevant control flow blocks
|
|
24287
24262
|
const bindingIndex = nextBindingIndex();
|
|
@@ -24289,12 +24264,12 @@ function ɵɵdeferHydrateWhen(rawValue) {
|
|
|
24289
24264
|
const hydrateTriggers = getHydrateTriggers(tView, tNode);
|
|
24290
24265
|
hydrateTriggers.set(6 /* DeferBlockTrigger.When */, null);
|
|
24291
24266
|
if (bindingUpdated(lView, bindingIndex, rawValue)) {
|
|
24292
|
-
const injector = lView[INJECTOR];
|
|
24293
24267
|
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24294
24268
|
// We are on the server and SSR for defer blocks is enabled.
|
|
24295
|
-
triggerDeferBlock(lView, tNode);
|
|
24269
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24296
24270
|
}
|
|
24297
24271
|
else {
|
|
24272
|
+
const injector = lView[INJECTOR];
|
|
24298
24273
|
const prevConsumer = setActiveConsumer$1(null);
|
|
24299
24274
|
try {
|
|
24300
24275
|
const value = Boolean(rawValue); // handle truthy or falsy values
|
|
@@ -24321,13 +24296,13 @@ function ɵɵdeferHydrateWhen(rawValue) {
|
|
|
24321
24296
|
function ɵɵdeferHydrateNever() {
|
|
24322
24297
|
const lView = getLView();
|
|
24323
24298
|
const tNode = getCurrentTNode();
|
|
24324
|
-
if (
|
|
24325
|
-
|
|
24326
|
-
|
|
24327
|
-
|
|
24328
|
-
|
|
24329
|
-
|
|
24330
|
-
|
|
24299
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24300
|
+
return;
|
|
24301
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24302
|
+
hydrateTriggers.set(7 /* DeferBlockTrigger.Never */, null);
|
|
24303
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24304
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24305
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24331
24306
|
}
|
|
24332
24307
|
}
|
|
24333
24308
|
/**
|
|
@@ -24335,6 +24310,10 @@ function ɵɵdeferHydrateNever() {
|
|
|
24335
24310
|
* @codeGenApi
|
|
24336
24311
|
*/
|
|
24337
24312
|
function ɵɵdeferOnIdle() {
|
|
24313
|
+
const lView = getLView();
|
|
24314
|
+
const tNode = getCurrentTNode();
|
|
24315
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24316
|
+
return;
|
|
24338
24317
|
scheduleDelayedTrigger(onIdle);
|
|
24339
24318
|
}
|
|
24340
24319
|
/**
|
|
@@ -24342,6 +24321,10 @@ function ɵɵdeferOnIdle() {
|
|
|
24342
24321
|
* @codeGenApi
|
|
24343
24322
|
*/
|
|
24344
24323
|
function ɵɵdeferPrefetchOnIdle() {
|
|
24324
|
+
const lView = getLView();
|
|
24325
|
+
const tNode = getCurrentTNode();
|
|
24326
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24327
|
+
return;
|
|
24345
24328
|
scheduleDelayedPrefetching(onIdle, 0 /* DeferBlockTrigger.Idle */);
|
|
24346
24329
|
}
|
|
24347
24330
|
/**
|
|
@@ -24351,16 +24334,16 @@ function ɵɵdeferPrefetchOnIdle() {
|
|
|
24351
24334
|
function ɵɵdeferHydrateOnIdle() {
|
|
24352
24335
|
const lView = getLView();
|
|
24353
24336
|
const tNode = getCurrentTNode();
|
|
24354
|
-
if (
|
|
24355
|
-
|
|
24356
|
-
|
|
24357
|
-
|
|
24358
|
-
|
|
24359
|
-
|
|
24360
|
-
|
|
24361
|
-
|
|
24362
|
-
|
|
24363
|
-
|
|
24337
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24338
|
+
return;
|
|
24339
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24340
|
+
hydrateTriggers.set(0 /* DeferBlockTrigger.Idle */, null);
|
|
24341
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24342
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24343
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24344
|
+
}
|
|
24345
|
+
else {
|
|
24346
|
+
scheduleDelayedHydrating(onIdle, lView, tNode);
|
|
24364
24347
|
}
|
|
24365
24348
|
}
|
|
24366
24349
|
/**
|
|
@@ -24370,19 +24353,16 @@ function ɵɵdeferHydrateOnIdle() {
|
|
|
24370
24353
|
function ɵɵdeferOnImmediate() {
|
|
24371
24354
|
const lView = getLView();
|
|
24372
24355
|
const tNode = getCurrentTNode();
|
|
24373
|
-
|
|
24374
|
-
|
|
24375
|
-
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24376
|
-
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24356
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24357
|
+
return;
|
|
24377
24358
|
// Render placeholder block only if loading template is not present and we're on
|
|
24378
24359
|
// the client to avoid content flickering, since it would be immediately replaced
|
|
24379
24360
|
// by the loading block.
|
|
24380
|
-
|
|
24361
|
+
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);
|
|
24362
|
+
if (tDetails.loadingTmplIndex === null) {
|
|
24381
24363
|
renderPlaceholder(lView, tNode);
|
|
24382
24364
|
}
|
|
24383
|
-
|
|
24384
|
-
triggerDeferBlock(lView, tNode);
|
|
24385
|
-
}
|
|
24365
|
+
triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode);
|
|
24386
24366
|
}
|
|
24387
24367
|
/**
|
|
24388
24368
|
* Sets up logic to handle the `prefetch on immediate` deferred trigger.
|
|
@@ -24391,10 +24371,10 @@ function ɵɵdeferOnImmediate() {
|
|
|
24391
24371
|
function ɵɵdeferPrefetchOnImmediate() {
|
|
24392
24372
|
const lView = getLView();
|
|
24393
24373
|
const tNode = getCurrentTNode();
|
|
24374
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24375
|
+
return;
|
|
24394
24376
|
const tView = lView[TVIEW];
|
|
24395
24377
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24396
|
-
const prefetchTriggers = getPrefetchTriggers(tDetails);
|
|
24397
|
-
prefetchTriggers.add(1 /* DeferBlockTrigger.Immediate */);
|
|
24398
24378
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
24399
24379
|
triggerResourceLoading(tDetails, lView, tNode);
|
|
24400
24380
|
}
|
|
@@ -24406,19 +24386,19 @@ function ɵɵdeferPrefetchOnImmediate() {
|
|
|
24406
24386
|
function ɵɵdeferHydrateOnImmediate() {
|
|
24407
24387
|
const lView = getLView();
|
|
24408
24388
|
const tNode = getCurrentTNode();
|
|
24409
|
-
if (
|
|
24389
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24390
|
+
return;
|
|
24391
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24392
|
+
hydrateTriggers.set(1 /* DeferBlockTrigger.Immediate */, null);
|
|
24393
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24394
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24395
|
+
}
|
|
24396
|
+
else {
|
|
24410
24397
|
const injector = lView[INJECTOR];
|
|
24411
|
-
const
|
|
24412
|
-
|
|
24413
|
-
|
|
24414
|
-
|
|
24415
|
-
}
|
|
24416
|
-
else {
|
|
24417
|
-
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24418
|
-
const ssrUniqueId = lDetails[SSR_UNIQUE_ID];
|
|
24419
|
-
ngDevMode && assertSsrIdDefined(ssrUniqueId);
|
|
24420
|
-
triggerHydrationFromBlockName(injector, ssrUniqueId);
|
|
24421
|
-
}
|
|
24398
|
+
const lDetails = getLDeferBlockDetails(lView, tNode);
|
|
24399
|
+
const ssrUniqueId = lDetails[SSR_UNIQUE_ID];
|
|
24400
|
+
ngDevMode && assertSsrIdDefined(ssrUniqueId);
|
|
24401
|
+
triggerHydrationFromBlockName(injector, ssrUniqueId);
|
|
24422
24402
|
}
|
|
24423
24403
|
}
|
|
24424
24404
|
/**
|
|
@@ -24427,6 +24407,10 @@ function ɵɵdeferHydrateOnImmediate() {
|
|
|
24427
24407
|
* @codeGenApi
|
|
24428
24408
|
*/
|
|
24429
24409
|
function ɵɵdeferOnTimer(delay) {
|
|
24410
|
+
const lView = getLView();
|
|
24411
|
+
const tNode = getCurrentTNode();
|
|
24412
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24413
|
+
return;
|
|
24430
24414
|
scheduleDelayedTrigger(onTimer(delay));
|
|
24431
24415
|
}
|
|
24432
24416
|
/**
|
|
@@ -24435,6 +24419,10 @@ function ɵɵdeferOnTimer(delay) {
|
|
|
24435
24419
|
* @codeGenApi
|
|
24436
24420
|
*/
|
|
24437
24421
|
function ɵɵdeferPrefetchOnTimer(delay) {
|
|
24422
|
+
const lView = getLView();
|
|
24423
|
+
const tNode = getCurrentTNode();
|
|
24424
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24425
|
+
return;
|
|
24438
24426
|
scheduleDelayedPrefetching(onTimer(delay), 5 /* DeferBlockTrigger.Timer */);
|
|
24439
24427
|
}
|
|
24440
24428
|
/**
|
|
@@ -24445,16 +24433,16 @@ function ɵɵdeferPrefetchOnTimer(delay) {
|
|
|
24445
24433
|
function ɵɵdeferHydrateOnTimer(delay) {
|
|
24446
24434
|
const lView = getLView();
|
|
24447
24435
|
const tNode = getCurrentTNode();
|
|
24448
|
-
if (
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
|
|
24456
|
-
|
|
24457
|
-
|
|
24436
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24437
|
+
return;
|
|
24438
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24439
|
+
hydrateTriggers.set(5 /* DeferBlockTrigger.Timer */, delay);
|
|
24440
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24441
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24442
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24443
|
+
}
|
|
24444
|
+
else {
|
|
24445
|
+
scheduleDelayedHydrating(onTimer(delay), lView, tNode);
|
|
24458
24446
|
}
|
|
24459
24447
|
}
|
|
24460
24448
|
/**
|
|
@@ -24466,11 +24454,12 @@ function ɵɵdeferHydrateOnTimer(delay) {
|
|
|
24466
24454
|
function ɵɵdeferOnHover(triggerIndex, walkUpTimes) {
|
|
24467
24455
|
const lView = getLView();
|
|
24468
24456
|
const tNode = getCurrentTNode();
|
|
24469
|
-
|
|
24470
|
-
|
|
24457
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24458
|
+
return;
|
|
24471
24459
|
renderPlaceholder(lView, tNode);
|
|
24472
|
-
|
|
24473
|
-
|
|
24460
|
+
// Avoid adding event listeners when this instruction is invoked on the server.
|
|
24461
|
+
if (!(typeof ngServerMode !== 'undefined' && ngServerMode)) {
|
|
24462
|
+
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onHover, () => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), 0 /* TriggerType.Regular */);
|
|
24474
24463
|
}
|
|
24475
24464
|
}
|
|
24476
24465
|
/**
|
|
@@ -24482,10 +24471,10 @@ function ɵɵdeferOnHover(triggerIndex, walkUpTimes) {
|
|
|
24482
24471
|
function ɵɵdeferPrefetchOnHover(triggerIndex, walkUpTimes) {
|
|
24483
24472
|
const lView = getLView();
|
|
24484
24473
|
const tNode = getCurrentTNode();
|
|
24474
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24475
|
+
return;
|
|
24485
24476
|
const tView = lView[TVIEW];
|
|
24486
24477
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24487
|
-
const prefetchTriggers = getPrefetchTriggers(tDetails);
|
|
24488
|
-
prefetchTriggers.add(4 /* DeferBlockTrigger.Hover */);
|
|
24489
24478
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
24490
24479
|
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onHover, () => triggerPrefetching(tDetails, lView, tNode), 1 /* TriggerType.Prefetch */);
|
|
24491
24480
|
}
|
|
@@ -24497,13 +24486,13 @@ function ɵɵdeferPrefetchOnHover(triggerIndex, walkUpTimes) {
|
|
|
24497
24486
|
function ɵɵdeferHydrateOnHover() {
|
|
24498
24487
|
const lView = getLView();
|
|
24499
24488
|
const tNode = getCurrentTNode();
|
|
24500
|
-
if (
|
|
24501
|
-
|
|
24502
|
-
|
|
24503
|
-
|
|
24504
|
-
|
|
24505
|
-
|
|
24506
|
-
|
|
24489
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24490
|
+
return;
|
|
24491
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24492
|
+
hydrateTriggers.set(4 /* DeferBlockTrigger.Hover */, null);
|
|
24493
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24494
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24495
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24507
24496
|
}
|
|
24508
24497
|
// The actual triggering of hydration on hover is handled by JSAction in
|
|
24509
24498
|
// event_replay.ts.
|
|
@@ -24517,11 +24506,12 @@ function ɵɵdeferHydrateOnHover() {
|
|
|
24517
24506
|
function ɵɵdeferOnInteraction(triggerIndex, walkUpTimes) {
|
|
24518
24507
|
const lView = getLView();
|
|
24519
24508
|
const tNode = getCurrentTNode();
|
|
24520
|
-
|
|
24521
|
-
|
|
24509
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24510
|
+
return;
|
|
24522
24511
|
renderPlaceholder(lView, tNode);
|
|
24523
|
-
|
|
24524
|
-
|
|
24512
|
+
// Avoid adding event listeners when this instruction is invoked on the server.
|
|
24513
|
+
if (!(typeof ngServerMode !== 'undefined' && ngServerMode)) {
|
|
24514
|
+
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onInteraction, () => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), 0 /* TriggerType.Regular */);
|
|
24525
24515
|
}
|
|
24526
24516
|
}
|
|
24527
24517
|
/**
|
|
@@ -24533,10 +24523,10 @@ function ɵɵdeferOnInteraction(triggerIndex, walkUpTimes) {
|
|
|
24533
24523
|
function ɵɵdeferPrefetchOnInteraction(triggerIndex, walkUpTimes) {
|
|
24534
24524
|
const lView = getLView();
|
|
24535
24525
|
const tNode = getCurrentTNode();
|
|
24526
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24527
|
+
return;
|
|
24536
24528
|
const tView = lView[TVIEW];
|
|
24537
24529
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24538
|
-
const prefetchTriggers = getPrefetchTriggers(tDetails);
|
|
24539
|
-
prefetchTriggers.add(3 /* DeferBlockTrigger.Interaction */);
|
|
24540
24530
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
24541
24531
|
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onInteraction, () => triggerPrefetching(tDetails, lView, tNode), 1 /* TriggerType.Prefetch */);
|
|
24542
24532
|
}
|
|
@@ -24548,13 +24538,13 @@ function ɵɵdeferPrefetchOnInteraction(triggerIndex, walkUpTimes) {
|
|
|
24548
24538
|
function ɵɵdeferHydrateOnInteraction() {
|
|
24549
24539
|
const lView = getLView();
|
|
24550
24540
|
const tNode = getCurrentTNode();
|
|
24551
|
-
if (
|
|
24552
|
-
|
|
24553
|
-
|
|
24554
|
-
|
|
24555
|
-
|
|
24556
|
-
|
|
24557
|
-
|
|
24541
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24542
|
+
return;
|
|
24543
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24544
|
+
hydrateTriggers.set(3 /* DeferBlockTrigger.Interaction */, null);
|
|
24545
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24546
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24547
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24558
24548
|
}
|
|
24559
24549
|
// The actual triggering of hydration on interaction is handled by JSAction in
|
|
24560
24550
|
// event_replay.ts.
|
|
@@ -24568,11 +24558,12 @@ function ɵɵdeferHydrateOnInteraction() {
|
|
|
24568
24558
|
function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
24569
24559
|
const lView = getLView();
|
|
24570
24560
|
const tNode = getCurrentTNode();
|
|
24571
|
-
|
|
24572
|
-
|
|
24561
|
+
if (!shouldAttachTrigger(0 /* TriggerType.Regular */, lView, tNode))
|
|
24562
|
+
return;
|
|
24573
24563
|
renderPlaceholder(lView, tNode);
|
|
24574
|
-
|
|
24575
|
-
|
|
24564
|
+
// Avoid adding event listeners when this instruction is invoked on the server.
|
|
24565
|
+
if (!(typeof ngServerMode !== 'undefined' && ngServerMode)) {
|
|
24566
|
+
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewport, () => triggerDeferBlock(0 /* TriggerType.Regular */, lView, tNode), 0 /* TriggerType.Regular */);
|
|
24576
24567
|
}
|
|
24577
24568
|
}
|
|
24578
24569
|
/**
|
|
@@ -24584,10 +24575,10 @@ function ɵɵdeferOnViewport(triggerIndex, walkUpTimes) {
|
|
|
24584
24575
|
function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes) {
|
|
24585
24576
|
const lView = getLView();
|
|
24586
24577
|
const tNode = getCurrentTNode();
|
|
24578
|
+
if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
|
|
24579
|
+
return;
|
|
24587
24580
|
const tView = lView[TVIEW];
|
|
24588
24581
|
const tDetails = getTDeferBlockDetails(tView, tNode);
|
|
24589
|
-
const prefetchTriggers = getPrefetchTriggers(tDetails);
|
|
24590
|
-
prefetchTriggers.add(2 /* DeferBlockTrigger.Viewport */);
|
|
24591
24582
|
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
|
|
24592
24583
|
registerDomTrigger(lView, tNode, triggerIndex, walkUpTimes, onViewport, () => triggerPrefetching(tDetails, lView, tNode), 1 /* TriggerType.Prefetch */);
|
|
24593
24584
|
}
|
|
@@ -24599,16 +24590,15 @@ function ɵɵdeferPrefetchOnViewport(triggerIndex, walkUpTimes) {
|
|
|
24599
24590
|
function ɵɵdeferHydrateOnViewport() {
|
|
24600
24591
|
const lView = getLView();
|
|
24601
24592
|
const tNode = getCurrentTNode();
|
|
24602
|
-
if (
|
|
24603
|
-
|
|
24604
|
-
|
|
24605
|
-
|
|
24606
|
-
|
|
24607
|
-
|
|
24608
|
-
|
|
24609
|
-
}
|
|
24593
|
+
if (!shouldAttachTrigger(2 /* TriggerType.Hydrate */, lView, tNode))
|
|
24594
|
+
return;
|
|
24595
|
+
const hydrateTriggers = getHydrateTriggers(getTView(), tNode);
|
|
24596
|
+
hydrateTriggers.set(2 /* DeferBlockTrigger.Viewport */, null);
|
|
24597
|
+
if (typeof ngServerMode !== 'undefined' && ngServerMode) {
|
|
24598
|
+
// We are on the server and SSR for defer blocks is enabled.
|
|
24599
|
+
triggerDeferBlock(2 /* TriggerType.Hydrate */, lView, tNode);
|
|
24610
24600
|
}
|
|
24611
|
-
// The actual triggering of hydration on viewport happens in
|
|
24601
|
+
// The actual triggering of hydration on viewport happens in triggering.ts,
|
|
24612
24602
|
// since these instructions won't exist for dehydrated content.
|
|
24613
24603
|
}
|
|
24614
24604
|
|
|
@@ -25261,7 +25251,7 @@ function getTStylingRangeTail(tStylingRange) {
|
|
|
25261
25251
|
* instructions can be traversed in priority order when computing the styles.
|
|
25262
25252
|
*
|
|
25263
25253
|
* Assume we are dealing with the following code:
|
|
25264
|
-
* ```
|
|
25254
|
+
* ```angular-ts
|
|
25265
25255
|
* @Component({
|
|
25266
25256
|
* template: `
|
|
25267
25257
|
* <my-cmp [style]=" {color: '#001'} "
|
|
@@ -25332,7 +25322,7 @@ function getTStylingRangeTail(tStylingRange) {
|
|
|
25332
25322
|
*
|
|
25333
25323
|
* NOTE: the comment binding location is for illustrative purposes only.
|
|
25334
25324
|
*
|
|
25335
|
-
* ```
|
|
25325
|
+
* ```ts
|
|
25336
25326
|
* // Template: (ExampleComponent)
|
|
25337
25327
|
* ɵɵstyleMap({color: '#001'}); // Binding index: 10
|
|
25338
25328
|
* ɵɵstyleProp('color', '#002'); // Binding index: 12
|
|
@@ -25349,7 +25339,7 @@ function getTStylingRangeTail(tStylingRange) {
|
|
|
25349
25339
|
*
|
|
25350
25340
|
* The correct priority order of concatenation is:
|
|
25351
25341
|
*
|
|
25352
|
-
* ```
|
|
25342
|
+
* ```ts
|
|
25353
25343
|
* // MyComponent
|
|
25354
25344
|
* ɵɵstyleMap({color: '#003'}); // Binding index: 20
|
|
25355
25345
|
* ɵɵstyleProp('color', '#004'); // Binding index: 22
|
|
@@ -25681,7 +25671,7 @@ function getLastParsedValue(text) {
|
|
|
25681
25671
|
* Initializes `className` string for parsing and parses the first token.
|
|
25682
25672
|
*
|
|
25683
25673
|
* This function is intended to be used in this format:
|
|
25684
|
-
* ```
|
|
25674
|
+
* ```ts
|
|
25685
25675
|
* for (let i = parseClassName(text); i >= 0; i = parseClassNameNext(text, i)) {
|
|
25686
25676
|
* const key = getLastParsedKey();
|
|
25687
25677
|
* ...
|
|
@@ -25698,7 +25688,7 @@ function parseClassName(text) {
|
|
|
25698
25688
|
* Parses next `className` token.
|
|
25699
25689
|
*
|
|
25700
25690
|
* This function is intended to be used in this format:
|
|
25701
|
-
* ```
|
|
25691
|
+
* ```ts
|
|
25702
25692
|
* for (let i = parseClassName(text); i >= 0; i = parseClassNameNext(text, i)) {
|
|
25703
25693
|
* const key = getLastParsedKey();
|
|
25704
25694
|
* ...
|
|
@@ -25721,7 +25711,7 @@ function parseClassNameNext(text, index) {
|
|
|
25721
25711
|
* Initializes `cssText` string for parsing and parses the first key/values.
|
|
25722
25712
|
*
|
|
25723
25713
|
* This function is intended to be used in this format:
|
|
25724
|
-
* ```
|
|
25714
|
+
* ```ts
|
|
25725
25715
|
* for (let i = parseStyle(text); i >= 0; i = parseStyleNext(text, i))) {
|
|
25726
25716
|
* const key = getLastParsedKey();
|
|
25727
25717
|
* const value = getLastParsedValue();
|
|
@@ -25739,7 +25729,7 @@ function parseStyle(text) {
|
|
|
25739
25729
|
* Parses the next `cssText` key/values.
|
|
25740
25730
|
*
|
|
25741
25731
|
* This function is intended to be used in this format:
|
|
25742
|
-
* ```
|
|
25732
|
+
* ```ts
|
|
25743
25733
|
* for (let i = parseStyle(text); i >= 0; i = parseStyleNext(text, i))) {
|
|
25744
25734
|
* const key = getLastParsedKey();
|
|
25745
25735
|
* const value = getLastParsedValue();
|
|
@@ -26296,7 +26286,7 @@ function getTemplateHeadTStylingKey(tData, tNode, isClassBased) {
|
|
|
26296
26286
|
* method allows us to update the first template instruction `TStylingKey` with a new value.
|
|
26297
26287
|
*
|
|
26298
26288
|
* Assume:
|
|
26299
|
-
* ```
|
|
26289
|
+
* ```angular-ts
|
|
26300
26290
|
* <div my-dir style="color: red" [style.color]="tmplExp"></div>
|
|
26301
26291
|
*
|
|
26302
26292
|
* @Directive({
|
|
@@ -26309,7 +26299,7 @@ function getTemplateHeadTStylingKey(tData, tNode, isClassBased) {
|
|
|
26309
26299
|
* ```
|
|
26310
26300
|
*
|
|
26311
26301
|
* when `[style.color]="tmplExp"` executes it creates this data structure.
|
|
26312
|
-
* ```
|
|
26302
|
+
* ```ts
|
|
26313
26303
|
* ['', 'color', 'color', 'red', 'width', '100px'],
|
|
26314
26304
|
* ```
|
|
26315
26305
|
*
|
|
@@ -26319,14 +26309,14 @@ function getTemplateHeadTStylingKey(tData, tNode, isClassBased) {
|
|
|
26319
26309
|
* `color' and 'width`)
|
|
26320
26310
|
*
|
|
26321
26311
|
* When `'[style.color]': 'dirExp',` executes we need to insert a new data into the linked list.
|
|
26322
|
-
* ```
|
|
26312
|
+
* ```ts
|
|
26323
26313
|
* ['', 'color', 'width', '100px'], // newly inserted
|
|
26324
26314
|
* ['', 'color', 'color', 'red', 'width', '100px'], // this is wrong
|
|
26325
26315
|
* ```
|
|
26326
26316
|
*
|
|
26327
26317
|
* Notice that the template statics is now wrong as it incorrectly contains `width` so we need to
|
|
26328
26318
|
* update it like so:
|
|
26329
|
-
* ```
|
|
26319
|
+
* ```ts
|
|
26330
26320
|
* ['', 'color', 'width', '100px'],
|
|
26331
26321
|
* ['', 'color', 'color', 'red'], // UPDATE
|
|
26332
26322
|
* ```
|
|
@@ -29365,7 +29355,7 @@ function removeInnerTemplateTranslation(message) {
|
|
|
29365
29355
|
* translated message can span multiple templates.
|
|
29366
29356
|
*
|
|
29367
29357
|
* Example:
|
|
29368
|
-
* ```
|
|
29358
|
+
* ```html
|
|
29369
29359
|
* <div i18n>Translate <span *ngIf>me</span>!</div>
|
|
29370
29360
|
* ```
|
|
29371
29361
|
*
|
|
@@ -33053,11 +33043,11 @@ function ɵsetClassDebugInfo(type, debugInfo) {
|
|
|
33053
33043
|
* Replaces the metadata of a component type and re-renders all live instances of the component.
|
|
33054
33044
|
* @param type Class whose metadata will be replaced.
|
|
33055
33045
|
* @param applyMetadata Callback that will apply a new set of metadata on the `type` when invoked.
|
|
33056
|
-
* @param environment
|
|
33046
|
+
* @param environment Syntehtic namespace imports that need to be passed along to the callback.
|
|
33057
33047
|
* @param locals Local symbols from the source location that have to be exposed to the callback.
|
|
33058
33048
|
* @codeGenApi
|
|
33059
33049
|
*/
|
|
33060
|
-
function ɵɵreplaceMetadata(type, applyMetadata,
|
|
33050
|
+
function ɵɵreplaceMetadata(type, applyMetadata, namespaces, locals) {
|
|
33061
33051
|
ngDevMode && assertComponentDef(type);
|
|
33062
33052
|
const oldDef = getComponentDef(type);
|
|
33063
33053
|
// The reason `applyMetadata` is a callback that is invoked (almost) immediately is because
|
|
@@ -33065,7 +33055,7 @@ function ɵɵreplaceMetadata(type, applyMetadata, environment, locals) {
|
|
|
33065
33055
|
// can be functions for embedded views, the variables for the constant pool and `setClassMetadata`
|
|
33066
33056
|
// calls. The callback allows us to keep them isolate from the rest of the app and to invoke
|
|
33067
33057
|
// them at the right time.
|
|
33068
|
-
applyMetadata.apply(null, [type,
|
|
33058
|
+
applyMetadata.apply(null, [type, namespaces, ...locals]);
|
|
33069
33059
|
// If a `tView` hasn't been created yet, it means that this component hasn't been instantianted
|
|
33070
33060
|
// before. In this case there's nothing left for us to do aside from patching it in.
|
|
33071
33061
|
if (oldDef.tView) {
|
|
@@ -34582,7 +34572,7 @@ class Version {
|
|
|
34582
34572
|
/**
|
|
34583
34573
|
* @publicApi
|
|
34584
34574
|
*/
|
|
34585
|
-
const VERSION = new Version('19.0.
|
|
34575
|
+
const VERSION = new Version('19.0.3');
|
|
34586
34576
|
|
|
34587
34577
|
/**
|
|
34588
34578
|
* Combination of NgModuleFactory and ComponentFactories.
|
|
@@ -34817,7 +34807,7 @@ function internalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsid
|
|
|
34817
34807
|
* `BootstrapOptions` instead.
|
|
34818
34808
|
*
|
|
34819
34809
|
* @usageNotes
|
|
34820
|
-
* ```
|
|
34810
|
+
* ```ts
|
|
34821
34811
|
* bootstrapApplication(MyApp, {providers: [
|
|
34822
34812
|
* provideZoneChangeDetection({eventCoalescing: true}),
|
|
34823
34813
|
* ]});
|
|
@@ -35205,7 +35195,7 @@ class ChangeDetectionSchedulerImpl {
|
|
|
35205
35195
|
* - registering a render hook (templates are only refreshed if render hooks do one of the above)
|
|
35206
35196
|
*
|
|
35207
35197
|
* @usageNotes
|
|
35208
|
-
* ```
|
|
35198
|
+
* ```ts
|
|
35209
35199
|
* bootstrapApplication(MyApp, {providers: [
|
|
35210
35200
|
* provideExperimentalZonelessChangeDetection(),
|
|
35211
35201
|
* ]});
|
|
@@ -35277,7 +35267,7 @@ function getGlobalLocale() {
|
|
|
35277
35267
|
* @usageNotes
|
|
35278
35268
|
* ### Example
|
|
35279
35269
|
*
|
|
35280
|
-
* ```
|
|
35270
|
+
* ```ts
|
|
35281
35271
|
* import { LOCALE_ID } from '@angular/core';
|
|
35282
35272
|
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
35283
35273
|
* import { AppModule } from './app/app.module';
|
|
@@ -35300,7 +35290,7 @@ const LOCALE_ID = new InjectionToken(ngDevMode ? 'LocaleId' : '', {
|
|
|
35300
35290
|
*
|
|
35301
35291
|
* See the [i18n guide](guide/i18n/locale-id) for more information.
|
|
35302
35292
|
*
|
|
35303
|
-
* <div class="alert
|
|
35293
|
+
* <div class="docs-alert docs-alert-helpful">
|
|
35304
35294
|
*
|
|
35305
35295
|
* **Deprecation notice:**
|
|
35306
35296
|
*
|
|
@@ -35320,7 +35310,7 @@ const LOCALE_ID = new InjectionToken(ngDevMode ? 'LocaleId' : '', {
|
|
|
35320
35310
|
* @usageNotes
|
|
35321
35311
|
* ### Example
|
|
35322
35312
|
*
|
|
35323
|
-
* ```
|
|
35313
|
+
* ```ts
|
|
35324
35314
|
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
35325
35315
|
* import { AppModule } from './app/app.module';
|
|
35326
35316
|
*
|
|
@@ -35344,7 +35334,7 @@ const DEFAULT_CURRENCY_CODE = new InjectionToken(ngDevMode ? 'DefaultCurrencyCod
|
|
|
35344
35334
|
* @usageNotes
|
|
35345
35335
|
* ### Example
|
|
35346
35336
|
*
|
|
35347
|
-
* ```
|
|
35337
|
+
* ```ts
|
|
35348
35338
|
* import { TRANSLATIONS } from '@angular/core';
|
|
35349
35339
|
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
35350
35340
|
* import { AppModule } from './app/app.module';
|
|
@@ -35369,7 +35359,7 @@ const TRANSLATIONS = new InjectionToken(ngDevMode ? 'Translations' : '');
|
|
|
35369
35359
|
* @usageNotes
|
|
35370
35360
|
* ### Example
|
|
35371
35361
|
*
|
|
35372
|
-
* ```
|
|
35362
|
+
* ```ts
|
|
35373
35363
|
* import { TRANSLATIONS_FORMAT } from '@angular/core';
|
|
35374
35364
|
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
35375
35365
|
* import { AppModule } from './app/app.module';
|
|
@@ -35393,7 +35383,7 @@ const TRANSLATIONS_FORMAT = new InjectionToken(ngDevMode ? 'TranslationsFormat'
|
|
|
35393
35383
|
*
|
|
35394
35384
|
* @usageNotes
|
|
35395
35385
|
* ### Example
|
|
35396
|
-
* ```
|
|
35386
|
+
* ```ts
|
|
35397
35387
|
* import { MissingTranslationStrategy } from '@angular/core';
|
|
35398
35388
|
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
35399
35389
|
* import { AppModule } from './app/app.module';
|
|
@@ -35757,7 +35747,7 @@ class PlatformRef {
|
|
|
35757
35747
|
* @usageNotes
|
|
35758
35748
|
* ### Simple Example
|
|
35759
35749
|
*
|
|
35760
|
-
* ```
|
|
35750
|
+
* ```ts
|
|
35761
35751
|
* @NgModule({
|
|
35762
35752
|
* imports: [BrowserModule]
|
|
35763
35753
|
* })
|
|
@@ -36185,8 +36175,7 @@ function noModuleError(id) {
|
|
|
36185
36175
|
* (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check
|
|
36186
36176
|
* after an interval.
|
|
36187
36177
|
*
|
|
36188
|
-
*
|
|
36189
|
-
* region="mark-for-check"></code-example>
|
|
36178
|
+
* {@example core/ts/change_detect/change-detection.ts region='mark-for-check'}
|
|
36190
36179
|
*
|
|
36191
36180
|
* ### Detach change detector to limit how often check occurs
|
|
36192
36181
|
*
|
|
@@ -36196,7 +36185,7 @@ function noModuleError(id) {
|
|
|
36196
36185
|
* less often than the changes actually occur. To do that, we detach
|
|
36197
36186
|
* the component's change detector and perform an explicit local check every five seconds.
|
|
36198
36187
|
*
|
|
36199
|
-
*
|
|
36188
|
+
* {@example core/ts/change_detect/change-detection.ts region='detach'}
|
|
36200
36189
|
*
|
|
36201
36190
|
*
|
|
36202
36191
|
* ### Reattaching a detached component
|
|
@@ -36206,7 +36195,7 @@ function noModuleError(id) {
|
|
|
36206
36195
|
* when the `live` property is set to false, and reattaches it when the property
|
|
36207
36196
|
* becomes true.
|
|
36208
36197
|
*
|
|
36209
|
-
*
|
|
36198
|
+
* {@example core/ts/change_detect/change-detection.ts region='reattach'}
|
|
36210
36199
|
*
|
|
36211
36200
|
* @publicApi
|
|
36212
36201
|
*/
|
|
@@ -36272,7 +36261,7 @@ class ViewRef extends ChangeDetectorRef {
|
|
|
36272
36261
|
* The following template breaks down into two separate `TemplateRef` instances,
|
|
36273
36262
|
* an outer one and an inner one.
|
|
36274
36263
|
*
|
|
36275
|
-
* ```
|
|
36264
|
+
* ```html
|
|
36276
36265
|
* Count: {{items.length}}
|
|
36277
36266
|
* <ul>
|
|
36278
36267
|
* <li *ngFor="let item of items">{{item}}</li>
|
|
@@ -36281,7 +36270,7 @@ class ViewRef extends ChangeDetectorRef {
|
|
|
36281
36270
|
*
|
|
36282
36271
|
* This is the outer `TemplateRef`:
|
|
36283
36272
|
*
|
|
36284
|
-
* ```
|
|
36273
|
+
* ```html
|
|
36285
36274
|
* Count: {{items.length}}
|
|
36286
36275
|
* <ul>
|
|
36287
36276
|
* <ng-template ngFor let-item [ngForOf]="items"></ng-template>
|
|
@@ -36290,13 +36279,13 @@ class ViewRef extends ChangeDetectorRef {
|
|
|
36290
36279
|
*
|
|
36291
36280
|
* This is the inner `TemplateRef`:
|
|
36292
36281
|
*
|
|
36293
|
-
* ```
|
|
36282
|
+
* ```html
|
|
36294
36283
|
* <li>{{item}}</li>
|
|
36295
36284
|
* ```
|
|
36296
36285
|
*
|
|
36297
36286
|
* The outer and inner `TemplateRef` instances are assembled into views as follows:
|
|
36298
36287
|
*
|
|
36299
|
-
* ```
|
|
36288
|
+
* ```html
|
|
36300
36289
|
* <!-- ViewRef: outer-0 -->
|
|
36301
36290
|
* Count: 2
|
|
36302
36291
|
* <ul>
|
|
@@ -39799,7 +39788,7 @@ function verifySsrContentsIntegrity() {
|
|
|
39799
39788
|
* Intended to be used as a transform function of an input.
|
|
39800
39789
|
*
|
|
39801
39790
|
* @usageNotes
|
|
39802
|
-
* ```
|
|
39791
|
+
* ```ts
|
|
39803
39792
|
* @Input({ transform: booleanAttribute }) status!: boolean;
|
|
39804
39793
|
* ```
|
|
39805
39794
|
* @param value Value to be transformed.
|
|
@@ -39816,7 +39805,7 @@ function booleanAttribute(value) {
|
|
|
39816
39805
|
* @param fallbackValue Value to use if the provided value can't be parsed as a number.
|
|
39817
39806
|
*
|
|
39818
39807
|
* @usageNotes
|
|
39819
|
-
* ```
|
|
39808
|
+
* ```ts
|
|
39820
39809
|
* @Input({ transform: numberAttribute }) id!: number;
|
|
39821
39810
|
* ```
|
|
39822
39811
|
*
|
|
@@ -40392,7 +40381,7 @@ function effect(effectFn, options) {
|
|
|
40392
40381
|
'effect inside the component constructor.');
|
|
40393
40382
|
!options?.injector && assertInInjectionContext(effect);
|
|
40394
40383
|
if (ngDevMode && options?.allowSignalWrites !== undefined) {
|
|
40395
|
-
console.warn(`The 'allowSignalWrites' flag is deprecated
|
|
40384
|
+
console.warn(`The 'allowSignalWrites' flag is deprecated and no longer impacts effect() (writes are always allowed)`);
|
|
40396
40385
|
}
|
|
40397
40386
|
const injector = options?.injector ?? inject(Injector);
|
|
40398
40387
|
let destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
|
|
@@ -40937,7 +40926,7 @@ function wrapEqualityFn(equal) {
|
|
|
40937
40926
|
* Note: the example uses standalone components, but the function can also be used for
|
|
40938
40927
|
* non-standalone components (declared in an NgModule) as well.
|
|
40939
40928
|
*
|
|
40940
|
-
* ```
|
|
40929
|
+
* ```angular-ts
|
|
40941
40930
|
* @Component({
|
|
40942
40931
|
* standalone: true,
|
|
40943
40932
|
* template: `Hello {{ name }}!`
|
|
@@ -41002,7 +40991,7 @@ function createComponent(component, options) {
|
|
|
41002
40991
|
* The example below demonstrates how to use the function and how the fields
|
|
41003
40992
|
* of the returned object map to the component metadata.
|
|
41004
40993
|
*
|
|
41005
|
-
* ```
|
|
40994
|
+
* ```angular-ts
|
|
41006
40995
|
* @Component({
|
|
41007
40996
|
* standalone: true,
|
|
41008
40997
|
* selector: 'foo-component',
|
|
@@ -41171,5 +41160,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
41171
41160
|
* Generated bundle index. Do not edit.
|
|
41172
41161
|
*/
|
|
41173
41162
|
|
|
41174
|
-
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasks, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵ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, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41163
|
+
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasks, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
|
|
41175
41164
|
//# sourceMappingURL=core.mjs.map
|