@angular/platform-browser 21.0.0-next.1 → 21.0.0-next.10

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.
@@ -1,23 +1,25 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.10
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import * as i0 from '@angular/core';
8
- import { ApplicationConfig as ApplicationConfig$1, Type, ApplicationRef, Provider, StaticProvider, PlatformRef } from '@angular/core';
8
+ import { PlatformRef, Type, ApplicationConfig, ApplicationRef, Provider, StaticProvider } from '@angular/core';
9
9
  import * as i1 from '@angular/common';
10
10
 
11
11
  /**
12
- * Set of config options available during the application bootstrap operation.
12
+ * A context object that can be passed to `bootstrapApplication` to provide a pre-existing platform
13
+ * injector.
13
14
  *
14
15
  * @publicApi
15
- *
16
- * @deprecated
17
- * `ApplicationConfig` has moved, please import `ApplicationConfig` from `@angular/core` instead.
18
16
  */
19
- type ApplicationConfig = ApplicationConfig$1;
20
-
17
+ interface BootstrapContext {
18
+ /**
19
+ * A reference to a platform.
20
+ */
21
+ platformRef: PlatformRef;
22
+ }
21
23
  /**
22
24
  * Bootstraps an instance of an Angular application and renders a standalone component as the
23
25
  * application's root component. More information about standalone components can be found in [this
@@ -73,11 +75,14 @@ type ApplicationConfig = ApplicationConfig$1;
73
75
  * @param rootComponent A reference to a standalone component that should be rendered.
74
76
  * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for
75
77
  * additional info.
78
+ * @param context Optional context object that can be used to provide a pre-existing
79
+ * platform injector. This is useful for advanced use-cases, for example, server-side
80
+ * rendering, where the platform is created for each request.
76
81
  * @returns A promise that returns an `ApplicationRef` instance once resolved.
77
82
  *
78
83
  * @publicApi
79
84
  */
80
- declare function bootstrapApplication(rootComponent: Type<unknown>, options?: ApplicationConfig): Promise<ApplicationRef>;
85
+ declare function bootstrapApplication(rootComponent: Type<unknown>, options?: ApplicationConfig, context?: BootstrapContext): Promise<ApplicationRef>;
81
86
  /**
82
87
  * Create an instance of an Angular application without bootstrapping any components. This is useful
83
88
  * for the situation where one wants to decouple application environment creation (a platform and
@@ -127,4 +132,4 @@ declare class BrowserModule {
127
132
  }
128
133
 
129
134
  export { BrowserModule, bootstrapApplication, createApplication, platformBrowser, provideProtractorTestingSupport };
130
- export type { ApplicationConfig };
135
+ export type { BootstrapContext };
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.10
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.10
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import * as i0 from '@angular/core';
8
8
  import { ModuleWithProviders, Provider, OnDestroy } from '@angular/core';
9
9
  export { ANIMATION_MODULE_TYPE } from '@angular/core';
10
- import { BrowserModule } from '../browser.d.js';
10
+ import { BrowserModule } from './_browser-chunk.js';
11
11
  import { ɵAnimationEngine as _AnimationEngine, AnimationDriver, ɵAnimationStyleNormalizer as _AnimationStyleNormalizer } from '@angular/animations/browser';
12
12
  import '@angular/common';
13
13
 
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.10
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- export { ApplicationConfig, BrowserModule, bootstrapApplication, createApplication, platformBrowser, provideProtractorTestingSupport } from './browser.d.js';
7
+ export { BootstrapContext, BrowserModule, bootstrapApplication, createApplication, platformBrowser, provideProtractorTestingSupport } from './_browser-chunk.js';
8
8
  import * as i0 from '@angular/core';
9
- import { ComponentRef, Predicate, DebugNode, DebugElement, Type, InjectionToken, NgZone, ListenerOptions, OnDestroy, RendererFactory2, ɵTracingService as _TracingService, ɵTracingSnapshot as _TracingSnapshot, RendererType2, Renderer2, Injector, Sanitizer, SecurityContext, Provider, EnvironmentProviders, GetTestability, TestabilityRegistry, Testability, Version } from '@angular/core';
9
+ import { ComponentRef, Predicate, DebugNode, DebugElement, Type, ListenerOptions, InjectionToken, NgZone, OnDestroy, RendererFactory2, ɵTracingService as _TracingService, ɵTracingSnapshot as _TracingSnapshot, RendererType2, Renderer2, Injector, Sanitizer, SecurityContext, Provider, EnvironmentProviders, GetTestability, TestabilityRegistry, Testability, Version } from '@angular/core';
10
10
  import { HttpTransferCacheOptions } from '@angular/common/http';
11
11
  import { ɵDomAdapter as _DomAdapter } from '@angular/common';
12
12
  export { ɵgetDOM } from '@angular/common';
@@ -205,9 +205,35 @@ declare class By {
205
205
  static directive(type: Type<any>): Predicate<DebugNode>;
206
206
  }
207
207
 
208
+ /**
209
+ * The plugin definition for the `EventManager` class
210
+ *
211
+ * It can be used as a base class to create custom manager plugins, i.e. you can create your own
212
+ * class that extends the `EventManagerPlugin` one.
213
+ *
214
+ * @see [Extend event handling](guide/templates/event-listeners#extend-event-handling)
215
+ *
216
+ * @publicApi
217
+ */
218
+ declare abstract class EventManagerPlugin {
219
+ private _doc;
220
+ constructor(_doc: any);
221
+ manager: EventManager;
222
+ /**
223
+ * Should return `true` for every event name that should be supported by this plugin
224
+ */
225
+ abstract supports(eventName: string): boolean;
226
+ /**
227
+ * Implement the behaviour for the supported events
228
+ */
229
+ abstract addEventListener(element: HTMLElement, eventName: string, handler: Function, options?: ListenerOptions): Function;
230
+ }
231
+
208
232
  /**
209
233
  * The injection token for plugins of the `EventManager` service.
210
234
  *
235
+ * @see [Extend event handling](guide/templates/event-listeners#extend-event-handling)
236
+ *
211
237
  * @publicApi
212
238
  */
213
239
  declare const EVENT_MANAGER_PLUGINS: InjectionToken<EventManagerPlugin[]>;
@@ -243,27 +269,6 @@ declare class EventManager {
243
269
  static ɵfac: i0.ɵɵFactoryDeclaration<EventManager, never>;
244
270
  static ɵprov: i0.ɵɵInjectableDeclaration<EventManager>;
245
271
  }
246
- /**
247
- * The plugin definition for the `EventManager` class
248
- *
249
- * It can be used as a base class to create custom manager plugins, i.e. you can create your own
250
- * class that extends the `EventManagerPlugin` one.
251
- *
252
- * @publicApi
253
- */
254
- declare abstract class EventManagerPlugin {
255
- private _doc;
256
- constructor(_doc: any);
257
- manager: EventManager;
258
- /**
259
- * Should return `true` for every event name that should be supported by this plugin
260
- */
261
- abstract supports(eventName: string): boolean;
262
- /**
263
- * Implement the behaviour for the supported events
264
- */
265
- abstract addEventListener(element: HTMLElement, eventName: string, handler: Function, options?: ListenerOptions): Function;
266
- }
267
272
 
268
273
  /**
269
274
  * A record of usage for a specific style including all elements added to the DOM
@@ -335,14 +340,11 @@ declare class DomRendererFactory2 implements RendererFactory2, OnDestroy {
335
340
  readonly platformId: Object;
336
341
  readonly ngZone: NgZone;
337
342
  private readonly nonce;
338
- private readonly animationDisabled;
339
- private readonly maxAnimationTimeout;
340
343
  private readonly tracingService;
341
344
  private readonly rendererByCompId;
342
345
  private readonly defaultRenderer;
343
346
  private readonly platformIsServer;
344
- private registry;
345
- constructor(eventManager: EventManager, sharedStylesHost: SharedStylesHost, appId: string, removeStylesOnCompDestroy: boolean, doc: Document, platformId: Object, ngZone: NgZone, nonce: string | null | undefined, animationDisabled: boolean, maxAnimationTimeout: number, tracingService?: _TracingService<_TracingSnapshot> | null);
347
+ constructor(eventManager: EventManager, sharedStylesHost: SharedStylesHost, appId: string, removeStylesOnCompDestroy: boolean, doc: Document, platformId: Object, ngZone: NgZone, nonce?: string | null, tracingService?: _TracingService<_TracingSnapshot> | null);
346
348
  createRenderer(element: any, type: RendererType2 | null): Renderer2;
347
349
  private getOrCreateRenderer;
348
350
  ngOnDestroy(): void;
@@ -351,7 +353,7 @@ declare class DomRendererFactory2 implements RendererFactory2, OnDestroy {
351
353
  * @param componentId ID of the component that is being replaced.
352
354
  */
353
355
  protected componentReplaced(componentId: string): void;
354
- static ɵfac: i0.ɵɵFactoryDeclaration<DomRendererFactory2, [null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
356
+ static ɵfac: i0.ɵɵFactoryDeclaration<DomRendererFactory2, [null, null, null, null, null, null, null, null, { optional: true; }]>;
355
357
  static ɵprov: i0.ɵɵInjectableDeclaration<DomRendererFactory2>;
356
358
  }
357
359
 
@@ -649,6 +651,8 @@ interface HydrationFeature<FeatureKind extends HydrationFeatureKind> {
649
651
  * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the
650
652
  * server and other one on the browser.
651
653
  *
654
+ * @see [Disabling Caching](guide/ssr#disabling-caching)
655
+ *
652
656
  * @publicApi
653
657
  */
654
658
  declare function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKind.NoHttpTransferCache>;
@@ -658,6 +662,8 @@ declare function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKin
658
662
  * whether POST requests should be cached or a callback function to determine if a
659
663
  * particular request should be cached.
660
664
  *
665
+ * @see [Configuring HTTP transfer cache options](guide/ssr#caching-data-when-using-httpclient)
666
+ *
661
667
  * @publicApi
662
668
  */
663
669
  declare function withHttpTransferCacheOptions(options: HttpTransferCacheOptions): HydrationFeature<HydrationFeatureKind.HttpTransferCacheOptions>;
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
2
+ * @license Angular v21.0.0-next.10
3
+ * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import * as i0 from '@angular/core';
8
8
  import { StaticProvider, PlatformRef } from '@angular/core';
9
- import { BrowserModule } from '../browser.d.js';
9
+ import { BrowserModule } from './_browser-chunk.js';
10
10
  import '@angular/common';
11
11
 
12
12
  /**
@@ -1,302 +0,0 @@
1
- /**
2
- * @license Angular v21.0.0-next.1
3
- * (c) 2010-2025 Google LLC. https://angular.io/
4
- * License: MIT
5
- */
6
-
7
- import { DOCUMENT } from '@angular/common';
8
- import * as i0 from '@angular/core';
9
- import { inject, Injector, ɵRuntimeError as _RuntimeError, ɵChangeDetectionScheduler as _ChangeDetectionScheduler, Injectable, InjectionToken, ɵperformanceMarkFeature as _performanceMarkFeature, makeEnvironmentProviders, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE } from '@angular/core';
10
- import { DomRendererFactory2 } from '../dom_renderer.mjs';
11
-
12
- const ANIMATION_PREFIX = '@';
13
- class AsyncAnimationRendererFactory {
14
- doc;
15
- delegate;
16
- zone;
17
- animationType;
18
- moduleImpl;
19
- _rendererFactoryPromise = null;
20
- scheduler = null;
21
- injector = inject(Injector);
22
- loadingSchedulerFn = inject(ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN, {
23
- optional: true,
24
- });
25
- _engine;
26
- /**
27
- *
28
- * @param moduleImpl allows to provide a mock implmentation (or will load the animation module)
29
- */
30
- constructor(doc, delegate, zone, animationType, moduleImpl) {
31
- this.doc = doc;
32
- this.delegate = delegate;
33
- this.zone = zone;
34
- this.animationType = animationType;
35
- this.moduleImpl = moduleImpl;
36
- }
37
- /** @docs-private */
38
- ngOnDestroy() {
39
- // When the root view is removed, the renderer defers the actual work to the
40
- // `TransitionAnimationEngine` to do this, and the `TransitionAnimationEngine` doesn't actually
41
- // remove the DOM node, but just calls `markElementAsRemoved()`. The actual DOM node is not
42
- // removed until `TransitionAnimationEngine` "flushes".
43
- // Note: we already flush on destroy within the `InjectableAnimationEngine`. The injectable
44
- // engine is not provided when async animations are used.
45
- this._engine?.flush();
46
- }
47
- /**
48
- * @internal
49
- */
50
- loadImpl() {
51
- // Note on the `.then(m => m)` part below: Closure compiler optimizations in g3 require
52
- // `.then` to be present for a dynamic import (or an import should be `await`ed) to detect
53
- // the set of imported symbols.
54
- const loadFn = () => this.moduleImpl ?? import('@angular/animations/browser').then((m) => m);
55
- let moduleImplPromise;
56
- if (this.loadingSchedulerFn) {
57
- moduleImplPromise = this.loadingSchedulerFn(loadFn);
58
- }
59
- else {
60
- moduleImplPromise = loadFn();
61
- }
62
- return moduleImplPromise
63
- .catch((e) => {
64
- throw new _RuntimeError(5300 /* RuntimeErrorCode.ANIMATION_RENDERER_ASYNC_LOADING_FAILURE */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
65
- 'Async loading for animations package was ' +
66
- 'enabled, but loading failed. Angular falls back to using regular rendering. ' +
67
- "No animations will be displayed and their styles won't be applied.");
68
- })
69
- .then(({ ɵcreateEngine, ɵAnimationRendererFactory }) => {
70
- // We can't create the renderer yet because we might need the hostElement and the type
71
- // Both are provided in createRenderer().
72
- this._engine = ɵcreateEngine(this.animationType, this.doc);
73
- const rendererFactory = new ɵAnimationRendererFactory(this.delegate, this._engine, this.zone);
74
- this.delegate = rendererFactory;
75
- return rendererFactory;
76
- });
77
- }
78
- /**
79
- * This method is delegating the renderer creation to the factories.
80
- * It uses default factory while the animation factory isn't loaded
81
- * and will rely on the animation factory once it is loaded.
82
- *
83
- * Calling this method will trigger as side effect the loading of the animation module
84
- * if the renderered component uses animations.
85
- */
86
- createRenderer(hostElement, rendererType) {
87
- const renderer = this.delegate.createRenderer(hostElement, rendererType);
88
- if (renderer.ɵtype === 0 /* AnimationRendererType.Regular */) {
89
- // The factory is already loaded, this is an animation renderer
90
- return renderer;
91
- }
92
- // We need to prevent the DomRenderer to throw an error because of synthetic properties
93
- if (typeof renderer.throwOnSyntheticProps === 'boolean') {
94
- renderer.throwOnSyntheticProps = false;
95
- }
96
- // Using a dynamic renderer to switch the renderer implementation once the module is loaded.
97
- const dynamicRenderer = new DynamicDelegationRenderer(renderer);
98
- // Kick off the module loading if the component uses animations but the module hasn't been
99
- // loaded yet.
100
- if (rendererType?.data?.['animation'] && !this._rendererFactoryPromise) {
101
- this._rendererFactoryPromise = this.loadImpl();
102
- }
103
- this._rendererFactoryPromise
104
- ?.then((animationRendererFactory) => {
105
- const animationRenderer = animationRendererFactory.createRenderer(hostElement, rendererType);
106
- dynamicRenderer.use(animationRenderer);
107
- this.scheduler ??= this.injector.get(_ChangeDetectionScheduler, null, { optional: true });
108
- this.scheduler?.notify(10 /* NotificationSource.AsyncAnimationsLoaded */);
109
- })
110
- .catch((e) => {
111
- // Permanently use regular renderer when loading fails.
112
- dynamicRenderer.use(renderer);
113
- });
114
- return dynamicRenderer;
115
- }
116
- begin() {
117
- this.delegate.begin?.();
118
- }
119
- end() {
120
- this.delegate.end?.();
121
- }
122
- whenRenderingDone() {
123
- return this.delegate.whenRenderingDone?.() ?? Promise.resolve();
124
- }
125
- /**
126
- * Used during HMR to clear any cached data about a component.
127
- * @param componentId ID of the component that is being replaced.
128
- */
129
- componentReplaced(componentId) {
130
- // Flush the engine since the renderer destruction waits for animations to be done.
131
- this._engine?.flush();
132
- this.delegate.componentReplaced?.(componentId);
133
- }
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: AsyncAnimationRendererFactory, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
135
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: AsyncAnimationRendererFactory });
136
- }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: AsyncAnimationRendererFactory, decorators: [{
138
- type: Injectable
139
- }], ctorParameters: () => [{ type: Document }, { type: i0.RendererFactory2 }, { type: i0.NgZone }, { type: undefined }, { type: Promise }] });
140
- /**
141
- * The class allows to dynamicly switch between different renderer implementations
142
- * by changing the delegate renderer.
143
- */
144
- class DynamicDelegationRenderer {
145
- delegate;
146
- // List of callbacks that need to be replayed on the animation renderer once its loaded
147
- replay = [];
148
- ɵtype = 1 /* AnimationRendererType.Delegated */;
149
- constructor(delegate) {
150
- this.delegate = delegate;
151
- }
152
- use(impl) {
153
- this.delegate = impl;
154
- if (this.replay !== null) {
155
- // Replay queued actions using the animation renderer to apply
156
- // all events and properties collected while loading was in progress.
157
- for (const fn of this.replay) {
158
- fn(impl);
159
- }
160
- // Set to `null` to indicate that the queue was processed
161
- // and we no longer need to collect events and properties.
162
- this.replay = null;
163
- }
164
- }
165
- get data() {
166
- return this.delegate.data;
167
- }
168
- destroy() {
169
- this.replay = null;
170
- this.delegate.destroy();
171
- }
172
- createElement(name, namespace) {
173
- return this.delegate.createElement(name, namespace);
174
- }
175
- createComment(value) {
176
- return this.delegate.createComment(value);
177
- }
178
- createText(value) {
179
- return this.delegate.createText(value);
180
- }
181
- get destroyNode() {
182
- return this.delegate.destroyNode;
183
- }
184
- appendChild(parent, newChild) {
185
- this.delegate.appendChild(parent, newChild);
186
- }
187
- insertBefore(parent, newChild, refChild, isMove) {
188
- this.delegate.insertBefore(parent, newChild, refChild, isMove);
189
- }
190
- removeChild(parent, oldChild, isHostElement) {
191
- this.delegate.removeChild(parent, oldChild, isHostElement);
192
- }
193
- selectRootElement(selectorOrNode, preserveContent) {
194
- return this.delegate.selectRootElement(selectorOrNode, preserveContent);
195
- }
196
- parentNode(node) {
197
- return this.delegate.parentNode(node);
198
- }
199
- nextSibling(node) {
200
- return this.delegate.nextSibling(node);
201
- }
202
- setAttribute(el, name, value, namespace) {
203
- this.delegate.setAttribute(el, name, value, namespace);
204
- }
205
- removeAttribute(el, name, namespace) {
206
- this.delegate.removeAttribute(el, name, namespace);
207
- }
208
- addClass(el, name) {
209
- this.delegate.addClass(el, name);
210
- }
211
- removeClass(el, name) {
212
- this.delegate.removeClass(el, name);
213
- }
214
- setStyle(el, style, value, flags) {
215
- this.delegate.setStyle(el, style, value, flags);
216
- }
217
- removeStyle(el, style, flags) {
218
- this.delegate.removeStyle(el, style, flags);
219
- }
220
- setProperty(el, name, value) {
221
- // We need to keep track of animation properties set on default renderer
222
- // So we can also set them also on the animation renderer
223
- if (this.shouldReplay(name)) {
224
- this.replay.push((renderer) => renderer.setProperty(el, name, value));
225
- }
226
- this.delegate.setProperty(el, name, value);
227
- }
228
- setValue(node, value) {
229
- this.delegate.setValue(node, value);
230
- }
231
- listen(target, eventName, callback, options) {
232
- // We need to keep track of animation events registred by the default renderer
233
- // So we can also register them against the animation renderer
234
- if (this.shouldReplay(eventName)) {
235
- this.replay.push((renderer) => renderer.listen(target, eventName, callback, options));
236
- }
237
- return this.delegate.listen(target, eventName, callback, options);
238
- }
239
- shouldReplay(propOrEventName) {
240
- //`null` indicates that we no longer need to collect events and properties
241
- return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);
242
- }
243
- }
244
- /**
245
- * Provides a custom scheduler function for the async loading of the animation package.
246
- *
247
- * Private token for investigation purposes
248
- */
249
- const ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN = new InjectionToken(ngDevMode ? 'async_animation_loading_scheduler_fn' : '');
250
-
251
- /**
252
- * Returns the set of dependency-injection providers
253
- * to enable animations in an application. See [animations guide](guide/animations)
254
- * to learn more about animations in Angular.
255
- *
256
- * When you use this function instead of the eager `provideAnimations()`, animations won't be
257
- * rendered until the renderer is loaded.
258
- *
259
- * @usageNotes
260
- *
261
- * The function is useful when you want to enable animations in an application
262
- * bootstrapped using the `bootstrapApplication` function. In this scenario there
263
- * is no need to import the `BrowserAnimationsModule` NgModule at all, just add
264
- * providers returned by this function to the `providers` list as show below.
265
- *
266
- * ```ts
267
- * bootstrapApplication(RootComponent, {
268
- * providers: [
269
- * provideAnimationsAsync()
270
- * ]
271
- * });
272
- * ```
273
- *
274
- * @param type pass `'noop'` as argument to disable animations.
275
- *
276
- * @publicApi
277
- *
278
- * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23
279
- */
280
- function provideAnimationsAsync(type = 'animations') {
281
- _performanceMarkFeature('NgAsyncAnimations');
282
- // Animations don't work on the server so we switch them over to no-op automatically.
283
- if (typeof ngServerMode !== 'undefined' && ngServerMode) {
284
- type = 'noop';
285
- }
286
- return makeEnvironmentProviders([
287
- {
288
- provide: RendererFactory2,
289
- useFactory: (doc, renderer, zone) => {
290
- return new AsyncAnimationRendererFactory(doc, renderer, zone, type);
291
- },
292
- deps: [DOCUMENT, DomRendererFactory2, NgZone],
293
- },
294
- {
295
- provide: ANIMATION_MODULE_TYPE,
296
- useValue: type === 'noop' ? 'NoopAnimations' : 'BrowserAnimations',
297
- },
298
- ]);
299
- }
300
-
301
- export { provideAnimationsAsync, ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN, AsyncAnimationRendererFactory as ɵAsyncAnimationRendererFactory };
302
- //# sourceMappingURL=async.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async.mjs","sources":["../../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/platform-browser/animations/async/src/async_animation_renderer.ts","../../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/platform-browser/animations/async/src/providers.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ɵAnimationEngine as AnimationEngine,\n ɵAnimationRenderer as AnimationRenderer,\n ɵAnimationRendererFactory as AnimationRendererFactory,\n} from '@angular/animations/browser';\nimport {\n ɵAnimationRendererType as AnimationRendererType,\n ɵChangeDetectionScheduler as ChangeDetectionScheduler,\n inject,\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n ɵNotificationSource as NotificationSource,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n RendererStyleFlags2,\n RendererType2,\n ɵRuntimeError as RuntimeError,\n type ListenerOptions,\n} from '@angular/core';\nimport {ɵRuntimeErrorCode as RuntimeErrorCode} from '../../../index';\n\nconst ANIMATION_PREFIX = '@';\n\n@Injectable()\nexport class AsyncAnimationRendererFactory implements OnDestroy, RendererFactory2 {\n private _rendererFactoryPromise: Promise<AnimationRendererFactory> | null = null;\n private scheduler: ChangeDetectionScheduler | null = null;\n private readonly injector = inject(Injector);\n private readonly loadingSchedulerFn = inject(ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN, {\n optional: true,\n });\n private _engine?: AnimationEngine;\n\n /**\n *\n * @param moduleImpl allows to provide a mock implmentation (or will load the animation module)\n */\n constructor(\n private doc: Document,\n private delegate: RendererFactory2,\n private zone: NgZone,\n private animationType: 'animations' | 'noop',\n private moduleImpl?: Promise<{\n ɵcreateEngine: (type: 'animations' | 'noop', doc: Document) => AnimationEngine;\n ɵAnimationRendererFactory: typeof AnimationRendererFactory;\n }>,\n ) {}\n\n /** @docs-private */\n ngOnDestroy(): void {\n // When the root view is removed, the renderer defers the actual work to the\n // `TransitionAnimationEngine` to do this, and the `TransitionAnimationEngine` doesn't actually\n // remove the DOM node, but just calls `markElementAsRemoved()`. The actual DOM node is not\n // removed until `TransitionAnimationEngine` \"flushes\".\n // Note: we already flush on destroy within the `InjectableAnimationEngine`. The injectable\n // engine is not provided when async animations are used.\n this._engine?.flush();\n }\n\n /**\n * @internal\n */\n private loadImpl(): Promise<AnimationRendererFactory> {\n // Note on the `.then(m => m)` part below: Closure compiler optimizations in g3 require\n // `.then` to be present for a dynamic import (or an import should be `await`ed) to detect\n // the set of imported symbols.\n const loadFn = () => this.moduleImpl ?? import('@angular/animations/browser').then((m) => m);\n\n let moduleImplPromise: typeof this.moduleImpl;\n if (this.loadingSchedulerFn) {\n moduleImplPromise = this.loadingSchedulerFn(loadFn);\n } else {\n moduleImplPromise = loadFn();\n }\n\n return moduleImplPromise\n .catch((e) => {\n throw new RuntimeError(\n RuntimeErrorCode.ANIMATION_RENDERER_ASYNC_LOADING_FAILURE,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Async loading for animations package was ' +\n 'enabled, but loading failed. Angular falls back to using regular rendering. ' +\n \"No animations will be displayed and their styles won't be applied.\",\n );\n })\n .then(({ɵcreateEngine, ɵAnimationRendererFactory}) => {\n // We can't create the renderer yet because we might need the hostElement and the type\n // Both are provided in createRenderer().\n this._engine = ɵcreateEngine(this.animationType, this.doc);\n const rendererFactory = new ɵAnimationRendererFactory(\n this.delegate,\n this._engine,\n this.zone,\n );\n this.delegate = rendererFactory;\n return rendererFactory;\n });\n }\n\n /**\n * This method is delegating the renderer creation to the factories.\n * It uses default factory while the animation factory isn't loaded\n * and will rely on the animation factory once it is loaded.\n *\n * Calling this method will trigger as side effect the loading of the animation module\n * if the renderered component uses animations.\n */\n createRenderer(hostElement: any, rendererType: RendererType2): Renderer2 {\n const renderer = this.delegate.createRenderer(hostElement, rendererType);\n\n if ((renderer as AnimationRenderer).ɵtype === AnimationRendererType.Regular) {\n // The factory is already loaded, this is an animation renderer\n return renderer;\n }\n\n // We need to prevent the DomRenderer to throw an error because of synthetic properties\n if (typeof (renderer as any).throwOnSyntheticProps === 'boolean') {\n (renderer as any).throwOnSyntheticProps = false;\n }\n\n // Using a dynamic renderer to switch the renderer implementation once the module is loaded.\n const dynamicRenderer = new DynamicDelegationRenderer(renderer);\n\n // Kick off the module loading if the component uses animations but the module hasn't been\n // loaded yet.\n if (rendererType?.data?.['animation'] && !this._rendererFactoryPromise) {\n this._rendererFactoryPromise = this.loadImpl();\n }\n\n this._rendererFactoryPromise\n ?.then((animationRendererFactory) => {\n const animationRenderer = animationRendererFactory.createRenderer(\n hostElement,\n rendererType,\n );\n dynamicRenderer.use(animationRenderer);\n this.scheduler ??= this.injector.get(ChangeDetectionScheduler, null, {optional: true});\n this.scheduler?.notify(NotificationSource.AsyncAnimationsLoaded);\n })\n .catch((e) => {\n // Permanently use regular renderer when loading fails.\n dynamicRenderer.use(renderer);\n });\n\n return dynamicRenderer;\n }\n\n begin(): void {\n this.delegate.begin?.();\n }\n\n end(): void {\n this.delegate.end?.();\n }\n\n whenRenderingDone?(): Promise<any> {\n return this.delegate.whenRenderingDone?.() ?? Promise.resolve();\n }\n\n /**\n * Used during HMR to clear any cached data about a component.\n * @param componentId ID of the component that is being replaced.\n */\n protected componentReplaced(componentId: string) {\n // Flush the engine since the renderer destruction waits for animations to be done.\n this._engine?.flush();\n (this.delegate as {componentReplaced?: (id: string) => void}).componentReplaced?.(componentId);\n }\n}\n\n/**\n * The class allows to dynamicly switch between different renderer implementations\n * by changing the delegate renderer.\n */\nexport class DynamicDelegationRenderer implements Renderer2 {\n // List of callbacks that need to be replayed on the animation renderer once its loaded\n private replay: ((renderer: Renderer2) => void)[] | null = [];\n readonly ɵtype = AnimationRendererType.Delegated;\n\n constructor(private delegate: Renderer2) {}\n\n use(impl: Renderer2) {\n this.delegate = impl;\n\n if (this.replay !== null) {\n // Replay queued actions using the animation renderer to apply\n // all events and properties collected while loading was in progress.\n for (const fn of this.replay) {\n fn(impl);\n }\n // Set to `null` to indicate that the queue was processed\n // and we no longer need to collect events and properties.\n this.replay = null;\n }\n }\n\n get data(): {[key: string]: any} {\n return this.delegate.data;\n }\n\n destroy(): void {\n this.replay = null;\n this.delegate.destroy();\n }\n\n createElement(name: string, namespace?: string | null) {\n return this.delegate.createElement(name, namespace);\n }\n\n createComment(value: string): void {\n return this.delegate.createComment(value);\n }\n\n createText(value: string): any {\n return this.delegate.createText(value);\n }\n\n get destroyNode(): ((node: any) => void) | null {\n return this.delegate.destroyNode;\n }\n\n appendChild(parent: any, newChild: any): void {\n this.delegate.appendChild(parent, newChild);\n }\n\n insertBefore(parent: any, newChild: any, refChild: any, isMove?: boolean | undefined): void {\n this.delegate.insertBefore(parent, newChild, refChild, isMove);\n }\n\n removeChild(parent: any, oldChild: any, isHostElement?: boolean | undefined): void {\n this.delegate.removeChild(parent, oldChild, isHostElement);\n }\n\n selectRootElement(selectorOrNode: any, preserveContent?: boolean | undefined): any {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n\n parentNode(node: any): any {\n return this.delegate.parentNode(node);\n }\n\n nextSibling(node: any): any {\n return this.delegate.nextSibling(node);\n }\n\n setAttribute(el: any, name: string, value: string, namespace?: string | null | undefined): void {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n\n removeAttribute(el: any, name: string, namespace?: string | null | undefined): void {\n this.delegate.removeAttribute(el, name, namespace);\n }\n\n addClass(el: any, name: string): void {\n this.delegate.addClass(el, name);\n }\n\n removeClass(el: any, name: string): void {\n this.delegate.removeClass(el, name);\n }\n\n setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2 | undefined): void {\n this.delegate.setStyle(el, style, value, flags);\n }\n\n removeStyle(el: any, style: string, flags?: RendererStyleFlags2 | undefined): void {\n this.delegate.removeStyle(el, style, flags);\n }\n\n setProperty(el: any, name: string, value: any): void {\n // We need to keep track of animation properties set on default renderer\n // So we can also set them also on the animation renderer\n if (this.shouldReplay(name)) {\n this.replay!.push((renderer: Renderer2) => renderer.setProperty(el, name, value));\n }\n this.delegate.setProperty(el, name, value);\n }\n\n setValue(node: any, value: string): void {\n this.delegate.setValue(node, value);\n }\n\n listen(\n target: any,\n eventName: string,\n callback: (event: any) => boolean | void,\n options?: ListenerOptions,\n ): () => void {\n // We need to keep track of animation events registred by the default renderer\n // So we can also register them against the animation renderer\n if (this.shouldReplay(eventName)) {\n this.replay!.push((renderer: Renderer2) =>\n renderer.listen(target, eventName, callback, options),\n );\n }\n return this.delegate.listen(target, eventName, callback, options);\n }\n\n private shouldReplay(propOrEventName: string): boolean {\n //`null` indicates that we no longer need to collect events and properties\n return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);\n }\n}\n\n/**\n * Provides a custom scheduler function for the async loading of the animation package.\n *\n * Private token for investigation purposes\n */\nexport const ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN = new InjectionToken<<T>(loadFn: () => T) => T>(\n ngDevMode ? 'async_animation_loading_scheduler_fn' : '',\n);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n ANIMATION_MODULE_TYPE,\n EnvironmentProviders,\n makeEnvironmentProviders,\n NgZone,\n RendererFactory2,\n ɵperformanceMarkFeature as performanceMarkFeature,\n} from '@angular/core';\nimport {ɵDomRendererFactory2 as DomRendererFactory2} from '../../../index';\n\nimport {AsyncAnimationRendererFactory} from './async_animation_renderer';\n\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * When you use this function instead of the eager `provideAnimations()`, animations won't be\n * rendered until the renderer is loaded.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimationsAsync()\n * ]\n * });\n * ```\n *\n * @param type pass `'noop'` as argument to disable animations.\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport function provideAnimationsAsync(\n type: 'animations' | 'noop' = 'animations',\n): EnvironmentProviders {\n performanceMarkFeature('NgAsyncAnimations');\n\n // Animations don't work on the server so we switch them over to no-op automatically.\n if (typeof ngServerMode !== 'undefined' && ngServerMode) {\n type = 'noop';\n }\n\n return makeEnvironmentProviders([\n {\n provide: RendererFactory2,\n useFactory: (doc: Document, renderer: DomRendererFactory2, zone: NgZone) => {\n return new AsyncAnimationRendererFactory(doc, renderer, zone, type);\n },\n deps: [DOCUMENT, DomRendererFactory2, NgZone],\n },\n {\n provide: ANIMATION_MODULE_TYPE,\n useValue: type === 'noop' ? 'NoopAnimations' : 'BrowserAnimations',\n },\n ]);\n}\n"],"names":["RuntimeError","ChangeDetectionScheduler","performanceMarkFeature"],"mappings":"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"}