@angular/animations 14.0.0-next.0 → 14.0.0-next.11
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/animations.d.ts +16 -3
- package/browser/browser.d.ts +29 -94
- package/browser/testing/testing.d.ts +10 -15
- package/esm2020/browser/src/dsl/animation.mjs +10 -6
- package/esm2020/browser/src/dsl/animation_ast.mjs +1 -1
- package/esm2020/browser/src/dsl/animation_ast_builder.mjs +80 -70
- package/esm2020/browser/src/dsl/animation_dsl_visitor.mjs +1 -1
- package/esm2020/browser/src/dsl/animation_timeline_builder.mjs +79 -88
- package/esm2020/browser/src/dsl/animation_timeline_instruction.mjs +1 -1
- package/esm2020/browser/src/dsl/animation_transition_expr.mjs +4 -3
- package/esm2020/browser/src/dsl/animation_transition_factory.mjs +29 -18
- package/esm2020/browser/src/dsl/animation_transition_instruction.mjs +8 -1
- package/esm2020/browser/src/dsl/animation_trigger.mjs +9 -9
- package/esm2020/browser/src/dsl/style_normalization/animation_style_normalizer.mjs +1 -1
- package/esm2020/browser/src/dsl/style_normalization/web_animations_style_normalizer.mjs +35 -10
- package/esm2020/browser/src/error_helpers.mjs +135 -0
- package/esm2020/browser/src/errors.mjs +9 -0
- package/esm2020/browser/src/private_export.mjs +4 -6
- package/esm2020/browser/src/render/animation_driver.mjs +8 -5
- package/esm2020/browser/src/render/animation_engine_next.mjs +9 -3
- package/esm2020/browser/src/render/shared.mjs +39 -33
- package/esm2020/browser/src/render/special_cased_styles.mjs +7 -16
- package/esm2020/browser/src/render/timeline_animation_engine.mjs +26 -20
- package/esm2020/browser/src/render/transition_animation_engine.mjs +82 -88
- package/esm2020/browser/src/render/web_animations/animatable_props_set.mjs +214 -0
- package/esm2020/browser/src/render/web_animations/web_animations_driver.mjs +21 -29
- package/esm2020/browser/src/render/web_animations/web_animations_player.mjs +16 -9
- package/esm2020/browser/src/util.mjs +48 -37
- package/esm2020/browser/src/warning_helpers.mjs +38 -0
- package/esm2020/browser/testing/src/mock_animation_driver.mjs +23 -14
- package/esm2020/src/animation_metadata.mjs +10 -2
- package/esm2020/src/animations.mjs +1 -1
- package/esm2020/src/version.mjs +1 -1
- package/fesm2015/animations.mjs +10 -2
- package/fesm2015/animations.mjs.map +1 -1
- package/fesm2015/browser/testing.mjs +859 -15
- package/fesm2015/browser/testing.mjs.map +1 -1
- package/fesm2015/browser.mjs +863 -858
- package/fesm2015/browser.mjs.map +1 -1
- package/fesm2020/animations.mjs +10 -2
- package/fesm2020/animations.mjs.map +1 -1
- package/fesm2020/browser/testing.mjs +859 -15
- package/fesm2020/browser/testing.mjs.map +1 -1
- package/fesm2020/browser.mjs +861 -857
- package/fesm2020/browser.mjs.map +1 -1
- package/package.json +3 -3
- package/esm2020/browser/src/render/css_keyframes/css_keyframes_driver.mjs +0 -121
- package/esm2020/browser/src/render/css_keyframes/css_keyframes_player.mjs +0 -133
- package/esm2020/browser/src/render/css_keyframes/direct_style_player.mjs +0 -51
- package/esm2020/browser/src/render/css_keyframes/element_animation_style_handler.mjs +0 -137
package/animations.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.11
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -993,7 +993,7 @@ export declare class NoopAnimationPlayer implements AnimationPlayer {
|
|
|
993
993
|
* (if their insertion/removal is simply a consequence of that of their parent they
|
|
994
994
|
* should be queried via a different token in their parent's `:enter`/`:leave` transitions).
|
|
995
995
|
*
|
|
996
|
-
* The only elements Angular assumes can enter/leave on their own logic (thus the only
|
|
996
|
+
* The only elements Angular assumes can enter/leave based on their own logic (thus the only
|
|
997
997
|
* ones that can be queried via the `:enter` and `:leave` tokens) are:
|
|
998
998
|
* - Those inserted dynamically (via `ViewContainerRef`)
|
|
999
999
|
* - Those that have a structural directive (which, under the hood, are a subset of the above ones)
|
|
@@ -1006,6 +1006,14 @@ export declare class NoopAnimationPlayer implements AnimationPlayer {
|
|
|
1006
1006
|
*
|
|
1007
1007
|
* </div>
|
|
1008
1008
|
*
|
|
1009
|
+
* <div class="alert is-important">
|
|
1010
|
+
*
|
|
1011
|
+
* There is an exception to what previously mentioned, besides elements entering/leaving based on
|
|
1012
|
+
* their own logic, elements with an animation trigger can always be queried via `:leave` when
|
|
1013
|
+
* their parent is also leaving.
|
|
1014
|
+
*
|
|
1015
|
+
* </div>
|
|
1016
|
+
*
|
|
1009
1017
|
* ### Usage Example
|
|
1010
1018
|
*
|
|
1011
1019
|
* The following example queries for inner elements and animates them
|
|
@@ -1600,10 +1608,15 @@ export declare const ɵPRE_STYLE = "!";
|
|
|
1600
1608
|
|
|
1601
1609
|
|
|
1602
1610
|
/**
|
|
1603
|
-
* Represents a set of CSS styles for use in an animation style.
|
|
1611
|
+
* Represents a set of CSS styles for use in an animation style as a generic.
|
|
1604
1612
|
*/
|
|
1605
1613
|
export declare interface ɵStyleData {
|
|
1606
1614
|
[key: string]: string | number;
|
|
1607
1615
|
}
|
|
1608
1616
|
|
|
1617
|
+
/**
|
|
1618
|
+
* Represents a set of CSS styles for use in an animation style as a Map.
|
|
1619
|
+
*/
|
|
1620
|
+
export declare type ɵStyleDataMap = Map<string, string | number>;
|
|
1621
|
+
|
|
1609
1622
|
export { }
|
package/browser/browser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.11
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -10,6 +10,7 @@ import { AnimationPlayer } from '@angular/animations';
|
|
|
10
10
|
import { AnimationTriggerMetadata } from '@angular/animations';
|
|
11
11
|
import * as i0 from '@angular/core';
|
|
12
12
|
import { ɵStyleData } from '@angular/animations';
|
|
13
|
+
import { ɵStyleDataMap } from '@angular/animations';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* @publicApi
|
|
@@ -17,16 +18,19 @@ import { ɵStyleData } from '@angular/animations';
|
|
|
17
18
|
export declare abstract class AnimationDriver {
|
|
18
19
|
static NOOP: AnimationDriver;
|
|
19
20
|
abstract validateStyleProperty(prop: string): boolean;
|
|
21
|
+
abstract validateAnimatableStyleProperty?: (prop: string) => boolean;
|
|
20
22
|
/**
|
|
21
23
|
* @deprecated No longer in use. Will be removed.
|
|
22
24
|
*/
|
|
23
25
|
abstract matchesElement(element: any, selector: string): boolean;
|
|
24
26
|
abstract containsElement(elm1: any, elm2: any): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Obtains the parent element, if any. `null` is returned if the element does not have a parent.
|
|
29
|
+
*/
|
|
30
|
+
abstract getParentElement(element: unknown): unknown;
|
|
25
31
|
abstract query(element: any, selector: string, multi: boolean): any[];
|
|
26
32
|
abstract computeStyle(element: any, prop: string, defaultValue?: string): string;
|
|
27
|
-
abstract animate(element: any, keyframes:
|
|
28
|
-
[key: string]: string | number;
|
|
29
|
-
}[], duration: number, delay: number, easing?: string | null, previousPlayers?: any[], scrubberAccessRequested?: boolean): any;
|
|
33
|
+
abstract animate(element: any, keyframes: Array<Map<string, string | number>>, duration: number, delay: number, easing?: string | null, previousPlayers?: any[], scrubberAccessRequested?: boolean): any;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
declare interface AnimationEngineInstruction {
|
|
@@ -35,7 +39,7 @@ declare interface AnimationEngineInstruction {
|
|
|
35
39
|
|
|
36
40
|
declare interface AnimationTimelineInstruction extends AnimationEngineInstruction {
|
|
37
41
|
element: any;
|
|
38
|
-
keyframes:
|
|
42
|
+
keyframes: Array<ɵStyleDataMap>;
|
|
39
43
|
preStyleProps: string[];
|
|
40
44
|
postStyleProps: string[];
|
|
41
45
|
duration: number;
|
|
@@ -93,16 +97,10 @@ declare class SpecialCasedStyles {
|
|
|
93
97
|
private _element;
|
|
94
98
|
private _startStyles;
|
|
95
99
|
private _endStyles;
|
|
96
|
-
static initialStylesByElement: WeakMap<any,
|
|
97
|
-
[key: string]: any;
|
|
98
|
-
}>;
|
|
100
|
+
static initialStylesByElement: WeakMap<any, ɵStyleDataMap>;
|
|
99
101
|
private _state;
|
|
100
102
|
private _initialStyles;
|
|
101
|
-
constructor(_element: any, _startStyles:
|
|
102
|
-
[key: string]: any;
|
|
103
|
-
} | null, _endStyles: {
|
|
104
|
-
[key: string]: any;
|
|
105
|
-
} | null);
|
|
103
|
+
constructor(_element: any, _startStyles: ɵStyleDataMap | null, _endStyles: ɵStyleDataMap | null);
|
|
106
104
|
start(): void;
|
|
107
105
|
finish(): void;
|
|
108
106
|
destroy(): void;
|
|
@@ -114,7 +112,7 @@ export declare class ɵAnimation {
|
|
|
114
112
|
private _driver;
|
|
115
113
|
private _animationAst;
|
|
116
114
|
constructor(_driver: AnimationDriver, input: AnimationMetadata | AnimationMetadata[]);
|
|
117
|
-
buildTimelines(element: any, startingStyles:
|
|
115
|
+
buildTimelines(element: any, startingStyles: ɵStyleDataMap | Array<ɵStyleDataMap>, destinationStyles: ɵStyleDataMap | Array<ɵStyleDataMap>, options: AnimationOptions, subInstructions?: ElementInstructionMap): AnimationTimelineInstruction[];
|
|
118
116
|
}
|
|
119
117
|
|
|
120
118
|
export declare class ɵAnimationEngine {
|
|
@@ -144,69 +142,13 @@ export declare class ɵAnimationEngine {
|
|
|
144
142
|
* @publicApi
|
|
145
143
|
*/
|
|
146
144
|
export declare abstract class ɵAnimationStyleNormalizer {
|
|
147
|
-
abstract normalizePropertyName(propertyName: string, errors:
|
|
148
|
-
abstract normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors:
|
|
145
|
+
abstract normalizePropertyName(propertyName: string, errors: Error[]): string;
|
|
146
|
+
abstract normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors: Error[]): string;
|
|
149
147
|
}
|
|
150
148
|
|
|
151
149
|
export declare const ɵcontainsElement: (elm1: any, elm2: any) => boolean;
|
|
152
150
|
|
|
153
|
-
export declare
|
|
154
|
-
private _count;
|
|
155
|
-
validateStyleProperty(prop: string): boolean;
|
|
156
|
-
matchesElement(_element: any, _selector: string): boolean;
|
|
157
|
-
containsElement(elm1: any, elm2: any): boolean;
|
|
158
|
-
query(element: any, selector: string, multi: boolean): any[];
|
|
159
|
-
computeStyle(element: any, prop: string, defaultValue?: string): string;
|
|
160
|
-
buildKeyframeElement(element: any, name: string, keyframes: {
|
|
161
|
-
[key: string]: any;
|
|
162
|
-
}[]): any;
|
|
163
|
-
animate(element: any, keyframes: ɵStyleData[], duration: number, delay: number, easing: string, previousPlayers?: AnimationPlayer[], scrubberAccessRequested?: boolean): AnimationPlayer;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export declare class ɵCssKeyframesPlayer implements AnimationPlayer {
|
|
167
|
-
readonly element: any;
|
|
168
|
-
readonly keyframes: {
|
|
169
|
-
[key: string]: string | number;
|
|
170
|
-
}[];
|
|
171
|
-
readonly animationName: string;
|
|
172
|
-
private readonly _duration;
|
|
173
|
-
private readonly _delay;
|
|
174
|
-
private readonly _finalStyles;
|
|
175
|
-
private readonly _specialStyles?;
|
|
176
|
-
private _onDoneFns;
|
|
177
|
-
private _onStartFns;
|
|
178
|
-
private _onDestroyFns;
|
|
179
|
-
private _styler;
|
|
180
|
-
parentPlayer: AnimationPlayer;
|
|
181
|
-
readonly totalTime: number;
|
|
182
|
-
readonly easing: string;
|
|
183
|
-
currentSnapshot: {
|
|
184
|
-
[key: string]: string;
|
|
185
|
-
};
|
|
186
|
-
private _state;
|
|
187
|
-
constructor(element: any, keyframes: {
|
|
188
|
-
[key: string]: string | number;
|
|
189
|
-
}[], animationName: string, _duration: number, _delay: number, easing: string, _finalStyles: {
|
|
190
|
-
[key: string]: any;
|
|
191
|
-
}, _specialStyles?: SpecialCasedStyles | null | undefined);
|
|
192
|
-
onStart(fn: () => void): void;
|
|
193
|
-
onDone(fn: () => void): void;
|
|
194
|
-
onDestroy(fn: () => void): void;
|
|
195
|
-
destroy(): void;
|
|
196
|
-
private _flushDoneFns;
|
|
197
|
-
private _flushStartFns;
|
|
198
|
-
finish(): void;
|
|
199
|
-
setPosition(value: number): void;
|
|
200
|
-
getPosition(): number;
|
|
201
|
-
hasStarted(): boolean;
|
|
202
|
-
init(): void;
|
|
203
|
-
play(): void;
|
|
204
|
-
pause(): void;
|
|
205
|
-
restart(): void;
|
|
206
|
-
reset(): void;
|
|
207
|
-
private _buildStyler;
|
|
208
|
-
beforeDestroy(): void;
|
|
209
|
-
}
|
|
151
|
+
export declare function ɵgetParentElement(element: any): unknown | null;
|
|
210
152
|
|
|
211
153
|
export declare const ɵinvokeQuery: (element: any, selector: string, multi: boolean) => any[];
|
|
212
154
|
|
|
@@ -217,11 +159,10 @@ export declare class ɵNoopAnimationDriver implements AnimationDriver {
|
|
|
217
159
|
validateStyleProperty(prop: string): boolean;
|
|
218
160
|
matchesElement(_element: any, _selector: string): boolean;
|
|
219
161
|
containsElement(elm1: any, elm2: any): boolean;
|
|
162
|
+
getParentElement(element: unknown): unknown;
|
|
220
163
|
query(element: any, selector: string, multi: boolean): any[];
|
|
221
164
|
computeStyle(element: any, prop: string, defaultValue?: string): string;
|
|
222
|
-
animate(element: any, keyframes:
|
|
223
|
-
[key: string]: string | number;
|
|
224
|
-
}[], duration: number, delay: number, easing: string, previousPlayers?: any[], scrubberAccessRequested?: boolean): AnimationPlayer;
|
|
165
|
+
animate(element: any, keyframes: Array<Map<string, string | number>>, duration: number, delay: number, easing: string, previousPlayers?: any[], scrubberAccessRequested?: boolean): AnimationPlayer;
|
|
225
166
|
static ɵfac: i0.ɵɵFactoryDeclaration<ɵNoopAnimationDriver, never>;
|
|
226
167
|
static ɵprov: i0.ɵɵInjectableDeclaration<ɵNoopAnimationDriver>;
|
|
227
168
|
}
|
|
@@ -230,31 +171,28 @@ export declare class ɵNoopAnimationDriver implements AnimationDriver {
|
|
|
230
171
|
* @publicApi
|
|
231
172
|
*/
|
|
232
173
|
export declare class ɵNoopAnimationStyleNormalizer {
|
|
233
|
-
normalizePropertyName(propertyName: string, errors:
|
|
234
|
-
normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors:
|
|
174
|
+
normalizePropertyName(propertyName: string, errors: Error[]): string;
|
|
175
|
+
normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors: Error[]): string;
|
|
235
176
|
}
|
|
236
177
|
|
|
237
|
-
export declare function
|
|
178
|
+
export declare function ɵnormalizeKeyframes(keyframes: Array<ɵStyleData> | Array<ɵStyleDataMap>): Array<ɵStyleDataMap>;
|
|
238
179
|
|
|
239
180
|
export declare function ɵvalidateStyleProperty(prop: string): boolean;
|
|
240
181
|
|
|
241
182
|
export declare class ɵWebAnimationsDriver implements AnimationDriver {
|
|
242
|
-
private _isNativeImpl;
|
|
243
|
-
private _cssKeyframesDriver;
|
|
244
183
|
validateStyleProperty(prop: string): boolean;
|
|
184
|
+
validateAnimatableStyleProperty(prop: string): boolean;
|
|
245
185
|
matchesElement(_element: any, _selector: string): boolean;
|
|
246
186
|
containsElement(elm1: any, elm2: any): boolean;
|
|
187
|
+
getParentElement(element: unknown): unknown;
|
|
247
188
|
query(element: any, selector: string, multi: boolean): any[];
|
|
248
189
|
computeStyle(element: any, prop: string, defaultValue?: string): string;
|
|
249
|
-
|
|
250
|
-
animate(element: any, keyframes: ɵStyleData[], duration: number, delay: number, easing: string, previousPlayers?: AnimationPlayer[], scrubberAccessRequested?: boolean): AnimationPlayer;
|
|
190
|
+
animate(element: any, keyframes: Array<Map<string, string | number>>, duration: number, delay: number, easing: string, previousPlayers?: AnimationPlayer[]): AnimationPlayer;
|
|
251
191
|
}
|
|
252
192
|
|
|
253
193
|
export declare class ɵWebAnimationsPlayer implements AnimationPlayer {
|
|
254
194
|
element: any;
|
|
255
|
-
keyframes:
|
|
256
|
-
[key: string]: string | number;
|
|
257
|
-
}[];
|
|
195
|
+
keyframes: Array<ɵStyleDataMap>;
|
|
258
196
|
options: {
|
|
259
197
|
[key: string]: string | number;
|
|
260
198
|
};
|
|
@@ -272,18 +210,15 @@ export declare class ɵWebAnimationsPlayer implements AnimationPlayer {
|
|
|
272
210
|
readonly domPlayer: DOMAnimation;
|
|
273
211
|
time: number;
|
|
274
212
|
parentPlayer: AnimationPlayer | null;
|
|
275
|
-
currentSnapshot:
|
|
276
|
-
|
|
277
|
-
};
|
|
278
|
-
constructor(element: any, keyframes: {
|
|
279
|
-
[key: string]: string | number;
|
|
280
|
-
}[], options: {
|
|
213
|
+
currentSnapshot: ɵStyleDataMap;
|
|
214
|
+
constructor(element: any, keyframes: Array<ɵStyleDataMap>, options: {
|
|
281
215
|
[key: string]: string | number;
|
|
282
216
|
}, _specialStyles?: SpecialCasedStyles | null | undefined);
|
|
283
217
|
private _onFinish;
|
|
284
218
|
init(): void;
|
|
285
219
|
private _buildPlayer;
|
|
286
220
|
private _preparePlayerBeforeStart;
|
|
221
|
+
private _convertKeyframesToObject;
|
|
287
222
|
onStart(fn: () => void): void;
|
|
288
223
|
onDone(fn: () => void): void;
|
|
289
224
|
onDestroy(fn: () => void): void;
|
|
@@ -302,8 +237,8 @@ export declare class ɵWebAnimationsPlayer implements AnimationPlayer {
|
|
|
302
237
|
}
|
|
303
238
|
|
|
304
239
|
export declare class ɵWebAnimationsStyleNormalizer extends ɵAnimationStyleNormalizer {
|
|
305
|
-
normalizePropertyName(propertyName: string, errors:
|
|
306
|
-
normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors:
|
|
240
|
+
normalizePropertyName(propertyName: string, errors: Error[]): string;
|
|
241
|
+
normalizeStyleValue(userProvidedProperty: string, normalizedProperty: string, value: string | number, errors: Error[]): string;
|
|
307
242
|
}
|
|
308
243
|
|
|
309
244
|
export { }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.11
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { AnimationDriver } from '@angular/animations/browser';
|
|
8
8
|
import { AnimationPlayer } from '@angular/animations';
|
|
9
9
|
import { NoopAnimationPlayer } from '@angular/animations';
|
|
10
|
-
import {
|
|
10
|
+
import { ɵStyleDataMap } from '@angular/animations';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* @publicApi
|
|
@@ -15,13 +15,13 @@ import { ɵStyleData } from '@angular/animations';
|
|
|
15
15
|
export declare class MockAnimationDriver implements AnimationDriver {
|
|
16
16
|
static log: AnimationPlayer[];
|
|
17
17
|
validateStyleProperty(prop: string): boolean;
|
|
18
|
+
validateAnimatableStyleProperty(prop: string): boolean;
|
|
18
19
|
matchesElement(_element: any, _selector: string): boolean;
|
|
19
20
|
containsElement(elm1: any, elm2: any): boolean;
|
|
21
|
+
getParentElement(element: unknown): unknown;
|
|
20
22
|
query(element: any, selector: string, multi: boolean): any[];
|
|
21
23
|
computeStyle(element: any, prop: string, defaultValue?: string): string;
|
|
22
|
-
animate(element: any, keyframes:
|
|
23
|
-
[key: string]: string | number;
|
|
24
|
-
}[], duration: number, delay: number, easing: string, previousPlayers?: any[]): MockAnimationPlayer;
|
|
24
|
+
animate(element: any, keyframes: Array<ɵStyleDataMap>, duration: number, delay: number, easing: string, previousPlayers?: any[]): MockAnimationPlayer;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -29,23 +29,18 @@ export declare class MockAnimationDriver implements AnimationDriver {
|
|
|
29
29
|
*/
|
|
30
30
|
export declare class MockAnimationPlayer extends NoopAnimationPlayer {
|
|
31
31
|
element: any;
|
|
32
|
-
keyframes:
|
|
33
|
-
[key: string]: string | number;
|
|
34
|
-
}[];
|
|
32
|
+
keyframes: Array<ɵStyleDataMap>;
|
|
35
33
|
duration: number;
|
|
36
34
|
delay: number;
|
|
37
35
|
easing: string;
|
|
38
36
|
previousPlayers: any[];
|
|
39
37
|
private __finished;
|
|
40
38
|
private __started;
|
|
41
|
-
previousStyles:
|
|
42
|
-
[key: string]: string | number;
|
|
43
|
-
};
|
|
39
|
+
previousStyles: ɵStyleDataMap;
|
|
44
40
|
private _onInitFns;
|
|
45
|
-
currentSnapshot:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}[], duration: number, delay: number, easing: string, previousPlayers: any[]);
|
|
41
|
+
currentSnapshot: ɵStyleDataMap;
|
|
42
|
+
private _keyframes;
|
|
43
|
+
constructor(element: any, keyframes: Array<ɵStyleDataMap>, duration: number, delay: number, easing: string, previousPlayers: any[]);
|
|
49
44
|
reset(): void;
|
|
50
45
|
finish(): void;
|
|
51
46
|
destroy(): void;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { buildingFailed, validationFailed } from '../error_helpers';
|
|
1
2
|
import { ENTER_CLASSNAME, LEAVE_CLASSNAME, normalizeStyles } from '../util';
|
|
3
|
+
import { warnValidation } from '../warning_helpers';
|
|
2
4
|
import { buildAnimationAst } from './animation_ast_builder';
|
|
3
5
|
import { buildAnimationTimelines } from './animation_timeline_builder';
|
|
4
6
|
import { ElementInstructionMap } from './element_instruction_map';
|
|
@@ -6,10 +8,13 @@ export class Animation {
|
|
|
6
8
|
constructor(_driver, input) {
|
|
7
9
|
this._driver = _driver;
|
|
8
10
|
const errors = [];
|
|
9
|
-
const
|
|
11
|
+
const warnings = [];
|
|
12
|
+
const ast = buildAnimationAst(_driver, input, errors, warnings);
|
|
10
13
|
if (errors.length) {
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
throw validationFailed(errors);
|
|
15
|
+
}
|
|
16
|
+
if (warnings.length) {
|
|
17
|
+
warnValidation(warnings);
|
|
13
18
|
}
|
|
14
19
|
this._animationAst = ast;
|
|
15
20
|
}
|
|
@@ -22,10 +27,9 @@ export class Animation {
|
|
|
22
27
|
subInstructions = subInstructions || new ElementInstructionMap();
|
|
23
28
|
const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);
|
|
24
29
|
if (errors.length) {
|
|
25
|
-
|
|
26
|
-
throw new Error(errorMessage);
|
|
30
|
+
throw buildingFailed(errors);
|
|
27
31
|
}
|
|
28
32
|
return result;
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5pbWF0aW9ucy9icm93c2VyL3NyYy9kc2wvYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE1BQU0sT0FBTyxTQUFTO0lBRXBCLFlBQW9CLE9BQXdCLEVBQUUsS0FBNEM7UUFBdEUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDMUMsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNuQixjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUNWLE9BQVksRUFBRSxjQUFrRCxFQUNoRSxpQkFBcUQsRUFBRSxPQUF5QixFQUNoRixlQUF1QztRQUN6QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNsQixjQUFjLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLGlCQUFpQixDQUFDO1FBQ2pGLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixlQUFlLEdBQUcsZUFBZSxJQUFJLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0FuaW1hdGlvbk1ldGFkYXRhLCBBbmltYXRpb25NZXRhZGF0YVR5cGUsIEFuaW1hdGlvbk9wdGlvbnMsIMm1U3R5bGVEYXRhTWFwfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHtidWlsZGluZ0ZhaWxlZCwgdmFsaWRhdGlvbkZhaWxlZH0gZnJvbSAnLi4vZXJyb3JfaGVscGVycyc7XG5pbXBvcnQge0FuaW1hdGlvbkRyaXZlcn0gZnJvbSAnLi4vcmVuZGVyL2FuaW1hdGlvbl9kcml2ZXInO1xuaW1wb3J0IHtFTlRFUl9DTEFTU05BTUUsIExFQVZFX0NMQVNTTkFNRSwgbm9ybWFsaXplU3R5bGVzfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7d2FyblZhbGlkYXRpb259IGZyb20gJy4uL3dhcm5pbmdfaGVscGVycyc7XG5cbmltcG9ydCB7QXN0fSBmcm9tICcuL2FuaW1hdGlvbl9hc3QnO1xuaW1wb3J0IHtidWlsZEFuaW1hdGlvbkFzdH0gZnJvbSAnLi9hbmltYXRpb25fYXN0X2J1aWxkZXInO1xuaW1wb3J0IHtidWlsZEFuaW1hdGlvblRpbWVsaW5lc30gZnJvbSAnLi9hbmltYXRpb25fdGltZWxpbmVfYnVpbGRlcic7XG5pbXBvcnQge0FuaW1hdGlvblRpbWVsaW5lSW5zdHJ1Y3Rpb259IGZyb20gJy4vYW5pbWF0aW9uX3RpbWVsaW5lX2luc3RydWN0aW9uJztcbmltcG9ydCB7RWxlbWVudEluc3RydWN0aW9uTWFwfSBmcm9tICcuL2VsZW1lbnRfaW5zdHJ1Y3Rpb25fbWFwJztcblxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbiB7XG4gIHByaXZhdGUgX2FuaW1hdGlvbkFzdDogQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZT47XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RyaXZlcjogQW5pbWF0aW9uRHJpdmVyLCBpbnB1dDogQW5pbWF0aW9uTWV0YWRhdGF8QW5pbWF0aW9uTWV0YWRhdGFbXSkge1xuICAgIGNvbnN0IGVycm9yczogRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGFzdCA9IGJ1aWxkQW5pbWF0aW9uQXN0KF9kcml2ZXIsIGlucHV0LCBlcnJvcnMsIHdhcm5pbmdzKTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgdmFsaWRhdGlvbkZhaWxlZChlcnJvcnMpO1xuICAgIH1cbiAgICBpZiAod2FybmluZ3MubGVuZ3RoKSB7XG4gICAgICB3YXJuVmFsaWRhdGlvbih3YXJuaW5ncyk7XG4gICAgfVxuICAgIHRoaXMuX2FuaW1hdGlvbkFzdCA9IGFzdDtcbiAgfVxuXG4gIGJ1aWxkVGltZWxpbmVzKFxuICAgICAgZWxlbWVudDogYW55LCBzdGFydGluZ1N0eWxlczogybVTdHlsZURhdGFNYXB8QXJyYXk8ybVTdHlsZURhdGFNYXA+LFxuICAgICAgZGVzdGluYXRpb25TdHlsZXM6IMm1U3R5bGVEYXRhTWFwfEFycmF5PMm1U3R5bGVEYXRhTWFwPiwgb3B0aW9uczogQW5pbWF0aW9uT3B0aW9ucyxcbiAgICAgIHN1Ykluc3RydWN0aW9ucz86IEVsZW1lbnRJbnN0cnVjdGlvbk1hcCk6IEFuaW1hdGlvblRpbWVsaW5lSW5zdHJ1Y3Rpb25bXSB7XG4gICAgY29uc3Qgc3RhcnQgPSBBcnJheS5pc0FycmF5KHN0YXJ0aW5nU3R5bGVzKSA/IG5vcm1hbGl6ZVN0eWxlcyhzdGFydGluZ1N0eWxlcykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ybVTdHlsZURhdGFNYXA+c3RhcnRpbmdTdHlsZXM7XG4gICAgY29uc3QgZGVzdCA9IEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25TdHlsZXMpID8gbm9ybWFsaXplU3R5bGVzKGRlc3RpbmF0aW9uU3R5bGVzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPMm1U3R5bGVEYXRhTWFwPmRlc3RpbmF0aW9uU3R5bGVzO1xuICAgIGNvbnN0IGVycm9yczogYW55ID0gW107XG4gICAgc3ViSW5zdHJ1Y3Rpb25zID0gc3ViSW5zdHJ1Y3Rpb25zIHx8IG5ldyBFbGVtZW50SW5zdHJ1Y3Rpb25NYXAoKTtcbiAgICBjb25zdCByZXN1bHQgPSBidWlsZEFuaW1hdGlvblRpbWVsaW5lcyhcbiAgICAgICAgdGhpcy5fZHJpdmVyLCBlbGVtZW50LCB0aGlzLl9hbmltYXRpb25Bc3QsIEVOVEVSX0NMQVNTTkFNRSwgTEVBVkVfQ0xBU1NOQU1FLCBzdGFydCwgZGVzdCxcbiAgICAgICAgb3B0aW9ucywgc3ViSW5zdHJ1Y3Rpb25zLCBlcnJvcnMpO1xuICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBidWlsZGluZ0ZhaWxlZChlcnJvcnMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const EMPTY_ANIMATION_OPTIONS = {};
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uX2FzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuaW1hdGlvbnMvYnJvd3Nlci9zcmMvZHNsL2FuaW1hdGlvbl9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSx1QkFBdUIsR0FBcUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0FuaW1hdGVUaW1pbmdzLCBBbmltYXRpb25NZXRhZGF0YVR5cGUsIEFuaW1hdGlvbk9wdGlvbnMsIMm1U3R5bGVEYXRhTWFwfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuY29uc3QgRU1QVFlfQU5JTUFUSU9OX09QVElPTlM6IEFuaW1hdGlvbk9wdGlvbnMgPSB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBBc3RWaXNpdG9yIHtcbiAgdmlzaXRUcmlnZ2VyKGFzdDogVHJpZ2dlckFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFN0YXRlKGFzdDogU3RhdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRUcmFuc2l0aW9uKGFzdDogVHJhbnNpdGlvbkFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFNlcXVlbmNlKGFzdDogU2VxdWVuY2VBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRHcm91cChhc3Q6IEdyb3VwQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QW5pbWF0ZShhc3Q6IEFuaW1hdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRTdHlsZShhc3Q6IFN0eWxlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0S2V5ZnJhbWVzKGFzdDogS2V5ZnJhbWVzQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UmVmZXJlbmNlKGFzdDogUmVmZXJlbmNlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QW5pbWF0ZUNoaWxkKGFzdDogQW5pbWF0ZUNoaWxkQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QW5pbWF0ZVJlZihhc3Q6IEFuaW1hdGVSZWZBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRRdWVyeShhc3Q6IFF1ZXJ5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0U3RhZ2dlcihhc3Q6IFN0YWdnZXJBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3Q8VCBleHRlbmRzIEFuaW1hdGlvbk1ldGFkYXRhVHlwZT4ge1xuICB0eXBlOiBUO1xuICBvcHRpb25zOiBBbmltYXRpb25PcHRpb25zfG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlckFzdCBleHRlbmRzIEFzdDxBbmltYXRpb25NZXRhZGF0YVR5cGUuVHJpZ2dlcj4ge1xuICB0eXBlOiBBbmltYXRpb25NZXRhZGF0YVR5cGUuVHJpZ2dlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBzdGF0ZXM6IFN0YXRlQXN0W107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uQXN0W107XG4gIHF1ZXJ5Q291bnQ6IG51bWJlcjtcbiAgZGVwQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUFzdCBleHRlbmRzIEFzdDxBbmltYXRpb25NZXRhZGF0YVR5cGUuU3RhdGU+IHtcbiAgdHlwZTogQW5pbWF0aW9uTWV0YWRhdGFUeXBlLlN0YXRlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0eWxlOiBTdHlsZUFzdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0aW9uQXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5UcmFuc2l0aW9uPiB7XG4gIG1hdGNoZXJzOiBBcnJheTwoXG4gICAgICAoZnJvbVN0YXRlOiBzdHJpbmcsIHRvU3RhdGU6IHN0cmluZywgZWxlbWVudDogYW55LCBwYXJhbXM6IHtba2V5OiBzdHJpbmddOiBhbnl9KSA9PiBib29sZWFuKT47XG4gIGFuaW1hdGlvbjogQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZT47XG4gIHF1ZXJ5Q291bnQ6IG51bWJlcjtcbiAgZGVwQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZUFzdCBleHRlbmRzIEFzdDxBbmltYXRpb25NZXRhZGF0YVR5cGUuU2VxdWVuY2U+IHtcbiAgc3RlcHM6IEFzdDxBbmltYXRpb25NZXRhZGF0YVR5cGU+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBBc3QgZXh0ZW5kcyBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlLkdyb3VwPiB7XG4gIHN0ZXBzOiBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlPltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGVBc3QgZXh0ZW5kcyBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlLkFuaW1hdGU+IHtcbiAgdGltaW5nczogVGltaW5nQXN0O1xuICBzdHlsZTogU3R5bGVBc3R8S2V5ZnJhbWVzQXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlQXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5TdHlsZT4ge1xuICBzdHlsZXM6IEFycmF5PCjJtVN0eWxlRGF0YU1hcCB8IHN0cmluZyk+O1xuICBlYXNpbmc6IHN0cmluZ3xudWxsO1xuICBvZmZzZXQ6IG51bWJlcnxudWxsO1xuICBjb250YWluc0R5bmFtaWNTdHlsZXM6IGJvb2xlYW47XG4gIGlzRW1wdHlTdGVwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlmcmFtZXNBc3QgZXh0ZW5kcyBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlLktleWZyYW1lcz4ge1xuICBzdHlsZXM6IFN0eWxlQXN0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlQXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5SZWZlcmVuY2U+IHtcbiAgYW5pbWF0aW9uOiBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRlQ2hpbGRBc3QgZXh0ZW5kcyBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlLkFuaW1hdGVDaGlsZD4ge31cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRlUmVmQXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5BbmltYXRlUmVmPiB7XG4gIGFuaW1hdGlvbjogUmVmZXJlbmNlQXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5QXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5RdWVyeT4ge1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICBsaW1pdDogbnVtYmVyO1xuICBvcHRpb25hbDogYm9vbGVhbjtcbiAgaW5jbHVkZVNlbGY6IGJvb2xlYW47XG4gIGFuaW1hdGlvbjogQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZT47XG4gIG9yaWdpbmFsU2VsZWN0b3I6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZ2VyQXN0IGV4dGVuZHMgQXN0PEFuaW1hdGlvbk1ldGFkYXRhVHlwZS5TdGFnZ2VyPiB7XG4gIHRpbWluZ3M6IEFuaW1hdGVUaW1pbmdzO1xuICBhbmltYXRpb246IEFzdDxBbmltYXRpb25NZXRhZGF0YVR5cGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWluZ0FzdCB7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGRlbGF5OiBudW1iZXI7XG4gIGVhc2luZzogc3RyaW5nfG51bGw7XG4gIGR5bmFtaWM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNUaW1pbmdBc3QgZXh0ZW5kcyBUaW1pbmdBc3Qge1xuICBzdHJWYWx1ZTogc3RyaW5nO1xuICBkeW5hbWljOiB0cnVlO1xufVxuIl19
|