@rafaelaugusto/jolt 0.1.0-beta.10 → 0.1.0-beta.12
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 +55 -6
- package/dist/animate.d.ts +14 -4
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +50 -34
- package/dist/animate.js.map +1 -1
- package/dist/drag.d.ts +17 -3
- package/dist/drag.d.ts.map +1 -1
- package/dist/drag.js +34 -11
- package/dist/drag.js.map +1 -1
- package/dist/driver/android-gradient.d.ts +5 -0
- package/dist/driver/android-gradient.d.ts.map +1 -0
- package/dist/driver/android-gradient.js +89 -0
- package/dist/driver/android-gradient.js.map +1 -0
- package/dist/driver/ios-gradient.d.ts +5 -0
- package/dist/driver/ios-gradient.d.ts.map +1 -0
- package/dist/driver/ios-gradient.js +109 -0
- package/dist/driver/ios-gradient.js.map +1 -0
- package/dist/easing.d.ts +1 -1
- package/dist/easing.d.ts.map +1 -1
- package/dist/easing.js +11 -0
- package/dist/easing.js.map +1 -1
- package/dist/engine.d.ts +18 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +143 -36
- package/dist/engine.js.map +1 -1
- package/dist/gradient.d.ts +90 -0
- package/dist/gradient.d.ts.map +1 -0
- package/dist/gradient.js +253 -0
- package/dist/gradient.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +63 -10
- package/dist/keyboard.js.map +1 -1
- package/dist/mixer.d.ts +49 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixer.js +238 -0
- package/dist/mixer.js.map +1 -0
- package/dist/motion-scope.d.ts +4 -1
- package/dist/motion-scope.d.ts.map +1 -1
- package/dist/motion-scope.js +8 -3
- package/dist/motion-scope.js.map +1 -1
- package/dist/motion-states.d.ts +18 -6
- package/dist/motion-states.d.ts.map +1 -1
- package/dist/motion-states.js +114 -26
- package/dist/motion-states.js.map +1 -1
- package/dist/motion-value.d.ts +115 -0
- package/dist/motion-value.d.ts.map +1 -0
- package/dist/motion-value.js +437 -0
- package/dist/motion-value.js.map +1 -0
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +2 -2
- package/dist/path.js.map +1 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +31 -12
- package/dist/track.js.map +1 -1
- package/dist/transition.d.ts +30 -4
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +63 -7
- package/dist/transition.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vue/index.d.ts +28 -2
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +78 -2
- package/dist/vue/index.js.map +1 -1
- package/package.json +1 -1
- package/platforms/android/java/org/rafaelaugusto/jolt/GradientLayer.java +195 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrame.java +53 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrameFollower.java +57 -0
- package/platforms/android/proguard-rules.pro +2 -0
- package/src/android-plugin.d.ts +56 -0
- package/src/animate.ts +99 -16
- package/src/drag.ts +67 -21
- package/src/driver/android-gradient.ts +109 -0
- package/src/driver/ios-gradient.ts +114 -0
- package/src/easing.ts +14 -0
- package/src/engine.ts +158 -53
- package/src/gradient.ts +378 -0
- package/src/index.ts +34 -3
- package/src/keyboard.ts +83 -18
- package/src/mixer.ts +264 -0
- package/src/motion-scope.ts +14 -6
- package/src/motion-states.ts +145 -41
- package/src/motion-value.ts +563 -0
- package/src/path.ts +2 -1
- package/src/track.ts +37 -12
- package/src/transition.ts +99 -10
- package/src/types.ts +5 -0
- package/src/vue/index.ts +98 -1
package/README.md
CHANGED
|
@@ -38,10 +38,13 @@ Jolt computes the motion once, in JavaScript, when the animation starts, and han
|
|
|
38
38
|
- [Corners, borders and shadows](#corners-borders-and-shadows) with native playback and selective stopping.
|
|
39
39
|
- [Motion paths](#motion-along-a-path) with optional tangent orientation on iOS and Android.
|
|
40
40
|
- [Colors](#colors) for backgrounds, borders and text, interpolated in OKLab on iOS and Android.
|
|
41
|
-
- [Motion
|
|
41
|
+
- [Motion values](#motion-values): one value driving several properties and views, mapped like `interpolate`.
|
|
42
|
+
- [Layered motion](#layered-motion): several animations on one property, added or multiplied.
|
|
43
|
+
- [Gradients](#gradients): native linear, radial and conic gradients with animated colors, angle, center and radius.
|
|
44
|
+
- [Motion scopes and states](https://jolt.rafaelaugusto.dev/guide/motion-controllers) for component cleanup and coordinated visual states, with a transition per target.
|
|
42
45
|
- [Animated touch targets](https://jolt.rafaelaugusto.dev/guide/interaction-surface) with an opt-in native interaction surface.
|
|
43
46
|
- [Layout changes](https://jolt.rafaelaugusto.dev/guide/layout): insertion, removal, reorder and resize of container children.
|
|
44
|
-
- [Drag](https://jolt.rafaelaugusto.dev/guide/drag) with bounds, snap points, rubberband and native release physics.
|
|
47
|
+
- [Drag](https://jolt.rafaelaugusto.dev/guide/drag) with bounds, snap points, rubberband and native release physics, moving the view or a motion value.
|
|
45
48
|
- [Decay](#decay) from a release velocity, with optional snap points.
|
|
46
49
|
- [Keyframes and tweens](#tweens) with an easing per segment and exact keyframe times.
|
|
47
50
|
- [Stagger](#several-views) across several views, from the first, the last or the center.
|
|
@@ -186,6 +189,43 @@ Color strings and NativeScript `Color` objects work as targets or keyframes; `nu
|
|
|
186
189
|
|
|
187
190
|
Android includes a Java animation target; rebuild the native app after installing or upgrading Jolt.
|
|
188
191
|
|
|
192
|
+
## Motion values
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
import { animate, bind, motionValue } from '@rafaelaugusto/jolt'
|
|
196
|
+
|
|
197
|
+
const progress = motionValue(0)
|
|
198
|
+
bind(backdrop, { opacity: progress.to([0, 1], [0, 0.45]) })
|
|
199
|
+
bind(sheet, { y: progress.to([0, 1], [200, 0]) })
|
|
200
|
+
animate(progress, 1, 'snappy')
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
One value drives several properties and views on one native clock, mapped with `to()` like React Native's `interpolate`, to numbers or colors. Interruptions carry the value and its velocity to every bound view, `set()` and `stop()` take a value, and a value outlives its views. `scrollValue(scrollView)` turns a scroll offset into a value that bindings follow, and `drag(view, { axis, value })` writes a gesture and its release into one. In Vue, `useMotionValue()`, `useScrollValue()` and `useBinding()` handle the lifecycle. See the [guide](https://jolt.rafaelaugusto.dev/guide/motion-values).
|
|
204
|
+
|
|
205
|
+
## Layered motion
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
animate(card, { x: 120 }, 'snappy') // the base
|
|
209
|
+
animate(card, 'shake', { layer: 'feedback' }) // on top of it
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
A layer plays next to a property's other animations instead of replacing them: translations and rotations add, scale and opacity multiply. A shake rides on a drag, a pulse keeps breathing while the card moves, and `stop(card, ['x'], { layer: 'feedback' })` takes one layer away. While a property has layers, they play as one composite native track, sampled again only when something changes. See the [guide](https://jolt.rafaelaugusto.dev/guide/layers).
|
|
213
|
+
|
|
214
|
+
## Gradients
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
import { gradient } from '@rafaelaugusto/jolt'
|
|
218
|
+
|
|
219
|
+
const glow = gradient(card, {
|
|
220
|
+
type: 'radial',
|
|
221
|
+
colors: ['#A78BFA', '#0F172A'],
|
|
222
|
+
radius: 0.45,
|
|
223
|
+
})
|
|
224
|
+
glow.animate({ center: { x: 0.7, y: 0.7 }, radius: 0.9 }, { duration: 1400 })
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Native linear, radial and conic gradients behind a layout's children, which NativeScript's CSS doesn't have beyond a static `linear-gradient`. Colors, stops, angle, center and radius animate with springs, tweens and repeats: a `CAGradientLayer` with Core Animation keyframes on iOS, a native drawable and animator on Android. `motionScope().gradient()` removes it with the scope, and `v-gradient` paints and animates one from a Vue template. Rebuild Android after upgrading. See the [guide](https://jolt.rafaelaugusto.dev/guide/gradients).
|
|
228
|
+
|
|
189
229
|
## Transitions
|
|
190
230
|
|
|
191
231
|
The third argument says how to get there. Without one, transforms move with a spring and opacity and colors ease over 300ms. Keyframes tween.
|
|
@@ -206,6 +246,8 @@ animate(card, { y: 0 }, { stiffness: 300, damping: 20, mass: 1 })
|
|
|
206
246
|
|
|
207
247
|
`bounce` goes from -1 to 1: 0 settles without overshooting, higher values bounce more, negative values settle more slowly. `duration` is how long the spring feels, the same model as SwiftUI. Or describe it with `stiffness`, `damping` and `mass`. A spring starts with the velocity of the animation it interrupts, unless you pass `velocity` (units per second).
|
|
208
248
|
|
|
249
|
+
Coming from React Native, `origamiSpring({ friction: 7, tension: 40 })` gives the spring `Animated.spring` plays for `friction` and `tension`. See [From React Native Animated](https://jolt.rafaelaugusto.dev/guide/react-native) for the rest of the mapping.
|
|
250
|
+
|
|
209
251
|
### Tweens
|
|
210
252
|
|
|
211
253
|
```ts
|
|
@@ -217,7 +259,9 @@ animate(
|
|
|
217
259
|
)
|
|
218
260
|
```
|
|
219
261
|
|
|
220
|
-
|
|
262
|
+
**A tween takes 300 ms with `easeOut` unless told otherwise.** That's shorter than React Native's `Animated.timing` (500 ms, ease in and out) and starts faster than CSS's `ease`, so pass both when a port has to match.
|
|
263
|
+
|
|
264
|
+
`ease` takes `linear`, `ease`, `easeIn`, `easeOut`, `easeInOut`, `circIn`, `circOut`, `circInOut`, `backIn`, `backOut`, `backInOut`, `anticipate`, the `quad`, `cubic`, `quart`, `quint`, `sine` and `expo` curves with `In`, `Out` or `InOut` (`'cubicOut'`), a cubic bezier (`[0.2, 0, 0, 1]`) or any function from 0..1 to a value. With keyframes, pass one per segment. `times` places each keyframe between 0 and 1.
|
|
221
265
|
|
|
222
266
|
With `easeTrack: true`, one `ease` runs over the whole track instead, and the value moves in straight lines between keyframes, the way React Native's `interpolate` places its output range on an eased value:
|
|
223
267
|
|
|
@@ -236,6 +280,11 @@ Custom easing functions run once, when the animation starts, like springs do. Th
|
|
|
236
280
|
### Per property
|
|
237
281
|
|
|
238
282
|
```ts
|
|
283
|
+
animate(
|
|
284
|
+
logo,
|
|
285
|
+
{ scale: [0.6, 1.08, 1], opacity: [0, 1, 1] },
|
|
286
|
+
{ duration: 900, ease: 'easeInOut', opacity: { times: [0, 0.3, 1] } },
|
|
287
|
+
)
|
|
239
288
|
animate(
|
|
240
289
|
card,
|
|
241
290
|
{ y: 0, opacity: 1 },
|
|
@@ -243,7 +292,7 @@ animate(
|
|
|
243
292
|
)
|
|
244
293
|
```
|
|
245
294
|
|
|
246
|
-
|
|
295
|
+
Over a tween, a property's transition changes only what it sets: the logo's opacity keeps the 900 ms `easeInOut` and only places its keyframes. Over a spring, or when it is a spring itself, it replaces the curve, so the card's opacity gets a 150 ms tween. Either way, it keeps the timing (`delay`, `repeat`) of the main one unless it sets its own. `times` and per-segment easings taken from the main transition are left out when they don't fit the property's keyframes. Options passed to a [preset](https://jolt.rafaelaugusto.dev/guide/presets) merge the same way, so `animate(card, 'heartbeat', { duration: 1600 })` keeps the beat's rhythm.
|
|
247
296
|
|
|
248
297
|
### Timing
|
|
249
298
|
|
|
@@ -267,7 +316,7 @@ animate(
|
|
|
267
316
|
)
|
|
268
317
|
```
|
|
269
318
|
|
|
270
|
-
The wait is part of the native keyframes, so it costs no JavaScript while it plays. Stopping during the wait leaves the view at the held value.
|
|
319
|
+
The wait is part of the native keyframes, so it costs no JavaScript while it plays. Stopping during the wait leaves the view at the held value. A range, `repeatDelay: [1000, 4000]`, draws a new wait before each repeat; an endless loop draws sixteen and loops them natively.
|
|
271
320
|
|
|
272
321
|
## Decay
|
|
273
322
|
|
|
@@ -512,7 +561,7 @@ import { followKeyboard } from '@rafaelaugusto/jolt'
|
|
|
512
561
|
const release = followKeyboard(composer)
|
|
513
562
|
```
|
|
514
563
|
|
|
515
|
-
The view rises by exactly the distance the keyboard would cover it, with the keyboard's own duration and curve, and settles back when it hides. On iOS the keyboard notifications drive a `UIView` animation; on Android 11+ a native `WindowInsetsAnimation` callback moves the view on every frame, with and without `adjustResize`. The view's `translateY` is written so later animations start from the position on screen. Rebuild Android after upgrading. See the [guide](https://jolt.rafaelaugusto.dev/guide/keyboard).
|
|
564
|
+
The view rises by exactly the distance the keyboard would cover it, with the keyboard's own duration and curve, and settles back when it hides. On iOS the keyboard notifications drive a `UIView` animation; on Android 11+ a native `WindowInsetsAnimation` callback moves the view on every frame, with and without `adjustResize`. Android 7 to 10 read the keyboard from the window's visible frame and animate the view with the keyboard's measured timing. The view's `translateY` is written so later animations start from the position on screen. Rebuild Android after upgrading. See the [guide](https://jolt.rafaelaugusto.dev/guide/keyboard).
|
|
516
565
|
|
|
517
566
|
To react in other ways, `onKeyboard()` reports how much of the window the keyboard covers, with a transition that moves in step with it:
|
|
518
567
|
|
package/dist/animate.d.ts
CHANGED
|
@@ -2,26 +2,35 @@ import type { PlaybackAnimation } from './playback.js';
|
|
|
2
2
|
import { View } from '@nativescript/core';
|
|
3
3
|
import { type Animation } from './engine.js';
|
|
4
4
|
import { type PresetName } from './presets.js';
|
|
5
|
+
import { type MotionValue } from './motion-value.js';
|
|
5
6
|
import { type Property } from './properties.js';
|
|
6
|
-
import { type SpringName } from './transition.js';
|
|
7
|
+
import { type SpringName, type Transition } from './transition.js';
|
|
7
8
|
import type { AnimateOptions, DecayOptions, DecayVelocity, Keyframes, KeyframeProperty, Target, Values } from './types.js';
|
|
8
9
|
/**
|
|
9
10
|
* Animates one view, or several. Takes keyframes or the name of a preset,
|
|
10
|
-
* and a transition or the name of a spring.
|
|
11
|
+
* and a transition or the name of a spring. A motion value animates to a number.
|
|
11
12
|
*
|
|
12
13
|
* ```ts
|
|
13
14
|
* animate(card, 'fadeInUp')
|
|
14
15
|
* animate(card, { scale: 1.1, rotate: [0, 90] }, 'bouncy')
|
|
15
16
|
* animate(rows, 'fadeInUp', { stagger: 40 })
|
|
17
|
+
* animate(progress, 1, 'snappy')
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
20
|
+
export declare function animate(value: MotionValue, to: number | readonly (number | null)[], transition?: Transition | SpringName): Animation;
|
|
18
21
|
export declare function animate(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): PlaybackAnimation;
|
|
19
22
|
/** Validate and snapshot a complete animation before changing any view ownership. */
|
|
20
23
|
export declare function prepareAnimation(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): () => PlaybackAnimation;
|
|
21
24
|
/** Starts at the current translation and slows down from a velocity in DIPs per second. */
|
|
22
25
|
export declare function decay(target: Target | readonly Target[], velocity: DecayVelocity, options?: DecayOptions): PlaybackAnimation;
|
|
23
|
-
/**
|
|
24
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Stops all or selected properties at their current values. `scale` stops both axes.
|
|
28
|
+
* A motion value stops where it is, and so do the views bound to it.
|
|
29
|
+
*/
|
|
30
|
+
export declare function stop(value: MotionValue): void;
|
|
31
|
+
export declare function stop(target: Target | readonly Target[], properties?: readonly KeyframeProperty[], options?: {
|
|
32
|
+
layer?: string;
|
|
33
|
+
}): void;
|
|
25
34
|
/**
|
|
26
35
|
* Applies values at once, stopping whatever animates those properties.
|
|
27
36
|
* `scale` sets both axes. A view that isn't loaded yet gets them right away.
|
|
@@ -30,6 +39,7 @@ export declare function stop(target: Target | readonly Target[], properties?: re
|
|
|
30
39
|
* set(logo, { opacity: 1, scale: 1, y: 0 })
|
|
31
40
|
* ```
|
|
32
41
|
*/
|
|
42
|
+
export declare function set(value: MotionValue, to: number): void;
|
|
33
43
|
export declare function set(target: Target | readonly Target[], values: Values): void;
|
|
34
44
|
/** Plays several animations as one: finished once they all are, and stopped together. */
|
|
35
45
|
export declare function group(animations: readonly Animation[]): Animation;
|
package/dist/animate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAQzC,OAAO,
|
|
1
|
+
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAQzC,OAAO,EAML,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AACpB,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAML,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EAET,gBAAgB,EAEhB,MAAM,EACN,MAAM,EACP,MAAM,YAAY,CAAA;AAWnB;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACvC,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,GACnC,SAAS,CAAA;AACZ,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,iBAAiB,CAAA;AAkBpB,qFAAqF;AACrF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,MAAM,iBAAiB,CAoDzB;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAiB,GACzB,iBAAiB,CAkEnB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;AAC9C,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,EACxC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,IAAI,CAAA;AAeP;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;AACzD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;AAqB7E,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;AA6HD,2FAA2F;AAC3F,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,gCAYtC;AAED,wGAAwG;AACxG,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,gCActC"}
|
package/dist/animate.js
CHANGED
|
@@ -4,27 +4,21 @@ import { preparePath } from './path.js';
|
|
|
4
4
|
import { View } from '@nativescript/core';
|
|
5
5
|
import { isColorProperty, parseColor, validateColorTarget, } from './color.js';
|
|
6
6
|
import { DEFAULT_FRICTION, solveDecay } from './decay.js';
|
|
7
|
-
import { arrivalOf, setArrival, stopView, ViewAnimation, } from './engine.js';
|
|
7
|
+
import { arrivalOf, setArrival, stopLayer, stopView, ViewAnimation, } from './engine.js';
|
|
8
8
|
import { getPreset } from './presets.js';
|
|
9
|
+
import { asRoot, detachBindings, isMotionValue, } from './motion-value.js';
|
|
9
10
|
import { resolveHaptic } from './haptics.js';
|
|
11
|
+
import { layerable } from './mixer.js';
|
|
10
12
|
import { isProperty, precision } from './properties.js';
|
|
11
|
-
import { hasCurve, mergeTransitions, resolveTransition, springs, } from './transition.js';
|
|
12
|
-
/**
|
|
13
|
-
* Animates one view, or several. Takes keyframes or the name of a preset,
|
|
14
|
-
* and a transition or the name of a spring.
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* animate(card, 'fadeInUp')
|
|
18
|
-
* animate(card, { scale: 1.1, rotate: [0, 90] }, 'bouncy')
|
|
19
|
-
* animate(rows, 'fadeInUp', { stagger: 40 })
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
13
|
+
import { hasCurve, fitTransition, mergeTransitions, resolveTransition, springs, } from './transition.js';
|
|
22
14
|
export function animate(target, animation, options) {
|
|
15
|
+
if (isMotionValue(target))
|
|
16
|
+
return asRoot(target).animate(animation, options);
|
|
23
17
|
return prepareAnimation(target, animation, options)();
|
|
24
18
|
}
|
|
25
19
|
/** Validate and snapshot a complete animation before changing any view ownership. */
|
|
26
20
|
export function prepareAnimation(target, animation, options) {
|
|
27
|
-
const { keyframes, base, overrides, stagger, relative, haptic, path } = prepare(animation, options);
|
|
21
|
+
const { keyframes, base, overrides, stagger, relative, haptic, path, layer } = prepare(animation, options);
|
|
28
22
|
const feedback = resolveHaptic(haptic);
|
|
29
23
|
if (!isList(target)) {
|
|
30
24
|
const view = toView(target);
|
|
@@ -33,8 +27,12 @@ export function prepareAnimation(target, animation, options) {
|
|
|
33
27
|
validateColorTarget(view, property);
|
|
34
28
|
else if (isDecorationProperty(property))
|
|
35
29
|
validateDecorationTarget(view, property);
|
|
36
|
-
const plans = plan(keyframes, base, overrides, 0, relative, path);
|
|
37
|
-
return () =>
|
|
30
|
+
const plans = plan(keyframes, base, overrides, 0, relative, path, layer);
|
|
31
|
+
return () => {
|
|
32
|
+
if (layer === undefined)
|
|
33
|
+
detachBindings(view, plans.map(({ property }) => property));
|
|
34
|
+
return new ViewAnimation(view, plans, feedback);
|
|
35
|
+
};
|
|
38
36
|
}
|
|
39
37
|
const views = target.map(toView);
|
|
40
38
|
for (const view of views)
|
|
@@ -43,8 +41,13 @@ export function prepareAnimation(target, animation, options) {
|
|
|
43
41
|
validateColorTarget(view, property);
|
|
44
42
|
else if (isDecorationProperty(property))
|
|
45
43
|
validateDecorationTarget(view, property);
|
|
46
|
-
const
|
|
47
|
-
|
|
44
|
+
const seed = Math.random();
|
|
45
|
+
const plans = views.map((_, index) => plan(keyframes, base, overrides, staggerDelay(stagger, index, views.length), relative, path, layer, seed));
|
|
46
|
+
return () => playbackGroup(views.map((view, index) => {
|
|
47
|
+
if (layer === undefined)
|
|
48
|
+
detachBindings(view, plans[index].map(({ property }) => property));
|
|
49
|
+
return new ViewAnimation(view, plans[index], feedback, true);
|
|
50
|
+
}));
|
|
48
51
|
}
|
|
49
52
|
/** Starts at the current translation and slows down from a velocity in DIPs per second. */
|
|
50
53
|
export function decay(target, velocity, options = {}) {
|
|
@@ -109,21 +112,19 @@ export function decay(target, velocity, options = {}) {
|
|
|
109
112
|
return playbackGroup([]);
|
|
110
113
|
return playbackGroup(views.map((view) => new ViewAnimation(view, plans, undefined, true)));
|
|
111
114
|
}
|
|
112
|
-
|
|
113
|
-
|
|
115
|
+
export function stop(target, properties, options) {
|
|
116
|
+
if (isMotionValue(target))
|
|
117
|
+
return asRoot(target).stop();
|
|
114
118
|
const expanded = properties?.flatMap((property) => property === 'scale' ? ['scaleX', 'scaleY'] : [property]);
|
|
115
119
|
for (const view of toViews(target))
|
|
116
|
-
|
|
120
|
+
if (options?.layer !== undefined)
|
|
121
|
+
stopLayer(view, options.layer, expanded);
|
|
122
|
+
else
|
|
123
|
+
stopView(view, expanded);
|
|
117
124
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Applies values at once, stopping whatever animates those properties.
|
|
120
|
-
* `scale` sets both axes. A view that isn't loaded yet gets them right away.
|
|
121
|
-
*
|
|
122
|
-
* ```ts
|
|
123
|
-
* set(logo, { opacity: 1, scale: 1, y: 0 })
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
125
|
export function set(target, values) {
|
|
126
|
+
if (isMotionValue(target))
|
|
127
|
+
return asRoot(target).set(values);
|
|
127
128
|
if (values === null || typeof values !== 'object' || Array.isArray(values))
|
|
128
129
|
throw new TypeError('set() takes an object of values.');
|
|
129
130
|
const keyframes = {};
|
|
@@ -186,6 +187,7 @@ function resolveAnimation(animation, options) {
|
|
|
186
187
|
stagger: user.stagger ?? own.stagger,
|
|
187
188
|
relative: user.relative ?? own.relative,
|
|
188
189
|
haptic: user.haptic ?? own.haptic,
|
|
190
|
+
layer: user.layer,
|
|
189
191
|
};
|
|
190
192
|
}
|
|
191
193
|
function normalize(options) {
|
|
@@ -210,10 +212,16 @@ function normalize(options) {
|
|
|
210
212
|
let stagger;
|
|
211
213
|
let relative;
|
|
212
214
|
let haptic;
|
|
215
|
+
let layer;
|
|
213
216
|
for (const [key, value] of Object.entries(options)) {
|
|
214
217
|
if (value === undefined)
|
|
215
218
|
continue;
|
|
216
|
-
if (key === '
|
|
219
|
+
if (key === 'layer') {
|
|
220
|
+
if (typeof value !== 'string' || !value)
|
|
221
|
+
throw new TypeError('A layer is named by a nonempty string.');
|
|
222
|
+
layer = value;
|
|
223
|
+
}
|
|
224
|
+
else if (key === 'stagger')
|
|
217
225
|
stagger = value;
|
|
218
226
|
else if (key === 'relative')
|
|
219
227
|
relative = value;
|
|
@@ -225,10 +233,14 @@ function normalize(options) {
|
|
|
225
233
|
else
|
|
226
234
|
base[key] = value;
|
|
227
235
|
}
|
|
228
|
-
return { base, overrides, stagger, relative, haptic };
|
|
236
|
+
return { base, overrides, stagger, relative, haptic, layer };
|
|
229
237
|
}
|
|
230
|
-
function plan(keyframes, base, overrides, offset, relative = false, path) {
|
|
238
|
+
function plan(keyframes, base, overrides, offset, relative = false, path, layer, seed = Math.random()) {
|
|
239
|
+
if (layer !== undefined && path)
|
|
240
|
+
throw new Error("A path owns x and y; it can't play on a layer.");
|
|
231
241
|
return expand(keyframes, path).map(([property, frames]) => {
|
|
242
|
+
if (layer !== undefined && !layerable(property))
|
|
243
|
+
throw new Error(`Layers apply to x, y, scale, rotation and opacity; "${property}" has a single owner.`);
|
|
232
244
|
if (path?.properties.includes(property)) {
|
|
233
245
|
if (!Number.isFinite(path.transition.delay + offset) ||
|
|
234
246
|
path.transition.delay + offset < 0)
|
|
@@ -242,16 +254,20 @@ function plan(keyframes, base, overrides, offset, relative = false, path) {
|
|
|
242
254
|
};
|
|
243
255
|
}
|
|
244
256
|
const override = overrides[property] ?? (property.startsWith('scale') ? overrides.scale : undefined);
|
|
245
|
-
const transition = resolveTransition(override ? mergeTransitions(base, override) : base, property, frames.length);
|
|
257
|
+
const transition = resolveTransition(fitTransition(override ? mergeTransitions(base, override) : base, frames.length), property, frames.length);
|
|
246
258
|
transition.delay += offset;
|
|
247
|
-
|
|
259
|
+
if (transition.seed !== undefined)
|
|
260
|
+
transition.seed = seed;
|
|
261
|
+
return { property, keyframes: frames, transition, relative, layer };
|
|
248
262
|
});
|
|
249
263
|
}
|
|
250
264
|
/** Each property the animation touches, with the value it starts from when it sets one. */
|
|
251
265
|
export function startingValues(animation, options) {
|
|
252
|
-
const { keyframes, relative, path } = prepare(animation, options);
|
|
266
|
+
const { keyframes, relative, path, layer } = prepare(animation, options);
|
|
253
267
|
if (!keyframes)
|
|
254
268
|
throw new Error(`Unknown preset "${animation}".`);
|
|
269
|
+
if (layer !== undefined)
|
|
270
|
+
return new Map(expand(keyframes, path).map(([property]) => [property, null]));
|
|
255
271
|
return new Map(expand(keyframes, path).map(([property, [first]]) => [
|
|
256
272
|
property,
|
|
257
273
|
relative && !isColorProperty(property) ? null : first,
|
package/dist/animate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
|
package/dist/drag.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type Animation } from './engine.js';
|
|
2
|
+
import { type MotionValue } from './motion-value.js';
|
|
1
3
|
import type { PlaybackAnimation } from './playback.js';
|
|
2
4
|
import type { Target } from './types.js';
|
|
3
5
|
export interface DragPoint {
|
|
@@ -9,10 +11,10 @@ export interface DragEvent extends DragPoint {
|
|
|
9
11
|
readonly velocityX: number;
|
|
10
12
|
readonly velocityY: number;
|
|
11
13
|
}
|
|
12
|
-
export interface DragRelease extends DragEvent {
|
|
14
|
+
export interface DragRelease<A extends Animation = PlaybackAnimation> extends DragEvent {
|
|
13
15
|
readonly target: DragPoint;
|
|
14
16
|
/** False on interruption/cancellation. Check before applying completion effects. */
|
|
15
|
-
readonly animation:
|
|
17
|
+
readonly animation: A;
|
|
16
18
|
}
|
|
17
19
|
export interface DragOptions {
|
|
18
20
|
/** Defaults to both. One finger only. */
|
|
@@ -39,6 +41,14 @@ export interface DragOptions {
|
|
|
39
41
|
onCancel?: (event: DragEvent) => void;
|
|
40
42
|
onSettle?: (position: DragPoint) => void;
|
|
41
43
|
}
|
|
44
|
+
/** Drags a motion value instead of the view. Bounds and snap points are in the value's units. */
|
|
45
|
+
export interface DragValueOptions extends Omit<DragOptions, 'axis' | 'snap' | 'onRelease'> {
|
|
46
|
+
/** Takes the position on every move and plays the release; bind views to it to follow. */
|
|
47
|
+
value: MotionValue;
|
|
48
|
+
axis: 'x' | 'y';
|
|
49
|
+
snap?: readonly number[];
|
|
50
|
+
onRelease?: (event: DragRelease<Animation>) => void;
|
|
51
|
+
}
|
|
42
52
|
export interface Drag {
|
|
43
53
|
readonly dragging: boolean;
|
|
44
54
|
readonly settling: boolean;
|
|
@@ -53,6 +63,10 @@ export interface Drag {
|
|
|
53
63
|
play(): void;
|
|
54
64
|
dispose(): void;
|
|
55
65
|
}
|
|
56
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Main-thread pan updates; release physics play through Jolt's native animation drivers.
|
|
68
|
+
* With `value`, the gesture drives a motion value and the views bound to it.
|
|
69
|
+
*/
|
|
70
|
+
export declare function drag(target: Target, options: DragValueOptions): Drag;
|
|
57
71
|
export declare function drag(target: Target, options?: DragOptions): Drag;
|
|
58
72
|
//# sourceMappingURL=drag.d.ts.map
|
package/dist/drag.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../src/drag.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../src/drag.ts"],"names":[],"mappings":"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"}
|
package/dist/drag.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Application, } from '@nativescript/core';
|
|
2
|
-
import {
|
|
2
|
+
import { toView } from './animate.js';
|
|
3
3
|
import { DEFAULT_FRICTION } from './decay.js';
|
|
4
4
|
import { DragInput } from './drag-input.js';
|
|
5
5
|
import { clampDrag, resistDrag, resumeDrag, solveDragRelease, } from './drag-physics.js';
|
|
6
|
-
import { currentValue, ViewAnimation } from './engine.js';
|
|
7
|
-
import {
|
|
6
|
+
import { baseValue, currentValue, setBase, stopBase, ViewAnimation, } from './engine.js';
|
|
7
|
+
import { asRoot, isMotionValue } from './motion-value.js';
|
|
8
|
+
import { createTrack } from './track.js';
|
|
8
9
|
const owners = new WeakMap();
|
|
9
10
|
function settings(options) {
|
|
10
11
|
if (!options || typeof options !== 'object')
|
|
@@ -12,6 +13,11 @@ function settings(options) {
|
|
|
12
13
|
const axis = options.axis ?? 'both';
|
|
13
14
|
if (!['x', 'y', 'both'].includes(axis))
|
|
14
15
|
throw new TypeError('Drag axis must be x, y or both.');
|
|
16
|
+
const value = 'value' in options ? options.value : undefined;
|
|
17
|
+
if (value !== undefined && !isMotionValue(value))
|
|
18
|
+
throw new TypeError('Drag value must be a motion value.');
|
|
19
|
+
if (value !== undefined && axis === 'both')
|
|
20
|
+
throw new TypeError('Dragging a motion value needs axis "x" or "y".');
|
|
15
21
|
const friction = options.friction ?? DEFAULT_FRICTION;
|
|
16
22
|
if (!Number.isFinite(friction) || friction <= 0 || friction >= 1)
|
|
17
23
|
throw new RangeError('Drag friction must be between 0 and 1 exclusively.');
|
|
@@ -73,9 +79,8 @@ function settings(options) {
|
|
|
73
79
|
for (const callback of Object.values(callbacks))
|
|
74
80
|
if (callback !== undefined && typeof callback !== 'function')
|
|
75
81
|
throw new TypeError('Drag callbacks must be functions.');
|
|
76
|
-
return { axes, curves, callbacks };
|
|
82
|
+
return { axes, curves, value: value && asRoot(value), callbacks };
|
|
77
83
|
}
|
|
78
|
-
/** Main-thread pan updates; release physics play through Jolt's native animation drivers. */
|
|
79
84
|
export function drag(target, options = {}) {
|
|
80
85
|
const view = toView(target);
|
|
81
86
|
const config = settings(options); // Invalid replacements leave the existing owner intact.
|
|
@@ -129,6 +134,9 @@ class DragController {
|
|
|
129
134
|
return this.destroyed;
|
|
130
135
|
}
|
|
131
136
|
get position() {
|
|
137
|
+
const value = this.config.value;
|
|
138
|
+
if (value)
|
|
139
|
+
return { x: 0, y: 0, [this.config.axes[0]]: value.raw() };
|
|
132
140
|
return { x: currentValue(this.view, 'x'), y: currentValue(this.view, 'y') };
|
|
133
141
|
}
|
|
134
142
|
cancel = () => {
|
|
@@ -225,9 +233,16 @@ class DragController {
|
|
|
225
233
|
if (!this.attached || this.destroyed || this.disabled)
|
|
226
234
|
return;
|
|
227
235
|
this.blocked = false;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
236
|
+
const value = this.config.value;
|
|
237
|
+
if (value) {
|
|
238
|
+
value.stop();
|
|
239
|
+
this.origin = this.position;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
// Claim just the enabled axes, preserving the native presentation on takeover.
|
|
243
|
+
stopBase(this.view, this.config.axes);
|
|
244
|
+
this.origin = { x: baseValue(this.view, 'x'), y: baseValue(this.view, 'y') };
|
|
245
|
+
}
|
|
231
246
|
const size = this.view.parent?.getActualSize() ??
|
|
232
247
|
this.view.getActualSize();
|
|
233
248
|
this.lengths = {
|
|
@@ -269,8 +284,12 @@ class DragController {
|
|
|
269
284
|
vx = input.velocityX * resistance;
|
|
270
285
|
else
|
|
271
286
|
vy = input.velocityY * resistance;
|
|
272
|
-
|
|
273
|
-
|
|
287
|
+
if (this.config.value)
|
|
288
|
+
this.config.value.set(position[axis]);
|
|
289
|
+
else {
|
|
290
|
+
stopBase(this.view, [axis]);
|
|
291
|
+
setBase(this.view, axis, position[axis]);
|
|
292
|
+
}
|
|
274
293
|
}
|
|
275
294
|
this.last = { ...position, velocityX: vx, velocityY: vy };
|
|
276
295
|
if (event.state !== 3)
|
|
@@ -309,7 +328,11 @@ class DragController {
|
|
|
309
328
|
transition: { curve, delay: 0, repeat: 0, reverse: false },
|
|
310
329
|
};
|
|
311
330
|
});
|
|
312
|
-
const
|
|
331
|
+
const [axis] = this.config.axes;
|
|
332
|
+
const value = this.config.value;
|
|
333
|
+
const animation = value
|
|
334
|
+
? value.play(createTrack(axis, [event[axis]], plans[0].transition, 0))
|
|
335
|
+
: new ViewAnimation(this.view, plans);
|
|
313
336
|
this.release = animation;
|
|
314
337
|
void animation.finished.then((finished) => {
|
|
315
338
|
if (generation !== this.generation || this.destroyed)
|