@angular/animations 21.0.0-next.9 → 21.0.0-rc.1

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,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0-next.9
2
+ * @license Angular v21.0.0-rc.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -9,203 +9,195 @@ import { inject, Injectable, ANIMATION_MODULE_TYPE, ɵRuntimeError as _RuntimeEr
9
9
  import { sequence } from './_private_export-chunk.mjs';
10
10
  export { AUTO_STYLE, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE } from './_private_export-chunk.mjs';
11
11
 
12
- /**
13
- * An injectable service that produces an animation sequence programmatically within an
14
- * Angular component or directive.
15
- * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.
16
- *
17
- * @usageNotes
18
- *
19
- * To use this service, add it to your component or directive as a dependency.
20
- * The service is instantiated along with your component.
21
- *
22
- * Apps do not typically need to create their own animation players, but if you
23
- * do need to, follow these steps:
24
- *
25
- * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method
26
- * to create a programmatic animation. The method returns an `AnimationFactory` instance.
27
- *
28
- * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.
29
- *
30
- * 3. Use the player object to control the animation programmatically.
31
- *
32
- * For example:
33
- *
34
- * ```ts
35
- * // import the service from BrowserAnimationsModule
36
- * import {AnimationBuilder} from '@angular/animations';
37
- * // require the service as a dependency
38
- * class MyCmp {
39
- * constructor(private _builder: AnimationBuilder) {}
40
- *
41
- * makeAnimation(element: any) {
42
- * // first define a reusable animation
43
- * const myAnimation = this._builder.build([
44
- * style({ width: 0 }),
45
- * animate(1000, style({ width: '100px' }))
46
- * ]);
47
- *
48
- * // use the returned factory object to create a player
49
- * const player = myAnimation.create(element);
50
- *
51
- * player.play();
52
- * }
53
- * }
54
- * ```
55
- *
56
- * @publicApi
57
- *
58
- * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23
59
- */
60
12
  class AnimationBuilder {
61
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: AnimationBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
62
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: AnimationBuilder, providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) });
63
- }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: AnimationBuilder, decorators: [{
65
- type: Injectable,
66
- args: [{ providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) }]
67
- }] });
68
- /**
69
- * A factory object returned from the
70
- * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>
71
- * method.
72
- *
73
- * @publicApi
74
- *
75
- * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23
76
- */
77
- class AnimationFactory {
13
+ static ɵfac = i0.ɵɵngDeclareFactory({
14
+ minVersion: "12.0.0",
15
+ version: "21.0.0-rc.1",
16
+ ngImport: i0,
17
+ type: AnimationBuilder,
18
+ deps: [],
19
+ target: i0.ɵɵFactoryTarget.Injectable
20
+ });
21
+ static ɵprov = i0.ɵɵngDeclareInjectable({
22
+ minVersion: "12.0.0",
23
+ version: "21.0.0-rc.1",
24
+ ngImport: i0,
25
+ type: AnimationBuilder,
26
+ providedIn: 'root',
27
+ useFactory: () => inject(BrowserAnimationBuilder)
28
+ });
78
29
  }
30
+ i0.ɵɵngDeclareClassMetadata({
31
+ minVersion: "12.0.0",
32
+ version: "21.0.0-rc.1",
33
+ ngImport: i0,
34
+ type: AnimationBuilder,
35
+ decorators: [{
36
+ type: Injectable,
37
+ args: [{
38
+ providedIn: 'root',
39
+ useFactory: () => inject(BrowserAnimationBuilder)
40
+ }]
41
+ }]
42
+ });
43
+ class AnimationFactory {}
79
44
  class BrowserAnimationBuilder extends AnimationBuilder {
80
- animationModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });
81
- _nextAnimationId = 0;
82
- _renderer;
83
- constructor(rootRenderer, doc) {
84
- super();
85
- const typeData = {
86
- id: '0',
87
- encapsulation: ViewEncapsulation.None,
88
- styles: [],
89
- data: { animation: [] },
90
- };
91
- this._renderer = rootRenderer.createRenderer(doc.body, typeData);
92
- if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {
93
- // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder
94
- throw new _RuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
95
- 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' +
96
- 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');
97
- }
98
- }
99
- build(animation) {
100
- const id = this._nextAnimationId;
101
- this._nextAnimationId++;
102
- const entry = Array.isArray(animation) ? sequence(animation) : animation;
103
- issueAnimationCommand(this._renderer, null, id, 'register', [entry]);
104
- return new BrowserAnimationFactory(id, this._renderer);
105
- }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
107
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: BrowserAnimationBuilder, providedIn: 'root' });
45
+ animationModuleType = inject(ANIMATION_MODULE_TYPE, {
46
+ optional: true
47
+ });
48
+ _nextAnimationId = 0;
49
+ _renderer;
50
+ constructor(rootRenderer, doc) {
51
+ super();
52
+ const typeData = {
53
+ id: '0',
54
+ encapsulation: ViewEncapsulation.None,
55
+ styles: [],
56
+ data: {
57
+ animation: []
58
+ }
59
+ };
60
+ this._renderer = rootRenderer.createRenderer(doc.body, typeData);
61
+ if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {
62
+ throw new _RuntimeError(3600, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' + 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');
63
+ }
64
+ }
65
+ build(animation) {
66
+ const id = this._nextAnimationId;
67
+ this._nextAnimationId++;
68
+ const entry = Array.isArray(animation) ? sequence(animation) : animation;
69
+ issueAnimationCommand(this._renderer, null, id, 'register', [entry]);
70
+ return new BrowserAnimationFactory(id, this._renderer);
71
+ }
72
+ static ɵfac = i0.ɵɵngDeclareFactory({
73
+ minVersion: "12.0.0",
74
+ version: "21.0.0-rc.1",
75
+ ngImport: i0,
76
+ type: BrowserAnimationBuilder,
77
+ deps: [{
78
+ token: i0.RendererFactory2
79
+ }, {
80
+ token: DOCUMENT
81
+ }],
82
+ target: i0.ɵɵFactoryTarget.Injectable
83
+ });
84
+ static ɵprov = i0.ɵɵngDeclareInjectable({
85
+ minVersion: "12.0.0",
86
+ version: "21.0.0-rc.1",
87
+ ngImport: i0,
88
+ type: BrowserAnimationBuilder,
89
+ providedIn: 'root'
90
+ });
108
91
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.9", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{
110
- type: Injectable,
111
- args: [{ providedIn: 'root' }]
112
- }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{
113
- type: Inject,
114
- args: [DOCUMENT]
115
- }] }] });
92
+ i0.ɵɵngDeclareClassMetadata({
93
+ minVersion: "12.0.0",
94
+ version: "21.0.0-rc.1",
95
+ ngImport: i0,
96
+ type: BrowserAnimationBuilder,
97
+ decorators: [{
98
+ type: Injectable,
99
+ args: [{
100
+ providedIn: 'root'
101
+ }]
102
+ }],
103
+ ctorParameters: () => [{
104
+ type: i0.RendererFactory2
105
+ }, {
106
+ type: Document,
107
+ decorators: [{
108
+ type: Inject,
109
+ args: [DOCUMENT]
110
+ }]
111
+ }]
112
+ });
116
113
  class BrowserAnimationFactory extends AnimationFactory {
117
- _id;
118
- _renderer;
119
- constructor(_id, _renderer) {
120
- super();
121
- this._id = _id;
122
- this._renderer = _renderer;
123
- }
124
- create(element, options) {
125
- return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);
126
- }
114
+ _id;
115
+ _renderer;
116
+ constructor(_id, _renderer) {
117
+ super();
118
+ this._id = _id;
119
+ this._renderer = _renderer;
120
+ }
121
+ create(element, options) {
122
+ return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);
123
+ }
127
124
  }
128
125
  class RendererAnimationPlayer {
129
- id;
130
- element;
131
- _renderer;
132
- parentPlayer = null;
133
- _started = false;
134
- constructor(id, element, options, _renderer) {
135
- this.id = id;
136
- this.element = element;
137
- this._renderer = _renderer;
138
- this._command('create', options);
139
- }
140
- _listen(eventName, callback) {
141
- return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);
142
- }
143
- _command(command, ...args) {
144
- issueAnimationCommand(this._renderer, this.element, this.id, command, args);
145
- }
146
- onDone(fn) {
147
- this._listen('done', fn);
148
- }
149
- onStart(fn) {
150
- this._listen('start', fn);
151
- }
152
- onDestroy(fn) {
153
- this._listen('destroy', fn);
154
- }
155
- init() {
156
- this._command('init');
157
- }
158
- hasStarted() {
159
- return this._started;
160
- }
161
- play() {
162
- this._command('play');
163
- this._started = true;
164
- }
165
- pause() {
166
- this._command('pause');
167
- }
168
- restart() {
169
- this._command('restart');
170
- }
171
- finish() {
172
- this._command('finish');
173
- }
174
- destroy() {
175
- this._command('destroy');
176
- }
177
- reset() {
178
- this._command('reset');
179
- this._started = false;
180
- }
181
- setPosition(p) {
182
- this._command('setPosition', p);
183
- }
184
- getPosition() {
185
- return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;
186
- }
187
- totalTime = 0;
126
+ id;
127
+ element;
128
+ _renderer;
129
+ parentPlayer = null;
130
+ _started = false;
131
+ constructor(id, element, options, _renderer) {
132
+ this.id = id;
133
+ this.element = element;
134
+ this._renderer = _renderer;
135
+ this._command('create', options);
136
+ }
137
+ _listen(eventName, callback) {
138
+ return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);
139
+ }
140
+ _command(command, ...args) {
141
+ issueAnimationCommand(this._renderer, this.element, this.id, command, args);
142
+ }
143
+ onDone(fn) {
144
+ this._listen('done', fn);
145
+ }
146
+ onStart(fn) {
147
+ this._listen('start', fn);
148
+ }
149
+ onDestroy(fn) {
150
+ this._listen('destroy', fn);
151
+ }
152
+ init() {
153
+ this._command('init');
154
+ }
155
+ hasStarted() {
156
+ return this._started;
157
+ }
158
+ play() {
159
+ this._command('play');
160
+ this._started = true;
161
+ }
162
+ pause() {
163
+ this._command('pause');
164
+ }
165
+ restart() {
166
+ this._command('restart');
167
+ }
168
+ finish() {
169
+ this._command('finish');
170
+ }
171
+ destroy() {
172
+ this._command('destroy');
173
+ }
174
+ reset() {
175
+ this._command('reset');
176
+ this._started = false;
177
+ }
178
+ setPosition(p) {
179
+ this._command('setPosition', p);
180
+ }
181
+ getPosition() {
182
+ return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;
183
+ }
184
+ totalTime = 0;
188
185
  }
189
186
  function issueAnimationCommand(renderer, element, id, command, args) {
190
- renderer.setProperty(element, `@@${id}:${command}`, args);
187
+ renderer.setProperty(element, `@@${id}:${command}`, args);
191
188
  }
192
- /**
193
- * The following 2 methods cannot reference their correct types (AnimationRenderer &
194
- * DynamicDelegationRenderer) since this would introduce a import cycle.
195
- */
196
189
  function unwrapAnimationRenderer(renderer) {
197
- const type = renderer.ɵtype;
198
- if (type === 0 /* AnimationRendererType.Regular */) {
199
- return renderer;
200
- }
201
- else if (type === 1 /* AnimationRendererType.Delegated */) {
202
- return renderer.animationRenderer;
203
- }
204
- return null;
190
+ const type = renderer.ɵtype;
191
+ if (type === 0) {
192
+ return renderer;
193
+ } else if (type === 1) {
194
+ return renderer.animationRenderer;
195
+ }
196
+ return null;
205
197
  }
206
198
  function isAnimationRenderer(renderer) {
207
- const type = renderer.ɵtype;
208
- return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;
199
+ const type = renderer.ɵtype;
200
+ return type === 0 || type === 1;
209
201
  }
210
202
 
211
203
  export { AnimationBuilder, AnimationFactory, sequence, BrowserAnimationBuilder as ɵBrowserAnimationBuilder };
@@ -1 +1 @@
1
- {"version":3,"file":"animations.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/animations/src/animation_builder.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 */\nimport {\n ANIMATION_MODULE_TYPE,\n DOCUMENT,\n Inject,\n inject,\n Injectable,\n Renderer2,\n RendererFactory2,\n RendererType2,\n ViewEncapsulation,\n ɵAnimationRendererType as AnimationRendererType,\n ɵRuntimeError as RuntimeError,\n} from '@angular/core';\n\nimport {AnimationMetadata, AnimationOptions, sequence} from './animation_metadata';\nimport {RuntimeErrorCode} from './errors';\nimport {AnimationPlayer} from './players/animation_player';\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\n@Injectable({providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder)})\nexport abstract class AnimationBuilder {\n /**\n * Builds a factory for producing a defined animation.\n * @param animation A reusable animation definition.\n * @returns A factory object that can create a player for the defined animation.\n * @see {@link animate}\n */\n abstract build(animation: AnimationMetadata | AnimationMetadata[]): AnimationFactory;\n}\n\n/**\n * A factory object returned from the\n * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method.\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport abstract class AnimationFactory {\n /**\n * Creates an `AnimationPlayer` instance for the reusable animation defined by\n * the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method that created this factory and attaches the new player a DOM element.\n *\n * @param element The DOM element to which to attach the player.\n * @param options A set of options that can include a time delay and\n * additional developer-defined parameters.\n */\n abstract create(element: any, options?: AnimationOptions): AnimationPlayer;\n}\n\n@Injectable({providedIn: 'root'})\nexport class BrowserAnimationBuilder extends AnimationBuilder {\n private animationModuleType = inject(ANIMATION_MODULE_TYPE, {optional: true});\n private _nextAnimationId = 0;\n private _renderer: Renderer2;\n\n constructor(rootRenderer: RendererFactory2, @Inject(DOCUMENT) doc: Document) {\n super();\n const typeData: RendererType2 = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: {animation: []},\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n\n throw new RuntimeError(\n RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' +\n 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.',\n );\n }\n }\n\n override build(animation: AnimationMetadata | AnimationMetadata[]): AnimationFactory {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\n\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(\n private _id: number,\n private _renderer: Renderer2,\n ) {\n super();\n }\n\n override create(element: any, options?: AnimationOptions): AnimationPlayer {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\n\nclass RendererAnimationPlayer implements AnimationPlayer {\n public parentPlayer: AnimationPlayer | null = null;\n private _started = false;\n\n constructor(\n public id: number,\n public element: any,\n options: AnimationOptions,\n private _renderer: Renderer2,\n ) {\n this._command('create', options);\n }\n\n private _listen(eventName: string, callback: (event: any) => any): () => void {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n\n private _command(command: string, ...args: any[]): void {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n\n onDone(fn: () => void): void {\n this._listen('done', fn);\n }\n\n onStart(fn: () => void): void {\n this._listen('start', fn);\n }\n\n onDestroy(fn: () => void): void {\n this._listen('destroy', fn);\n }\n\n init(): void {\n this._command('init');\n }\n\n hasStarted(): boolean {\n return this._started;\n }\n\n play(): void {\n this._command('play');\n this._started = true;\n }\n\n pause(): void {\n this._command('pause');\n }\n\n restart(): void {\n this._command('restart');\n }\n\n finish(): void {\n this._command('finish');\n }\n\n destroy(): void {\n this._command('destroy');\n }\n\n reset(): void {\n this._command('reset');\n this._started = false;\n }\n\n setPosition(p: number): void {\n this._command('setPosition', p);\n }\n\n getPosition(): number {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n\n public totalTime = 0;\n}\n\nfunction issueAnimationCommand(\n renderer: Renderer2,\n element: any,\n id: number,\n command: string,\n args: any[],\n): void {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\n\nfunction unwrapAnimationRenderer(\n renderer: Renderer2,\n): {engine: {players: AnimationPlayer[]}} | null {\n const type = (renderer as unknown as {ɵtype: AnimationRendererType}).ɵtype;\n if (type === AnimationRendererType.Regular) {\n return renderer as any;\n } else if (type === AnimationRendererType.Delegated) {\n return (renderer as any).animationRenderer;\n }\n\n return null;\n}\n\nfunction isAnimationRenderer(renderer: Renderer2): boolean {\n const type = (renderer as unknown as {ɵtype: AnimationRendererType}).ɵtype;\n return type === AnimationRendererType.Regular || type === AnimationRendererType.Delegated;\n}\n"],"names":["RuntimeError"],"mappings":"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"}
1
+ {"version":3,"file":"animations.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/animations/src/animation_builder.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 */\nimport {\n ANIMATION_MODULE_TYPE,\n DOCUMENT,\n Inject,\n inject,\n Injectable,\n Renderer2,\n RendererFactory2,\n RendererType2,\n ViewEncapsulation,\n ɵAnimationRendererType as AnimationRendererType,\n ɵRuntimeError as RuntimeError,\n} from '@angular/core';\n\nimport {AnimationMetadata, AnimationOptions, sequence} from './animation_metadata';\nimport {RuntimeErrorCode} from './errors';\nimport {AnimationPlayer} from './players/animation_player';\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\n@Injectable({providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder)})\nexport abstract class AnimationBuilder {\n /**\n * Builds a factory for producing a defined animation.\n * @param animation A reusable animation definition.\n * @returns A factory object that can create a player for the defined animation.\n * @see {@link animate}\n */\n abstract build(animation: AnimationMetadata | AnimationMetadata[]): AnimationFactory;\n}\n\n/**\n * A factory object returned from the\n * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method.\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport abstract class AnimationFactory {\n /**\n * Creates an `AnimationPlayer` instance for the reusable animation defined by\n * the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method that created this factory and attaches the new player a DOM element.\n *\n * @param element The DOM element to which to attach the player.\n * @param options A set of options that can include a time delay and\n * additional developer-defined parameters.\n */\n abstract create(element: any, options?: AnimationOptions): AnimationPlayer;\n}\n\n@Injectable({providedIn: 'root'})\nexport class BrowserAnimationBuilder extends AnimationBuilder {\n private animationModuleType = inject(ANIMATION_MODULE_TYPE, {optional: true});\n private _nextAnimationId = 0;\n private _renderer: Renderer2;\n\n constructor(rootRenderer: RendererFactory2, @Inject(DOCUMENT) doc: Document) {\n super();\n const typeData: RendererType2 = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: {animation: []},\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n\n throw new RuntimeError(\n RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' +\n 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.',\n );\n }\n }\n\n override build(animation: AnimationMetadata | AnimationMetadata[]): AnimationFactory {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\n\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(\n private _id: number,\n private _renderer: Renderer2,\n ) {\n super();\n }\n\n override create(element: any, options?: AnimationOptions): AnimationPlayer {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\n\nclass RendererAnimationPlayer implements AnimationPlayer {\n public parentPlayer: AnimationPlayer | null = null;\n private _started = false;\n\n constructor(\n public id: number,\n public element: any,\n options: AnimationOptions,\n private _renderer: Renderer2,\n ) {\n this._command('create', options);\n }\n\n private _listen(eventName: string, callback: (event: any) => any): () => void {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n\n private _command(command: string, ...args: any[]): void {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n\n onDone(fn: () => void): void {\n this._listen('done', fn);\n }\n\n onStart(fn: () => void): void {\n this._listen('start', fn);\n }\n\n onDestroy(fn: () => void): void {\n this._listen('destroy', fn);\n }\n\n init(): void {\n this._command('init');\n }\n\n hasStarted(): boolean {\n return this._started;\n }\n\n play(): void {\n this._command('play');\n this._started = true;\n }\n\n pause(): void {\n this._command('pause');\n }\n\n restart(): void {\n this._command('restart');\n }\n\n finish(): void {\n this._command('finish');\n }\n\n destroy(): void {\n this._command('destroy');\n }\n\n reset(): void {\n this._command('reset');\n this._started = false;\n }\n\n setPosition(p: number): void {\n this._command('setPosition', p);\n }\n\n getPosition(): number {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n\n public totalTime = 0;\n}\n\nfunction issueAnimationCommand(\n renderer: Renderer2,\n element: any,\n id: number,\n command: string,\n args: any[],\n): void {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\n\nfunction unwrapAnimationRenderer(\n renderer: Renderer2,\n): {engine: {players: AnimationPlayer[]}} | null {\n const type = (renderer as unknown as {ɵtype: AnimationRendererType}).ɵtype;\n if (type === AnimationRendererType.Regular) {\n return renderer as any;\n } else if (type === AnimationRendererType.Delegated) {\n return (renderer as any).animationRenderer;\n }\n\n return null;\n}\n\nfunction isAnimationRenderer(renderer: Renderer2): boolean {\n const type = (renderer as unknown as {ɵtype: AnimationRendererType}).ɵtype;\n return type === AnimationRendererType.Regular || type === AnimationRendererType.Delegated;\n}\n"],"names":["AnimationBuilder","deps","target","i0","ɵɵFactoryTarget","Injectable","providedIn","useFactory","inject","BrowserAnimationBuilder","decorators","args","AnimationFactory","animationModuleType","ANIMATION_MODULE_TYPE","optional","_nextAnimationId","_renderer","constructor","rootRenderer","doc","typeData","id","encapsulation","ViewEncapsulation","None","styles","data","animation","createRenderer","body","isAnimationRenderer","RuntimeError","ngDevMode","build","entry","Array","isArray","sequence","issueAnimationCommand","BrowserAnimationFactory","ɵfac","ɵɵngDeclareFactory","minVersion","version","ngImport","type","DOCUMENT","ɵprov","ɵɵngDeclareInjectable","Inject","_id","create","element","options","RendererAnimationPlayer","parentPlayer","_started","_command","_listen","eventName","callback","listen","command","onDone","fn","onStart","onDestroy","init","hasStarted","play","pause","restart","finish","destroy","reset","setPosition","p","getPosition","unwrapAnimationRenderer","engine","players","totalTime","renderer","setProperty","ɵtype","animationRenderer"],"mappings":"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"}