@rafaelaugusto/jolt 0.1.0-beta.0 → 0.1.0-beta.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.
- package/README.md +78 -11
- package/dist/animate.d.ts +3 -3
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +27 -19
- package/dist/animate.js.map +1 -1
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +12 -3
- package/dist/driver/ios.js.map +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +13 -3
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +16 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +24 -6
- package/dist/presets.js.map +1 -1
- package/dist/press.d.ts.map +1 -1
- package/dist/press.js +3 -1
- package/dist/press.js.map +1 -1
- package/dist/sequence.d.ts +3 -2
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +6 -5
- package/dist/sequence.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
- package/src/animate.ts +46 -19
- package/src/driver/ios.ts +12 -3
- package/src/engine.ts +11 -3
- package/src/index.ts +2 -2
- package/src/presets.ts +31 -7
- package/src/press.ts +7 -1
- package/src/sequence.ts +8 -5
- package/src/types.ts +2 -0
package/README.md
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/rafaelaugustos/jolt/main/.github/assets/logo-dark.png">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/rafaelaugustos/jolt/main/.github/assets/logo.png" alt="Jolt" width="280">
|
|
5
|
+
</picture>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
Native animations for <a href="https://nativescript.org">NativeScript</a>: presets, springs, keyframes and stagger, one call each.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/@rafaelaugusto/jolt"><img src="https://img.shields.io/npm/v/@rafaelaugusto/jolt/next?label=npm%40next" alt="npm"></a>
|
|
14
|
+
<a href="https://github.com/rafaelaugustos/jolt/actions/workflows/ci.yml"><img src="https://github.com/rafaelaugustos/jolt/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
15
|
+
<a href="https://github.com/rafaelaugustos/jolt/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@rafaelaugusto/jolt" alt="MIT license"></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://jolt.rafaelaugusto.dev">Documentation</a> · <a href="https://jolt.rafaelaugusto.dev/pt-BR/">Documentação em português</a>
|
|
20
|
+
</p>
|
|
4
21
|
|
|
5
22
|
```ts
|
|
6
23
|
import { animate } from '@rafaelaugusto/jolt'
|
|
@@ -14,6 +31,17 @@ NativeScript's `view.animate()` covers the basics and stops there: one curve for
|
|
|
14
31
|
|
|
15
32
|
Jolt computes the motion once, in JavaScript, when the animation starts, and hands it to the platform as keyframes: Core Animation on iOS, `ObjectAnimator` on Android. Nothing runs in JavaScript while it plays. Springs follow real physics, and an animation that interrupts another one starts from where the view is, at the speed it was going.
|
|
16
33
|
|
|
34
|
+
## Features
|
|
35
|
+
|
|
36
|
+
- [25 presets](#presets) to enter, exit and draw attention: `fadeInUp`, `popIn`, `shake`, `heartbeat`...
|
|
37
|
+
- [Springs](#springs) described by feel (`bouncy`), by `bounce` and `duration`, or by stiffness, damping and mass.
|
|
38
|
+
- [Keyframes and tweens](#tweens) with an easing per segment and exact keyframe times.
|
|
39
|
+
- [Stagger](#several-views) across several views, from the first, the last or the center.
|
|
40
|
+
- [Sequences](#sequences) that start each step once the previous one looks done.
|
|
41
|
+
- [Press effects](#press) that follow the finger and let go when a scroll takes over.
|
|
42
|
+
- [Interruptions](#interrupting-and-stopping) that pick up the value and velocity on screen, with no jump.
|
|
43
|
+
- [Native playback](#how-it-works): Core Animation on iOS, `ObjectAnimator` on Android, nothing in JavaScript while it plays.
|
|
44
|
+
|
|
17
45
|
## Install
|
|
18
46
|
|
|
19
47
|
```sh
|
|
@@ -46,6 +74,15 @@ animate(card, { x: [0, 100] }) // from 0, whatever x is now
|
|
|
46
74
|
animate(card, { x: [null, 20, -20, null] }) // out and back to where it was
|
|
47
75
|
```
|
|
48
76
|
|
|
77
|
+
With `relative: true`, translation and rotation keyframes are offsets from the current value. Scale and opacity keyframes multiply it instead. Each scale axis keeps its own base, and `null` still means the current value.
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
animate(card, { x: [0, -10, 10, 0] }, { relative: true }) // shake around its current x
|
|
81
|
+
animate(card, { scale: [1, 1.06, 1] }, { relative: true }) // grow by 6% and return
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The base is captured once when the view is ready and its tracks are created, before any delay or stagger. Repeats reuse that base. A relative step in a sequence resolves when the step starts; an unloaded view waits until it loads.
|
|
85
|
+
|
|
49
86
|
The target can be a view, or anything that holds one: a NativeScript-Vue template ref, an Angular `ElementRef`.
|
|
50
87
|
|
|
51
88
|
```vue
|
|
@@ -59,7 +96,7 @@ const open = () => animate(card.value, 'popIn')
|
|
|
59
96
|
</template>
|
|
60
97
|
```
|
|
61
98
|
|
|
62
|
-
A view that isn't loaded yet takes its first keyframe right away and plays once it's on screen. Calling `animate(title, 'fadeInUp')` in `onMounted` doesn't flash the title before it fades in.
|
|
99
|
+
A view that isn't loaded yet takes its first absolute keyframe right away and plays once it's on screen. Calling `animate(title, 'fadeInUp')` in `onMounted` doesn't flash the title before it fades in. Relative animations leave the view's values alone until it loads.
|
|
63
100
|
|
|
64
101
|
## Transitions
|
|
65
102
|
|
|
@@ -134,7 +171,9 @@ animate(spinner, 'spin', { repeat: Infinity })
|
|
|
134
171
|
| Exit | `fadeOut`, `fadeOutUp`, `fadeOutDown`, `fadeOutLeft`, `fadeOutRight`, `zoomOut`, `popOut` |
|
|
135
172
|
| Attention | `pulse`, `bounce`, `shake`, `wiggle`, `heartbeat`, `jelly`, `flash`, `tada`, `spin` |
|
|
136
173
|
|
|
137
|
-
Directions follow animate.css: `fadeInUp` comes up from below, `fadeOutUp` leaves upwards.
|
|
174
|
+
Directions follow animate.css: `fadeInUp` comes up from below, `fadeOutUp` leaves upwards. Each built-in preset is plain keyframes and a transition, listed in [`src/presets.ts`](./src/presets.ts) and exported as `presets`.
|
|
175
|
+
|
|
176
|
+
Attention presets use `relative: true`: `shake` around `x: 40` returns to 40, `pulse` preserves the current scale, and `flash` returns to the current opacity. `spin` adds a full turn to the current rotation. Pass `{ relative: false }` to use their absolute keyframes instead. Enter and exit presets remain absolute.
|
|
138
177
|
|
|
139
178
|
Options with timing only (`delay`, `repeat`, `stagger`) keep the preset's curves. Options with a curve (`duration`, `ease`, a spring) replace them:
|
|
140
179
|
|
|
@@ -144,6 +183,29 @@ animate(card, 'fadeInUp', { duration: 600 }) // a 600ms tween instead
|
|
|
144
183
|
animate(card, 'fadeInUp', 'bouncy') // a bouncy spring instead
|
|
145
184
|
```
|
|
146
185
|
|
|
186
|
+
Register your own keyframes and transition with `definePreset`:
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
import { animate, definePreset } from '@rafaelaugusto/jolt'
|
|
190
|
+
|
|
191
|
+
declare module '@rafaelaugusto/jolt' {
|
|
192
|
+
interface Presets {
|
|
193
|
+
cardIn: true
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
definePreset('cardIn', {
|
|
198
|
+
keyframes: { opacity: [0, 1], y: [40, 0] },
|
|
199
|
+
transition: { type: 'spring', bounce: 0.2, opacity: { duration: 150 } },
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
animate(card, 'cardIn')
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Register presets during app startup, before using them in `animate()` or `sequence()`. The `Presets` declaration adds the name to TypeScript; it does not register anything at runtime. Custom presets follow the same timing and curve overrides as built-ins, including per-property options and `stagger`.
|
|
206
|
+
|
|
207
|
+
Registering a custom name again replaces its definition for future animations. Built-in names cannot be replaced through `definePreset`, and the exported `presets` object continues to contain only the built-ins.
|
|
208
|
+
|
|
147
209
|
## Several views
|
|
148
210
|
|
|
149
211
|
Pass an array to animate them together, and `stagger` to start them one after another:
|
|
@@ -167,7 +229,7 @@ await sequence([
|
|
|
167
229
|
|
|
168
230
|
Each step takes the same arguments as `animate`, or is a function that starts an animation. A step starts once the previous one looks done: a spring that's close to its target and staying there counts, even if it's still settling, so steps don't wait on the last pixel. The whole sequence finishes once every step has.
|
|
169
231
|
|
|
170
|
-
Views in later steps take their first keyframe when the sequence starts, so the title above stays hidden until its turn instead of showing up and disappearing.
|
|
232
|
+
Views in later steps take their first absolute keyframe when the sequence starts, so the title above stays hidden until its turn instead of showing up and disappearing. Relative steps and `null` keyframes wait until their step starts to read the current value.
|
|
171
233
|
|
|
172
234
|
## Press
|
|
173
235
|
|
|
@@ -190,8 +252,13 @@ const animation = animate(card, { x: 300 })
|
|
|
190
252
|
animation.stop() // the card stays where it is
|
|
191
253
|
|
|
192
254
|
stop(card) // stops everything running on the card
|
|
255
|
+
stop(card, ['x', 'scale']) // stops translation on x and both scale axes
|
|
193
256
|
```
|
|
194
257
|
|
|
258
|
+
Selected properties stay at their current values; the others keep animating. `scaleX` and `scaleY` can also be stopped separately. Pass an empty array to stop nothing, or omit it to stop everything. This works with arrays of targets too.
|
|
259
|
+
|
|
260
|
+
If part of an animation is stopped, its `finished` promise resolves with `false` once its remaining properties finish.
|
|
261
|
+
|
|
195
262
|
## How it works
|
|
196
263
|
|
|
197
264
|
When an animation starts, Jolt resolves where each property starts from (the value on screen, or the keyframes you gave), and computes the whole curve: easing, keyframes, spring physics. It samples the curve 60 times per second of motion, and keeps keyframe times exact. Linear segments aren't sampled at all.
|
|
@@ -207,17 +274,17 @@ Each running property remembers its curve and start time, so Jolt knows the valu
|
|
|
207
274
|
|
|
208
275
|
## Not there yet
|
|
209
276
|
|
|
210
|
-
- Only transforms and opacity. Colors, size and layout changes aren't animated yet.
|
|
211
|
-
- No gestures: dragging something and letting it fly with its velocity is next.
|
|
212
|
-
- No layout or shared element transitions.
|
|
277
|
+
- Only transforms and opacity. Colors ([#12](https://github.com/rafaelaugustos/jolt/issues/12)), borders and shadows ([#13](https://github.com/rafaelaugustos/jolt/issues/13)), size and layout changes ([#21](https://github.com/rafaelaugustos/jolt/issues/21)) aren't animated yet.
|
|
278
|
+
- No gestures: dragging something and letting it fly with its velocity is next ([#23](https://github.com/rafaelaugustos/jolt/issues/23)).
|
|
279
|
+
- No layout or shared element transitions ([#21](https://github.com/rafaelaugustos/jolt/issues/21), [#24](https://github.com/rafaelaugustos/jolt/issues/24)).
|
|
213
280
|
|
|
214
281
|
## API
|
|
215
282
|
|
|
216
|
-
**Animating**: `animate(target, keyframes | preset, transition?)`, `stop(target)`, `sequence(steps)`, `press(target, pressed?, transition?)`.
|
|
283
|
+
**Animating**: `animate(target, keyframes | preset, transition?)`, `stop(target, properties?)`, `sequence(steps)`, `press(target, pressed?, transition?)`.
|
|
217
284
|
|
|
218
285
|
**Animations** returned by them: `await`, `finished`, `stop()`.
|
|
219
286
|
|
|
220
|
-
**Helpers**: `presets`, `springs`, `cubicBezier`, plus the types (`Keyframes`, `Transition`, `Spring`, `Tween`, `PresetName`, `SpringName`, `Easing`, `Animation`, `Target`...).
|
|
287
|
+
**Helpers**: `definePreset`, `presets`, `springs`, `cubicBezier`, plus the types (`Keyframes`, `Transition`, `Spring`, `Tween`, `Preset`, `Presets`, `PresetName`, `SpringName`, `Easing`, `Animation`, `Target`...).
|
|
221
288
|
|
|
222
289
|
## Demo
|
|
223
290
|
|
package/dist/animate.d.ts
CHANGED
|
@@ -15,12 +15,12 @@ import type { AnimateOptions, Keyframes, Target } from './types.js';
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
export declare function animate(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): Animation;
|
|
18
|
-
/** Stops
|
|
19
|
-
export declare function stop(target: Target | readonly Target[]): void;
|
|
18
|
+
/** Stops all or selected properties at their current values. `scale` stops both axes. */
|
|
19
|
+
export declare function stop(target: Target | readonly Target[], properties?: readonly (keyof Keyframes)[]): void;
|
|
20
20
|
/** Plays several animations as one: finished once they all are, and stopped together. */
|
|
21
21
|
export declare function group(animations: readonly Animation[]): Animation;
|
|
22
22
|
export declare function toView(target: Target): View;
|
|
23
23
|
export declare function toViews(target: Target | readonly Target[]): View[];
|
|
24
24
|
/** Each property the animation touches, with the value it starts from when it sets one. */
|
|
25
|
-
export declare function startingValues(animation: Keyframes | PresetName): Map<Property, number>;
|
|
25
|
+
export declare function startingValues(animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): Map<Property, number | null>;
|
|
26
26
|
//# sourceMappingURL=animate.d.ts.map
|
package/dist/animate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAKL,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAKL,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AACpB,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAKL,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAGT,MAAM,EACP,MAAM,YAAY,CAAA;AASnB;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,SAAS,CA0BX;AAED,yFAAyF;AACzF,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,SAAS,CAAC,EAAE,QAM1C;AAED,yFAAyF;AACzF,wBAAgB,KAAK,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAWjE;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAO3C;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAElE;AAwED,2FAA2F;AAC3F,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,gCAOtC"}
|
package/dist/animate.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { View } from '@nativescript/core';
|
|
2
2
|
import { arrivalOf, setArrival, stopView, ViewAnimation, } from './engine.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getPreset } from './presets.js';
|
|
4
4
|
import { isProperty } from './properties.js';
|
|
5
5
|
import { hasCurve, mergeTransitions, resolveTransition, springs, } from './transition.js';
|
|
6
6
|
/**
|
|
@@ -14,17 +14,18 @@ import { hasCurve, mergeTransitions, resolveTransition, springs, } from './trans
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
export function animate(target, animation, options) {
|
|
17
|
-
const { keyframes, base, overrides, stagger } = prepare(animation, options);
|
|
17
|
+
const { keyframes, base, overrides, stagger, relative } = prepare(animation, options);
|
|
18
18
|
if (!isList(target)) {
|
|
19
|
-
return new ViewAnimation(toView(target), plan(keyframes, base, overrides, 0));
|
|
19
|
+
return new ViewAnimation(toView(target), plan(keyframes, base, overrides, 0, relative));
|
|
20
20
|
}
|
|
21
21
|
const views = target.map(toView);
|
|
22
|
-
return group(views.map((view, index) => new ViewAnimation(view, plan(keyframes, base, overrides, staggerDelay(stagger, index, views.length)))));
|
|
22
|
+
return group(views.map((view, index) => new ViewAnimation(view, plan(keyframes, base, overrides, staggerDelay(stagger, index, views.length), relative))));
|
|
23
23
|
}
|
|
24
|
-
/** Stops
|
|
25
|
-
export function stop(target) {
|
|
24
|
+
/** Stops all or selected properties at their current values. `scale` stops both axes. */
|
|
25
|
+
export function stop(target, properties) {
|
|
26
|
+
const expanded = properties?.flatMap((property) => property === 'scale' ? ['scaleX', 'scaleY'] : [property]);
|
|
26
27
|
for (const view of toViews(target))
|
|
27
|
-
stopView(view);
|
|
28
|
+
stopView(view, expanded);
|
|
28
29
|
}
|
|
29
30
|
/** Plays several animations as one: finished once they all are, and stopped together. */
|
|
30
31
|
export function group(animations) {
|
|
@@ -56,9 +57,7 @@ function prepare(animation, options) {
|
|
|
56
57
|
const user = normalize(options);
|
|
57
58
|
if (typeof animation !== 'string')
|
|
58
59
|
return { keyframes: animation, ...user };
|
|
59
|
-
const preset =
|
|
60
|
-
if (!preset)
|
|
61
|
-
throw new Error(`Unknown preset "${animation}".`);
|
|
60
|
+
const preset = getPreset(animation);
|
|
62
61
|
const own = normalize(preset.transition);
|
|
63
62
|
return {
|
|
64
63
|
keyframes: preset.keyframes,
|
|
@@ -66,44 +65,53 @@ function prepare(animation, options) {
|
|
|
66
65
|
overrides: hasCurve(user.base)
|
|
67
66
|
? user.overrides
|
|
68
67
|
: { ...own.overrides, ...user.overrides },
|
|
69
|
-
stagger: user.stagger,
|
|
68
|
+
stagger: user.stagger ?? own.stagger,
|
|
69
|
+
relative: user.relative ?? own.relative,
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
function normalize(options) {
|
|
73
73
|
if (options === undefined)
|
|
74
|
-
return { base: {}, overrides: {}, stagger: undefined };
|
|
74
|
+
return { base: {}, overrides: {}, stagger: undefined, relative: undefined };
|
|
75
75
|
if (typeof options === 'string')
|
|
76
|
-
return {
|
|
76
|
+
return {
|
|
77
|
+
base: spring(options),
|
|
78
|
+
overrides: {},
|
|
79
|
+
stagger: undefined,
|
|
80
|
+
relative: undefined,
|
|
81
|
+
};
|
|
77
82
|
const base = {};
|
|
78
83
|
const overrides = {};
|
|
79
84
|
let stagger;
|
|
85
|
+
let relative;
|
|
80
86
|
for (const [key, value] of Object.entries(options)) {
|
|
81
87
|
if (value === undefined)
|
|
82
88
|
continue;
|
|
83
89
|
if (key === 'stagger')
|
|
84
90
|
stagger = value;
|
|
91
|
+
else if (key === 'relative')
|
|
92
|
+
relative = value;
|
|
85
93
|
else if (key === 'scale' || isProperty(key)) {
|
|
86
94
|
overrides[key] = typeof value === 'string' ? spring(value) : value;
|
|
87
95
|
}
|
|
88
96
|
else
|
|
89
97
|
base[key] = value;
|
|
90
98
|
}
|
|
91
|
-
return { base, overrides, stagger };
|
|
99
|
+
return { base, overrides, stagger, relative };
|
|
92
100
|
}
|
|
93
|
-
function plan(keyframes, base, overrides, offset) {
|
|
101
|
+
function plan(keyframes, base, overrides, offset, relative = false) {
|
|
94
102
|
return expand(keyframes).map(([property, frames]) => {
|
|
95
103
|
const override = overrides[property] ?? (property.startsWith('scale') ? overrides.scale : undefined);
|
|
96
104
|
const transition = resolveTransition(override ? mergeTransitions(base, override) : base, property, frames.length);
|
|
97
105
|
transition.delay += offset;
|
|
98
|
-
return { property, keyframes: frames, transition };
|
|
106
|
+
return { property, keyframes: frames, transition, relative };
|
|
99
107
|
});
|
|
100
108
|
}
|
|
101
109
|
/** Each property the animation touches, with the value it starts from when it sets one. */
|
|
102
|
-
export function startingValues(animation) {
|
|
103
|
-
const keyframes
|
|
110
|
+
export function startingValues(animation, options) {
|
|
111
|
+
const { keyframes, relative } = prepare(animation, options);
|
|
104
112
|
if (!keyframes)
|
|
105
113
|
throw new Error(`Unknown preset "${animation}".`);
|
|
106
|
-
return new Map(expand(keyframes).map(([property, [first]]) => [property, first]));
|
|
114
|
+
return new Map(expand(keyframes).map(([property, [first]]) => [property, relative ? null : first]));
|
|
107
115
|
}
|
|
108
116
|
function expand(keyframes) {
|
|
109
117
|
const expanded = [];
|
package/dist/animate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,GAGd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
|
package/dist/driver/ios.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/driver/ios.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/driver/ios.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AA4C/C,wBAAgB,eAAe,IAAI,MAAM,CAkDxC"}
|
package/dist/driver/ios.js
CHANGED
|
@@ -36,6 +36,7 @@ export function createIOSDriver() {
|
|
|
36
36
|
const layers = layersOf(view);
|
|
37
37
|
const key = `jolt:${track.property}`;
|
|
38
38
|
const rotation = track.property.startsWith('rotate');
|
|
39
|
+
const infinite = track.repeat === Infinity;
|
|
39
40
|
if (track.property === 'rotateX' || track.property === 'rotateY') {
|
|
40
41
|
ensurePerspective(view, layers);
|
|
41
42
|
}
|
|
@@ -45,21 +46,29 @@ export function createIOSDriver() {
|
|
|
45
46
|
animation.duration = Math.max(track.duration, 1) / 1000;
|
|
46
47
|
animation.beginTime = (startedAt + track.delay) / 1000;
|
|
47
48
|
animation.fillMode = kCAFillModeBackwards;
|
|
49
|
+
// Keep infinite loops when iOS removes animations on backgrounding.
|
|
50
|
+
// They are removed explicitly when stopped or replaced.
|
|
51
|
+
animation.removedOnCompletion = !infinite;
|
|
48
52
|
if (track.repeat > 0) {
|
|
49
53
|
animation.autoreverses = track.reverse;
|
|
50
54
|
animation.repeatCount = track.reverse ? (track.repeat + 1) / 2 : track.repeat + 1;
|
|
51
55
|
}
|
|
52
56
|
CATransaction.begin();
|
|
53
|
-
|
|
57
|
+
// iOS completes the transaction on backgrounding even if the loop is retained.
|
|
58
|
+
if (!infinite)
|
|
59
|
+
CATransaction.setCompletionBlock(onEnd);
|
|
54
60
|
for (const layer of layers)
|
|
55
61
|
layer.addAnimationForKey(animation, key);
|
|
56
62
|
CATransaction.commit();
|
|
57
|
-
return { layers, key };
|
|
63
|
+
return { layers, key, onStop: infinite ? onEnd : undefined };
|
|
58
64
|
},
|
|
59
65
|
stop(_view, handle) {
|
|
60
|
-
const
|
|
66
|
+
const playing = handle;
|
|
67
|
+
const { layers, key, onStop } = playing;
|
|
68
|
+
playing.onStop = undefined;
|
|
61
69
|
for (const layer of layers)
|
|
62
70
|
layer.removeAnimationForKey(key);
|
|
71
|
+
onStop?.();
|
|
63
72
|
},
|
|
64
73
|
presented: () => undefined,
|
|
65
74
|
after,
|
package/dist/driver/ios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/driver/ios.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAe,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/driver/ios.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface Plan {
|
|
|
16
16
|
/** `null` stands for the value the property has when the animation starts. */
|
|
17
17
|
keyframes: readonly (number | null)[];
|
|
18
18
|
transition: ResolvedTransition;
|
|
19
|
+
relative?: boolean;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Resolves once the animation looks done, which for a spring is well before
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,MAAM,WAAW,SAAU,SAAQ,WAAW,CAAC,OAAO,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,0EAA0E;IAC1E,IAAI,IAAI,IAAI,CAAA;CACb;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,8EAA8E;IAC9E,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACrC,UAAU,EAAE,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,MAAM,WAAW,SAAU,SAAQ,WAAW,CAAC,OAAO,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,0EAA0E;IAC1E,IAAI,IAAI,IAAI,CAAA;CACb;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,8EAA8E;IAC9E,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACrC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAaD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAEzE;AAED,qBAAa,aAAc,YAAW,SAAS;IAY3C,QAAQ,CAAC,IAAI,EAAE,IAAI;IAXrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,aAAa,CAA0B;IAE/C,YACW,IAAI,EAAE,IAAI,EACnB,KAAK,EAAE,SAAS,IAAI,EAAE,EAMvB;IAED,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,KAAK,EACzB,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAChE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAC5D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAEhB;IAED,IAAI,SASH;IAED,KAAK,CAAC,QAAQ,EAAE,OAAO,QAGtB;IAED,OAAO,CAAC,KAAK;IA+Db,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,MAAM;CAOf;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,QAAQ,EAAE,QAOpE"}
|
package/dist/engine.js
CHANGED
|
@@ -58,7 +58,7 @@ export class ViewAnimation {
|
|
|
58
58
|
const driver = getDriver();
|
|
59
59
|
const now = driver.now();
|
|
60
60
|
const entries = entriesOf(this.view);
|
|
61
|
-
const tracks = plans.map(({ property, keyframes, transition }) => {
|
|
61
|
+
const tracks = plans.map(({ property, keyframes, transition, relative }) => {
|
|
62
62
|
const previous = entries.get(property);
|
|
63
63
|
let current;
|
|
64
64
|
let velocity = 0;
|
|
@@ -71,7 +71,15 @@ export class ViewAnimation {
|
|
|
71
71
|
else {
|
|
72
72
|
current = readValue(this.view, property);
|
|
73
73
|
}
|
|
74
|
-
return createTrack(property, keyframes.map((value) =>
|
|
74
|
+
return createTrack(property, keyframes.map((value) => {
|
|
75
|
+
if (value === null)
|
|
76
|
+
return current;
|
|
77
|
+
if (!relative)
|
|
78
|
+
return value;
|
|
79
|
+
return property === 'opacity' || property.startsWith('scale')
|
|
80
|
+
? current * value
|
|
81
|
+
: current + value;
|
|
82
|
+
}), transition, velocity);
|
|
75
83
|
});
|
|
76
84
|
for (const track of tracks)
|
|
77
85
|
writeValue(this.view, track.property, track.to);
|
|
@@ -106,7 +114,9 @@ export class ViewAnimation {
|
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
116
|
waitForLoad(plans) {
|
|
109
|
-
for (const { property, keyframes } of plans) {
|
|
117
|
+
for (const { property, keyframes, relative } of plans) {
|
|
118
|
+
if (relative)
|
|
119
|
+
continue;
|
|
110
120
|
const first = keyframes[0];
|
|
111
121
|
if (first !== null && first !== undefined)
|
|
112
122
|
writeValue(this.view, property, first);
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { animate, stop } from './animate.js';
|
|
|
2
2
|
export { sequence } from './sequence.js';
|
|
3
3
|
export type { Step } from './sequence.js';
|
|
4
4
|
export { press } from './press.js';
|
|
5
|
-
export { presets } from './presets.js';
|
|
6
|
-
export type { PresetName } from './presets.js';
|
|
5
|
+
export { definePreset, presets } from './presets.js';
|
|
6
|
+
export type { Preset, PresetName, Presets } from './presets.js';
|
|
7
7
|
export { springs } from './transition.js';
|
|
8
8
|
export type { Spring, SpringName, Timing, Transition, Tween } from './transition.js';
|
|
9
9
|
export { cubicBezier } from './easing.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAClF,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,mBAAmB,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { animate, stop } from './animate.js';
|
|
2
2
|
export { sequence } from './sequence.js';
|
|
3
3
|
export { press } from './press.js';
|
|
4
|
-
export { presets } from './presets.js';
|
|
4
|
+
export { definePreset, presets } from './presets.js';
|
|
5
5
|
export { springs } from './transition.js';
|
|
6
6
|
export { cubicBezier } from './easing.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/presets.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export interface Preset {
|
|
|
3
3
|
keyframes: Keyframes;
|
|
4
4
|
transition: AnimateOptions;
|
|
5
5
|
}
|
|
6
|
+
/** Add custom preset names through module augmentation, with `true` as each value. */
|
|
7
|
+
export interface Presets {
|
|
8
|
+
}
|
|
6
9
|
export declare const presets: {
|
|
7
10
|
fadeIn: {
|
|
8
11
|
keyframes: {
|
|
@@ -211,6 +214,7 @@ export declare const presets: {
|
|
|
211
214
|
transition: {
|
|
212
215
|
duration: number;
|
|
213
216
|
ease: "easeInOut";
|
|
217
|
+
relative: true;
|
|
214
218
|
};
|
|
215
219
|
};
|
|
216
220
|
bounce: {
|
|
@@ -219,6 +223,7 @@ export declare const presets: {
|
|
|
219
223
|
};
|
|
220
224
|
transition: {
|
|
221
225
|
duration: number;
|
|
226
|
+
relative: true;
|
|
222
227
|
times: number[];
|
|
223
228
|
ease: ["easeOut", "easeIn", "easeOut", "easeIn"];
|
|
224
229
|
};
|
|
@@ -230,6 +235,7 @@ export declare const presets: {
|
|
|
230
235
|
transition: {
|
|
231
236
|
duration: number;
|
|
232
237
|
ease: "easeInOut";
|
|
238
|
+
relative: true;
|
|
233
239
|
};
|
|
234
240
|
};
|
|
235
241
|
wiggle: {
|
|
@@ -239,6 +245,7 @@ export declare const presets: {
|
|
|
239
245
|
transition: {
|
|
240
246
|
duration: number;
|
|
241
247
|
ease: "easeInOut";
|
|
248
|
+
relative: true;
|
|
242
249
|
};
|
|
243
250
|
};
|
|
244
251
|
heartbeat: {
|
|
@@ -247,6 +254,7 @@ export declare const presets: {
|
|
|
247
254
|
};
|
|
248
255
|
transition: {
|
|
249
256
|
duration: number;
|
|
257
|
+
relative: true;
|
|
250
258
|
times: number[];
|
|
251
259
|
ease: "easeInOut";
|
|
252
260
|
};
|
|
@@ -258,6 +266,7 @@ export declare const presets: {
|
|
|
258
266
|
};
|
|
259
267
|
transition: {
|
|
260
268
|
duration: number;
|
|
269
|
+
relative: true;
|
|
261
270
|
times: number[];
|
|
262
271
|
ease: "easeInOut";
|
|
263
272
|
};
|
|
@@ -269,6 +278,7 @@ export declare const presets: {
|
|
|
269
278
|
transition: {
|
|
270
279
|
duration: number;
|
|
271
280
|
ease: "easeInOut";
|
|
281
|
+
relative: true;
|
|
272
282
|
};
|
|
273
283
|
};
|
|
274
284
|
tada: {
|
|
@@ -279,6 +289,7 @@ export declare const presets: {
|
|
|
279
289
|
transition: {
|
|
280
290
|
duration: number;
|
|
281
291
|
ease: "easeInOut";
|
|
292
|
+
relative: true;
|
|
282
293
|
};
|
|
283
294
|
};
|
|
284
295
|
spin: {
|
|
@@ -288,8 +299,12 @@ export declare const presets: {
|
|
|
288
299
|
transition: {
|
|
289
300
|
duration: number;
|
|
290
301
|
ease: "linear";
|
|
302
|
+
relative: true;
|
|
291
303
|
};
|
|
292
304
|
};
|
|
293
305
|
};
|
|
294
|
-
export type PresetName = keyof typeof presets
|
|
306
|
+
export type PresetName = keyof typeof presets | Extract<keyof Presets, string>;
|
|
307
|
+
/** Registers a custom preset. Registering it again replaces it for future animations. */
|
|
308
|
+
export declare function definePreset(name: PresetName, preset: Preset): void;
|
|
309
|
+
export declare function getPreset(name: PresetName): Preset;
|
|
295
310
|
//# sourceMappingURL=presets.d.ts.map
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,cAAc,CAAA;CAC3B;
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,cAAc,CAAA;CAC3B;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;CAAG;AAM3B,eAAO,MAAM,OAAO;;QACR,SAAS;YAAI,OAAO;;QAAY,UAAU;+BAL3B,GAAG;2BAAQ,SAAS;;;;;YAO9B,OAAO;YAAU,CAAC;;;kBALb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YASvC,OAAO;YAAU,CAAC;;;kBATb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAavC,OAAO;YAAU,CAAC;;;kBAbb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAiBvC,OAAO;YAAU,CAAC;;;kBAjBb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAqBvC,OAAO;YAAU,KAAK;;;kBArBjB,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAyBvC,OAAO;YAAU,KAAK;;;;;;;gBAKtB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;QAIZ,SAAS;YAAI,OAAO;;QAAO,UAAU;+BArDtB,GAAG;2BAAQ,QAAQ;;;;QAsDhC,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC3C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QACjD,SAAS;YAAI,OAAO;YAAK,KAAK;;QAAU,UAAU;;;;;;;YAE9C,OAAO;YAAK,KAAK;;;;;;;;;;;;;;YAUjB,KAAK;;;;;;;;;;YAIL,CAAC;;;;;;;;;;;YASD,CAAC;;;;;;;;;;YAID,MAAM;;;;;;;;;;YAIN,KAAK;;;;;;;;;;;YAUhB,MAAM;YACN,MAAM;;;;;;;;;;;YAUK,OAAO;;;;;;;;;;YAKlB,KAAK;YACL,MAAM;;;;;;;;;;YAKK,MAAM;;;;;;;;CAGW,CAAA;AAElC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAA;AAI9E,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAMlD"}
|